李守中
该站已迁往根域名 https://lishouzhong.com
需要注意,迁移后的文章的 url 可能会发生变化。
域名 https://note.lishouzhong.com 下的内容将不再更新,但已有内容会永久保留。

Java JDK 发行版与环境配置

Table of Contents

1. jdk 的发行版

上世纪90年代,美国 SUN 公司创造的 JAVA 在短短几年的发展后成为市场上炙手可热的语言,随后 SUN 又提出了 JavaEE 的 13 规范: JDBC,JNDI,EJB,RMI,JSP,Servlets,XML,JMS,Java IDL,JTS,JTA,JavaMail,JAF。

这里顺带提一下,还有一家公司,准确来说是一个组织,专门搞开源的,叫 Apache。这家公司搞出了一个叫 Tomcat 的服务器,但它只实现了 13 种规范中的 Servlet 和 JSP。而其他服务器比如 JBoss 和 Weblogic 啥的都完整支持了 JavaEE 的 13 个规范。所以人们往往更愿意叫 Tomcat 为轻量级服务器,也有人叫它 Servlet/JSP 容器。

后来 Oracle 收购了 Sun 公司,所以现在 java 是 Oracle 的产品。

OpenJDK 是源存储库 (也称为 OpenJDK 项目) 是基于 Mercurial 的开源存储库,托管在 http://hg.openjdk.java.net 上。绝大多数 Java 功能 (从 VM 和核心库到编译器) 仅基于这个源存储库。

openjdk 发行版是 Oracle 搞出来的,开源免费的 jdk,与 Oracle jdk 的区别是没有商业支持。

Oracle jdk 是 Oracle 圈钱用的商用 jdk,在生产环境跑收费,开发者可以免费用。但是从 Oracle jdk 12 开始没有免费版本。

AdoptOpenJDK 是完全无品牌的 OpenJDK 发行版,使用 GPL 协议,提供社区版的 OpenJDK 二进制包,可以免费商用。

与由 Oracle 的 OpenJDK 构建版本不同,这些版本至少提供 4 年的免费长期支持 (LTS) 计划。

AdoptOpenJDK 是一个社区驱动的项目,如果其他 Java 社区在 OpenJDK 源码仓库中创建和发布了安全修复程序,它们也会提供构建。

2. Windows 配 Java 环境

新建两个环境变量 - 系统变量。

变量名: JAVA_HOME 变量值: D:\DevTools\openjdk-11.0.9.1+1

变量名: CLASSPATH 变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

再在 Path 变量里添加两个路径:

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

3. openjdk 没有把 https 证书内置到 jdk

简单来讲,bug 是由于 $JAVA_HOME/jre/lib/security/cacerts 这个空文件导致的,里面本应该存储证书信息。

这是 bug 描述: https://github.com/AdoptOpenJDK/openjdk-build/issues/555

这个问题会导致在使用 apache http components 时候,程序进行 ssl 连接时报错:

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    ......
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    ......

解决方案是从其他的发行版里拷贝一个 $JAVA_HOME/jre/lib/security/cacerts 到 openjdk 里。



Last Update: 2023-11-28 Tue 16:54

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: lsz.sino@outlook.com

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议