概叙
科普文:【支持信创、宣传国产】使用龙芯JDK 8/11/17的风险分析-CSDN博客
科普文:【支持信创、宣传国产】用龙芯JDK 8/11/17的法律风险-CSDN博客
科普文:【支持信创、宣传国产】用龙芯JDK 8/11/17会被收费吗?-CSDN博客
科普文:【支持信创、宣传国产】Spring Boot 2.6 + Spring Cloud 2021 从 Oracle JDK 11 切换至龙芯JDK 11的适配方案-CSDN博客
科普文:【支持信创、宣传国产】通过JCK认证的国产JDK梳理-CSDN博客
下载地址
备注:暂不支持window版
龙芯JDK简介
龙芯中科基于OpenJDK研制并发布了龙芯平台Java环境。
目前,龙芯平台Java环境已经发布了包括21、17、11和8在内的4个长期支持(Long-Term Support,LTS)版本,龙芯中科对这些LTS版本提供安全更新、问题修复和持续优化。
除了多版本支持以外,龙芯平台Java环境还具有符合Java SE标准,开源,免费,支持C1/C2即时编译器和向量加速等优化,支持ZGC和Shenandoah GC等先进垃圾收集器(Garbage Collection,GC),支持向量API(Vector API)、虚拟线程(Virtual Threads)和外部函数和内存API(Foreign Function & Memory API)等Java社区前沿特性等特点。
龙芯平台Java环境具体情况如下:
- LoongArch平台上通过JCK测试,符合Java SE,新应用程序和现有应用程序无需修改即可运行
- GPLv2 (with Classpath Exception),可以免费下载、使用和重新发布
- 跟进社区最新版本,获取及时的安全更新和问题修复
- 支持解释器:Template Interpreter(模板表解释器)
- 支持JIT即时编译器:包括Client Compiler(C1),Server Compiler(C2)和Tiered Compilation(分层编译)
- 支持多种垃圾收集器:包括Serial GC,Parallel GC, G1 GC,ZGC(JDK17、JDK21),Shenandoah GC(JDK17、JDK21)和CMS GC(JDK8、11)
- 支持多种Linux操作系统:包括Loongnix、UOS、麒麟等64位操作系统
- 支持LoongArch64和MIPS64:包括3A5000/3A6000/3B5000/3C5000/3C5000L/2K2000、3A4000/3B4000/3A3000/3B3000等PC和服务器
- 支持多版本:包括21、17、11和8在内的LTS版本
- 支持JavaFX(OpenJFX)
- 支持Java Web Start(IcedTea-Web)
- 支持JNA(Java Native Access)
- 比Oracle JDK更长的免费维护时间
-
专业团队支持
主要的服务器和桌面Java应用均可在龙芯平台上适配,并在龙芯客户中经过了长期、大量的实践验证,这些软件包括但不限于:
-
Apache Eclipse IDE
- Netbeans IDE
- Apache Tomcat
- Apache Hadoop
- Apache Kafka
- Jenkins
- CoreMail邮件系统
- 东方通、金蝶等主要国产中间件
- 永中Office
- 泛微e-cology等OA系统等
安装方法
TAR包
- 从 下载页面 下载
.tar.ga
安装文件,请确认所使用的版本。 - 验证下载文件的校验和是否与下载页面上提供的值匹配。要计算校验和,请使用以下命令:
示例:$ md5sum <package>.tar.gz
$ md5sum loongson21.1.0-fx-jdk21_35-linux-loongarch64.tar.gz 8b196334043bf4368dbd4b0d97b338cd loongson21.1.0-fx-jdk21_35-linux-loongarch64.tar.gz
-
解压缩下载的TAR包。
$ tar zxf <package>.tar.gz
解压至
/opt
目录下为例:$ tar zxf loongson21.1.0-fx-jdk21_35-linux-loongarch64.tar.gz -C /opt
-
验证是否安装成功。
$ <installation_folder>/bin/java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment Loongson21.1.0 (build 21+35) OpenJDK 64-Bit Server VM Loongson21.1.0 (build 21+35, mixed mode, sharing)
-
(可选的)将
<installation_folder>/bin
添加至PATH
环境变量,这样可以从任何目录执行java
而无需指定完整路径。$ export PATH=<installation_folder>/bin:$PATH $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment Loongson21.1.0 (build 21+35) OpenJDK 64-Bit Server VM Loongson21.1.0 (build 21+35, mixed mode, sharing)
DEB包
根据不同的系统环境,选择相应的安装包形式。在基于Debian的发行版上,选择DEB包的安装方式。
-
从 下载页面 下载
.deb
安装文件,请确认所使用的版本。 -
在软件包下载目录,运行下面的命令。将
<package>
替换为实际的文件名。该命令可能会要求您确认是否要安装包的依赖项。使用包管理器安装需要root
权限。请登录到root
账户或使用sudo
来运行下面列出的命令。sudo apt install ./<package>.deb
比如,在Loongnix Desktop上安装JDK 23 DEB包:
sudo apt install ./loongson23.1.17-fx-jdk23_37-linux-loongarch64.deb
该软件包安装在
/usr/lib/jvm/loongson-jdk23-fx-loongarch64
。 -
切换到目标版本。请参考下面的章节,在多个JDK版本间切换。
-
在终端窗口中运行
java -version
来验证安装是否成功。应该会看到类似的输出:$ java -version openjdk version "23" 2024-09-17 OpenJDK Runtime Environment Loongson23.1.17 (build 23+37) OpenJDK 64-Bit Server VM Loongson23.1.17 (build 23+37, mixed mode, sharing)
RPM包
根据不同的系统环境,选择相应的安装包形式。在基于RPM的发行版上,选择RPM包的安装方式。
-
从 下载页面 下载
.rpm
安装文件,请确认所使用的版本。 -
在软件包下载目录,运行下面的命令。将
<package>
替换为实际的文件名。该命令可能会要求您确认是否要安装包的依赖项。使用包管理器安装需要root
权限。请登录到root
账户或使用sudo
来运行下面列出的命令。sudo yum install ./<package>.rpm
比如,在Loongnix Server上安装JDK 23 RPM包:
sudo yum install ./loongson23.1.17-fx-jdk23_37-linux.loongarch64.rpm
该软件包安装在
/usr/lib/jvm/loongson-jdk23-fx
。 -
切换到目标版本。请参考下面的章节,在多个JDK版本间切换。
-
在终端窗口中运行
java -version
来验证安装是否成功。应该会看到类似的输出:$ java -version openjdk version "23" 2024-09-17 OpenJDK Runtime Environment Loongson23.1.17 (build 23+37) OpenJDK 64-Bit Server VM Loongson23.1.17 (build 23+37, mixed mode, sharing)
Docker镜像
龙芯平台提供了预装JDK的Docker镜像,这些镜像基于以下操作系统之一。
OS | Image Name |
---|---|
LoongnixServer | cr.loongnix.cn/library/openjdk:${JDK_VER} |
Debian-buster-slim | cr.loongnix.cn/library/openjdk:${JDK_VER}-debian |
Anolisos 8.9 | cr.loongnix.cn/library/openjdk:${JDK_VER}-anolisos |
其中,${JDK_VER}
的值为龙芯已发布JDK版本中大版本的值,比如8
,11
,17
,21
,23
等。
要拉取特定的镜像,请在docker pull
中使用相应的镜像名称。比如,要拉取带有龙芯平台JDK 23的anolisos镜像,请运行:
docker pull cr.loongnix.cn/library/openjdk:23-anolisos
使用docker运行Java应用
-
测试docker镜像
docker run -it --rm cr.loongnix.cn/library/openjdk:23-anolisos java -version
如果在终端中能正确打印版本信息,则说明在容器内成功执行了
java
。 -
在容器内启动应用程序
假设运行的应用程序位于一个单独的目录中,在该目录中通过执行
java MyApp
来运行应用程序。使用docker run
的-v
选项可以使该目录在容器内可用。命令可能如下所示:docker run -it --rm \ -v ${PWD}:/usr/src/project \ -e CLASSPATH=/usr/src/project \ cr.loongnix.cn/library/openjdk:23-anolisos java MyApp
通过操作系统源
Loongnix等操作系统源中会集成龙芯平台Java环境及其后续更新。
比如,在Loongnix Server 8.3上可通过如下命令安装JDK 8:
$ sudo yum install java-1.8.0-openjdk-devel
在Loongnix Desktop 20.6上可通过如下命令安装JDK 8:
$ sudo apt install openjdk-8-jdk
卸载方法
DEB
如果使用DEB包安装了Java环境,可使用apt
包管理器将其卸载:
$ sudo apt remove <package_name>
RPM
如果使用RPM包安装了Java环境,可使用yum
包管理器将其卸载:
$ sudo yum remove <package_name>
在多个JDK版本间切换
一个系统可以同时安装多个Java环境,并通过如下命令切换默认版本(以8和13并存为例)
$ sudo update-alternatives --config java
共有 2 个提供“java”的程序。
选项 命令
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.202-1.b08.8.1.2.fc21.loongson.mips64el/jre/bin/java
2 /usr/lib/jvm/java-13-openjdk-13.0.0.33-0.3.ea.rolling.fc21.loongson.mips64el/bin/java
按 Enter 保留当前选项[+],或者键入选项编号:
选择2并确认。
验证JDK版本
$ java -version
openjdk version "13" 2019-09-17
OpenJDK Runtime Environment Loongson13-ea (build 13+33-20190916)
OpenJDK 64-Bit Server VM Loongson13-ea (build 13+33-20190916, mixed mode, sharing)
常见问题
什么是龙芯平台JDK?
龙芯公司基于OpenJDK从无到有实现的LoongArch64和MIPS64上的版本。
龙芯平台JDK的License?
GPLv2,with Classpath Exception。
龙芯平台JDK的价格?
免费。
龙芯平台JDK通过了哪些测试?
JCK, jcstress, SPECjvm2008, SPECjbb2015,Dacapo等主流Java测试和Benchmark。
功能相关问题
龙芯平台JDK支持浏览器插件和Java Web Start吗?
支持。但是,Java Web Start和浏览器插件并不是JDK标准中必须的,由于一些使用和协议等原因,龙芯目前没有在JDK中直接集成,而是以OS集成的方式部署的。针对该问题,龙芯正在寻找更便于用户使用的解决方案。
龙芯平台JDK支持JavaFX吗?
支持。
龙芯平台JDK支持Eclipse吗?
支持。
版本相关问题
为什么采用OpenJDK而没有采用Oracle JDK?
Oracle JDK是Oracle公司发布的版本,没有开放源代码,无法移植到Oracle JDK不支持的平台上。龙芯平台JDK是基于开源的OpenJDK研发的,通过了JCK的测试,符合Java SE的标准。Oracle JDK和OpenJDK都是JDK的具体实现,只要是符合Java SE标准的程序,均可在Oracle JDK和OpenJDK上运行。另外,龙芯平台JDK,100%开源,可免费下载和使用,遵循GPLv2 with the Classpath Exception协议,在使用或重新发布方面无限制,相比Oracle JDK更自由更可控,且Oracle计划从2019年1月起开始停止jdk8u的免费更新,而龙芯平台JDK不存在这方面的问题,会进行长期支持。
关于jdk8u中小版本号60和77等版本的区别问题
二者同属jdk8u,是jdk8u的具体的小版本,77较60相比主要包含了更多的bug修复和安全类更新[1][2],功能基本一致。另外,龙芯计划2018年年底发布龙芯平台JDK 8.1,将至少采用181版本,届时也将涵盖77中包含的功能、修复和安全类更新。
什么时候支持OpenJDK 7?
OpenJDK 8已成为市场主流,龙芯目前没有支持OpenJDK 7的计划。
常见错误
有java,没有javac怎么办?
安装了JRE,没有安装JDK,yum install java-1.8.0-openjdk-devel
发生JVM崩溃怎么办?
JVM崩溃后会在java运行的目录下产生文件名为hs_err_pidxxx.log
的文件,该文件为JVM的崩溃日志,记录了JVM崩溃时的相关信息。出现JVM崩溃后:
- 确认是否是最新版本龙芯平台JDK
- 若不是,更新到最新版本的龙芯平台JDK
- 若是,请将崩溃日志,复现方法,是否偶发等情况说明发送给龙芯JVM组