J2EE和.NET是现在中间件应用服务器的两大代表阵营,让我们来看看它们的真面目。
J2EE, J2EE的全称是Java2EnterpriseEdition,它是由SUN公司领导,各厂商共同制定,并得到广泛认可的工业标准。业内许多大的应用服务器厂商如IBM、BEA、Oracle等都积极地参与J2EE标准的制定和实施工作。因此J2EE从一开始走的就是开放路线,由众多厂商共同提交方案和制定规范,这也使得J2EE很容易就可以吸收这些厂商多年来在应用开发、系统设计和集成方面的经验。当然,这些厂商对市场的需求和新技术发展的预测,以及各自独到的观点,都会在J2EE的规范中不断体现出来。有了这样的土壤,J2EE产品完全可以满足当前不断变化和日趋复杂的商业应用需求,也很快变成了企业构建新系统和集成、扩展已有系统的首选技术。而因此带来的巨大商机和利润又使得各厂商更加努力的去完善J2EE,从而造就了J2EE强大的生命力。
J2EE应用服务器从企业的应用层次来说,是处于中间层,前边客户端层,在后面有企业信息系统层:
1. 客户端层 客户端层处于企业的防火墙内部和外部,它可以是在客户端层运行的浏览器、基于Java的程序、Swing、COM;或是其它Web型的编程环境,通过 HTTP、HTTPS、IIOP等协议访问后端的应用服务器内的资源。值得一提的是Applet,它是一个小的客户端程序,需要浏览器的JVM(Java 虚拟机)来执行,我们可以把一部分的业务逻辑用Applet来实现。作为客户端的应用程序,它提供了更加友好的图形界面的功能,可以直接调用业务逻辑层中的EJB(EnterpriseJavaBean),当然也可以去打开一个HTTP联接与Web层的Servlet进行通讯。
2. 应用服务层 一般情况下,此层包含支持客户端请求的表示逻辑和业务逻辑。表示逻辑层由显示动态HTML/WML页面的JSP和Servlets实现。它们的主要作用是接受并检验用户输入的数据,把数据传给后端的业务逻辑层,并把业务逻辑层处理的结果返回给客户端层。而业务逻辑层则用来满足金融、电信、零售等商务应用的需要,由EJB(EnterpriseJavaBean)来实现。EJB依靠EJB Container来实现事务处理、生命周期、状态管理、资源池和安全等问题。J2EE目前有三种EJB:
会话(Session)Bean,表示客户端程序和J2EE服务器的交互状态,当客户端程序执行完后, 会话Bean 和相关数据就会被删除
实体(Entity)Bean,则表示数据库中的记录. 当客户端程序中止或服务器关闭时,实体Bean 的数据仍然保存在数据库中,不会消失
消息驱动(Message-Driven)Bean,是一种以消息触发的EJB,它会对消息进行监听,一旦消息到来,它就会去做相应的操作
3. 企业信息系统层 企业信息系统(EIS)层,是现有各类应用的组合,如打包应用、专有系统等。它可以包含企业资源规划(ERP)、大型主机事务处理(CICS、IMS)、数据库系统、客户关系管理(CRM)、数据仓库(DataWarehouse)、财务、OA及其它遗留下来的信息系统等等。对于这类应用的访问,现在在企业中已成为头等大事。而应用服务层正是通过JDBC、JCA这些J2EE的标准和针对不同应用的JCAAdapter来访问后台的企业信息系统。 J2EE1.3规范已经颁布了JCA(Java Connector Adapter)的标准,对如何与ERP、CRM等打包应用和一些系统软件如MQSeries、Email服务等的访问作了统一的规范。
对于未来,J2EE将会在WebServices和JCA上下功夫。通过标准WebServices模型,提供一套标准的方法在JAVA中实现 WebServices。在Web Services的安全方面,利用OASIS的SAML标准提供安全Web Services方面的功能。在JCA中加入异步消息模式,增加后台系统的连接方式。当然在其它方面如JSP和EJB也会不断完善。JSP将在浏览器端支持标准Tag Library,提高模型-视图-控制架构,达到ASP.NET的水平。而在EJB上,对于异步消息和Web Services的支持将是不久的方向。另外随著Liberty Alliance的成立,J2EE也会在互联网的认证、授权上找到解决方案(类似于微软的Passport服务)。对于多媒体的支持和JAVA Swing的丰富都在制定之中。
一方面新技术对新业务的影响是巨大的;另一方面新技术推动著业务模式的改变,企业在不断地把它的传统业务搬到互联网上。
Java/J2EE
Java是一种语言,它的诞生使得程序可以无处不在。现在你再也不用担心选用什么样的硬件和操作系统了。大到IBM大型机Mainframe,小到手持移动设备手机都可以跑Java的程序,也就是说您写的Java应用可以到处流动了。原来花去大量人力物力的程序移植已不复存在。但Java又仅仅是一种编程语言,它无法提供企业应用所需的许多功能。在SUN公司的领导下,现在有了J2EE(Java 2 Enterprise Edition),这是专门为企业应用制定的标准,企业可以用它来编制企业级的应用,它为企业应用提供了象数据库存取,交易完整性,可靠消息传递等等功能。从公元两千年开始,越来越多的企业把自己的关键应用开始构建在支持J2EE标准的Web应用服务器之上。现在主流的一些J2EE应用服务器都可以支持企业应用所需的稳定性、可用性、安全性、靠性能、可扩展性等等。
XML
XML是一种结构化的数据表达方式。在此之前各种系统之间有著各自的数据表达,如关系型数据库、文件服务器和用户自定义的数据表达结构,应用这些信息数据时必须要了解数据的独特结构,再在程序中对其解释,一旦数据结构变化了,那么应用程序也得变化,这给业务应用的发展套上了枷锁,不同系统间也很难集成。而随著XML的诞生和发展,跨系统、跨行业的应用间交流变得非常简单,这种结构化的数据表达使得应用程序无需了解具体的数据物理位置,数据结构的添加和删除对应用程序的影响非常小。各个行业间也逐渐建立起了行业的数据词典,这更推动了XML的普遍运用。XML使得数据可以流动了。
WebServices
有人说WebServices会真正实现计算网络化,有人说WebServices会改变现在的IT竞争格局,而SUN公司的CEOScott McNealy则称Web Services将是SUN公司事业发展的一个顶峰,Bill Gates认为它是微软.NET的核心。其实Web Services更广泛的寓意在于它是一场分布式计算模式的跃进,它真正要解决分布式计算的问题,这也正是科学家们在努力的。利用庞大的、无处不在的互联网计算能力,实现广泛的计算和企业服务。一个事实已经确立,自IT有史以来唯有ASCII技术标准得到了几乎所有厂商的支持,并被应用到几乎做有的相关领域,现在Web Services极有可能再次成为这样的标准。真正成为企业与企业之间连接的桥梁,使得企业可以把自己的商业服务推广到全球,推广到互联网上,并真正使自己成为动态发展变化的商业价值链中的一个环节。为将来商业模式、商业服务的多样化,提供跨企业、跨行业、跨地域的业务提供了技术的实现方法。
当今降低企业运作成本和企业服务直通式处理(StraightThroughProcessing)正在成为商业发展的一个重点,而WebServices正适时而降,使企业达到这些目的变得可行了。
但最近随著全球经济的放缓和甚至于部分地区的倒退,再加上美国的911事件,企业降低了投入预算,投资商们也正在缩减投资。这对于新技术的研发和采用是一个不好的消息。我们可以想像,原来憧憬的科技所带来的方便的生活,任意时间、任意地点可以享用的业务服务将会被推迟。生产力的提高也会放缓。所以我们一起期待著经济的复苏,期待著信息技术推动生产力的提高。
.NET
.NET的前身是微软的DNA(DistributedNetworkArchitecture),在2000年中的时候被.NET所取代。.NET在诞生之初就秉承了微软一贯的文化和战略:帮助客户加快对市场反应,提供完整、集成的解决方案和缩短客户投资回报的时间。这些完全可以在微软的产品特性中体现出来。比尔-盖茨作为首席软件架构师在把.NET的远景和框架规划完以后,就开始大力做市场宣传和研发的工作,大有后来居上的势头。.NET以 WebServices为核心,全面支持SOAP、UDDI和WSDL,并在底层实现了类似Java虚拟机的CLR(Common Language Runtime)和一套具有3,500多个类的.NET基础类库,以支持之上的Visual Basic、C#(类似Java的解释性编程语言)和ASP等。并且在后端支持其数据库SQL Server和Passport,加之完善的开发工具.NET Studio组成了完整的解决方案。
J2EE vs .NET
2002年3、4月间,Giga信息集团做了一次全球性的调查,在“最影响你的Web服务战略的唯一应用平台”的选择中65%的被调查者选择了J2EE,剩下的35%选择了.NET。其实许多的被调查者都把这两种技术作为了自己未来基本的应用平台。但在大企业中75%到80%都选择了J2EE,而微软的. NET则在小企业中占据了有利位置。可以推断的是,最为疯狂的争夺将出现在中型企业的市场上。
评断这两种技术并做出选择,并非一件易事。既要看眼前能实现的功能,又要看未来的发展方向。但从大体上来讲,J2EE具有更强的体系结构,更加注重于企业端,也可以给你更多的选择和借助更多的厂商。而.NET则具有更好的开发工具,漂亮的图形界面,低廉的成本,单个厂商的容易集成和管理等优势。对于未来的技术发展,双方都会更加注重和利用合作伙伴的力量来加强和补充自己的平台。但在未来的技术决策上还是颇具不同,微软的首席技术架构师或者说是CTO比尔- 盖茨(BillGates)就是.NET的最终决策人。而J2EE就相对复杂一些,JCPEC(JavaCommunity Process’sExecutive Committee)这样的一个最高委员会是这一标准的决策机构,各厂商都需要通过JSRs(Java Specification Requests)的形式提交技术规范,并等待JCP EC的决定。
因此可以这样说,如果未来你的企业更注重战略,那么请选择J2EE;如果你的企业更注重图形界面和具体战术,.NET则首当其冲了。