jigsaw模块化
Java世界中的烹饪是什么?
当EC 未能批准 JSR 376的公众评审投票时,有些人认为Jigsaw项目注定要失败。 有13票反对,10票赞成 ,尽管JSR 376公众投票的最终结果令人鼓舞,但Tomitribe的创始人兼首席执行官David Blevins声称红色复选框具有其优势。
原来他是对的! 6月下旬批准了针对JSR#376的公共审核重新审议投票。
Java 9将于9月21日发布,但是即使大多数人都为它的试用而兴奋,但并不是所有的事情都在模块化潮流中跃升。 正如OpenJDK董事会主席兼Oracle Java平台组开发副总裁Georges Saab在6月初对JAXenter所说的那样,“有可能在不使用模块的情况下开始使用JDK 9,类路径仍在起作用,有多少开发人员可能会开始使用JDK9。”
不过,模块化生态系统并不是每个人都可以喝的,据一些Java影响者称,社区不太可能立即依赖新的模块功能。 世界为模块化做好准备了吗? 这取决于您问谁。
Jigsaw项目在Java平台的未来中扮演着核心角色,因为它为平台的更快发展提供了基础,同时确保了Java众所周知的出色兼容性。
乔治·萨博
在本系列访谈的第一部分中,我们邀请Java影响者讨论Node.js超越Java的可能性,并评论斯坦福大学决定以Java而非Java教授其著名的入门课程的决定。
现在该谈论拼图和即将到来的模块化未来。
* 6月下旬批准了针对JSR#376的公共复议复议投票。
认识有影响力的人
马库斯·埃塞勒(Markus Eisele): 我没想到它会在今年全部问世。 EC非常清楚地表明,模块化JDK的优势非常明确,那就是JVM本身。 这给框架开发人员带来了沉重负担,并且很可能会对我们今后实现应用程序的方式产生重大影响。 即使有人认为坏的模块系统总比没有好,但我确实相信,如果没有EC所做的更改和澄清,没有人会完全使用Java 9。 除了Oracle。
没有EC所做的更改和澄清,没有人会使用Java 9。 除了Oracle。
Marcus Biel: 好吧,这很难说。 拼图是一个很大的机会,它会带来伤害,但从长远来看,我们将从中受益。 使它尽可能地无痛可能值得等待。
Lukas Eder: 虽然我确定Oracle以及其他JVM / Java EE供应商在这个重要项目中确实占有重要股份,但我个人对JSR 376感到无聊,这在很大程度上不会影响我的工作在不远的将来。 我对Java 10中将包含的内容更加好奇!
Trisha Gee: 我实际上是JCP执行委员会的JetBrains代表,所以我非常接近这个问题! 就我个人而言,我为这个决定感到痛苦—我渴望看到Java 9尽快发布,感觉我们已经等待了很长时间。 但是,作为开发人员,我们确实应该了解,正确解决问题需要时间,而且最好能从用户(例如,执行委员会和他们所代表的开发人员社区)那里获得反馈,并根据该反馈进行更改,而不是坚持不懈。提出可能不适用于社区某些部分的解决方案。
使Java吸引其许多用户(尤其是大型企业)的原因是,它成熟且稳定,并承诺不破坏现有应用程序-这样做的代价是需要花费大量时间对平台进行重大更改,因为他们必须适合社区。
Java平台中有很多投资很高的团队,他们以前曾探索过模块化空间。
Vlad Mihalcea: 我认为这些担忧是真实的。 模块化是一个非常困难的话题,匆匆忙忙将影响许多现有框架。 同时,目前可能已经解决了许多问题。
杰克·沃顿(Jake Wharton): 由于该JSR 现在已经在第二轮投票中获得通过 ,因此我可以通过第一轮投票来检查Oracle及其对模块的决策。 重要的是要记住,该平台上有很多投资很高的参与者,他们以前曾探索过模块化空间。
尽管平台不应被他们的决定所吸引,但它也不应对他们的所有工作一无所知。 最终,我认为由于第一和第二票之间的变化,我们最终将获得更好的产品。
Thorsten Heller: 我完全同意JCP执行委员会投票反对JSR 376的决定。对我来说,引入一个包含很多开放性问题或不清楚主题的规范绝对是没有道理的。 特别是与OSGi的描述和共存是我关注的方面之一。 因此,推迟Java 9并重新编写规范是一个明智的决定。
Baruch Sadogursky: 我认为这是一个很好的决定。 投票后进行的对话和所做的更改是最好的。 我们需要这段“等待,让我们聊聊”的时间。
还请参见: Java仍然存在并且很好,谢谢您,并且与以往一样重要
昆汀·亚当(Quentin Adam): Java 9正在打破常规。 很多东西。 我认为在JVM上的所有辛苦工作已经准备就绪。 尽管Jigsaw对于下一个十年Java平台的未来至关重要,但是对于Java的工具生态系统来说,有些决定太难了,并且某些工具需要时间才能符合Java 9规范,才能从第一天开始使用。
延迟是一个好举动,因为它允许为Java 9用户准备好生态系统,从而使采用变得容易,快速。 投票反对是使Oracle推迟发布的唯一方法,因此,这是一个好举动。 既然每个人都同意Java 9版本,我们希望不再需要延迟。
无论如何,我们已经等待拼图大约八年了,所以值得再花几个星期。😊
布鲁诺·博尔赫斯(Bruno Borges): 我相信JCP EC可能取得了最佳结果。 最终结果是每个参与人员之间达成了预期的共识,最终,每个投资Java的人都获得了胜利。 Java 9是朝着Java平台迈出的重要一步,该平台对软件架构(微服务)和软件交付(容器)的现代实践很友好。
该平台的模块化将帮助Java开发人员真正受益于云原生软件开发方法。 现在,我们可以为小型微服务获得更小的JVM。 我记得Mark Reinhold的一条推文说,最小的JRE 9仅15 MB。 这是一个巨大的进步!
Markus Eisele: 这正是即将发生的情况。 您不会使用没有优点而只有缺点的东西。 关闭模块系统的可能性将至少使公司使用希望补丁和安全的JVM保持最新版本。 想象一下,如果Oracle EOLs Java 8更新而没有人使用Java 9,将会发生什么。
我个人认为模块化工作来得太迟,对开发人员的价值太低。 另一方面,我们可能会看到更多针对小型和/或专用设备的专用JVM。 可能有针对容器的优化版本。 让我们全力以赴,很多知识也将最终出现在OpenJDK中,而不仅是Oracle产品。
大多数公司将拼图视为巨大的风险,并尽可能(他们认为)将其推迟。
Marcus Biel: 拼图是一个很大的机会。 迁移将需要大量工作,而大多数公司将延迟这样做。
多数公司将在多年内将其视为巨大的风险,并在(他们认为)可能的情况下将其推迟尽可能长的时间,而无需考虑模块化带来的巨大优势。 非常不幸
如果最重要的是,如果您认为大多数公司仍在使用Java 7,而实际上只有少数公司在使用Java 8,那么我认为在接下来的5-10年中,这个主题仍然有意义。
卢卡斯·埃德(Lukas Eder): 我确定乔治是正确的。 我完全理解Jigsaw(和模块化)对于JDK的发展很重要。 社区很早以前已经通过Maven和/或OSGi等工具找到了“足够好的”模块化解决方案。 社区可能不会立即依赖新的模块功能。
不要误会我的意思。 Java具有模块系统很重要,但是我认为Java 9的实现对我们大多数人来说不会非常令人兴奋。 这并不意味着将来的Java不会对其进行改进。
Trisha Gee: 我已经读了很多关于它的内容,并且也做了一些工作,迁移了我的一个微服务应用程序以使用JPMS。 我认为使模块成为语言的一等公民是一件好事,这使我作为开发人员更加仔细地应用了良好的设计实践,如封装和关注点分离。 但是,由于Java(语言)缺乏模块化,导致其他人开发了自己的解决方案(例如,我刚才提到的项目使用了Gradle子项目)。 Java 9中的模块化并不是要取代其中的任何一种,但确实需要与它们很好地配合使用,这是他们一直在努力的一部分。
我对Java 9模块化的总体感觉是,新项目可能会想调查使用JPMS是否会给他们带来任何好处,但是大多数现有的大型代码库都不会迁移到使用它(实际上,除非有这些好处,否则他们可能看不到任何好处)他们已经打算将其重新架构为较小的部分,例如,从整体迁移到微服务。
还请参见: Java处在滑坡上,Tiobe索引显示
在我看来,最困难的部分在于库代码的开发人员,即我们每天都使用的那些开源jar文件。 一些开发人员将希望他们依赖的库是真正的模块化jar文件,而不是自动模块,这给库开发人员带来了迁移其代码的压力。 这样做有很多好处,特别是对于库开发人员而言,例如,他们可以隐藏实现细节和内部API(Jigsaw旨在完成的工作),但是对于许多人来说,进行这种迁移和迁移并不容易。收益需要超过成本。
Vlad Mihalcea: 我对模块化不是很感兴趣。 我认为对于框架而言,它比最终用户应用程序更为重要。
杰克·沃顿: 模块化是一个重要的长期概念,其原因很多。 作为图书馆作者,增强的封装非常吸引人,但是要广泛使用它还需要很多年。 它也是用于构建可启动应用程序的自定义微型JVM的重要工具。 随着容器使用的扩散,最大限度地减少运行我们的应用程序所需的JVM的资源影响意味着更高的密度部署和更低的基础架构成本。
Thorsten Heller: 老实说,我仍然对模块系统和Java 9以及它与OSGi的关系和协同工作持不同意见。 现在,将Java 9中的整个模块系统放在其他方面上并没有什么大问题。
Baruch Sadogursky: 很好。 大多数开发不需要模块化,并且旧版本的Jigsaw带来了很多复杂性和局限性,而没有明显的好处。 毫无疑问,这对于JDK而言是极其重要的举动,因此Jigsaw很好,但是第一步将其封装在平台中是正确的举动。
也许人们会等到Java 10开始在日常工作和代码库中使用模块,但是水管工将在那里。
Quentin Adam: 对于将来作为平台的JVM,JDK内部的模块化是必不可少的。 第一步是将其推入JDK并允许使用模块。 要使框架和工具与之完全兼容并倡导开发人员和架构师考虑模块化系统的利弊,大规模采用将需要时间。
也许人们会等到Java 10在日常工作和代码库中开始使用模块,但是水管工将在那里,往事记录和战争故事将可用,并且采用也将是一条清晰的道路。 当泛型进入Java时,采用也花费了几年时间。 我不认为整个Java生态系统都将从明年11月开始跳入模块。 对于社区和JUG来说,这是一个提高效率,结识新朋友并吸引更多受众的机会,因为人们将需要学习并寻找新闻。 这种发行版对社区有很大的影响,并将有助于提高该平台的平均知识。
Bruno Borges: 一周前,我第一次尝试了JDK 9 EA,顺便说一句,我鼓励所有Java开发人员对其进行测试,看看他们的应用程序是否仍然可以正常工作。 你猜怎么了? 我的应用程序运行良好。 而且我没有对它们进行任何更改! 我完全同意Georges的观点:许多开发人员只会升级和使用Java 9,而无需考虑模块。
在采访系列的最后一部分中,我们讨论有关Java 9和JSR 376的最大误解。您是否 渴望发现我们的影响者希望在Java 10中看到什么? 您必须等到7月24日。
如果您想与Java推动者和摇动者见面,请于10月在伦敦加入我们。
翻译自: https://jaxenter.com/java-influencers-interview-2-135720.html
jigsaw模块化