JDK8之后,在java语言这条路怎么走?
前言
自2017年9月以来,Oracle按照免费的开源许可证(类似于Linux的许可证)提供JDK版本 。从Java SE 11(2018年9月,LTS)开始,Oracle不仅为开源许可下的所有用户免费提供免费发行版,而且Oracle还提供了商业支持的发行版并包含在Oracle产品中。有关更多信息,请参见“适用于Java 11及更高版本的Oracle JDK版本”。
Java SE 8已完成旧版本的“公共更新结束”过程。Oracle将继续通过java.com为个人,开发人员和其他用户无限期提供Java SE 8的免费公共更新和自动更新。Oracle不打算通过自动更新功能将桌面从Java SE 8迁移到更高版本。
潮流中基石
首先,我们要搞明白JDK是什么。JDK是Java语言的软件开发工具包,它包含了Java的运行环境(JVM)、Java基础类库和Java工具。没有JVM,根本无法跑Java程序;没有Java基础类库,Java就是无根之木,无源之水;没有Java工具,Java源码就无法编译成字节码。
很多人对Java工具不甚了解,我简单的说一下吧。Java工具主要有三类:
(1)面向Java源码的工具,例如可以编译Java源码的javac.exe工具,使代码编译之后可以跑在JVM上
(2)面向JVM的工具,例如对JVM监控或者调优的工具jvisualvm.exe
(3)常用的小工具,例如用于生成密钥的keytool.exe工具
纷乱中的分支
-
OpenJDK
开放源码,开放创新,开放标准
在Java平台、标准版和相关项目的开源实现上进行协作。
-
AdoptOpenJDK: https://adoptopenjdk.net
免费提供预构建的OpenJDK二进制文件
Java™是世界领先的编程语言和平台。AdoptOpenJDK使用基础设施、构建和测试脚本从OpenJDK™类库和OpenJDK或Eclipse OpenJ9 VM的选择中生成预构建的二进制文件。
所有AdoptOpenJDK二进制文件和脚本都是开放源码许可的,可以免费使用。
-
Microsoft: https://www.microsoft.com/openjdk
免费、开源、新鲜出炉的
微软的Java从Azure到Minecraft, 跨越SQL Server到Visual Studio等等代码,我们使用的Java场景超乎想象。
OpenJDK的微软版本是一种新的免费的长期支持发现版,也是微软为Java生态体系提供合作和贡献的新方式。
-
Amazon – Corretto : https://aws.amazon.com/corretto/
OpenJDK的免费、多平台和生产级别的发行版
Amazon Corretto是Open Java Development Kit(OpenJDK)的免费,多平台,可立即投入生产的发行版。Corretto带有长期支持,其中包括性能增强和安全修复。亚马逊内部在数千种生产服务上运行Corretto,Corretto被证明与Java SE标准兼容。使用Corretto,您可以在流行的操作系统(包括Linux,Windows和macOS)上开发和运行Java应用程序。
-
Azul Zulu:https://www.azul.com/downloads/zulu/
Azul 是业界唯一专注于 Java 和 Java 虚拟机 (JVM) 的公司。它打造了具有完善技术支持、符合标准的运行时系统,可帮助基于 Java 的企业推动其业务。
配有业界一流支持的Azul Java平台产品,100%专注于Java, 可使Java成本降低多达90%。降低成本并处理更高的工作负载和波动性,包含及时且经济的安全更新的OpenJDK™ 版本。
-
BellSoft Liberica:https://bell-sw.com/java.html
Java平台和应用专家
一个免费的、受支持的、100%开源的二进制发行版,由TCK for Java SE spec验证。
给定的下载页面包含Liberica JDK 8、9、10、11、12、13、14、15和16的开源版本,所有这些版本都与Linux、Windows、Solaris、Alpine和macOS兼容。由我们的服务和产品所检验。
- Alibaba DragonWell : http://dragonwell-jdk.io/
用于云的生产级别 JDK
多年来,阿里巴巴已经编写了超过10亿行Java代码。在采用OpenJDK运行这些应用程序的同时,我们发现有必要针对大规模Java应用程序部署对其进行定制。我们的定制已经在我们的环境中经过了良好的测试。我们现在正在向Java社区贡献我们的一些工作。
Alibaba DragonWell作为OpenJDK的下游版本,是阿里巴巴内部的OpenJDK实现。它针对运行在10万多台服务器上的在线电子商务、金融和物流应用进行了优化。Alibaba DragonWell就是以极大的伸缩性运行这些分布式Java应用程序的引擎。
-
SapMachine:https://sap.github.io/SapMachine/
由SAP维护和支持的Open JDK发行版
该项目包含OpenJDK项目的下游版本。它用于为希望使用OpenJDK运行应用程序的SAP客户和合作伙伴构建和维护一个SAP支持的OpenJDK版本。
我们想强调的是,这显然是一个“友好的分支”。SAP致力于确保Java平台的持续成功:
自2001年以来,我们是JCP执行委员会的成员。在JSR 379 (Java SE 9), JSR 383 (Java SE 18.3), JSR 384 (Java SE 11), JSR 386 (Java SE 12), JSR 388 (Java SE 13), JSR 389 (Java SE 14), JSR 390 (Java SE 15)和JSR 391 (Java SE 16)的专家小组。
SAP是OpenJDK项目(目前在PowerPC/AIX和s390移植项目中处于领先地位)最大的外部贡献者之一(参见Java 11、12、13、14、15、16的固定比率)。
我们打算在上游项目中引入尽可能多的特性,并使这个项目的差异尽可能小。
多种选择的时代
随着Oracle JDK发行和支持的变化,使用Oracle JDK与Oracle OpenJDK构建与其他提供商提供的OpenJDK构建的权利存在相当大的不确定性。有多种获取免费更新(包括安全性)和(新的和现有的)付费支持模型的方法,可以从各个供应商处获得。
出于各种原因,有些人希望继续使用Java SE 8。
- 从2019年4月更新开始,Oracle JDK 8将具有商业使用限制。至少到2020年12月,Oracle JDK仍将免费提供个人桌面使用,开发,测试,原型制作,演示以及与某些类型的应用程序一起使用。在这些日期之后,用户可以进入付费支持计划,也可以使用其他提供商的Java SE 8 / OpenJDK 8二进制文件。
- 您还可以继续使用在旧许可证下 下载的Oracle JDK 8的先前版本,而无需自行承担更新的风险。
- 如果您没有使用Oracle JDK 8,那么您当前的Java SE 8 / OpenJDK 8提供程序将提供更新和/或付费支持计划供您选择。
尤其是从Java SE 11开始,Oracle JDK管理版本和更新的方式正在发生变化。
我应该使用哪种Java发行版?
在Sun / Oracle时代,通常是Sun / Oracle基于OpenJDK源产生专有的下游JDK发行版。最近,Oracle决定仅在附带商业支持的情况下进行自己的专有构建。他们还在其https://jdk.java.net/网站上慷慨地发布了OpenJDK构建。
从JDK 11开始发生的事情是从单一供应商(Oracle)思维方式转变为您选择一种提供商的思维方式,该提供商在您喜欢的条件下为您提供产品的发行版:他们为之构建的平台,发布的频率和及时性,支持的结构方式等。如果您不信任任何现有供应商,甚至可以自己构建OpenJDK。
OpenJDK的每个构建通常都由相同的原始上游源存储库(OpenJDK“项目”)制成。但是,每个构建都是非常独特的-免费的或商业的,有品牌的或无品牌的,纯净的或捆绑的(例如,BellSoft Liberica JDK提供捆绑的JavaFX,从JDK 11开始从Oracle组装中删除了JavaFX)。
如果没有环境(例如Linux)和/或许可证要求定义了特定的发行版,并且您想要最标准的JDK构建,则最好的选择可能是使用Oracle的OpenJDK或AdoptOpenJDK。