我们刚刚在旧金山有了JavaOne的第二十版。 这将是我自2004年以来第十二次参加不间断的系列活动。最大的教训是什么,可以揭示Java的未来。

模块化斗争

自从Java 2007首次提到模块以来,已经花费了将近9年的时间,或者说,直到2016年9月JDK 9正式发布时为止。 实际上,自从JSR 277 Java模块系统以来,已经有11年 当我们考虑这一努力时,将需要十多年的活动和思考( 请参见何鸿tan的原始声明 )。 Oracle对JDK的模块化工作需要自己的传记。 马克·雷因霍尔德(Mark Reinhold)也许有一天会写这篇文章,也许是21世纪神话般的人月。 有效地重写Java令人恐惧,以至于它遵循HIGH COHESION和LOOSE COUPLING花费了近十年的时间。 除了JDK工程师以外的其他所有人都应该感到非常害怕,尤其是如果您所涉及的业务拥有庞大的Technical DEBT。 许多机构负担不起升级,重写和重新排序旧式类,程序包,更不用说模块了。 的确,对于那些在承受重压之下仍然挣扎并仍然坚持使用Classic Java(JDK 1.0至7.0)的企业而言,可维护性成本将变得天文数字化。对于Oracle,他们没有选择支付开发,设计和体系结构的全部成本。整个Java平台和社区的利益,以便在将来走向更好,更大的困境。 当我们在2016年达到JDK 9 GA时,应该向Oracle表示巨大的祝贺。

模块化与我们的未来

应用程序和JDK的模块化是新的谚语,我相信Java和实践的开发人员,设计师和架构师社区都有一个“线入砂”(又名DEMARCATION POINT或DISRUPTION LAYER),我们将在2016年通过模块化系统可以比JDK平台更快地进行更改。 如果Project Jigsaw的设计正确,则您不再需要与CORBA或IBM派生的老式java.util.Date和java.util.Calendar竞争。 从理论上讲,您应该能够替换这些模块服务,并在不需要它们时将其删除。 如果不需要Swing,则该模块可以使用,对于JavaFX和AWT(仅用于服务器部署)相同。 虽然保证了Java平台的向后兼容性,但这意味着有机会进行试验和提出新的想法。 我预计,对于招聘部门,JDK 9在2017年将成为CAMEL的绝招。 我相信没有人会想以更快的速度触碰Java SE 7或更早版本(经典Java)。 如果那里甚至有经典的Java提示,高级工程师都会查看您的工作规格并运行100英里。 您可以提供每天1000英镑的费用,为期6个月,但是认真对待这些债务的人会试图重新模块化古老的Java代码,而当下一个从事这一行业的女性开始使用现代模块化Java框架时,获得丰富的经验,领先一步,在JDK 9上构建下一个伟大的事物。另一方面,模块化并不能解决它的技术债务,技术难题。 如果您企业的关键任务软件是无懈可击的,那么除非行为发生敏捷变化,否则您将继续承受债务。 我认为,这就是Oracle JDK 9团队希望我们成为抢先体验的早期采用者,以便尽可能地测试其企业软件的原因。

增强了将Java推入云的能力

在JavaOne 2015上,有很多关于微服务和构建云企业应用程序的想法和会议讲座。 展览中有一些云供应商,例如JElastic,Red Hat,Pivotal和CloudFoundry。 Oracle发布了自己期待已久的云产品,称为Oracle Java Cloud 具有讽刺意味的是,他们的PaaS解决方案提供了与Oracle Coherence集群的服务器,该公司以前称为Tangasol。 Oracle的前副总裁Cameron Purdy创建了这个早期的分布式网格和缓存解决方案,实际上,他的拥护者Brian Oliver早在2007年就参加了JAVAWUG BOF 26并就Coherence进行了演讲。

Kubernetes和Docker

Arun Gupta是讨论Kubernetes (Google的Linux容器集群)的三位技术演讲者之一。 有新的术语。 荚是并置的一组Docker容器,它们共享IP和存储卷。 服务是一组Pod的单个,稳定的名称,还可以充当负载平衡。 标签名称值对已分配给容器。 在非正式的情况下,通常采用Java EE与Spring模式的LIGHTWEIGHT与HEAVYWEIGHT之间的旧应用程序服务器营销战在本次JavaOne会议上退居二线。 如果您碰巧使用Docker或Vagrant以及诸如Chef或Puppet之类的配置管理工具,您可能会吐口水,因为如果您要停止并(重新)启动通过部署从Soup到Nuts配置的虚拟机,配置文件,您不在乎WildFly服务器有多轻或有多重? 更重要的是要知道,可以使用已部署的ACME.WAR启动WildFly 8.2,并且HTTP Undertow模块已连接到秘密端口4123,该端口从外部映射到某些虚拟机上的端口80。 如果WAR文件为10MB或1MB,则您不再关心WAR文件的实际大小。

梦想微服务

黛安·马什(Dianne Marsh)关于NetFlix开发人员的讨论完全结束了。 许多人都在考虑这些想法,我怀疑很少有人在他们的组织内部拥有实际实践这些想法的业务支持,更不用说敏锐了。 微服务需要运营团队在跨职能部门(通常跨部门)工作。 在许多传统的美国和英国投资银行,其他大型商业机构,零售组织,数字设计机构中都可以找到SILO-Driven Engineering,这是对Micro服务的厌恶。 因此,请继续做梦,如果您幸运或不幸地成为其中的一部分...最好的希望根本不是微服务,但是您可以重新考虑您的MONOLITH并尝试使用COMPONENTISED APPLICATION,如果可以的话在您的企业体系结构中,您应该能够获得模块化的MONOLITH,它比(意大利面条内置的)MONOLITH更好。

Scala和Groovy

–今年,替代JVM语言的讨论较少。 我和Ted Malaska参加了Apache Spark演讲,这很有趣。 我还参加了Groovy中Cedric Champeau的“领域特定语言”演讲。

JavaFX逐步移动友好

JavaFX在台式机上像往常一样工作-令人惊讶的是,在今年的会议上,围绕JavaFX的主题没有创新,展示了新功能。 但是,由于Swing处于维护模式已经有好几年了,因此JavaFX的采用比以前更强。 Gluon正在投资对JavaFX的移动跨平台支持。 Gluon已经接管了将JavaFX应用程序移植到iOS和Android的工作。 对于台式机,JavaFX可能需要富文本编辑组件。 对于移动设备,有JavaFXPorts 我怀疑该软件团队的下一个巨大工作就是JavaFX 3D和媒体库的帮助。

JavaScript影响

AngularJS在客户端对JavaScript编程提供了一些支持。 在我自己的Digital Java EE 7演讲中,我演示了AngularJS案例工作者应用程序,并且在AngularBeans上还有另一个竞争性演讲,将AngularJS与JSF混合在一起。 甲骨文还宣布了自己的JavaScript扩展工具包 ,该工具包基于Knockout.js,JQuery,JQuery UI和RequireJS。 Kito Mann在Polymer网站组件上进行了演讲。 当然,对于那些有兴趣在JVM服务器端运行JavaScript的企业,也有Nashorn技术会议。

无容器构建

人们肯定对Spring Boot感兴趣,并且可能是WildFly Swarm ,正是出于与可能在微服务上出售相同的原因。 显然,最大的区别是围绕Hot JVM类重载和动态资源的技术支持。 这些扩展解决方案与应用服务器中的WAR部署投资背道而驰,这并不奇怪,尽管该规则的例外是带有Scala(和Java)的Play Framework。 诸如JetBrain的IDEA 15和Netbeans 8.1之类的IDE允许通过HOT更改进行交互式和实验性开发。 开发人员可以对Java代码进行合理的更改,更重要的是更改CSS,页面viewS和JavaScript文件,而不必重新启动应用程序。 借助Micro服务及其亲密的同伴,他们在WildFly Swarm和Spring Boot中构建了无容器构建,这种高度交互的模式(我在Bret Victor中进行频道介绍-在这里发明原理 )被取消了。 在WildFly Swarm的情况下,最大的问题是它们还没有爆炸式,可动态重载的ShrinkWrap实现,它可以允许JVM重载类和Web资源。 唯一的解决方法是用APPLE-IDIOMATIC-SPLIT-TEAMS-SECRET方法编写应用程序。 用户界面设计团队开发了一个新的前端,该前端负责按标题,标题,图形和描述显示产品列表。 服务器端团队编写远程端点服务以查询数据库。 前后团队在REST API或Web界面上达成共识,但是他们对产品本身或说明一无所知。 他们将使用模拟数据进行测试。 高管将在发布前用Apple iPhone Invisible Edition 5150以及所有相关信息,标题,标题,英雄图形,配件,描述和价格填充产品数据库。 对于苹果公司来说,这是一个很好的解决方案,因为它是一家Kool-Aid公司,对较小的团队,中小型企业甚至一人(和一人��乐队)都不利,因为通常,您需要一个完整的堆栈解决方案,您可以从头到尾完全使用它,反之亦然。无容器则非常适合RESTful端点和服务器。CodeHale的DropWizard向我们展示了如何实现这一目标。对于Java的Web前端工作还不太好(尚未)。

詹姆斯写Java

Mike Duigou的演讲James编写Java:我通过阅读James Gosling的代码[CON3563]所学到的知识 –这真是一场绝妙的演讲。 我很高兴看到此直播,因为它让我想起了不要在编码中沾沾自喜的想法。 詹姆斯·高斯林(James Gosling)绝对会继续以自己的知识来扩展自己的编码。 还有改进的空间。

Java至少还有20年的生命。 从23岁(初级工程师)到63岁(ACME / PEABODY的首席架构师和静态代码),完全有可能在Java平台上工作。 我认为这当然是可以实现的。 Java编程语言和JVM之外的其他行业实践将对该生态系统产生深远影响。 硬件将不断扩展。 JVM将不得不处理1TB RAM和垃圾回收。 确实,这是JVM工程团队的下一个增长领域。 JDK 10应该希望看到值类型来帮助进行内存分配。 在服务器方面,云仍然是新的前沿领域,因为它仍不确定蓝领Java开发人员将如何决定云的价值。

在用户体验方面,JavaFX使富客户端接口的寿命延长了。 JavaScript非常适合Web浏览器和HTML5,CSS元素,但是对于重型图形动画,声音和媒体渲染,富客户端是应用程序的必需。 毕竟,本机移动开发中可能有一个冗长的尾巴,Java和JavaFX只能位于LOCKED-IN平台两个据说不可逾越的WALL GARDENS之上。 如果Java坐着,蠕动并潜伏在那儿,那么机会就会随之而来,它每隔一段时间就会做一次,然后继续前进。 但是,将需要专业的发烧友和敏捷的小型创新创业公司来保持压力,并确保移动开发的UNIVERSALITY继续进行。 我相信这是有机会的,因为移动芯片组将在10年内成倍增长。 看看JavaFX和其他JavaScript桥接解决方案在短短几年内(更不用说20年)将我们带到何处,将会很有趣。

Java MODULE系统是巨大的机会。 它是最终的DESIGN-FOR-REPLACEMENT功能,而不是Java编程中的功能,而是Java虚拟机和JDK发行版中的功能。 我们,开发人员,设计师和建筑师是否会永远使用它? 我们将在SOLID的修改中使用它吗? 还是我们会以某种方式滥用它? 模块化可能位于标尺的两个相对端,并且比例不同:物联网和微服务分布式应用程序模块。 就硬件和软件而言,未来很难预测。 我们唯一能做的就是参与其中,并不断前进。 让我们一起享受旅程吧。

+ PP +

JavaOne 2015 –第二十版十大收获

Arun Gupta,用于通过微服务和容器重构Java EE应用程序(CON1700)

JavaOne 2015 –第二十版十大收获

拉斐尔·贝内维德斯(左)和安东尼·杜兰特(右)

JavaOne 2015 –第二十版十大收获

Stephen Chin在Raspberry Pi,Oracle Demogrounds和JCP Hackergarten上焊接

JavaOne 2015 –第二十版十大收获

徽章2015

JavaOne 2015 –第二十版十大收获

这是给Java冠军和Googler同事Kevin Nilson的。 凯文的儿子正在JavaOne 2015的Ignite会议上讲话!

翻译自: https://www.javacodegeeks.com/2015/11/javaone-2015-the-twentieth-edition-ten-takeaways.html

相关文章: