简单就是美!浅谈java各层框架。

很久没有来过Jdon了,感觉陌生了许多,也许有人看了我的标题以为我是一个ROR的鼓吹手,其实,刚好相反,基于现在开发的现状,我觉得JAVA阵营有必要站稳阵脚,分析清楚技术的走向,毕竟都涉及到我们的饭碗前途问题。
之前有人问我这么几个问题:Java除了做Web还能做什么?Java做一个项目为什么要用这么多框架?问题没有标准答案,答案大家都比我清楚,这个我就不多说了。但是使我想到的是,的确,Java是越来越复杂了,JDK的速度发展惊人,之前的tiger 5.0,今年刚出炉的mustang 6.0,还有即将出台的dolphin.我越来越感叹Java程序员的辛苦。特别是面对众多的选择,有开源的,也有商业化成熟的产品,虽说框架工具不是重要,重要的是OO思想,设计模式,但实际操作起来,框架的选择还是十分重要的,如果项目开始选择错误的话,将会面临严重的成本的危机。由于我的能力和实际经验有限,先说说本人对JAVA各层框架的理解。
先从页面层说起,页面的技术五花八门,标准的Taglib和jsp,虽然说是工业标准,侵入性太强,却是累活,脏活,对前台设计十分不友好,一些前台设计师就发难了,说逻辑和页面混合起来,还怎么开发啊?于是才有了struts,webwork类的web框架MVC模式。听说Model Macth开源的Fastm项目在解决非侵入性方面非常棒,一直都找不到相关例子。页面层的工作通常是最多的,是面向客户的,所以现在一些RIA应用兴旺起来的根本原因是要最大程度地满足客户的需求。在这层Java阵营可以说是败了,UI开发不方便的同时,也没有VS.NET拖曳式开发的好处,既要对开发设计人员所见即所得,又要对客户展现富客户端的优势,这点我预测就是最近几年页面层技术发展的方向。
然后说Web层,Web层是最不好选的,但如果想支持一些RIA的应用,诸如Ajax,Flex,就只能用JSF。其他的框架各有优点,Struts成熟用户群大,有很好的标签库,而webwork用起来简捷方便,有利于TDD,适合用于小项目开发;tapastry很完美,可惜入手太难了。
再说业务逻辑层,选择视乎不是很多,要实现集群,负载均衡的用Ejb,
灵活轻便,面向测试的就选择Spring Framework.JBoss Seam和Jdon Framework没有用过,不过看起来也是很简便的。这层的核心是当前的主流IOC和AOP,相信大家也不会有所争议的。这里才是程序员真正关心的。可是跟逻辑业务无关的操作实在是太多了。
最后的OR层,Hibernate,Ibatis,Toplink,JPA,都是杰出的代表,是应用系统中最难的地方,涉及到DDD和OO,不能简单的以为做OR层就是分页+CRUD+缓存,提高性能和效率是OR层也就是持久化层的最终目的。
实现SOA不在我们程序员的目光内,对,它是必然趋势,但是是针对项目管理者的。SOA现在还离我们很远,只能静观其变。
Java也许它的使命就是解决复杂的应用,我们能从ruby,phython之类的语言学到什么吗?回归原点,项目的关键不在技术,而在于需求。我们不能再陶醉在JAVA的海洋里自我满足了,无论ROR,.NET里面也有很好的思想,它们也有庞大的社区,也有在前进。JAVA的优势是众多的组件,类库,框架可供选择,但怎样才能不让我们的优势不变劣势呢?这是我们要仔细思量的。

ROR针对的方向是中小型WEB应用,与PHP可以说是不是你死就是我亡,对JAVA也有所影响,不过影响不大。说RUBY将要取代JAVA是无稽的,更何况JRuby,Jphython,Groovy,BeanShell可以使JAVA"动"起来,而且对Groovy深抱厚望,在字节码支持JAVA同时,对JAVA开发人员友好,有比RUBY更好的效率和性能,JAVA已经走向平台化了。如果Groovy的出现能在减少开发人员的工作量的同时,能够快速敏捷地满足用户的需求,那必定是一件好事!
[该贴被boby2046于2007年08月01日 23:36修改过]

是一篇很好的继往开来的文章,从一个高度概括了过去,眺望了未来,为很多初学者提供一定的参考作用。

看来,未来将是脚本语言对编译语言发动的新反攻,这次是打着快速敏捷的旗帜,正是软件世界风卷云涌,你方唱罢我登台。

前几天在拙作“Java、RoR、PHP,一个都不能少”中和banq讨论了一些问题后,又回到了Java的怀抱。

年过30后,对编程之爱有增无减,所以像PHP、ROR这类局限在Web上的技术还是难以让我停留太久。我所需要的,仍然是一种应用范围足够广阔的技术,能让我长期钻研并使用。

大家其实对框架也不用太在意。framework这类东西也就是Java发展过程中对于某类问题的一种解决方式。即使不用框架,Java也足以让我们做好无数的事情。
Java语言本身足够伟大。作为虚拟机时代最优秀的技术,它完全有能力长久地生存发展下去,一如它伟大的前辈C语言。

新技术,新框架真是层出不穷啊,还是以能方便提供解决方案来选择吧

底层用C,应用全部用Java,玩玩的时候用Lisp,用脚本就让Python上阵,简单就是美,其实Java的美,就在其简单上,当然是相对的,就相对于开发同样的业务系统,Java比C更美。

摘录

再说业务逻辑层,选择视乎不是很多,要实现集群,负载均衡的用EJB,
灵活轻便,面向测试的就选择Spring Framework.JBoss Seam和Jdon Framework没有用过,不过看起来也是很简便的。这层的核心是当前的主流IOC和AOP,相信大家也不会有所争议的。这里才是程序员真正关心的。可是跟逻辑业务无关的操作实在是太多了。

ejb其实挺不错,guice,jdon也很好。spring挺好,可惜我不太喜欢,用spring还不如用jdon。 seam如果能和wicket配合就好了,听说有支持的计划,但近期没关注。