Apache NetBeansがOpen JDKで動くか試してみた
きっかけ
仕事でApache NetBeansを統合開発環境として導入しようという話になった際、Java Development Kit(通称JDK)を入れておく必要があることが分かりました。 それを聞いて、そういえば前職で取り扱っていたとあるソフトの改良時に 「Oracle JDK(Oracleが生成したJDKのバイナリ)の本番環境での使用が有償になるから、OpenJDKに鞍替えしよう」という話が出て、 実際に開発・動作環境をOpenJDKに変えたことを思い出しました(2019年頃)。 そして、「あれ、OpenJDKにしなきゃダメじゃね?」という懸念が浮かんだので、少し調べてみました。
結論は「OpenJDKにしなくてもOK」でした。 2019/4/16よりOracle JDKのライセンスがOracle Binary Code LicenseからOracle Technology Network Licenseに変更されることに伴い、 商用・本番環境においてOracle JDKを使用するためには、有償サブスクリプションに入る必要がありました。 forest.watch.impress.co.jp
ところが最近になってOracle社は、Oracle No-Fee Terms and Conditionsという新たなライセンスをOracle JDKに適用し、 「やっぱり商用・本番環境でも無償使用OK」としたようです。 www.itmedia.co.jp
それゆえ、今回のApache NetBeans導入においても、Oracle Javaは無償で使用できることになり、 「あれ、OpenJDKにしなきゃダメじゃね?」という懸念は杞憂に終わりました。
なのでこの記事はここでおしまいです。解散。
仕事では結局Oracle JDKが選択されたのですが、折角なのでOpen JDKでもちゃんと動作するのか確認してみようと思い立ったのが、今回の試行のきっかけです。需要あんのか...?
インストール先環境
OpenJDKのダウンロード~インストール
まずはOpenJDK最新版のインストールです。ダウンロード~環境変数設定の流れはいつものJDKインストール時と変わらないので、分かっている方は飛ばしてもらって構いません。
- Open JDKのダウンロード OpenJDKのページにアクセスします。
- zipファイルの展開 ダウンロードしたzipファイルを、自分の分かる場所に展開しましょう。環境変数設定時に困らないように。
- 環境変数設定 次に環境変数を設定します。コントロールパネルや設定から、「システム環境変数の設定」を開きます。 出てきたウィンドウの「環境変数」ボタンをクリックして、環境変数の編集画面に移ります。 環境変数の編集画面では、システムの環境変数とユーザ環境変数の設定ができます。どちらに設定すべきかは、例えば以下の記事を参考に決めてください(丸投げ)。 qiita.com 本記事では、ユーザ環境変数に手を加えます。やることは、
- JAVA_HOMEの追加 ユーザ環境変数にJAVA_HOMEを新たに追加します。変数値は展開したOpenJDKフォルダ直下の"jdk-<バージョン番号>"までのフルパスです。
- Pathへの変数値追加 ユーザ環境変数としてもともと定義されているPathに、変数値を追加します。追加する変数値は、OpenJDKフォルダ下の"jdk-<バージョン番号>\bin"までのフルパスです。
- パスが通っているか確認 最後に、"java"コマンドが使用可能となったか確認します。コマンドプロンプトを開き、
https://openjdk.java.net/
本文中の"latest open-source JDK"をクリックすると、最新のOpen JDKのプロジェクト紹介ページ?に飛びます。 記事執筆時点の最新メジャーバージョンはJDK 17でした。
https://openjdk.java.net/projects/jdk/17/
本文中の"available from Oracle"をクリックすると、ようやく各OS向けビルドのダウンロードリンクが出てきます。 インストール先のOSはWin10なので、迷わず"Windows / x64"を選択します(このページからOracle社の管轄のようである)。
https://jdk.java.net/17/
"JAVA_HOMEの追加"と"Pathへの変数値追加"です。
java --versionを実行してみてください。環境変数が正しく設定されていれば、ダウンロードしたOpenJDKのバージョン情報が表示されます。
以上でOpenJDKのインストールは完了です。(記事執筆もここで息切れ)
Apache NetBeansのインストール
- インストーラのダウンロード インストーラのダウンロードサイトにアクセスし、最新版(記事執筆時点ではNB 12.5, LTSversionはNB 12.0)の"Download"ボタンを押します。
- インストール ダウンロードが終わったら、インストーラを実行し、なされるがまま「Next >」を押します。 途中でNetBeans実行時に参照するJDKのパスが表示されるので、念のため、先程インストールしたOpenJDKのものになっているか確認しましょう。
- NetBeansの起動 インストールが終わったら、さっそく起動してみましょう。
Apache NetBeans Releases
押した先では、Binariesと各OS向けInstallerのリンクが貼られています。ここでもWin向けのリンクをクリックしてダウンロードします。
Downloading Apache NetBeans 12.5
まとめ
ということで、OpenJDK (17.0)でApache NetBeans (NB 12.5)は正常に動作するようでした。 冒頭に書いた通り、Oracle JDKは無償利用できますし、何なら古いOpenJDKとNetBeansの組み合わせで起動を試みたブログ記事はわんさか出てくるので、この記事にどれほどの需要があるのかは分かりません。 とりあえず現時点(2021/10/30)の最新版で動作した、という参考情報として、この記事を心に留めておいていただけると幸いです。
おまけ
私はJavaの専門ではなく、前職ではAPIを動かすためだけにJDKを入れていた程度の意識の低い素人エンジニアでした。
それゆえ当時は「ほーん、よく分からんけど変えなきゃいけないのね」程度にしか情報を把握しておらず、
「Oracle JDKは(個人・開発目的利用も含めて)全て有償になる。だからOpenJDKに移行するのだ」と思い込んだままでした。
この機会に改めて正しい情報を知る機会ができたのは幸運だったなぁと思います。
追記:unpack200問題(未解決)とJava SE 8の無償サポートについて(2021/11/2)
下記の記事に従って日本語化プラグインを導入した後、試しにNetBeans Plugin PortalにあるC/C++プラグインのインストールを試みたところ、
"unpack200がありませんよ"と怒られました。
【Java】Apache NetBeans 12 をインストール、日本語化してみた | ドラブロ – let bygones be bygones –
unpack200はJDKに実装されているAPIの一つでしたが、Oracle JDKとOpenJDK共にRelease 14にて削除されたようです(JEP 367)。
JEP 367: Remove the Pack200 Tools and API
Removed APIs
あれ、じゃあなんで職場PC環境では動いたんだと思って確認してみたら、BCL適用下の最新メジャーバージョンであるJava SE 8でした。
Java SE 一般的なFAQ | Oracle 日本
ん?Java SE 8って無償サポート期間過ぎてる...?と心配になってOracle社のJava SEの
サポートロードマップ(下記サイト)を確認したところ、こんな注記がありました。
Oracle Java SE Supportロードマップ | Oracle 日本
Java SE 8は、過去のリリースとして公開アップデート・プロセスの終了を迎えました。 オラクルは今後も、 java.comで、個人ユーザー、開発ユーザー、およびその他のユーザーに、Java SE 8の無償の公開アップデートと自動アップデートを無期限に提供します。利用可能終了日を設定する場合は、オラクルがこのページおよびその他の通信チャネルで少なくとも18か月前に通知します。
おおよかった...安心しました。
ちなみにJava SE 8の有償サポート期限は、Premium Supportが2022年3月(あと半年弱!)、Extended Supportが2030年12月で、下記注釈の通り、Premium Supportの費用だけでExtended Supportも受けられるようです。
*****2019年6月から2022年7月までの期間、Java SE 7に対するExtended Supportの追加費用は免除されます。Java SE 8の場合は、2022年3月から2030年12月までの期間はExtended Supportの追加費用が免除されます。この期間中、テクニカル・サポート・ポリシーのオラクル・テクニカル・サポート・レベルのセクションに記載されているExtended Supportが提供されます。
一方で、前述のunpack200がない件については、最新のJDKの使用にこだわるならば何か回避策を考える必要がありそうですね...。
Javaのライセンスについてここまで自力で調べたことが無かったので、疲れました...。 unpack200については後で考えることにしましょう。
大いに参考にさせていただいたサイト・記事
Oracle、「Oracle JDK」を再び無料提供へ 本番環境でも利用可 - ITmedia NEWS
「Java 有償化」で誤解する人になるべく分かりやすく説明するためのまとめ - Togetter
なぜ「Javaが有償化する」と誤解されてしまうのか考えてみる - kazokmr's Blog
「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに - 窓の杜
Introducing the Free Java License – Logico Inside
JDK、Oracle JDK、OpenJDK、Java SEってなに? - Qiita
【Java】Apache NetBeans 12 をインストール、日本語化してみた | ドラブロ – let bygones be bygones –
OS自作入門(3日目-1):読書と再びアセンブリコードいじり
↑の続き
環境
- OS: WIndows 10 Pro
- Memory(多分関係ない): 16GB
- Console: WIndows Subsystem for Linux (WSL)
- WSL上のLinux: Ubuntu 20.04.02 LTS
- NASM: 2.15.05
- VirtualBox: 6.1.18 r142142
今回やったこと
- 読書(OS自作入門)
- P48-53: キャリーフラグ、フロッピーのデータ構造、バッファアドレス
ソースコード書き換え for nasm (project/03_day/harib00a/ipl.asm)
RESB
をTIMES
とDB
に変更0x7dfe-$
を0x7dfe-($-$$)
に変更
(参考サイト様①: Ubuntu 18.04で30日OS自作入門をやりたい[1日目] - free(malloc(sizeof(MRM)));)
Makefileでmake
make img
VirtualBoxで実行
読書(OS自作入門)とソースコード書き換えを並行
書き換え対象(書き換え内容は2.と同じ)
i) project/03_day/harib00b/ipl.asm
ii) project/03_day/harib00c/ipl.asm
iii) project/03_day/harib00c/ipl.asm
Makefileでmake
make img
VirtualBoxで実行
今日はここまで
その他
先駆者の方々のブログを見てみると、3日目が初学者にとって一番の難関らしい。挫折しないよう、焦らずのんびり取り組みたいところ。
OS自作入門(2日目):読書とアセンブリコードいじり
↑の続き
環境
- OS: Windows 10 Pro
- Memory(多分関係ない): 16GB
- Console: Windows PowerShell 5.1.18362.1171
- WSL上のLinux(手順7でのみ使用): Ubuntu 20.04.01 LTS
- NASM: 2.15.05
- VirtualBox: 6.1.18 r142142
今回やったこと
読書(OS自作入門):
ソースコード書き換え for nasm (project/02_day/helloos3/helloos.nas)
RESB
をTIMES
とDB
に変更0x7dfe-$
を0x7dfe-($-$$)
に変更
(参考サイト様①:Ubuntu 18.04で「30日でできる!OS自作入門」をやりたい[2日目] - free(malloc(sizeof(MRM)));)
nasmでアセンブル
nasm helloos.nas -o helloos.img
VirtualBoxで実行
上手くいってしまったが、参考①筆者の方によるUbuntu+qemuエミュレーションでは、2.bの変更部分にて、
0x7dfe-($-$$)
が0で埋めたいブートセクタのバイト数(=510)に一致しなかったためにエラーが出たみたいだ。こちらの方法でエラーが出なかった理由は分からないが、確実に510バイト指定をしていることを保証するため、参考①の方法に従って、TIMES 0x7dfe-0x7c00-($-$$)
に変えておくことにした。VirtualBoxで再実行
Makefile作ってみた
(参考サイト様②:Linuxで書くOS自作入門 2日目 - Tsurugidake's diary)
default: make img ipl.bin: ipl.asm Makefile nasm ipl.asm -o ipl.bin -l ipl.lst tail.bin: tail.asm Makefile nasm tail.asm -o tail.bin -l tail.lst helloos.img: ipl.bin tail.bin Makefile cat ipl.bin tail.bin > helloos.img asm: make -r ipl.bin img: make -r helloos.img clean: -rm ipl.bin -rm tail.bin -rm ipl.lst -rm tail.lst src_only: make clean rm helloos.img
Makeした(ここだけWSL上の操作)
make img
VirtualBoxで実k(ry
今後の開発環境についての小言
手っ取り早く勉強を始められると思ってPowerShell+VirtualBoxで開発を進めていたが、ググって出てくる環境のほとんどがLinux(+qemu)+VirtualBoxなので、今後進めにくくなるかもしれない。あえてPowerShellで進めてぶち当たった問題と解決策をこのブログで共有していくのはありかもしれないが、WSLでUbuntu動かせるのに、そんな需要あるのだろうか...?
OS自作入門(1日目):NASMインストール~VirtualBoxでHelloOS動かすまでにしたこと
※今回まではThinkpadノートPC
- NASMインストール:https://www.nasm.us/
- helloos.asmを作成:
30日でできる!OS自作入門(1日目)[Ubuntu16.04/NASM] - Qiita nasmでアセンブル:
nasm helloos.asm -o helloosfrmasm.img
VirtualBoxで起動