Ubuntu与Rocky系统安装Java全指南
java 是一种广泛使用的编程语言,因其“一次编写,到处运行”的特性而受到开发者们的喜爱。无论你是要开发企业级应用、Android应用还是进行大数据处理,Java 都是不可或缺的工具之一。本文将详细介绍如何在 Ubuntu,Rocky 系统上安装 Java,并确保其正确配置以便顺利开展你的开发工作。
JDK
JDK 和 JRE
Java SE API:Java 基础类库开发接口
JRE:Java Runtime Environment缩写,指Java运行时环境,包含 JVM + Java核心类库
JDK:Java Development Kit,即 Java 语言的软件开发工具包,JDK协议基于JRL(JavaResearch License) 协议
JVM 的各种版本
参考链接: https://en.wikipedia.org/wiki/List_of_Java_virtual_machines https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines
各个公司和组织基于标准规范,开发了不同的JVM版本
- SUN HotSpot
- IBM J9VM
- BEA JRockit
JVM 市场份额
2018年12月,由 Snyk 和 The Java Magazine 联合推出发布的 2018 JVM 生态调查报告
Oracle JDK版本
JDK也就是常说的J2SE,在1999年,正式发布了Java第二代平台,发布了三个版本:
J2SE:标准版,适用于桌面平台
J2EE:企业版,java在企业级开发所有规范的总和,共有13个大的规范,Servlet、Jsp都包含在 JavaEE规范中
J2ME:微型版,适用于移动、无线、机顶盒等设备环境
2005年,Java的版本又更名为JavaSE、JavaEE、JavaME
JDK 版本使用情况
数据来源
https://www.baeldung.com/java-in-2019
收费
从2019年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是201/202 之后的版本。如果你用 Java 开发的功能如果是用作商业用途的,如果还不想花钱购买的话,能免费使用的最新版本是201/202。当然如果是个人客户端或者个人开发者可以免费试用 Oracle JDK 所有的版本
发版方式
在 JDK 9 发布之前,Oracle 的发版策略是以特性驱动的,只有重大的特性改变才会发布大版本,比如 JDK 7 到 JDK 8,中间会发多个更新版本。而从 JDK 9 开始变为以时间驱动的方式。发布周期为6个月一个大版本,比如 JDK 9 到 JDK 10,3个月一次补丁版,3年一个 LTS(长期支持版本)
OpenJDK
openJDK 介绍
OpenJDK是Sun公司采用GPL v2协议发布的JDK开源版本,于2009年正式发布
官方网站:https://openjdk.java.net/projects/jdk6/
OpenJDK 7是基于JDK7的beta版开发,但为了也将Java SE 6开源,从OpenJDK7的b20构建反向分支开发,从中剥离了不符合Java SE 6规范的代码,发布OpenJDK 6。所以OpenJDK6和JDK6没什么关系,只是 API兼容而已
OpenJDK使用GPL v2可以用于商业用途。目前由红帽维护。OpenJDK也有在其基础上的众多发行版,比如阿里的Dragonwell。相对来说,Oracle jDK具有更好的响应能力和JVM性能,更加稳定
安装 openjdk
在 Rocky 中,可以使用 yum 仓库安装 openjdk
[root@rocky9 ~]# yum list *jdk*
Last metadata expiration check: 2:39:46 ago on Thu 27 Mar 2025 06:55:01 PM CST.
Available Packages
ant-openjdk11.noarch 1.10.9-11.el9_5 appstream
ant-openjdk17.noarch 1.10.9-11.el9_5 appstream
ant-openjdk21.noarch 1.10.9-11.el9_5 appstream
ant-openjdk8.noarch 1.10.9-11.el9_5 appstream
copy-jdk-configs.noarch 4.0-3.el9 appstream
idm-ldapjdk.noarch 5.5.0-1.el9 appstream
java-1.8.0-openjdk.x86_64 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-javadoc-zip.noarch 1:1.8.0.442.b06-2.el9 appstream
java-1.8.0-openjdk-src.x86_64 1:1.8.0.442.b06-2.el9 appstream
java-11-openjdk.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-demo.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-devel.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-headless.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-javadoc.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-javadoc-zip.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-jmods.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-src.x86_64 1:11.0.25.0.9-3.el9 appstream
java-11-openjdk-static-libs.x86_64 1:11.0.25.0.9-3.el9 appstream
java-17-open