当我在目前的工作中参与 dockerization 项目时,我有一个疑问:我可以使用哪种 java?
这种怀疑是由于:

所以经过一些研究,我得到了这些结论:
根据我的结论:
如果我的开发严格需要或使用JDK 8开发,我是否可以仅将 Oracle Java SE 8 JDK 8u202 及更早版本用于免费和商业目的接受问题和安全问题?
如果我可以改变我的开发并且我仍然想要免费,并且我想要改进和安全更新,我必须使用这些 Java 开放实现之一吗?
Azul OpenJDK、Zulu OpenJDK 和 OpenJDK 有什么区别?
根据这个关于Java 9的新版本字符串方案的博客,该版本应该是,例如MAJOR.MINOR.SECURITY,应该有3个数字和2个句点.
但是,使用Azul的Zulu 9,当我打印Java版本时,它有4个数字和3个句点:
./jdk/bin/java -version
openjdk version "9.0.0.15"
OpenJDK Runtime Environment (Zulu build 9.0.0.15+181)
OpenJDK 64-Bit Server VM (Zulu build 9.0.0.15+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)
4个数字代表什么?
我使用的是M1 Mac OS11.5.2。
\n我已经在“/Library/Java/JavaVirtualMachines”中下载了 zulu.jdk 和 zulu.jre。
\n我还导出了 PATH。
echo export "JAVA_HOME=\\$(/usr/libexec/java_home)" >> ~/.bash_profile\nRun Code Online (Sandbox Code Playgroud)\n当我打字时
\nsudo apt update\nRun Code Online (Sandbox Code Playgroud)\n我明白了:
\n\n\n无法完成操作\xe2\x80\x99。无法找到支持 apt 的 Java 运行时。
\n
\n请访问http://www.java.com以获取有关安装 Java 的信息。
希望好心人告诉我解决办法。
\n如何将证书导入 Azul Zulu JDK 11 中的密钥库。
keytool使用的默认keystore在哪里
我继承了一个Spring Boot项目,我们希望使用Java 11进行测试,因为Java 9和10(var和List.of(...))中添加了很好的功能.
Maven项目分为几个部分,其中为Java 8设置了生产代码,以及Java 11的测试代码.这在模块基础上可以很好地单独工作,全局构建与Java 8一起工作(测试失败除外)编译)和Java 10.
现在我想使用Java 11从根目录编译所有内容,因为这是LTS(Zulu,因为这是在Windows 10上),并且出于某种原因,Maven现在想要引入org.openjfx:javafx.base:jar:11.0. 0-快照
[INFO] Building mumble-data-service-parent 1.0.0-SNAPSHOT
[1/8]
[INFO] --------------------------------[ pom ]---------------------------------
[WARNING] The POM for org.openjfx:javafx.base:jar:11.0.0-SNAPSHOT is missing, no dependency information available
[INFO]
Run Code Online (Sandbox Code Playgroud)
由于依赖关系不满意,我不能(至少不是我能想到的方式)让Maven告诉我为什么要这样做所以我不知道在哪里看,而且该项目似乎没有引用javafx in第一个地方(作为一个让我感到惊讶的Spring Boot微服务).因此这个问题.
是什么导致它,我该如何解决?
正如Karol正确推导出的这个问题之前已经出现过,修复是将hibernate验证器依赖项升级到更新版本.我需要的只是将以下属性添加到我的父pom中:
<!-- needed for building with Java 11 -->
<hibernate-validator.version>6.0.12.Final</hibernate-validator.version>
Run Code Online (Sandbox Code Playgroud) http://www.azulsystems.com/products/zulu提到代码是在GPL +类路径异常上发布的,但我没有看到任何指向源代码可用的指针?
它是从公共openjdk源代码树或其他地方的分支构建的吗?
当我使用OpenJDK 11(在Windows 10上为Zulu发行版)编译并运行以下非常简单的Java程序时:
public class GCTest {
public static void main(String[] args) {
System.out.println("Free memory before garbage collection: " + Runtime.getRuntime().freeMemory());
Runtime.getRuntime().gc();
System.out.println("Free memory after garbage collection: " + Runtime.getRuntime().freeMemory());
}
}
Run Code Online (Sandbox Code Playgroud)
看起来垃圾回收正在减少可用内存量:
Free memory before garbage collection: 266881496
Free memory after garbage collection: 7772200
Run Code Online (Sandbox Code Playgroud)
当我使用Oracle Java 8运行它时,不会发生这种情况:
Free memory before garbage collection: 254741016
Free memory after garbage collection: 255795064
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我在.zshrc下面的行中选择了哪个 JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home -v '1.8*')
Run Code Online (Sandbox Code Playgroud)
我以前只有 AdoptOpenJdk,因此这样做可以让我轻松选择 AdoptOpenJdk 版本 1.8
但是,安装 Zulu 后,当我运行时java_home -V,我有以下内容
./java_home -V
Matching Java Virtual Machines (2):
1.8.0_282 (arm64) "Azul Systems, Inc." - "Zulu 8.52.0.23" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
1.8.0_282 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
之后,现在我正在运行的 JAVA_HOME/usr/libexec/java_home -v '1.8*'已确定指向Zulu open jdk.
如何仅使用java_home命令将其返回到 AdoptJDK?
我有一个 Java FX 项目,并使用以下 Azul Zulu Build of OpenJDK with JavaFX 将项目升级到 JDK 17
https://www.azul.com/downloads/?os=windows&package=jdk-fx
有谁知道为什么 Intellij 无法从 Azul Zulu Builds of OpenJDK with FX 中找到使用 JDK 17 的 JavaFX 包吗?
azul-zulu ×10
java ×6
java-11 ×2
javafx ×2
adoptopenjdk ×1
azure ×1
azure-zulu ×1
corretto ×1
java-9 ×1
java-home ×1
macos ×1
maven ×1
open-source ×1
openjdk-17 ×1
terminal ×1
version ×1
versioning ×1