鸿蒙系统 JDK 编译与获取指南
本文介绍了在鸿蒙系统上获取和使用 Java JDK 的方法。首先分析了 Java 在鸿蒙生态中的必要性,涵盖跨平台兼容性、生态系统及安全稳定性。随后提供两种获取 BiShengJDK 的方案:直接安装二进制包或通过源码构建。详细记录了源码构建的环境配置、代码克隆及脚本执行步骤,并针对构建过程中常见的依赖缺失问题给出了具体解决方案。

本文介绍了在鸿蒙系统上获取和使用 Java JDK 的方法。首先分析了 Java 在鸿蒙生态中的必要性,涵盖跨平台兼容性、生态系统及安全稳定性。随后提供两种获取 BiShengJDK 的方案:直接安装二进制包或通过源码构建。详细记录了源码构建的环境配置、代码克隆及脚本执行步骤,并针对构建过程中常见的依赖缺失问题给出了具体解决方案。

随着鸿蒙生态的持续扩展和鸿蒙电脑的推出,对桌面级语言运行时的需求日益凸显。本文重点围绕 Java 语言展开论述,系统性地分析鸿蒙系统支持 Java 的必要性及其运行机制,并以 BiShengJDK8 版本为例提供详细的使用指南。
Java 是一种面向对象的编程语言,由 Sun 公司于 1995 年发布,现由 Oracle 公司维护,同时也是一个完整的技术平台。其核心特点是'一次编写,到处运行',这得益于 Java 虚拟机 (JVM) 的跨平台能力。
其核心特性包括:
引用一张经典的架构图,可以更直观的了解什么是 Java、JRE、JDK 等核心概念:

Java 技术体系中的这些核心概念构成了完整的开发生态,它们之间的关系可以用一个简单的层次结构来理解。
Java 程序运行的核心环境,负责将编译后的字节码解释或编译成所在操作系统能理解的本地机器码并执行,同时管理内存和垃圾回收。
如果你只想运行 Java 程序而不进行开发,安装 JRE 就足够了。它包含 JVM 和 Java 程序所需的核心类库,为 Java 程序提供运行环境。
JDK 称为 Java 开发包或 Java 开发工具,是一个编写 Java 的 Applet 小程序和应用程序的程序开发环境。JDK 是整个 Java 的核心,包括了 Java 运行环境(Java Runtime Environment),一些 Java 工具和 Java 的核心类库(Java API)以及编译器 (javac)、调试工具等开发必需组件。不论什么 Java 应用服务器实质都是内置了某个版本的 JDK。主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自己的 JDK,例如,IBM 公司开发的 JDK,BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK,华为开源的 BiShengJDK 等。
Java 技术的核心基础,为桌面应用和简单服务器应用提供支持。
在 SE 基础上构建,提供 Web 服务、分布式计算等企业级功能,现更名为 Jakarta EE。
针对移动设备和嵌入式设备的精简版本。
开发 Java 程序需要安装 JDK,它包含 javac 编译器、jdb 调试器等全套开发工具,这些工具是编译.java 源文件为可执行.class 字节码的必要条件。
若只需运行 Java 程序,安装 JRE 即可满足需求。JRE 提供 Java 虚拟机 (JVM) 和核心类库,能够完美执行已编译的程序文件(如.jar 或.class 格式)。
可以用一个简单类比来理解:JRE 相当于阅读器,仅能查看现有文档;而 JDK 则是完整的编辑器,既能编写新文档,也能查看已有内容。
现代计算机对 Java 的广泛支持主要源于其跨平台特性、成熟的生态系统以及企业级应用需求。考虑到企业开发中历史代码的资产价值和业务复杂性,仅通过方舟框架(ArkUI + native C/C++)重写大量现有 Java 应用在鸿蒙系统上运行并不现实,这涉及巨大的工作量和时间成本。以金融行业为例,部分 Java 应用的代码量可能高达千万行,而各行业基于 Java 开发的应用更是数不胜数。例如,常用的 Eclipse、MATLAB 等开发工具也都是基于 Java 构建的。因此,鸿蒙系统对 Java 的支持已成为一个必然选择。
Java 通过 Java 虚拟机(JVM)实现'一次编写,到处运行'的特性,程序编译后生成字节码而非机器码,可在任何安装 JVM 的设备上执行。JVM 充当中间层,将字节码转换为特定平台的机器指令,无需针对 Windows、macOS、Linux 等操作系统单独编译。例如,在 Windows 开发的 Java 程序可以直接在 macOS 上运行,只需安装对应平台的 JRE(Java 运行时环境)。这一特性使 Java 成为开发跨平台桌面应用程序(如 Eclipse IDE、IntelliJ IDEA 等)的热门选择之一。
Java 拥有 20 多年发展积累的庞大生态系统
丰富的标准类库(Java SE API)包含超过 4000 个类,涵盖 I/O、网络、GUI 等各个方面 强大的工具链包括:
活跃的开发者社区(如 Stack Overflow 上 Java 相关讨论超过 200 万条) 多线程支持(通过 Thread 类和并发包)和自动垃圾回收机制显著提升了系统性能和稳定性
Java 从设计之初就注重安全性:
安全沙箱机制限制 Applet 的权限(如文件系统访问) 自动内存管理避免内存泄漏和指针错误 强类型检查和异常处理机制 加密 API 支持常见加密算法 字节码验证器确保代码安全性 这些特性使 Java 在企业级应用中广受信任,如银行系统和证券交易所的核心系统常采用 Java 开发。
OpenJDK 社区保持每 6 个月发布一个功能版本
长期支持版本(LTS)如 Java 8(2014)、Java 11(2018)、Java 17(2021)提供 8 年以上支持 每个版本带来性能改进和新特性:
Java 8 引入 Lambda 表达式 Java 9 引入模块系统 Java 17 增强伪随机数生成器
向后兼容性确保旧代码在新版本中仍可运行 超过 75% 的企业仍在使用 Java 8,显示出其良好的长期支持能力
Java 的跨平台能力基于 JVM 和 JRE 实现,这些组件包含大量原生功能,对系统有较强依赖性。目前社区已完成 BiShengJDK 两个常用版本对鸿蒙系统的适配工作。欢迎大家一起进行完善和 bug 修复。 BiShengJDK8 For Harmony BiShengJDK17 For Harmony
可以通过另一个项目 BiShengJDKInstaller 通过不同的分支将 JDK8 或 JDK17 安装到鸿蒙电脑中
也可以直接在华为应用市场中搜索 BiShengJDK8-OH 或 BiShengJDK17-OH 安装
BiShengJDK17-OH
BiShengJDK8-OH
我构建 JDK 时采用的是 openEuler 22.03 版本,在 wsl 中构建,相似环境可参考本文
若首次使用 wsl,默认使用普通账户登录,这里需要切换 root 账户(大神直接跳过)
sudo passwd root

切换 root 用户

yum install git yum install wget yum groupinstall "Development Tools" yum install libXtst-devel libXt-devel libXrender-devel yum install cups-devel yum install freetype-devel yum install alsa-lib-devel yum install fontconfig-devel
git clone -b harmonyos-8u432 https://gitcode.com/OpenHarmonyPCDeveloper/bishengjdk-8.git
进入项目目录 ohos_build/scripts 执行构建脚本 ./buildAll.sh
cd ohos_build/scripts chmod 777 * ./buildAll.sh
执行后的结果如下
Starting build process...
Setting up directory structure and environment variables...
Created directory: /home/user/jdk/bishengjdk-8/ohos_build/scripts/../libs
Created directory: /home/user/jdk/bishengjdk-8/ohos_build/scripts/../sdk
Created directory: /home/user/jdk/bishengjdk-8/ohos_build/scripts/../bootjdk
Created directory: /home/user/jdk/bishengjdk-8/ohos_build/scripts/../fastdebug
Environment variables set:
LIB_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../libs
SDK_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../sdk
JDK_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../../..
BOOT_JDK=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../bootjdk
RELEASE_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/..
NATIVE_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../sdk/command-line-tools/sdk/default/openharmony/native
TOOLCHAIN_DIR=/home/user/jdk/bishengjdk-8/ohos_build/scripts/../sdk/command-line-tools/sdk/default/openharmony/toolchains
Setup completed successfully.
Please download [Command Line Tools for HarmonyOS 5.0.0 Release] from https://developer.huawei.com/consumer/cn/download/command-line-tools-for-hmos
根据提示 Please download [Command Line Tools for HarmonyOS 5.0.0 Release] from... 进入 command-line-tools 获取工具,注意选择 Linux

选择 5.0.0 版本

将下载好的安装包 commandline-tools-linux-x64-5.0.3.906.zip 放到工程目录 bishengjdk-8/ohos_build/sdk 下
再次进入 bishengjdk-8/ohos_build/scripts 路径下执行构建脚本
./buildAll.sh
恭喜你,看到 Build process completed successfully 就顺利完成编译了

产物生成到 bishengjdk-8/ohos_build/release 目录下,包括已经打包的 hnp 和 tar 包

如果需要编译带调试的版本,可以用下面两个命令
// 快速调试模式
./buildAll.sh fastdebug
// 显示调试信息模式
./build.sh slowdebug
按照上述流程,构建一个鸿蒙版本的 JDK,还是相对轻松的,下次给大家介绍如何在鸿蒙电脑应用中使用 JRE
libxml2-2.6.0.tar.gz not found如果遇到 libxml2-2.6.0.tar.gz 找不到等问题,进入到 bishengjdk-8/ohos_build//libs 目录中,手动通过 wget 下载,或自己下载后放到该目录

wget https://download.gnome.org/sources/libxml2/2.6/libxml2-2.6.0.tar.gz
freetype-2.13.2.tar.gz not found遇到 freetype-2.13.2.tar.gz 无法找到的问题,进入到 bishengjdk-8/ohos_build//libs 目录中,手动通过 wget 下载,或自己下载后放到该目录
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.gz

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online