Java 相关 

Last Update: 2024-06-03

目录

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 源码仓库中创建和发布了安全修复程序,它们也会提供构建。

Java 环境配置

Windows

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


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

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

JDK 相关问题

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 里。

Java Maven 相关

安装 Maven

Windows

去官网下载最新的压缩包,解压到本地。

比如解压路径为 D:\DevTools,解压后的文件夹为 D:\DevTools\apache-maven-3.6.3。

添加 D:\DevTools\apache-maven-3.6.3\bin 到 环境变量 -> 系统变量 -> Path

Linux

可以 sudo apt install maven 完成安装。

也可以从官网下载二进制包:

curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xzvf apache-maven-3.6.3-bin.tar.gz -C /opt

sudo ln -s /opt/apache-maven-3.6.3/bin/mvn /usr/bin 在 /usr/bin 目录下创建软链接指向 mvn 文件。或者 export PATH=/opt/apache-maven-3.6.3/bin:$PATH 将 bin 目录添加到环境变量。

配置

maven 共提供了三个级别的配置,优先级依次递增,分别是:

使用中最常见的是进行用户层级的配置,其它配置层级一般使用默认配置,具体内容可参看官方文档。

换国内源

Maven 默认使用国外的镜像,下载依赖包的速度很慢,最好换成国内源。

从 D:\DevTools\apache-maven-3.6.3\conf\settings.xml 找到 Maven 的配置文件。

在把 159 后的内容变为:

<mirror>
  <id>alimaven</id>
  <mirrorOf>central</mirrorOf>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

插件

Java 项目打包时打入依赖

首先修改 pom.xml,加入插件。如下内容。

<build>
  <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
      ......
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <!--加上入口类,比如 cn.gridsah.App,可生成能直接运行的jar包-->
          <archive>
            <manifest>
              <mainClass>cn.gridsah.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
      ......
    </plugins>
  </pluginManagement>
</build>

在项目根目录下执行 mvn assembly:assembly ,成功后会在 target 文件夹下多出一个以 -jar-with-dependencies.jar 结尾的包. 这个包中包含了被依赖的所有 jar 包的 CLASS,并且可以执行。