前言

自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二进制文件和脚本都是开放源码许可的,可以免费使用。

免费、开源、新鲜出炉的

微软的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兼容。由我们的服务和产品所检验。

用于云的生产级别 JDK

多年来,阿里巴巴已经编写了超过10亿行Java代码。在采用OpenJDK运行这些应用程序的同时,我们发现有必要针对大规模Java应用程序部署对其进行定制。我们的定制已经在我们的环境中经过了良好的测试。我们现在正在向Java社区贡献我们的一些工作。

Alibaba DragonWell作为OpenJDK的下游版本,是阿里巴巴内部的OpenJDK实现。它针对运行在10万多台服务器上的在线电子商务、金融和物流应用进行了优化。Alibaba DragonWell就是以极大的伸缩性运行这些分布式Java应用程序的引擎。

该项目包含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。

  1. 从2019年4月更新开始,Oracle JDK 8将具有商业使用限制。至少到2020年12月,Oracle JDK仍将免费提供个人桌面使用,开发,测试,原型制作,演示以及与某些类型的应用程序一起使用。在这些日期之后,用户可以进入付费支持计划,也可以使用其他提供商的Java SE 8 / OpenJDK 8二进制文件。
  2. 您还可以继续使用在旧许可证 下载的Oracle JDK 8的先前版本,而无需自行承担更新的风险。
  3. 如果您没有使用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。

JDK8之后,在java语言这条路怎么走?的更多相关文章

  1. 前端这条路怎么走,作为一名后端er,说说我的见解

    近期都游荡在各大群里看大家的讨论,经常看到关于程序员生涯的一些讨论,颇有感触,最近的国庆的确过得有些堕落,都没怎么更新,仔细相信还是应该分享点经验给大家的!想必大家都经历过面试,这是进入一家公司的必要 ...

  2. 为什么我会选择走 Java 这条路?

    阅读本文大概需要 2.8 分钟.   作者:黄小斜 文章来源:微信公众号[程序员江湖] 最近有一些小伙伴问我,为什么当初选择走Java这条路,为什么不做C++.前端之类的方向呢,另外还有一些声音:研究 ...

  3. ​为什么我会选择走 Java 这条路?

    ​本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点 ...

  4. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  5. Java与算法之(5) - 老鼠走迷宫(深度优先算法)

    小老鼠走进了格子迷宫,如何能绕过猫并以最短的路线吃到奶酪呢? 注意只能上下左右移动,不能斜着移动. 在解决迷宫问题上,深度优先算法的思路是沿着一条路一直走,遇到障碍或走出边界再返回尝试别的路径. 首先 ...

  6. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  7. 数据结构:关键路径,利用DFS遍历每一条关键路径JAVA语言实现

    这是我们学校做的数据结构课设,要求分别输出关键路径,我查遍资料java版的只能找到关键路径,但是无法分别输出关键路径 c++有可以分别输出的,所以在明白思想后自己写了一个java版的 函数带有输入函数 ...

  8. paip.java 架构师之路以及java高级技术

    paip.java 架构师之路以及java高级技术 1.    Annotation 设计模式... 概念满天飞.ORM,IOC,AOP. Validator lambda4j memcache. 对 ...

  9. IT这条路,适合什么人走。

    今天 ,到图书馆Study,呼,不知道为撒,看到那么多新书,那么多新技术(也不能说是新技术,就是自己没有学习过的技术),特别兴奋,学习的疲劳顿时间就没了,感觉什么都想学,都想据为己有,但是...... ...

随机推荐

  1. 金三银四助力面试-手把手轻松读懂HashMap源码

    前言 HashMap 对每一个学习 Java 的人来说熟悉的不能再熟悉了,然而就是这么一个熟悉的东西,真正深入到源码层面却有许多值的学习和思考的地方,现在就让我们一起来探索一下 HashMap 的源码 ...

  2. 利用Metasploit 打入ThinkPHP内网...

    出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图   Metasploi ...

  3. React Context 理解和使用

    写在前面 ​ 鉴于笔者学习此内容章节 React官方文档 时感到阅读理解抽象困难,所以决定根据文档理解写一篇自己对Context的理解,文章附带示例,以为更易于理解学习.更多内容请参考 React官方 ...

  4. Android7.0无需FileProvide搞定URI拍照、应用安装问题

    根据官方文档,从Android7.0版本开始 使用URI打开或安装文件需要单独在应用里配置了,问了度娘,有好多版本的结果,个人认为最靠谱的就是下边这个方法,只需在application的oncreat ...

  5. 【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等

    目录 一.PMM简介 二.安装使用 三.监控MySQL数据库 MySQL慢查询分析 四.监控PG数据库 五.监控MongoDB数据库 六.监控ProxySQL中间件 一.PMM简介 之前发布过一篇Pr ...

  6. Pycharm模块导入失败,带有红色波浪线。

    在Pycharm中打开一个python开源工程,结果在导入库的部分一堆红色波浪线显示错误,并且按住Ctrl + 鼠标左击无法跳转到指定类或方法,如下图所示. 解决方法: (1)首先忽略掉这些报错,先运 ...

  7. fastjson 反弹shell

    目录 如下文章说得很不详细,只是用于记录我的步骤,初次利用的人,建议找别的博客文章学习. 准备一台公网服务器 cd test python -m SimpleHTTPServer 8888 javac ...

  8. WEB容器开启、关闭OPTIONS方法

    发现 请求包随意,响应包信息如下: HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Vary ...

  9. 《C++ Primer》笔记 第10章 泛型算法

    迭代器令算法不依赖于容器,但算法依赖于元素类型的操作. 算法永远不会执行容器的操作.算法永远不会改变底层容器的大小. accumulate定义在头文件numeric中,接受三个参数,前两个指出需要求和 ...

  10. 定西+简单dp

    定西 ECNU-3531 #include<iostream> #include<cstdio> #include<algorithm> #include<c ...