2017-09-14

开放之路

美国时间9月12日,Oracle公司在TheAquarium博客发出了"Opening up Java EE - An Update"的博文,正式宣布JavaEE技术及相关,包括RI实现Glassfish, TCK, 相关的规范文档,全部移交给Eclispe开源组织。

目前,JavaEE 8的所有规范,都已经通过了最终投票;所有的子规范都已经发布了最终规范文本,API定义和Java文档参考。接下来就是9月底JavaEE会完成所有的工作,并在10月初的JavaOne大会上正式宣布发布。也就是说,JavaEE 8是大公司控制下的最后一个版本,接下来JavaEE技术体系将会走向开放之路。

在之前的开发者投票征集移交到哪个开源组织时,大多数开发者都投给Apache组织,而我倾向Eclipse组织,而且我就相信最后会选择Eclipse。原因很简单,这个开源组织大公司的话语权大的多。JavaEE虽然不是主流热点技术了(否则Oracle也不会主动相与),但它依然是服务端—​特别是企业级的开发的主要技术选择。IBM/Oracle/Redhat这三个Java核心软件公司还会对JavaEE的走向起到决定性作用。

开放时间轴

让我们再梳理一下JavaEE"被"开放的时间线:

  1. 2009年4月Sun被Oracle收购,导致Java技术新版本的发布,停滞了一段时间。尽管我们看到JavaEE 6是在2009年12月发布的,但那个是Sun的技术专家在收购前早就做好的准备;而JavaEE 7一直到2013年6月才发布,比起一般3年一个大版本的周期要长一年时间,而JavaEE 8也在本来应该发布的2016年处于停滞状态。

  2. JavaEE应用服务器市场萎缩,利润下滑。原来的现金牛,比如WebLogic,受到开源方案的冲击,以及云服务的替换性方案的不断涌现,销售远不及从前。Glassfish也被放弃商业支持。2013年到2016年间,很多的JavaEE专家从Oracle出走,有的留在了其他公司继续发挥技术优势,而很多专家则切换了技术领域,投身于云计算,容器技术等。

  3. 2016年初,Oracle对于JavaEE的技术热度下降的非常厉害,Reza Rahman提出来JavaEE Guardians计划,来向Oracle"建言"投入更多的力量做JavaEE。这个行动是成功的,很快Oracle高层做出表态,并且推动了JavaEE 8的进展。

  4. 2016年7月,IBM,Redhat,Tomitribe(Tomee), Payara(Payara glassfish)宣布成立Microprofile的组织,提供一个小范围的,面向微服务的规范子集。初期只有JaxRS/CDI/JsonP少数规范;2017年2月,加入到Eclispe组织。目前已经发展到1.1版本。这个组织的潜台词就是:“既然你占着JavaEE的位置还不干活,那我们就自己搞一套新的。“如今JavaEE也即将进入到Eclipse,也许今后Microprofile也会融入到JavaEE之中。

  5. 2017年初Oracle战略全面转向云计算,JavaEE走向开放之路。

喜迎开放

那么,如何看待这个开放之举呢? 我的观点是:短期看好处巨大,长期看不明朗,但对国内软件发展,长期必受益。 短期内,随着JavaEE技术的开放,会有技术公司和开发者更多的参与,必然会提供更多更好的开源项目和解决方案出现。 长期看呢,这样庞大的技术体系,没有一个有实力的大公司给与有力的支持,是对发展很不利的。 对于国内呢?开放了肯定是天大的好事。目前国内JavaEE使用者群体很大,不过多数是采用Spring框架的方案。相信JavaEE开放以后,会有更多的国内公司仔细审视JavaEE技术方案,并且用在合适的架构中。特别的,对于我们这样的以中间件为技术核心的软件公司,更是可以击掌相庆的大好事了。

一些朋友,甚至是从事过服务器开发相关的朋友,都有点奇怪为什么我会坚持走JavaEE的技术路线。主要三个理由:

  1. JavaEE(包括Spring系列)的技术,在服务器软件开发,特别是企业应用系统的开发方面,JavaEE是当仁不让的最有优势的技术。其他的语言或者是技术方案,都没有如此完备的体系。

  2. 微服务,容器技术方案,也需要设计开发维护软件的业务实现。也就是说,集装箱运输系统再先进,箱里面的货物也是最关键要素。同样的,业务系统即使是上了云,应用容器技术进行微服务化改造,您不是还的选择具体的软件技术方案么?现在看来JavaEE还是重要的技术实现方式,比如微服务化的SpringBoot, Wildfly Swarm等。

  3. JavaEE在企业级应用,尤其是开发事务要求性高的相关应用时,还是最好的技术方案选择。对于流式计算,互联网级高并发等超出JavaEE范围的业务需求,我们可以选择其他的技术方案,也就是说JavaEE是基础软件拼图的重要一块,而不是被替换的。国外大软件公司市场宣传都在讲云计算化,技术转型,但实际大量的关键业务,依然是沉淀数十年的专家在提供技术服务。

至于公有云厂商现在全力推演的云端中间件方案,以及Severless等,我只能说也是一种选择,架构师需要深入理解,并充分调研和掌握是否被绑定在一家云服务商之上,以及成本风险等是否可控。未来必然还是会走回标准化,规划化的老路。

借JavaEE开放这个契机,我们国内的软件公司,也可以更好的多方位的参与相关技术的研发和标准制定工作。还是那句话,踏踏实实做事,认认真真钻研,只要能充分发挥自己技术专长,我相信就会有立足之地并有良好的发展。