??xml version="1.0" encoding="utf-8" standalone="yes"?>
看来Q现在大多数人們于更加突出Java了,J2EEҎ(gu)让初学者误解是独立于一套Java的技术方案?/span>
从更深层ơ来看,Java诞生十年来,很多q十q前的业务组件至今还可以使用QY件应用不再由于语a的更q革命带来毁灭的打击了?/span>
但是Q随着WEB和EJB容器概念诞生Q得Y件应用业开始担心SUN的伙伴们是否q在Javaq_上不断推出翻新的标准框架Q致使Y件应用业的业务核心组件架构无所适从Q从一直以来是否需要EJB的讨论声中说明了q种彷L?/span>
W者曾l在2004q底中国软g技术大会Ioc微容?也就是Jdon框架的实现原?演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器Q保护我们的业务核心lgQ中间gQ,以gl它的生命力Q而不是依赖J2SE/J2EE版本Q如下图Q?br />
此次J2EE改名为Java EEQ实际也反映Z界这U共同心声?/span>
让我们看看Java EE 5有哪些新的功能或规定Q我们可以从SUN|站下蝲Java EE 5规范。其架构囑֦下:
图中灰色加黑部分是Java EE 5新的功能Q我们看刎ͼ在WEB层主要加入了JSFq个新的表现层框Ӟ和我们日常开发关pd切的是,引入了新的Java Persistence标准Q这个标准正在由EJB 3.0专家l制定?/span>
值得指出的是Q这个Java持久化标准也可以嵌入在WEB层调用,所以,它肯定不会从属于EJB标准Q这P当前所有的Java持久层标准如QJDBC/JDO/Hibernate/Entity Bean可能统一Q减用L(fng)架构选择 痛苦?/span>
从架构图可以看出Q无论Webl构或EJBl构Q提供实现的功能相差不多Q这P我们的业务核心组件就可以Ҏ(gu)需要部|在Web或EJB中运行,而不依赖具体的Java EE容器了。前面一章图的目标在Java EE 5中可以实C?/span>
当然QJava EE 5重要改变q是QJava EE不再象以前那样只注重大型商业pȝ的开发,而是更关注小C型系l的开发,化这部分pȝ开发步骤?/span>
落实q一化行动的最大特征是在Java 5.0(Java 1.5)中加入AnnotationsQ通过Annotations引入Q降低Java EE开发时Q既要写codeQ又要写XML配置文g之苦Q来回照,疲于奔命QAnnotations既是得益于C++语言Q也是从开源项目xDoclet实践中获得经验?/span>
但是Annotations是一把双刃剑Q初学者用得不好,会使得原本在XML中的Hard codeQ硬~码Q?写进入代码AnnotationsQ破坏代码的z和灉|性,Annotations讨论按这里?/span>
当然QAnnotations的引入不只是解决XML配置Q从大的概念_是解决一个资源注问?XML属于其中一个资?Q在原理J2EE中,容器理的资源都是由JNDI向应用程序提供的Q现在通过Annotations可以方便实现注射?/span>
资源注射QResource injectionQ设计概念其实是来自Ioc模式(Dependency Injection )Q笔者设计开发的Jdon框架其实已经Annotationsq一宗旨的目的实玎ͼ在Jdon框架应用演示源码SimpleJdonFrameworkTest中,在jdonframework.xml中有一D如下配|:
<pojoService class="com.jdon.framework.test.dao.JdbcDAO" name="jdbcDAO">
<constructor value="java:/TestDS"/>
</pojoService>
q段配置是将数据库的JNDI名java:/TestDS注射到JdbcDAO中。Jdon Framework下一个版本将是基于Java 5.0Q这行配|?可通过 Annotations写在jdbcDAO代码中,方便E序员开发?/span>
从这里,大家也可以知道EJB 3.0和EJB 2.0的区别了Q有的h疑惑Q是学习(fn)EJB 3.0q是学习(fn)EJB 2.0Q其实EJB 3.0q没有在原理机制上对EJB有多大改动,只是做了~程斚w的简化,另外EJB CMP参考了Hibernate新特点,EJB 3.0最大简化变动是CMP~程Ҏ(gu)上。所以,无论学习(fn)EJb 3.0/2.0QEJB原理和运行机刉是一Pq部分才是学?fn)EJB最大的困难处,而不是因为到了EJB 3.0Q理解EJB׃Ҏ(gu)?/span>
初学者可从Eclipse+Xdoclet开发EJB 2.0开始学?fn)?EJB 3.0 = EJB 2.0 + xDocletQ这里有一Eclipse开发EJB教程Q用JBossIDE非常单,无需Lomboz{插件?/span>
Security安全是Java EE的一个重要特点,也就是基于容器的安全讉KQ无需自己手工~码Q具体实现可参考Jdon框架应用演示源码JdonNews。这虽然是基于J2EE 1.3~写Q但是和Java EE 5区别不是很大?/span>
事务理Transaction Management也是Java EE 5的一个重要部分,该标准文档从几个斚w阐述了事务管理的要点Q标准中规定了在WEB层中使用事务和线E的处理关系Q标准中规定QWeb服务器如Tomcat无需在Web层提供事务支持,因ؓWeblgҎ(gu)不支持事务繁?传递?/span>
因ؓ目前一些架构如Struts+Spring+Hibernate/Struts+Hibernate是标准中的Webl构Q因此Java EE 5在J2EE 4.2.2规定?Weblg事务的生命周期,如果Weblg直接调用JTAQ事务就不可以跨一个客L(fng)的多个请求,事务只能在一个请?Servlet/Jsp)中完成,q个标准规定了我们在Web架构中(如上q架构)无法使用长事?如工作流/状态图中跨面h事务)Q针对一个客L(fng)跨请求的事务目前只有唯一解决Ҏ(gu)Q只有用EJB的有态Session。以上是Java EE 5主要部分QJava EE包含更多其他技术部分如Jdbc JMS JCA JNDI {等Q需要用户在实践中摸索?/span>