最近,SUN的伙伴们(the folks at SUN)将J2EE 1.5改名为java EE 5,当然以前J2EE版本还是称为J2EE,之所以改名,目的还是让大家清楚J2EE只是Java企业应用,用我的话来说,J2EE就是Java在数据库服务器端的应用(见
初学者如何开发出一个高质量的J2EE系统)。
看来,现在大多数人倾向于更加突出Java了,J2EE容易让初学者误解是独立于一套Java的技术方案。
从更深层次来看,Java诞生十年来,很多近十年前的业务组件至今还可以使用,软件应用不再由于语言的更迭革命带来毁灭的打击了。
但是,随着WEB和EJB容器概念诞生,使得软件应用业开始担心SUN的伙伴们是否还在Java平台上不断推出翻新的标准框架,致使软件应用业的业务核心组件架构无所适从,从一直以来是否需要EJB的讨论声中说明了这种彷徨。
笔者曾经在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本,如下图:
此次J2EE改名为Java EE,实际也反映出业界这种共同心声。
让我们看看Java EE 5有哪些新的功能或规定,我们可以从SUN网站下载Java EE 5规范。其架构图如下:
图中灰色加黑部分是Java EE 5新的功能,我们看到,在WEB层主要加入了JSF这个新的表现层框架,和我们日常开发关系密切的是,引入了新的Java Persistence标准,这个标准正在由EJB 3.0专家组制定。
值得指出的是,这个Java持久化标准也可以嵌入在WEB层调用,所以,它肯定不会从属于EJB标准,这样,当前所有的Java持久层标准如:JDBC/JDO/Hibernate/Entity Bean将可能统一,减少用户的架构选择 痛苦。
从架构图可以看出,无论Web结构或EJB结构,提供实现的功能相差不多,这样,我们的业务核心组件就可以根据需要部署在Web或EJB中运行,而不依赖具体的Java EE容器了。前面一章图的目标在Java EE 5中可以实现了。
当然,Java EE 5重要改变还是:Java EE不再象以前那样只注重大型商业系统的开发,而是更关注小到中型系统的开发,简化这部分系统开发步骤。
落实这一简化行动的最大特征是在Java 5.0(Java 1.5)中加入Annotations,通过Annotations引入,降低Java EE开发时,既要写code,又要写XML配置文件之苦,来回照顾,疲于奔命,Annotations既是得益于C++语言,也是从开源项目xDoclet实践中获得经验。
但是Annotations是一把双刃剑,初学者用得不好,将会使得原本在XML中的Hard code(硬编码) 写进入代码Annotations,破坏代码的简洁和灵活性,Annotations讨论按这里。
当然,Annotations的引入不只是解决XML配置,从大的概念说,是解决一个资源注射问题(XML属于其中一个资源),在原理J2EE中,容器管理的资源都是由JNDI向应用程序提供的,现在通过Annotations可以方便实现注射。
资源注射(Resource injection)设计概念其实是来自Ioc模式(Dependency Injection ),笔者设计开发的Jdon框架其实已经将Annotations这一宗旨的目的实现,在Jdon框架应用演示源码SimpleJdonFrameworkTest中,在jdonframework.xml中有一段如下配置:
<pojoService class="com.jdon.framework.test.dao.JdbcDAO" name="jdbcDAO">
<constructor value="java:/TestDS"/>
</pojoService>
这段配置是将数据库的JNDI名java:/TestDS注射到JdbcDAO中。Jdon Framework下一个版本将是基于Java 5.0,这行配置 将可通过 Annotations写在jdbcDAO代码中,方便程序员开发。
从这里,大家也可以知道EJB 3.0和EJB 2.0的区别了,有的人疑惑,是学习EJB 3.0还是学习EJB 2.0,其实EJB 3.0并没有在原理机制上对EJB有多大改动,只是做了编程方面的简化,另外EJB CMP参考了Hibernate新特点,EJB 3.0最大简化变动是CMP编程方法上。所以,无论学习EJb 3.0/2.0,EJB原理和运行机制都是一样,这部分才是学习EJB最大的困难处,而不是因为到了EJB 3.0,理解EJB就会容易。
初学者可从Eclipse+Xdoclet开发EJB 2.0开始学习, EJB 3.0 = EJB 2.0 + xDoclet,这里有一篇Eclipse开发EJB教程,使用JBossIDE非常简单,无需Lomboz等插件。
Security安全是Java EE的一个重要特点,也就是基于容器的安全访问,无需自己手工编码,具体实现可参考Jdon框架应用演示源码JdonNews。这虽然是基于J2EE 1.3编写,但是和Java EE 5区别不是很大。
事务管理Transaction Management也是Java EE 5的一个重要部分,该标准文档 从几个方面阐述了事务管理的要点,标准中规定了在WEB层中使用事务和线程的处理关系,标准中规定:Web服务器如Tomcat无需在Web层提供事务支持,因为Web组件根本不支持事务繁衍/传递。
因为目前一些架构如Struts+Spring+Hibernate/Struts+Hibernate是标准中的Web结构,因此Java EE 5在J2EE 4.2.2规定了 Web组件事务的生命周期,如果Web组件直接调用JTA,事务就不可以跨一个客户端的多个请求,事务只能在一个请求(Servlet/Jsp)中完成,这个标准规定了我们在Web架构中(如上述架构)无法使用长事务(如工作流/状态图中跨页面请求事务),针对一个客户端跨请求的事务目前只有唯一解决方案:只有使用EJB的有态Session。参考文章:I manage long duration transactions?
以上是Java EE 5主要部分,Java EE包含更多其他技术部分如Jdbc JMS JCA JNDI 等等,需要用户在实践中摸索。
分享到:
相关推荐
《Java EE 5 Tutorial》是Java企业版5(Java Platform, Enterprise Edition 5)的一份官方教程,旨在帮助开发者深入理解和掌握Java EE平台的核心技术。这份文档详细介绍了如何使用Java EE 5进行分布式应用程序的开发...
Java EE 5 SDK是Java企业版(Enterprise Edition)的一个重要版本,它为开发分布式、多层的Web应用程序提供了全面的框架和支持。这个SDK包含了运行Java EE应用所需的所有组件,包括服务器、API文档、示例代码以及...
Java EE(Java Platform, Enterprise Edition)是Java平台上用于构建企业级Web应用的框架集合,它提供了丰富的服务和组件,使得开发者能够快速开发出分布式、多层架构的应用程序。本教程由知名讲师郑阿奇编著,旨在...
Java EE 7是Java EE平台的一个重要版本,它在Java EE 6的基础上引入了更多的新特性,比如支持HTML5、WebSocket技术、新的Batch API以及更新的JMS API等。 书籍的版权归属于Packt Publishing出版社,此出版社以出版...
### Java EE 5 规范知识点详解 #### 一、Java EE 5 概述 - **定义**:Java Platform, Enterprise Edition (Java EE) Specification 版本 5(简称 Java EE 5)是 Sun Microsystems 在 2006 年发布的最新版本,它为...
Java EE 5 API是Java企业版(Enterprise Edition)5版本的核心接口和类的集合,它为开发企业级应用程序提供了丰富的框架和服务。这个压缩包包含了两种格式的文档:CHM(Compiled Help Manual)和ZIP,方便用户根据...
Java EE 5 SDK包含了开发Java EE应用程序所需的所有工具和文档,包括JavaServer Pages (JSP)、Servlet、Enterprise JavaBeans (EJB)、Java Persistence API (JPA)、JavaServer Faces (JSF)、Java Message Service ...
这个"java ee5 document"应该包含了一系列关于Java EE 5版本的官方文档,为开发者提供详细的指南、教程和API参考。Java EE 5是2006年发布的一个重要版本,它引入了许多改进和新特性,旨在简化开发流程并提高生产力。...
《Java EE5 Tutorial》是Java企业版5(Java EE 5)的重要教程,它为开发者提供了详尽的指导,帮助他们理解和掌握Java EE 5平台的核心技术和开发实践。本教程以CHM(Microsoft Compiled HTML Help)格式呈现,方便在...
5. **JPA(Java Persistence API)**:提供了一种规范来管理Java对象到数据库的映射,简化了ORM(对象关系映射)。Hibernate是常见的JPA实现。 6. **JTA(Java Transaction API)**:用于管理分布式事务,确保数据...
JAVA EE,全称为Java Platform, Enterprise Edition,是Java平台企业版的简称,是Oracle公司推出的一种用于构建企业级分布式应用程序的框架。它为开发者提供了在服务器端开发应用程序的一系列标准和API,包括Web组件...
《Java EE 5 Tutorial》是Java企业版5(Java Platform, Enterprise Edition 5,简称Java EE 5)的官方教程,旨在帮助开发者理解和掌握在Java平台上构建分布式、多层的企业级应用程序。本教程以CHM(Compiled ...
5. **MVC (Model-View-Controller)**: MVC模式是Java EE应用中常见的设计模式,用于分离业务逻辑、数据模型和用户界面。理解如何在Java EE中实现MVC,如使用Servlet处理请求,JSP显示视图,以及模型类存储和操作数据...
Java EE 6(Java Platform, Enterprise Edition 6)是Java技术在企业级开发中的一个里程碑,它为构建可扩展、高性能、分布式的企业级应用程序提供了全面的框架和规范。本教程由Sun Microsystems(后被Oracle收购)...
The Java EE 5 Tutorial为学习Java EE 5的经典教材!一直由sun公司维护,不过为全英文版.
5. **JNDI(Java Naming and Directory Interface)**:JNDI在Java EE中用于查找和绑定资源,如数据源或EJB。开发者会学习如何使用JNDI查找服务并进行依赖注入。 6. **JTA(Java Transaction API)**:在多组件协作...
这个"java_ee_sdk-5-javadocs"是一个针对Java EE 5版本的官方API文档,它包含了开发Java EE应用程序所需的所有类和接口的详细说明。Java EE 5是2006年发布的一个版本,它在之前的版本基础上做了很多改进和简化,以...