理论上,用C甚至汇编就可以写出所有的程序。之所以出现如此之多的新语言和新框架,是因为这些技术能够提供某些封装好的服务,从而带来效率、可靠性、可维护性等方面的好处。
在使用EJB 3的过程中,我能够直观地感到如下技术带来的好处:
JPA解决了ORM和对象缓存的问题;
基于annotation的Entity Bean解决了侵入问题,彻底消除了愚蠢的DTO模式;
JTA解决了分布式事务的问题;
Session Bean解决了分布式对象的问题
……
这些技术解决了应用中的大部分问题,但仍然有一些问题需要解决:
1 ORM的自动建模。你不觉得,当一个表有50个字段时,手工写50个属性和50*2个方法,是一件very stupid的事情吗?我知道某些代码生成器可以自动完成这个工作,但这种方法仍然非常丑陋。彻底解决这个问题的途径,应该是LINQ for Java。但这需要Java语言本身的进步,就我所知,还没有出现这类的解决方案。CachedRowSet也可以部分地解决这个问题,但是在实际应用中似乎很少有人用到。
2 交互逻辑的问题。为每一个字段编写HTML的表单域,并在提交后解析每一个request属性,实在令人抓狂。这方面解决得最好的是Delphi和ASP.NET中的WebForm,在Java领域,相应的技术当然是JSF。目前我对JSF所知还不多,也没有敢贸然地在项目中使用。我认为,对于这种表现层的组件技术而言,IDE的支持仍然是最重要的因素。可惜,JBuilder对JSF的支持力度一直不够。