栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
Servlet、JSP、EJB该如何抉择
www.jz123.cn 2010-03-08 来源: 中国建站 责任编辑(袁袁) 我要投递新闻
在Java应用程序开发中,可以使用Web构件来简化应用程序的开发过程。Web构件好像是一个模板。采取现成的模板能够大幅度的减少代码的编写。一般情况下,采用这些构件并通过数据库联接和XML操作就可以完成大多数的应用程序的功能,如数据的存取、逻辑运算等等。换句话会说,就是在J2EE Web程序中仅仅使用Web层技术就可以开发出功能比较完善的应用程序。不过这其中有一个难点,就是该如何选择这些Web构件?因为这些构件很多功能都是重复的。通常情况下,在应用程序开发的时候只需要用到其中的一种或者两种构件即可。
在这篇文章中,笔者就给大家分析一下,如何结合企业的实际情况来选择合适的Web构件。
一、避免“大材小用”的误区。
在分析具体的选择标准之前,笔者先要给大家消除一个“大材小用”的误区。EJB构件确实有很强大的功能。如EJB构件提供了丰富的Web程序支持功能,如实例池管理、比较高的安全机制、比较完善的事务管理、数据持久性容器管理等等,这些现成的功能开发人员可以直接拿来使用,而不需要自己通过编写代码来实现。再如EJB能够灵活的提供多种客户界面,等等。
有些程序开发人员就是因为EJB的功能强大。所以一开始就一心扑在EJB技术上。在实际工作中无论开发的是什么应用程序,就都用EJB来做。其实这是一个很不明智的做法。EJB构件虽然功能强大,但是其也有局限性。如使用EJB的应用程序会过分依赖于J2EE Web服务器的服务功能。而且对于简单应用程序的数据库操作中,EJB的运算成本也比其他构件要大的多。对于大部分应用程序,如OA系统等等,不会涉及到非常复杂的数据模型,此时采用EJB来说,简直是“杀鸡用牛刀”。
故在使用EJB构件之前,需要好好的分析一下,是否真的有使用这个构件的必要?笔者认为,如果能够通过其他构件来解决的话,就采用其他构件。EJB只有在不得已的情况下才使用。
二、考虑应用程序的规模与功能要求。
在选择具体的构件之前,笔者认为首先需要考虑的问题是应用程序的规模与功能方面的要求。对于功能比较简单(如只是数据库的存取操作加上一些简单的逻辑运算),或者说规模比较小(如不需要在分步式服务器上运行),那么往往只需要通过Servlet或者JSP来实现即可。
在考虑这一点的时候,难度比较大的主要是应用程序的功能。因为某些功能如果实现的方式不同,其复杂性就会有很大的差异。举一个例子,一个MRP物料需求计划,如果采用的算法不同,代码的行数就会像差好几倍,其所需要花费的时间也就有很大差别。故在考虑应用程序规模的时候,应该以比较优化的情况作为参考标准。毕竟在应用程序开发的过程中,对于代码的优化工作也非常的重要。
三、评估资金的承受能力。
一般来说,对于同样的应用程序,如果采用EJB或者采用Servlet、JSP开发在成本上会有很大的不同。采用EJB构件的成本会高的多。如EJB构件比较复杂,进入的门槛比较高。所以招募EJB的人才其成本也会比较高。这无疑中会增加EJB应用程序的成本。
其次采用EJB构件来开发应用程序的时候,即使对于相同的运算逻辑,其寓所暖成本也会比较高。这主要是由于其内部的实现技术所决定的。为此在应用程序部署的时候,往往会建议企业采用比较高的服务器配置。这也会增加企业的部署成本。
第三Web服务器的选择也会在很大程度上影响项目的成本。如对于资金比较宽裕的企业来说,可以购买商业版本的Web前端服务器。而如果资金比较紧张的话,则可以考虑选择使用像Tomcat这样的免费的Web服务器。其实从目前的使用量来看,Tomcat服务器的用户数量还是蛮多的,用户的反馈也不错。
四、考虑应用程序的开发周期。
具体采用什么构件之前,考虑应用程序的开发周期也是有必要的。如果客户对于应用程序的开发周期有严格的要求,如要求在比较短的时间内完成大量的开发工作,此时采用JSP或者Servlet构件是比较明智的选择。因为EJB技术使用要比Servlet或者JSP复杂。无论是应用程序的开发还是后续的测试,都会占用比较多的时间。故对于那些短平快的Web程序来说,比较适合采用Servlet或者JSP构件。相反,如果开发周期比较长,时间比较充裕,那么采用EJB也是可以的。
上一篇:Spring2.5访问Session属性的四种策略 下一篇:Java编程:Java中文简体繁体转换