J2EE与电子商务应用
----电子商务的发展对传统的Web技术提出了强有力的挑战,由于电子商务的内部逻辑复杂,安全性要求苛刻,商务形式发展变化快,这就要求Web技术提供足够的复杂度和灵活性以适应电子商务的需求。
----J2EE(Java 2 Enterprise Edition)技术于是脱颖而出,并且日益完善,成为电子商务的主要开发平台。它是一个技术标准,并不是一个产品。符合J2EE标准的产品有BEA公司的Weblogic、Sun公司的NetDynamics、IBM的Websphere,还有包括著名数据库厂家Informix、Oracle、Sybase在内的上百个产品(具体信息请参见链接http://java.sun.com/j2ee/industry.html)。它们基本上都是应用服务器产品,因此J2EE平台通常指的是应用服务器的平台。
----但是,在Web服务器之后架设应用服务器,会对Web服务的响应速度带来较大的影响(尽管上述大多数产品本身都可用作Web服务器,但在内部结构上,Web服务器和应用服务器仍是分开的)。有经验的J2EE开发人员都会知道,要适应同等数量的用户,J2EE平台需要更高的硬件配置。按理来说,响应速度是Web服务质量的重要方面,既然J2EE平台降低了响应的速度,那它究竟带来了什么好处使电子商务平台的开发者如此青睐它?
面向对象的编程语言
----J2EE平台是建立在Java语言基础上的,Java是真正面向对象的语言,具有丰富的数据类型和强大的功能,能完成几乎任何复杂的功能,这是一般Web CGI编程语言所无法比拟的。面向对象的设计方法,不但可以设计庞大而复杂的系统,还可以使Web应用程序具有良好的扩充性和维护性,能够方便地实现国际化和本地化的功能,深受Web开发人员的喜爱。
平台独立的特性
----J2EE平台独立的特性包括两个方面,一是Java语言本身的平台独立性,二是J2EE标准的平台独立性。Java是一个跨平台的语言,在任何平台上,只要有Java Virtual Machine,就能在不同平台上执行同一个Java程序。例如,BEA的Weblogic在任何平台下都是同样的产品,因为它是100%纯Java的。
----另外,J2EE标准的平台独立性使得任何符合J2EE标准的应用服务器之间可以共用标准的组件。也就是说,在Weblogic下开发的组件也能用于Websphere中。这样,在电子商务应用的开发中可以任意选择或购买符合标准的通用组件,加快开发的过程。
----J2EE的平台独立性使程序的移植变得轻松简单。在J2EE中,你可以把一个Weblogic+Oracle的应用程序移植到Websphere+Informix上,不需要改动任何源码,只需要进行一些不算复杂的配置即可,这也是J2EE为何如此流行的主要原因之一。
高性能的服务器端编程语言
----Java以前给人的印象是功能强而性能较差的解释执行语言,实际上从Java 1.2 开始,特别是Java 1.3,性能有了飞跃,即时编译技术(JIT)使Java的执行效率大大提高。
----由此可见,Java是服务器端编程的优秀语言。但笔者认为,Java不适合客户端的应用,比如Applet。因为各种桌面浏览器的JVM版本可能不同,安全设置也不尽相同,会造成应用程序的不通用;而在服务器端,一切尽在你的掌握之中。
J2EE提供了标准的系统框架和服务
----J2EE平台提供了事务处理、对象生存控制、状态维持、并发控制、安全检测、资源共享等系统服务。需要这些服务的代价并不高,不用编程,而只要通过简单的配置就行。这使电子商务开发者从繁琐的系统设计中解脱出来,将精力主要放在商业逻辑上,提高应用的质量和加快开发的速度。
----标准化的框架结构是以分布式的多层应用体系为基础,使J2EE应用天然就具有可扩充性和可维护性(如图)。在系统的任意层面中可以增加新的功能,而不影响原有的系统,这种优点是平时需要花大量的设计、实现的功夫才能达到的,而使用J2EE平台可自然获得。
适合团体开发
----J2EE的构架非常适合团体开发的模式。标准的结构自然将应用分成表现层、企业逻辑层和数据层。可以使企业中的美工、系统分析员、编程人员各司其职,发挥各人的长处。特别是J2EE构架通用的MVC (Model,View,Control)模式,能够将系统各个层面的功能独立开来,使得一个美工修改界面根本不需要和Java程序员打交道。这种构架非常适合团队开发的模式,提高工作的效率。
可控性好
----J2EE安全控制和状态控制机制非常完善,这种控制机制使得整个应用拥有统一的状态转换规则。这样,不会让用户进入到不该进入的页面而引起状态的混乱,增加了系统的安全性。在J2EE中,状态的可控性使电子商务的开发更加简单和可靠,为顾客提供更好的服务。
与其他资源的集成
----一个电子商务的应用很大程度上可能建立在原有的信息系统之上,这就要求应用开发平台能够和遗留系统具有很好的集成能力。J2EE平台以其丰富的系统功能,通过JDBC、JTA、JMS、XML、 JNDI、CORBA等API可以与几乎所有关系型数据库、事务处理服务器、消息处理服务器、目录服务器和邮件服务器等进行无缝的集成,完美地结合成一个整体,保护原有的投资,并且为将来的发展留出广阔的空间。
----J2EE有如此多的优势,一定就适合任何电子商务的模式吗?其实不然,对于用户来说,在选择J2EE平台时,一定要考虑以下几个问题:
是否有足够的技术力量
----J2EE虽然功能强大,可是它的学习曲线长,对设计人员的要求很高,需要将整个应用设计成多个抽象的逻辑的层次和大量独立的对象,以及层次之间和对象之间的接口和协议,这都需要较强的技术团体和熟练的编程人员。
----另外,Java语言作为Web服务编程语言也有它的缺点:大部分程序需要编译(JSP除外),这比起各种CGI Script语言来说是很不方便的,修改、调试、维护工作量都很大。
----整个J2EE技术不是一个“循序渐进”的系统平台。J2EE从一开始就将它所有的技术深度展现给技术人员,面向对象的设计和编程技术也并非短时间就能掌握的,就连一些简单的应用配置文件也是XML格式的。因此要找一些asp程序开发者容易,找J2EE工程师可就难了。
是否真需要分布式平台
----各种J2EE的产品都给大家展示了一幅分布式平台的美好画面:你可以在多台不同的服务器上运行同一个服务应用,能将各种不同J2EE对象分布到不同的服务器上,进行负载均衡,而不破坏应用的整体完整性。这样就能够大大提高响应性能,并且大大提高系统容错能力和高可用性,因为无论哪一台服务器出现了故障,都会有其他的机器接替它的工作。但是,这对于你未必实用。首先,您要确认是否有多台服务器可供运行应用服务器。即使有,也不一定就能得到很好的性能。因为大多数Web应用都是建立在数据库管理系统之上的,系统的背后一定运行着Oracle8i、Informix Foundation 2000、 Sybase或SQL Server。当有多台应用服务器时,系统的性能瓶颈一定会在数据库系统。如果数据库系统性能下降或瘫痪,应用服务器将无法发挥作用。
是否有足够的经费运行J2EE
----运行J2EE的电子商务平台,除了要多负担J2EE平台的费用以外,还要负担硬件平台的费用。因为J2EE的运用会使整个Web响应的速度降低,这主要是因为大量的远程组件调用的延时和大量的中间对象的维护。因此,对于一些速度是关键因素的Web应用,不得不提高硬件平台的质量或数量来提高整个系统的性能。
----因此在选择J2EE平台时,一定要考虑清楚什么是对自己最重要的。如果是系统的开放性、可维护性、可移植性很重要,并且用户状态维护很复杂,那么选J2EE肯定会事半功倍;如果是响应的速度、开发的时间和开发的费用是最重要的,传统的Web开发系统就已经足够了。另外,使用J2EE平台时,深藏在服务中的动态页面是不会被各种搜索工具查到的,所以,以广告为主要业务的应用大可不必使用J2EE平台。