Java EE的未来

转载 2017年04月20日 16:20:30

http://www.infoq.com/cn/articles/enterprise-java-opinion

作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题。我们借用了Geoffrey Moore在他的经典书籍《跨越鸿沟》里的所描述的模型,这个模型贴切地概括了技术的生命周期,它包含五个阶段:创新者(Innovators)、早期采用者(Early Adopters)、早期大众(Early Majority)、后期大众(Late Majority)和落后者(Laggards)。Moore的模型在早期采用者和早期大众两个阶段之间引入了一个大缺口,早期采用者是真正愿意冒着风险使用新技术的人,而早期大众在确认新技术能够提升生产效率之前是不会采取行动的。

从下图可以看出Java技术的整体趋势:

我们可以看到,Java SE仍然保持着它的健康度,它仍然是一个被广泛使用的企业计算编程语言。Java 9有望在今年夏天发布,届时将带来Jigsaw和JShell REPL。而Java 10的开发工作已经在进行当中。我们相信Java仍然是构建大规模企业应用的一个很好的选择,最起码现在人们不希望Java走出生产环境。

说到基于JVM的编程语言,不得不提到Scala和Clojure。不过从Scala的受欢迎程度来看,它的采用率或许已经达到了最顶峰。而在Java 8推出Lambda功能时,Scala的受欢迎程度有轻微的下降。我们认为Scala还未能跨越Moore模型里的“鸿沟”,所以它仍然处在早期采用者阶段。我们不认为它会达到大众阶段。

Clojure一如既往的好,作为Python的有力竞争者,面向数据的特性让它处在一个很有利的位置上,不过它不像是一门会被广泛采用的语言。

作为Java之外的选择,Groovy仍然是很受欢迎的脚本语言,同时,JetBrain的Kotlin似乎在Android开发方面为自己找到了一个稳固的位置,不过这两门语言都无法动摇Java的统治地位。

可以说,Java SE形势一片大好,但对于Java EE来说却不是如此。我们在考虑要不要把Java EE放入“落后者”这一类,不过最近的一些迹象表明,它应该可以被放在后期大众里,这要归功于Java EE底层的那些技术。jClarity的联合创始人Ben Evans,同时也是InfoQ的编辑,他说:

我不得不说,Java EE是一个正在消褪的品牌,不过它的底层核心技术让情况看上去没有那么糟糕。

另一位编辑Chris Swan,同时也是CSC的CTO,他说:

Java EE有一些重要的规范,它们很有用。EJB作为Java EE的心脏,它把Java应用服务器推向了企业。Spring去掉了EJB的复杂性,“EE”变成了“在Java应用服务器上运行Spring”的代名词。传统的应用服务器市场(由几个大厂商所统治)正在被PaaS所代替(因为你不需要整套臃肿的应用服务器就能运行Spring应用),而企业对服务器厂商的“绑架”行为深感厌恶,同时PaaS提供商提供了更具竞争力的运营能力,从而加剧了这种情况的发生。

InfoQ之前报道过Gartner对技术走势的研究,Gartner在这方面比我们做得更为深入,而最近Gartner再次发表其观点,认为“Java EE和其它三层架构的框架,比如ASP.NET”正在走向衰退:

数字信息业务要求应用平台提供新的特性和能力,而Java EE没能赶上这趟班车。
负责应用基础设施现代化的领导者们应该想办法应对Java EE的衰退问题。
到2019年,只有不到35%的新应用会被部署在Java EE应用服务器上。

不到35%,也就是差不多三分之一,不过我们认为尽管Java EE应用服务器还会存在,但只会被用于运行遗留的系统。

不过对于Java来说,还是有一些好消息的。一些强有力的框架为构建微服务提供了更多的选择,Pivotal在这方面一路领先,它为微服务提供了一整个技术栈。Spring Boot内嵌了Tomcat、Jetty或Undertow,可以方便快速地用它来构建独立运行的Spring应用。Spring Cloud由美国的Netflix和中国的阿里巴巴共同支持,为Spring Boot加入了很多强大的云组件,比如服务发现、外部配置、回路断路器和负载均衡。Pivotal Cloud Foundry、IBM的Bluemix和SAP的HANA为此提供了商业支持。

除此之外,还有很多其他的可选方案。其中有三个值得关注,它们分别是Lightbend的Lagom、Eclipse Vert.xRatpack,其中Lagom是基于Play和Akka的。而Akka所使用的actor模型也非常有意思。

我们注意到,Oracle曾经声称要在今年的Java EE 8里将Java EE带入云端,并具备基本的微服务能力,不过Oracle并未透露更多相关细节。Java EE 9有望在2019发布,不知道在未来的这一两年,Java世界能否发生一些不一样的变化。

MicroProfile.io最近加入了Eclipse Foundation,广大的Java EE社区把工作转向了MicroProfile.io。

以上观点并不代表我们将对Java EE开发失去兴趣,或者说它将会消失。我们只是认为,对于构建现代化的系统,我们总是会有更好的选择。


Java EE 快速入门

分享一些边学边做项目的Java EE经历
  • webzhuce
  • webzhuce
  • 2016年11月05日 23:06
  • 2085

JAVA EE 环境搭建

以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +T...
  • long458
  • long458
  • 2014年12月07日 21:44
  • 4365

Java EE中Ajax技术简单实现

1.异步数据获取技术,使用XMLHttpRequest.   2.基于标准的表示技术,使用XHTML与CSS.   3.动态显示和交互技术,使用Document Object Model(文档对象模型...
  • suwu150
  • suwu150
  • 2016年05月18日 12:42
  • 853

Java EE 学习内容和顺序

最近在学JavaEE,没学Java SE时那么有感觉。。一个月下来,感觉收获甚少。安慰自己那是一个厚积薄发的过程。现在有些迷茫,有点像是无头苍蝇,到处乱撞,看到关于Java EE 的书就想拿起来看...
  • zdlkh
  • zdlkh
  • 2017年02月22日 14:51
  • 531

Java EE开发环境搭建

经典环境(机房环境)Java EE开发环境搭建 2014年的经典环境为32位的:JDK7+Tomcat7+Ecpilse Helios 1.  Java 运行环境安装(省略) 1) 这里需要注意...
  • sanganqi_wusuierzi
  • sanganqi_wusuierzi
  • 2017年02月03日 23:16
  • 451

Java EE 常用开发工具总结

半年以来,自己参与了两个Java EE的项目,一个是学校的项目做WebService,另一个是企业的项目做的是B/S管理系统。两个项目给我最大的感受就是,企业的项目标准和质量比学校的高的太多,难度也大...
  • thisinnocence
  • thisinnocence
  • 2013年11月27日 11:06
  • 2475

黑马Java EE面试总结

想要过黑马面试的你,你一定要看 黑马毕向东的视频。面试都是提问视频里面的问题。我将我的总结罗列出来,希望大家可以查漏补缺 面向对象特征: 封装,继承,多态  封装:把属性隐藏,提供公共方法对其访问...
  • pi408637535
  • pi408637535
  • 2015年08月02日 16:01
  • 1723

学习笔记-轻量级Java EE:Java EE应用的分层模型

摘抄 李刚 > 经典的javaee架构大致分为如下几层: 1.Domain Object(领域对象)层: 由系列的POJO(Plan Old Java Object,普通的、传统的java对象)组成...
  • freeliving
  • freeliving
  • 2013年12月20日 11:13
  • 2113

使用eclipse中的maven搭建java ee项目

一、开发环境 jdk1.7  tomcat7 eclipse-jee-luna-R-win32 maven2.2.1 二搭建步骤 1、点击File->New->Other,选择maven pro...
  • henu_qiuyu
  • henu_qiuyu
  • 2015年04月16日 08:08
  • 2399

用maven搭建java ee项目

一、开发环境 jdk1.7  tomcat7 eclipse-jee-luna-R-win32 maven2.2.1 二搭建步骤 1、点击File->New->Other,选择mav...
  • CareChere
  • CareChere
  • 2016年04月22日 09:47
  • 1007
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java EE的未来
举报原因:
原因补充:

(最多只允许输入30个字)