Hibernate 之父 Gavin King[1]建议开发者升级到 Java EE 6 平台,并指出了一些不愿意升级的观点其实是没有根据的。

Java EE 6 发布后,我看到了很多反对升级到新平台的观点。这些反对观点大多是由 Tomcat / Jetty 以及一些开源框架(例如 Hibernate 与 Spring)的使用者提出。

当然,选择非标准、开源技术有很多好处。另外,在 EE 6 中,你可以使用你感兴趣的开源框架,Servlet 3 与 CDI 可以无缝集成第三方框架。因此,没有理由不使用 EE 6。尽管如此,我还是看到有人说:

升级到 EE 应用服务器很困难

这似乎是具体组织的政治问题,而不是实际的技术问题。当然,升级服务器(例如 GlassFish 或 JBoss)是非常琐碎的任务。(升级第三方框架就更为痛苦了。)一些组织机构对服务器升级有着非常重量级的过程,而对于服务器内运行的框架的升级过程却 没有如此重的过程控制。因此,对于开发团队来说,升级第三方框架反而更容易一些。

我认为开发更有说服力、更好的过程才是最重要的,而不是放弃 Java EE。将你的应用运行在老旧、过时的服务器平台上存在很多风险,过程不应该鼓励这样的实践。

但从实践角度看,几乎每一个人都准备最近就升级到 Servlet 3。无论你在使用 Tomcat、Jetty、JBoss、GlassFish、Resin、WebLogic、Oracle 还是 WebSphere,都意味着服务器的升级。这是一个升级到 EE 6 Web Profile 的绝好机会,黄金时机。

EE 应用服务器太庞大了

反对理由是 EE 服务器包含了很多(当前)使用不到的功能。反对者的论据通常涉及到了讨论 jar 包大小、Servlet 引擎+第三方框架与 EE 应用服务器所占用的磁盘空间大小的比较。其实,这样的论据是有问题的:

  1. 讨论的磁盘占用、磁盘空间 用 $ 衡量其实是微不足道的,并且
  2. 应用 war 包比服务器安装包的大小重要得多,服务器其实包含了很多功能来尽量降低 war 的大小。

另外,我认为最有说服力的是 Java EE 6 Web Profile 更本不庞大。一旦经过认证的 Web Profile 服务器投放市场,我们就可以在大的 EE 应用服务器与小的 Servlet 容器中间找到一个平衡点。

糟糕的 J2EE 与 EJB2!

随着 JCP 的标准化进程,这个问题其实早已不存在了:

  1. EJB2 从出现到现在已经 8 年了!它依然是你的最佳选择?
  2. 很多不错的规范已经通 过 JCP 不断的标准化而合并了,可以非常确定地使用其中一些规范。不过,JCP 在规范标准化上也不是100% 成功的。
  3. 几乎所有在 EE 6 平台上工作的人都讨厌 EJB2 与 J2EE。这就是为什么有人不断地加入到 JCP 来帮助修复这些问题。例如,Hibernate 的创始人,本文的作者。你真的想给他上一课关于 EJB2 的问题?:-)
  4. 发明实体 Bean(Entity Beans)的人几乎现在都退休了!

事实上,Java EE 6 Web Profile 已经足够用了。如果你不亲自尝试 Java EE 6,你是不能真正感受到 EE

6 对开发的好处的。

应用服 务器可移植性太神秘了!

真的吗?我们看到很多人将应用程序分割后部署于不同的应用服务器上?噢,我看到过,这意味着 100% 完美地进行应用程序 0 改变移植,一种柏拉图式的理想可移植性。我了解对于绝对真理与柏拉图式理想的弱点,不过还是让我们先看看例子。

这是一个非常典型的可移植性问题视图:

  • 99% 的代码,85 % 的外部元数据在不同服务器平台上完全兼容,剩下 1% 与 15% 能够适当进行分割
  • 40% 的代码,80% 的外部元数据绑定在了非标准、单一厂商的容器体系结构上

当我划分这些点时,我突然想将本节主题从 应用服务器可移植性太神秘了 改成 我根本不在乎容器可移植性 。主题改变的想法印 证了服务器可移植性问题的确存在,并且这对于很多组织机构来说非常有用。

我一直想看到非 EE 6 技术维护者对 EE 6 真实的评论。上文中提到的一些论据不是来自真实世界的,所以很难引发 EE 平台上应用开发实际技术问题的讨论。JCP 最近一轮规范似乎已经离开了反 EE 阵营(暂时性离开?),但缺乏成功的事实支撑。

编注:
[1] Gavin King:Hibernate 的创始人,EJB3 专家委员会成员,JBoss 核心成员之一,Seam 框架的领导人,JSR-299 (CDI ) 规范领导人,也是《Hibernate in Action》一书的作者。

来源:You should upgrade to Java EE 6

编 者简介:丁亮,CSDN 特约记者,软件设计师。网络ID:88250,Linux、Open Source 热爱者,擅长 
             JavaSE / JavaEE 开发,熟悉 JSF、EJB、Spring、Seam、OSGi 等框架应用的架构与开发,目

前正在深入学习 OOAD 与敏捷过程。个人博客:简约设计の艺术 。

转载于:https://www.cnblogs.com/lanzhi/archive/2010/01/26/6469113.html

Hibernate 之父:是时候升级到 Java EE 6 了!相关推荐

  1. eclipse怎么升级到java ee,如何为Java EE开发人员升级Eclipse?

    Is there any non-painful way to upgrade an Eclipse installation? I have tried browsing the eclipse s ...

  2. Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台

    本文来源于我在InfoQ中文站的采访文章,原文地址是:http://www.infoq.com/cn/articles/migrate-spring-legacy-to-javaee6 InfoQ:你 ...

  3. java ee自学路线

    本站文章为 Kenan 原创,转载请注明转自 Kenan的博客 http://kenan1992.qzone.qq.com 首先声明对于什么java ee的 自学不需要编程的基础,但是需要你的刻苦和努 ...

  4. 关于Java EE的介绍

    一,Java EE 有几个分层模型? 1.领域对象层(Domain Object) 2.数据访问对象层(DAO) 3.业务逻辑层 4.控制器层 5.表现层 领域对象层(Domain Object):此 ...

  5. JAVA EE 自学路线

    本站文章为 Kenan 原创,转载请注明转自 Kenan的博客 http://kenan1992.qzone.qq.com 首先声明对于什么java ee的 自学不需要编程的基础,但是需要你的刻苦和努 ...

  6. JAVA EE 学习路线

    一,开发工具的使用,初期使用记事本,Edit Plus ---->Eclipse ---->myeclipse 对于初学者来说,初期用记事本等直接编写代码有利于我们了解java代码的底层运 ...

  7. bio linux 创建_不断升级,Java之BIO、NIO、AIO的演变

    一.前言 一句话概括BIO NIO AIO: 第一阶段,服务端采用同步阻塞的BIO: 第二阶段,服务端采用同步阻塞的线程池的BIO: 第三阶段,JDK4之后服务端采用同步非阻塞的NIO: 第四阶段,J ...

  8. java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载

    java cr 昨天,WildFly团队发布了最新版本的WildFly 10 . CR2很可能是预计于十月份发布最终版本之前的最后一个版本. 即使主要支持的Java EE规范是7,WildFly 8和 ...

  9. java ee maven_针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom...

    java ee maven 为什么呢 很多时候,我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题. 为了提供解决方案,我经常最终会尝试项目结构,测试我在不同应用程序服务 ...

最新文章

  1. 2019计算机科学论文研讨大会,2019年中华口腔医学会口腔医学计算机专业委员会第十七次全国口腔医学数字化学术会议第一轮会议通知...
  2. 进阶必备:素数筛法(欧拉,埃氏筛法)
  3. 求幂运算、多项式乘法及Horner法则的应用
  4. mysql每秒57000_MySQL 性能:使用 MySQL 5.7 实现每秒 50 万查询
  5. reStructuredText
  6. jquery选择器_jQuery选择器
  7. web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测
  8. 以太坊的POS共识机制友善的小精灵 Casper
  9. mysql考勤查询,查询mysql中的考勤表
  10. 豆瓣已玩烂,来爬点有逼格的 ——IMDB 电影提升你的品位
  11. CAD绘图的基本步骤和重点
  12. Red Giant VFX Suite for mac(电影级视觉特效插件)
  13. FormulaR1C1是EXCEL中单元格公式输入方法(补充解说)
  14. c语言lr分析器的设计与实现_ShinyJson实践之路:词法分析器的设计与实现
  15. 程序人生 | 春风得意马蹄疾,一日看尽长安花
  16. Navicat简单使用方法。
  17. 使用 Ruby 开发代码生成器
  18. win7 本地连接共享无线网络(即两网卡共享)
  19. Spring Boot 注入接口 @Autowired interface
  20. 前端简介--HTML与CSS

热门文章

  1. nodejs-函数路由
  2. 设计模式复习-解释器模式
  3. 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
  4. 【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )
  5. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
  6. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )
  7. 【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )
  8. 【错误记录】GitHub 提交代码失败、获取代码失败、连接超时、权限错误、ping 请求连接超时 ( 查找域名对应 IP | 设置 host 文件 )
  9. 判断三个数最大的数 从结果出发思考问题
  10. 多列布局——column-width