日期:2014-05-19  浏览次数:20814 次

J2EE中重量级框架和轻量框架级
学了那么久,依然搞不清楚J2EE中的重量级框架和轻量级框架!请大家帮忙简述一下J2EE中的重量级框架和轻量级框架!!!!!!!!!!!!谢谢!!

------解决方案--------------------
Jim Rivera是 BEA 公司的一位技术主管,负责通过技术传播推广BEA 产品的应用。Jim 于1999 年加入BEA,担任 BEA WebLogic Server 6、7 和8 版本的技术产品经理。在这个岗位上,Jim 负责各种服务器组件的策略和路线图,包括 EJB、Web services、XML 和集群。Jim 在dev2dev 上有一个blog。dev2dev 通过电子邮件采访了 Jim,获得他对轻量级Java、应用程序框架和持久性框架,以及它们与应用服务器上企业计算的关系的看法。 轻量级Java dev2dev: 您是如何定义“轻量级Java”的? Jim: 我认为,在Java 应用程序开发环境中,“轻量级Java”主要是指两个东西:简化的编程模型和更具响应能力的容器。轻量级Java 旨在消除与传统 J2EE API 有关的不必要的复杂性和限制。它也将缩短应用程序的部署时间,这对于支持开发最佳实践(比如频繁单元测试)非常重要。 dev2dev: 对您来说哪种轻量级技术是最重要的,轻量级Java 对终端用户有什么帮助? Jim: 很显然,控制反转 (IoC)模式在这个领域有着重大的影响。使用IoC,开发人员不需要编写复杂的代码来执行查询、处理基础架构异常或管理连接,就能够解决对象依赖性问题。这有助于简化代码、将业务逻辑与基础架构分离,从而使应用程序更易于维护。 轻量级Java 的另一个关键特征是,它不会强迫业务对象遵循平台特定接口。这允许开发人员在普通旧式Java 对象(POJO)中实现业务逻辑,从而提高生产率。 与具体的类相反,当把开发的最佳实践与界面相结合时,这些特性也使得对代码进行单元测试容易得多。由于业务逻辑实现在 POJO中,所以不再需要将对象部署到重量级容器中以在单元测试中练习它。因此,将对象宿主在诸如 JUnit 之类的简单测试环境中和为快速迭代单元测试“模拟”外部依赖性就变得微不足道了。 dev2dev: 作为一个技术传播者,您一定目睹了许多新的和已部署的技术。您是否看到了转向轻量级技术的趋势? Jim: 当然。在早期的采用者当中,明确地存在转向诸如 Spring、Hibernate 和Beehive 之类框架的趋势。它在应用程序的构建方式上有了明显的不同,对未来 J2EE技术的方向有着积极的影响。例如,EJB 3.0就基本上是以使得轻量级Java盛行的概念为基础的。 重量级 dev2dev:人们在想起应用服务器供应商时,通常把它们置于“重量级阵营”。我想您正在努力改变这种状况,对吧?换言之,许多人认为应用程序供应商已经在实现重量级组件(比如 EJB 2.0)上付出了很大的代价,它们不愿意轻易放弃这些成果。 Jim: 首先,我认为没有理由放弃在 EJB 上的现有投资,因为在某些场景中它仍然是最好的技术,例如当您希望通过 RMI远程公开业务服务时。当然,诸如 EJB 之类的开放标准在保护客户投资方面的价值也不能低估。 已经说过,我觉得人们经常过分强调 EJB在应用服务器中的实际价值。尽管这一点未必对所有的应用服务器供应商都适用,但是 BEA 只投入了相对较少的一部分开发资源来支持 J2EE API。我们工作最主要的目标是为宿主应用程序构建最可靠、可伸缩和容错的内核。这些品质以及分布式事务服务、高速消息传递、遗留系统集成、高级 Web 服务、配置管理、诊断和故障排除和高级安全性,代表了 WebLogic Server 的真正价值,而且对总体拥有成本(TCO)有着巨大的影响。幸运的是,这些附加值对基于Spring 或Beehive 的应用程序的相关性和适用性与采用EJB 构建的应用程序是一样的。虽然轻量级Java 技术使得应用程序的开发和维护更容易,但是它们不会代替真正高端应用服务器的品质。实际上,我们认为轻量级Java 与WebLogic Server 是一致的。 dev2dev: BEA 有没有一个轻量级 Java 策略?BEA 实现轻量级 Java 的方法是什么? Jim: 我们的策略是接纳所有有利于提高开发人员生产率、在市场上为部署这些技术提供最佳平台的技术。轻量级 Java有助于降低开发成本,WebLogic Server 则有助于降低运营成本,它们是一个非常强大的组合。 应用程序框架 dev2dev:由BEA赞助的Beehive项目显然是一个轻量级 Java组件模型。您能否谈谈关于 Beehive 的情况,以及它在你们的整个策略中的地位? Jim: Beehive是一个应用程序框架,致力于使J2EE 应用程序和基于SOA 的应用程序的开发更容易,它基于我们发布WebLogic Workshop 的经验。它基于 POJO 和用于配置依赖性、服务质量等的元数据提供一个编程模型。元数据以 J2SE 5.0 代码注解和外部 XML文件的形式获得支持。存在一些用于访问 J2EE资源、定义业务和 Web 服务以及基于 MVC模式开发 Web 应用程序的组件。在我们努力提高开发人员生产率、巩固 Java 整体市场的过程中,Beehive 是非常关键的一部分。 dev2dev: Beehive 可以被认为是一个“应用程序框架”。在Spring Framework中提供了一种非常流行的轻量级 Java 方法。Spring(以及其他类似的框架)对于 BEA 有多重要? Jim: 任何能够帮助我们的客户提高生产率的东西都对我们非常重要。我们欢迎并且接纳这些技术,在适当的时候也可以在技术层面上集成或者共享这些技术。 dev2dev: 你们考虑过明确支持这些框架吗? Jim: 就像我原来说过的,WebLogic Server具有很多方面的特性,能够提供基于轻量级 Java 技术的应用程序。许多都是隐含的,然而在某些情况下,最小量的集成工作就能为轻量级 Java 开发人员提供重要的价值。举个例子,当今存在的一些适配器允许 Spring 应用程序使用 WebLogic Server 的分布式事务能力,无需改变任何应用程序代码。我们正在调查许多其他的机会,当然也一直在倾听客户的需求。 dev2dev: 我们已经看到轻量级框架对EJB 3 的一些影响。您认为这会扩展到J2EE的其他方面吗? Jim: 是的。我认为 JSR 175(即Java元数据)对于简化 J2EE 编程模型是一种关键的支持技术。EJB 3.0使用了它,而且它也是 JSR 181(即Web Services 元数据,一个BEA 倡导的规范)的基础。没有理由相信它会就此停止。 轻量级持久性 dev2dev: IoC 容器看起来是轻量级 Java 的中心。另外的一个关键因素是POJO 和轻量级持久性。您能针对这个问题谈谈看法吗? Jim: 同样,共同的主题是简化编程模型。没有比POJO更简单的了。当然,企业开发要求我们有能力应用附加的品质,比如持久性规则、事务语义和 POJO 的安全约束。盛行很广的方式是在元数据中定义这些品质,要么作为代码注解,要么放在外部文件中。 dev2dev: 您是否觉得因为有多种方法用于完成持久性这样的事情而存在一些危险?比如,我们很快将会有EJB 2、EJB 3、JDO、Hibernate,等等。 Jim: 我认为这只是成熟领域的一个实际情况。多年来,J2EE 规范没有完全涵盖这个特定的领域,自然就会导致其他规范的出现。就我所知道的在 JCP中发生的事情,我们似乎正在走向统一。这对于整个行业来说是一件好事。 未来 dev2dev: 您能预见一下轻量级 Java和 BEA 的未来吗? Jim: 我们将会继续活跃于这个领域中,既通过诸如 Apache Beehive、XMLBeans、Eclipse和JCP 之类的渠道推动创新,又吸收诸如 Spring 这样的其他领先技术,并且为了客户的利益而展开协作。 艾伯特.爱因斯坦曾经说过:“一切都应该尽可能地简单,但是不能更简单。”确实如此,简化一门理论的基本假设,使我们可以专注于真正关键的地方,这正是一直以来对科学真理的追求。企业软件开发同样如此。 提供一个将复杂的事物(例如,事务、安全或持久性)对开发者进行隐藏的应用框架是简化企业软件开发的关键。一个设计良好的框架可以提高代码重用率、开发者的生产力及软件的质量。然而,现有J2EE1.4的EJB2.1框架被普遍认为设计差,且过于复杂。不满于EJB2.1的框架结构,Java开发者尝试了各种各样的中间件服务传递方法。最引人注目的是,以下两个框架引起了开发者极大兴趣并得到了大量正面的反馈。他们以未来企业Java应用所选框架的姿态展现。 Spring框架虽然很流行但并不是一个标准的开源框架。它主要由Interface21 Inc开发和控制。Spring框架结构是基于依赖注入(Dependency Injection (DI))的设计模式。它可以独立或在现有的应用服务器上运行,而且大量地使用了xml配置文件 EJB3.0是由Java Community Process (JCP)制订的标准框架,为所有主要的J2EE厂商支持。JBoss已经提供了试用版EJB3.0标准的开源或商业性质实现。EJB3.0充分利用了Java的注释 这两个框架结构都有一个共同核心设