Q1、JDK 和 JRE 的区别
答:JDK 是 JRE 的父集,我们 POD 中需要安装 JDK,以便能运行一些诊断工具。
JDK(Java Development Kit,Java 开发工具包) ,是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库),包含JVM标准实现及Java核心类库。
JRE(Java Runtime Environment Java 运行环境) ,是 JDK 的子集,也就是包括 JRE 所有内容,以及开发应用程序所需的编译器和调试器等工具。
见:https://docs.oracle.com/javase/8/docs/
Q2、Oracle JDK 究竟从哪个版本开始收费?
答:jdk8u201 和 jdk8u202 是 orcale jdk8 最后的免费版本,从 jdk8u211 和 jdk8u212 开始收费。参考:https://www.cnblogs.com/xuruiming/p/12881503.html
如果使用 Orcale JDK,建议 jdk8u201:
Q3、如何下载 Orcale JDK 8u201?
答:从 Oracle 官网下载:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
Q4、Oracle JDK8u 和 OpenJDK8u 有什么区别?
答:最主要的是授权协议不同。Orcale 的高版本商用时收费,OpenJDK 则完全免费。
其次还有OpenJDK源代码不完整、部分源代码用开源代码替换、OpenJDK只包含最精简的JDK等问题,但一般来说,这些影响可以忽略。
Q5、JDK8 的支持到什么时候结束?
答:2030年12月31日,https://endoflife.date/java
Q6、OpenJDK 支持 Java Flight Recorder 吗?
答:支持,见:低延迟 Profile 工具 Flight Recorder 被移植到 Java 8。
开启方法:
1
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
Q7、OpenJDK8 中的 Java Flight Recorder 是商用特性吗?
答:不是,该特性在 OpenJDK 是完全免费的,见:Get started with JDK Flight Recorder in OpenJDK 8u。
但要注意:Oracle 的 JDK11 之前的版本中 JFR 是商用特性,所以需要加 -XX:+UnlockCommercialFeatures 开启;同时为了兼容性,使用 OpenJDK 也要添加该参数。
Q8、OpenJDK8 支持识别 Docker 容器的资源限制吗?
答:取决于版本。
比如:从 jdk8u191 开始完整支持,不需要需要使用 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=1 -XX:G1ConcRefinementThreads=5 -XX:ActiveProcessorCount=8 这些参数指定 GC 线程数。
详见:JVM 对容器化支持的参数(强烈建议,参考该文章在 docker 中进行验证)。
小于 jdk8u131 版本不支持;
大于等于 jdk8u131,小于 jdk8u191 实验性支持;
大于等于 jdk8u191 开始完整的支持;
Q9、如何下载 OpenJDK8?
答: 很多,这里给出两个:Azul Zulu Downloads,OpenLogic OpenJDK Downloads 。
特别地,如果是在个人开发电脑,则强烈建议使用 SDKMAN ,它支持并行版本管理,Java 生态的各种软件包,包括 JDK、、Kotlin、Groovy、Scala、Maven、Gradle 等等。