当前页面位置: » 丰搜网 » 文档中心 » 详细内容
什么是java ee 5
最近,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。以上是
java ee 5主要部分,
java ee包含更多其他技术部分如jdbc
jms jca jndi 等等,需要用户在实践中摸索。