`
kyo100900
  • 浏览: 642417 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【翻译】Java EE 6体系结构的变革(完)

阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

JSF 2.0

 

尽管 Java 在展示层框架上竞争的非常激烈,但 JSF 仍然固守着自己的领地。虽然有很多关于 JSF 的易用性和健壮性的质疑声,但 JSF2.0 就是为正面解决这些问题而提出来的,它的易用,创新以及可扩展的特性包括:

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JSF 正式将 Facelets 作为视图技术。也许你不熟悉 Facelets ,它也是一个与 JSF 结合默契的开源视图技术。因此,与 JSP 不同的是 Facelets 更适合 JSF 的组件模型以及生命周期的概念。当然,也许 Facelets 最强大的特性就是在用 mark-up 来代替 java 代码创建自定义的组件。创建自定义组件的复杂度也许是开发者对 JSF 抱怨最多的地方了。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JSF2.0 通过使用标签为 Java EE 5 提供了基于 annotation 驱动的配置特性(比如说可以使用 @ManagedBean @ManagedProperty )。这也意味着可以一定程度上的减少 faces-config.xml 文件的大小,不过像在 navigation 这些结点的配置在 XML 文件还是不能少。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JSF2.0 为适应 AJAX 而改变了自身的生命周期,只需要局部页面的交由 AJAX 事件处理。这个特性使得 JSF+AJAX 的组合更加自然。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JSF2.0 现在内置了优秀的资源处理器。对 images JavaScript 文件以及 CSS 样式等都表现出众。它可以对通过逻辑名称,资源分组以及版本等方式来更好的引用资源。

 

除上述特性外, JSF2.0 还包括许多其它方便的改变。比如说支持事件,支持 RAILS_ENV 的开发风格 ( 就是 ROR) ,支持对标准组件集进行扩展。你可以通过下面的链接来看看 JSF2.0 的公开草案: http://jcp.org/en/jsr/detail?id=314

 

 

EJB 3.1

 

EJB Java EE 5 就已经经历过了非常大的改动。也许看似不可能,但实际上 EJB3.0 还是在社区中广泛得到认可,并且采纳它的人也在不断增长。而这一切也许是因为我们过度的认为需要怎么怎么简化 Java EE 5 才取得这样的成绩。比如说,对 JBoss Seam 的兴趣和 GlassFish 的热情都是重要的关键因素。 EJB3.1 的目标就是在增加业务组件时,继续让 EJB 变得尽可能简单。下面是对 EJB3.1 特性的高度概括:

 

<!-- [if !supportLists]-->l         <!-- [endif]-->原本需要甚至实现 Session Beans 的业务接口变得可选了,不再强迫要求实现。在使用 Session Beans+JSF+WebBeans 的场景下尤其有用。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->EJB3.1 增加了 Singleton Beans 的概念。因为人们更倾向于管理共享的应用程序状态,需要保证是完全线程安全的模型。此外, EJB3.1 新增的声明式的并发控制也更加灵活。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->EJB3.1 一个可圈可点的的强大特性就是支持 cron 风格的 scheduling 。除目前基于 timer API 的调度计时器外,声明式和编程式的 cron 风格的 scheduling API 也加入了进来。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->另一个强大的特性就是可以通过使用 @Asynchronous 标注来对 Session Bean 的方法进行异步调用。你甚至还通过它来控制异步 EJB 方法从而返回一个 java.util.concurrent.Future 对象

 

<!-- [if !supportLists]-->l         <!-- [endif]-->EJB3.1 Lite 概念的逐渐引入形成了一个 EJB API 的子集,并在 Web Profile 中得到应用。只不过 EJB Lite 包含了像事务处理和安全这样的特性,而那些消息机制,远程调用以及 scheduling 等非必须的自然没有必要加入其中。

 

除上述列表所述特性外, EJB3.1 的特性还包括:括直接将 EJB 打包成 war 文件,可运行在 embedded 的容器中便于 Java SE 环境进行 JUnit 测试,使用统一的标准化全局 JNDI 命名方式。 EJB3.1 的公开草案可从以下链接获得: http://jcp.org/en/jsr/detail?id=318

 

 

 

JPA 2.0

 

Java EE 6 的时候, JPA 已经彻底从 EJB 中分离,形成自己的体系 (EJB3.0 已经将 JPA 分离出去了 ) JPA 的成功是毫无疑问的。它广泛得到社区的采纳和一流供应商的支持。本来我们担心 EJB2.* Enity Beans 垮台可能无法让 Java EE 再次引领持久层的标准,一个重要成功的因素就是 Gaving King JBoss 社区毫不含糊的支持。 JPA2.0 的目标就是要在这次成功的基础上再接再厉,填补更多的空白,再创多的创新:

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JPA2.0 加入了大量必须的 ORM 映射增强特性,包括:支持通过使用 @ElementCollection 标注来增强 collections, maps lists( 这里不是指实体之间的关联关系 ) 集合,支持 map 的单向 one-to-many 关联 (JPA1.0 只允许双向 one-to-many 关联 )

 

<!-- [if !supportLists]-->l         <!-- [endif]-->EntityManager Query API 都得到改进。比如说,现在可以从结果集中直接取得第一条记录 (JPA1.0 只允许从一个 unique 结果集中反回单个记录 ) ,指定 query 结果集的最大值,访问各个供应商的底层实体对象 manager query ,最后就是加入悲观锁 (JPA1.0 只支持乐观锁 )

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JPQL 也提供类似于 SQL CASE NULLIF COALESCE 等函数

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JPA2.0 应广大开发者要求增加了 Criteria API 。要是你对 Hibernate TopLink Criteria API 不熟悉的话,可以将它想像成一个以 Java 为中心的面向对象,线程安全并可以与 JPQL 划上等号的一组 API 。这组 API 适合于编写复杂的动态查询语句,还可避免解析 JPQL 语句时,所抛出的运行期异常。

 

更完整的 JAP2.0 特性还包括:标准的二级缓存,标准的 JDBC properties ,指定超时时间等等。你可以随时通过下面的 JSR 站点看看关于 JPA2.0 公开草案的更多细节: http://jcp.org/en/jsr/detail?id=317

 

 

Servlet 3.0

 

如果说 Servlet API 已经是相当成熟的话,那么也许你也许会惊讶怎么它也要来一次大修订?事实上, Servlet3.0 的改变又带来了一系列激动人心的特性,相信它们又会被社区广泛接受。共同来看看这些改变吧:

 

<!-- [if !supportLists]-->l         <!-- [endif]-->Servlet3.0 Java EE 6 的模型中引入了像 @WebServlet @ServletFilter @WebServletContextListener 等标注。它们能很大程序上减少 web.xml 配置。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->Servlet3.0 当然也引入 web.xml 分块思想。这就意味着容器除了可以在 WEB-INF/lib 中查找 web.xml ,还可以在任何 web 应用程序的 classpath (比如说 WEB-INF/classes WEB-INF/lib 中的 jar 包)中查找 web.xml 配置文件片断。这对于像 JSF Struts 这些需要在 web.xml 通过配置才能启动的 web 应用程序框架尤其有用。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->另一个非常酷的特性就是可通过使用 ServletContext 来编程式的增加 Servlets Filters 以及 Listeners 。和刚才提到的 web.xml 片断一样,该特性也主要是为满足框架开发人员需要动态的在运行期决定配置而新增的。

 

除了上述改变外, Servlet 3.0 还引入了支持异步处理等诸多特性。 Servlet 3.0 的公开草案可以通过下面的链接获得: http://jcp.org/en/jsr/detail?id=315

 

 

JAX-RS 1.1

 

REST 的日益兴起为 web services 开发提供了新的方式。这次包含的 JAX-RS 与先前的 JAX-WS 地位相当,表示 Java EE 也认可 REST 是一种趋势。与 JAX-WS 的出发点一致, JAX-RS 也远离了 SOAP 协议的底层细节。 JAX-RS 设计的目标就是想,通过使用 POJO 编程模型和基于标注的配置,来减少 REST 开发周期。下面是对 JAX-RS 的高度概括:

 

<!-- [if !supportLists]-->l         <!-- [endif]-->@Path 标注用来决定一个 JAX-RS 的资源 URL 可以被合法访问。可用于 POJO

 

<!-- [if !supportLists]-->l         <!-- [endif]--> @GET @POST @PUT @DELETE 这些标注可用来指定相应的 HTTP 方法,来对资源进行访问。

 

<!-- [if !supportLists]-->l         <!-- [endif]--> URL query 参数, cookies 的值以及 HTTP header 的值都可以通过 @QueryParam, @PathParam @CookieParam @HeaderParam 等标注将其与对应的变量映射在一起。

 

<!-- [if !supportLists]-->l         <!-- [endif]-->JAX-RS 可以和 Servlets WebBeans EJB 集成。

 

JAX-RS 已有的许多强大的特性使得 REST 开发很轻松,这与当初 JAX-WS 开发 SOAP 而无需知道底层细节惊人的相似。 JAX-RS 的公开草案可从下面的链接下载: http://jcp.org/en/jsr/detail?id=311

 

 

你的帮助是必要的

 

也许你能想像专家组正在努力进化 JavaEE ,使之成为一个大家乐意使用的强大的开发平台。 JavaEE7 除了 API 的革新外, JSR 316 专家组现在也变得是稳重而又开阔。尽管如此,我们能做的只有这么多了。我们需要你的反馈,告诉我们这次有没有让你们失望或者我们还应该摸索其它道路。你可以直接将你的反馈通过 jsr-316-comments@jcp.org 发给专家组。如果方便的话,也给我抄送一份 reza@rahmannet.net

 

 

期待你的来信,同时也祝我们好运。

 

 

相关链接

 

<!-- [if !supportLists]-->1.         <!-- [endif]-->Java EE 6 Platform Public Review, http://weblogs.java.net/blog/robc/archive/2009/01/java_ee_6_platf_1.html .

<!-- [if !supportLists]-->2.         <!-- [endif]-->Profiles in the Java EE 6 Platform, http://weblogs.java.net/blog/robc/archive/2008/02/profiles_in_the_1.html .

<!-- [if !supportLists]-->3.         <!-- [endif]-->Web Beans Sneak Peek Part I: Introducing Web Beans, http://in.relation.to/Bloggers/WebBeansSneakPeekPartIIntroducingWebBeans .

<!-- [if !supportLists]-->4.         <!-- [endif]-->Web Beans Sneak Peek Part II: Injection, binding annotations and component types, http://in.relation.to/Bloggers/WebBeansSneakPeekPartIIInjectionBindingAnnotationsAndComponentTypes .

<!-- [if !supportLists]-->5.         <!-- [endif]-->Web Beans Sneak Peek Part III: Declaring components using XML, http://in.relation.to/Bloggers/WebBeansSneakPeekPartIIIDeclaringComponentsUsingXML .

<!-- [if !supportLists]-->6.         <!-- [endif]-->Web Beans Sneak Peek Part IV: Scopes, contexts and resolver methods, http://in.relation.to/Bloggers/WebBeansSneakPeekPartIVScopesContextsAndResolverMethods .

<!-- [if !supportLists]-->7.         <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 1): ProjectStage, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature2 .

<!-- [if !supportLists]-->8.         <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 2.1): Resources, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature5 .

<!-- [if !supportLists]-->9.         <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 2.2): Resources, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature .

<!-- [if !supportLists]-->10.     <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 2.3): Resources, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature3 .

<!-- [if !supportLists]-->11.     <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 3): Publish/Subscribe Event System, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature1 .

<!-- [if !supportLists]-->12.     <!-- [endif]-->JSF 2.0 New Feature Preview Series (Part 4): Resource Re-location, http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature4 .

<!-- [if !supportLists]-->13.     <!-- [endif]-->New Features in EJB 3.1, http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1 .

<!-- [if !supportLists]-->14.     <!-- [endif]-->New Features in EJB 3.1 - Part 2, http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesEJB31 .

<!-- [if !supportLists]-->15.     <!-- [endif]-->New Features in EJB 3.1 - Part 3, http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesEJB31-3 .

<!-- [if !supportLists]-->16.     <!-- [endif]-->New Features in EJB 3.1 – Part 4, http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-Part4 .

<!-- [if !supportLists]-->17.     <!-- [endif]-->New Features in EJB 3.1 – Part 5, http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB31-Part5 .

<!-- [if !supportLists]-->18.     <!-- [endif]-->An Overview of Servlet 3.0, http://java.dzone.com/articles/an-overview-servlet-30 .

 

 

分享到:
评论
13 楼 ray_linn 2010-11-02  
没啥新东西。。。sun真的是老牛拉破车啊....

EJB 3,在hibenrate烂大街的时候才姗姗来迟。。。
12 楼 aidiyuxin 2009-12-26  
超级好,非常赞,感谢楼主共享

11 楼 cynan168 2009-09-06  
只接触了其中一小部分。
写得不错,呵。。。
10 楼 lemonweirui 2009-04-13  
总的老说这些特性还是很值得期待的。。EJB3.1会是什么样子呢
9 楼 taxuewuhen 2009-03-04  
无语了呀,一切来的太快,也走的太快。。。。。。 
8 楼 weidewei 2009-02-11  
   
7 楼 jordanyangwei 2009-02-10  
忽然感觉sun官方的东西,还是很好用的。但就是维护起来特别麻烦呵呵,有一点臃肿的感觉 
6 楼 rmn190 2009-02-10  
又一次觉得自己理解掌握的东西太少太少了.

谢谢共享!!
5 楼 witcheryne 2009-02-10  
收获不小!
4 楼 FGhost 2009-02-09  
觉得 落伍了
3 楼 jltest 2009-02-09  
    有爱!!!!
2 楼 wetouns 2009-02-09  
支持EE7的发布
1 楼 Fly_m 2009-02-09  
看了这么多东西,感觉自己又一次的渺小了.还是要多多地学习才行,不是简单地跟着别人的脚步走,还是多理解一下背后的东西才行.
谢谢翻译哈.

相关推荐

    EJB体系结构的改进及应用

    **EJB(Enterprise JavaBeans)体系结构的改进与应用** EJB是Java平台企业版(Java EE)中的核心组件,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。这篇研究生论文深入探讨了EJB体系结构的改进及其在...

    Java 简介,详细教程

    6. 体系结构中立:Java字节码可以在任何支持Java的平台上运行,无需重新编译,确保跨平台的兼容性。 7. 可移植性:Java的标准化和类型长度的固定,确保了代码在不同硬件和操作系统上的移植性。 8. 解释型:Java代码...

    基于移动互联网的项目动态管理信息技术研究.pdf

    它基于Java SE(标准版),为技术人员提供了一套丰富的通信API、管理功能、组件模型以及Web服务,使得开发企业级Web 2.0应用程序和面向服务体系结构(SOA)变得可能。 2. Java EE 6的核心特征 Java EE 6引入了Bean ...

    java学习中的一点忠告

    掌握RMI(远程方法调用)、RMI/IIOP等远程API,以及CORBA(公共对象请求代理体系结构),可以实现不同平台之间的服务互操作,这对于构建分布式系统尤为关键。 ### 七、Java EE标准与Web容器 熟悉Java EE标准,包括...

    基于J2EE的物流信息系统设计与实现

    J2EE(Java 2 Platform, Enterprise Edition)是一个支持企业级应用的标准架构,它提供了一种基于组件的应用服务器为核心的多层应用体系结构。相比于传统的单层或两层结构,J2EE具有以下优势: - **可靠性**:通过...

    内推:京东数据与智能部大数据算法岗.docx

    2. **框架和技术栈**:熟悉Java EE体系结构、JVM原理及主流开源框架如Spring Boot、Spring MVC、MyBatis等。 3. **数据库知识**:熟悉至少一种关系型数据库(Mysql、Oracle、SQL Server等)。 4. **分布式系统**:具备...

    world-javaEE框架项目资源

    自从JavaEE更名为Jakarta EE后,其发展和应用也迎来了新的变革。本资源包聚焦于JavaEE框架,并以Quarkus作为开发框架,围绕“one flower one world”这一主题,提供了从基础结构到业务逻辑,再到数据访问和应用程序...

    服务框架实践与探索

    从1999年到2005年,技术逐步从Perl CGI过渡到Java技术体系,经历了Servlet/JSP、Java EE、基于Turbine MVC框架开发,到使用轻量级容器,最终到2005年自制的WebX框架成为首选。这一部分揭示了技术演进的必要性,随着...

    基于微信小程序的学生毕业管理系统答辩PPT.pptx

    它通过从业务逻辑角度对传统单体式应用程序的严格拆分,得到了多个职责单一、可独立部署与运行的服务,并通过HTTP或RPC进行通信,形成了一个高内聚、低耦合的软件结构体系。微服务架构的演进过程包括了从单体应用...

Global site tag (gtag.js) - Google Analytics