使用树莓派搭建 OpenJDK 开发环境

2021/07/30 JVM raspberrypi 共 1572 字,约 5 分钟

起因

随着 OpenJDK 项目迁往 Github,获取 OpenJDK 源码变更加容易,同时 OpenJDK 的构建也越来越方便,所以现在我们可以尝试一下能否在树莓派上进行 OpenJDK 的构建和开发。

前提

要在树莓派上顺利的进行类似 OpenJDK 这种规模的项目开发,需要满足以下几个条件:

  • 较新的树莓派,我用的是 4B(8G)

    4B 以后的树莓派提供了大内存,对于开发活动十分必要(浏览器、IDE 和构建)。可以从淘宝或者其他平台购买,建议只购买一个主板和一个被动散热壳(主动散热风扇太吵,被的散热一般可以控制温度在 50 度一下)。

  • 读性能大于 200MB/s 的高速存储设备

    之前我用买树莓派自带的 TF 卡作为系统存储设备,发现构建 OpenJDK 非常慢(5 小时以上),这显然是不可接受的。后来发现国外有人做过实验,如果换成读性能大于 200MB/s 的存储设备,构建只需要 1 小时甚至更快,所以最彻底的解决方案是配置系统从高速设备启动,并使用高速设备作为主存储器。

    我使用的是闪迪的 CZ880,官方宣称读性能可以达到 410MB/s,不过我用hdparm工具测试读性能只有 200MB/s 多一点。

  • 方便高效的代码编辑器

    出于性能和个人偏好的原因,我选择使用 vim 作为代码编辑的工具,相关配置可以参考 wiki

系统安装

前面说过,出于性能的考虑需要将系统设置从 USB 设备启动,所以系统镜像需要重新下载和烧录。

首先,我们需要选择一款合适的系统。关于树莓派上装什么系统当然是仁者见仁智者见智,但从使用场景看,系统的性能表现是首要的参考指标。我开始打算使用树莓派爱好者基地的 Debian-Pi-Aarch64,因为据说性能优化的较好,但是看了一圈,居然没有找到很方便的镜像下载地址(只有国内和国外的云盘),这对于我这个只有 Linux aarch64 环境的人来说实在是太不友好了,另外这也让我感觉这个发行版似乎不怎么靠谱,将来使用成本相信会比较高。后来我还试用了 UbuntuopenEuler,这两个虽然界面比较美观,但是性能一般,总给人一种慢半拍的感觉,另外系统更新也不频繁,这对开源系统而言不是一个好现象。最终我还是选择了树莓派官方的 64 位系统,虽然目前他还仍然是 beta 版本,但是从使用过程看,还没有碰到特别严重的问题。

在确定使用什么系统后,就可以通过以下步骤完成系统的烧录和配置了:

  • 下载镜像

    通过官网 下载最新的 64 位系统。

  • 烧录镜像

    可以使用官方提供的烧录工具 rpi-imager,也可以直接使用dd命令将镜像写入 USB 或者 SSD。

  • 设置从 USB 启动

    使用官方工具 raspi-config 配置固件,选择 Advanced Options -> Boot Order -> USB Boot。

构建 JDK

  • 安装依赖

    下载 AdoptOpenJDK16 以上版本(因为现在 OpenJDK 主线的版本已经到了 18)作为 bootjdk。

    安装其他编译依赖软件:

    sudo apt-get install autoconf
    sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
    sudo apt-get install libcups2-dev
    sudo apt-get install libfontconfig1-dev
    sudo apt-get install libasound2-dev
    
  • 构建:

    git clone https://github.com/openjdk/jdk.git
    cd jdk
    bear -- bash configure --with-boot-jdk=<path to bootjdk>
    bear -- make images
    

在我的环境中,全量构建一次 JDK 需要 1 小时左右,增量构建需要 15 分钟到 30 分钟,已经基本可以满足平时的开发调试了。

文档信息

Search

    Table of Contents