InfoQ观察:Java EE的未来
作为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.x和Ratpack,其中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开发失去兴趣,或者说它将会消失。我们只是认为,对于构建现代化的系统,我们总是会有更好的选择。
InfoQ观察:Java EE的未来的更多相关文章
- Java EE的未来
http://www.infoq.com/cn/articles/enterprise-Java-opinion 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题. ...
- Oracle居然把Java EE的未来押在Rest API上了
然而Lehman并不赞同Rahman对Java EE 9的说法,所以他重申Oracle暂时专注于Java EE 8."我们正在倾全力推出EE 8,现在这是我们主要的关注点," ...
- Java EE中的容器和注入分析,历史与未来
Java EE中的容器和注入分析,历史与未来 java中的容器 java中的注入 容器和注入的历史和展望 一.java中的容器 java EE中的注入,使我们定义的对象能够获取对资源和其他依赖项的引用 ...
- 影响Java EE性能的十大问题(转)
本文作者是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE.中间件和JVM技术.他在性能优化和提升方面也有很深刻的见解,下面他将和大家分享一下常见的10个影响Java EE性能问题 ...
- 转:Red Hat JBoss团队发布WildFly 8,全面支持Java EE 7并包含全新的嵌入式Web服务器
原文来自于:http://www.infoq.com/cn/news/2014/02/wildfly8-launch Red Hat的JBoss部门今天宣布WildFly 8正式发布.其前身是JBos ...
- 2016年会成为Java EE微服务年吗?
原文 http://www.infoq.com/cn/news/2016/02/javaee-microservices 进入2016年时间还不是很长,让我们回顾下去年年底的一个预言.去年12月,来 ...
- java EE中的hello1.java及Annotation(注解)
一.Annotation(注解) 注解(Annotation)很重要,未来的开发模式都需要注解,注解是java.lang.annotation包,Annotation是从java5引入的,它提供一些不 ...
- Java EE开发技术课程
新的学期开始了,j2e已经上了两节课,接下来就是对该课程的一些作业以及相关的认识: 一.课程目标: Java EE是java的企业级应用,所以在我看来在学习这门课程之前肯定要对java有一个具体的认识 ...
- Java EE 8 来了
作者 李士窑 发布于 2014年9月2日. 估计阅读时间: 不到一分钟 | 自2013年6月Java EE 7发布以来,Java开发团队在这段时间内一直在规划和搜集下一个大版本Java EE 8带 ...
随机推荐
- linux(乌班图)下执行pip没有问题,执行sudo pip报错的问题
最近刚装好linux的虚拟机,在装一个套件时提示权限不足,于是添加上了 sudo 命令,结果直接报以下错误, Traceback (most recent call last): File " ...
- 基于alpine用dockerfile创建的ssh镜像
1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...
- Linux机器之间复制文件和目录方式&Linux的scp命令详解
本文转载于:http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html 整理总结如下: 不同的Linux之间copy文件常用有3种方法: ...
- 通俗易懂详解Java代理及代码实战
一.概述 代理模式是Java常用的设计模式之一,实现代理模式要求代理类和委托类(被代理的类)具有相同的方法(提供相同的服务),代理类对象自身并不实现真正的核心逻辑,而是通过调用委托类对象的相关方法来处 ...
- JavaScript -- Navigator
-----040-Navigator.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=&qu ...
- 如何让你的网站用上免费的HTTPS
因为之前网站上被注入了广告,再百般尝试之后最后还是使用了HTTPS解决了. 在实现HTTPS的时候最关键的就是证书. 证书的质量觉得了你被多少浏览器所信任. 证书的价格也就蹭蹭蹭往上涨了. 这里推荐一 ...
- HBase:分布式列式NoSQL数据库
传统的ACID数据库,可扩展性上受到了巨大的挑战.而HBase这类系统,兼具可扩展性的同时,也提出了类SQL的接口. HBase架构组成 HBase采用Master/Slave架构搭建集群,它隶属于H ...
- Golang 接口interface
接口interface 接口是一个或多个方法签名的集合 只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明实现了哪个接口,这成为Structural Typing 接口只有方法声明,没 ...
- Spring报错:Exception in thread "main" java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>(Unknown Source)
简单搭建了一个Spring Maven工程就报错: 看到网上说是JDK 7 和 Spring3.x :JDK编译级别设置成1.7,仍然没有得到解决,采用版本为 3.2.0.RELEASE <b ...
- spring@value取不到值的几种情况
一,spring组件重写构造方法,在构造方法中引用@value为null 由于spring实例化顺序为先执行构造方法,再注入成员变量,所以序为先执行构造方法,再注入成员变量,所以ing实例化顺取值为n ...