编译获取鸿蒙版本JDK


前言

随着鸿蒙生态的持续扩展和鸿蒙电脑的推出,对桌面级语言运行时的需求日益凸显。本文重点围绕Java语言展开论述,系统性地分析鸿蒙系统支持Java的必要性及其运行机制,并以BiShengJDK8版本为例提供详细的使用指南。


一、Java是什么

Java是一种面向对象的编程语言,由Sun公司于1995年发布,现由Oracle公司维护‌,同时也是一个完整的技术平台。其核心特点是"一次编写,到处运行",这得益于Java虚拟机(JVM)的跨平台能力。

其核心特性包括:

  • 跨平台性:通过JVM(Java虚拟机)实现"一次编写,到处运行
  • 应用广泛:支持Web开发、移动应用(Android)、桌面应用及嵌入式系
  • 安全性高:采用编译型语言设计,具备内存管理机制

引用一张经典的架构图,可以更直观的了解什么是Java、JRE、JDK等核心概念:
在这里插入图片描述
Java 技术体系中的这些核心概念构成了完整的开发生态,它们之间的关系可以用一个简单的层次结构来理解。

JVM‌(Java Virtual Machine) - Java虚拟机

Java程序运行的核心环境,负责将编译后的字节码解释或编译成所在操作系统能理解的本地机器码并执行,同时管理内存和垃圾回收。

JRE‌(Java Runtime Environment) - Java运行时环境

如果你只想运行Java程序而不进行开发,安装JRE就足够了。它包含JVM和Java程序所需的核心类库,为Java程序提供运行环境。

JDK(Java Development Kit)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等。

JDK三大平台版本‌

Java SE‌ - 标准版

Java技术的核心基础,为桌面应用和简单服务器应用提供支持。

Java EE‌(Jakarta EE) - 企业版

在SE基础上构建,提供Web服务、分布式计算等企业级功能,现更名为Jakarta EE。

Java ME‌ - 微型版

针对移动设备和嵌入式设备的精简版本。

JRE和JDK怎么选择

开发Java程序需要安装JDK,它包含javac编译器、jdb调试器等全套开发工具,这些工具是编译.java源文件为可执行.class字节码的必要条件。

若只需运行Java程序,安装JRE即可满足需求。JRE提供Java虚拟机(JVM)和核心类库,能够完美执行已编译的程序文件(如.jar或.class格式)。

可以用一个简单类比来理解:JRE相当于阅读器,仅能查看现有文档;而JDK则是完整的编辑器,既能编写新文档,也能查看已有内容。

二、鸿蒙电脑为什么需要Java

现代计算机对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等各个方面
强大的工具链包括:

  • 构建工具:Maven、Gradle
  • 开发工具:Eclipse、IntelliJ IDEA
  • 测试框架:JUnit、TestNG

活跃的开发者社区(如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,显示出其良好的长期支持能力

三、鸿蒙操作系统 && JDK

Java的跨平台能力基于JVM和JRE实现,这些组件包含大量原生功能,对系统有较强依赖性。目前社区已完成BiShengJDK两个常用版本对鸿蒙系统的适配工作。欢迎大家一起进行完善和bug修复。
BiShengJDK8 For Harmony
BiShengJDK17 For Harmony

如何获取鸿蒙版本的JDK

一、通过二进制直接获取

可以通过另一个项目BiShengJDKInstaller 通过不同的分支将JDK8或JDK17安装到鸿蒙电脑中

也可以直接在华为应用市场中搜索BiShengJDK8-OHBiShengJDK17-OH安装
BiShengJDK17-OH
BiShengJDK8-OH

二、通过源码构建自己的JDK

我构建JDK时采用的是 openEuler 22.03版本,在wsl中构建,相似环境可参考本文

切换root

若首次使用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/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../libs
Created directory: /home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../sdk
Created directory: /home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../bootjdk
Created directory: /home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../fastdebug
Environment variables set:
LIB_DIR=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../libs
SDK_DIR=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../sdk
JDK_DIR=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../../..
BOOT_JDK=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../bootjdk
RELEASE_DIR=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/..
NATIVE_DIR=/home/BuleBanana/jdk/bishengjdk-8/ohos_build/scripts/../sdk/command-line-tools/sdk/default/openharmony/native
TOOLCHAIN_DIR=/home/BuleBanana/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

问题记录

1、libxml2-2.6.0.tar.gz not found

如果遇到libxml2-2.6.0.tar.gz找不到等问题,进入到bishengjdk-8/ohos_build//libs目录中,手动通过wget下载,或自己下载后放到该目录
ibxml2-2.6.0.tar.gz找不到

wget https://download.gnome.org/sources/libxml2/2.6/libxml2-2.6.0.tar.gz

2、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
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐