IBM i のウンチクを語ろう
~ その54:「無償の」Javaを活かしてACSを利用するには
皆さん、こんにちは。IBM i Access Client Solutions(以降ACS)、すなわちIBM i AccessファミリーのJava版が最初に登場してから8年以上、バージョン1.1.8.0によって日本語環境における罫線印刷の問題が解決されてから2年以上が経過しました。第26回目のコラム「IBM i Access最新バージョンと今後を考える」で述べたように、この問題は日本におけるACS普及の最大の阻害要因だったわけですが、解決したことでようやく多くのお客様に安心してご利用いただける環境が整ったと言えます。ところが現在においてもなお少なからぬお客様が、Windows 10の上でIBM i Access for Windows(以下Windows版)を利用されているようです。メーカーによるサポートを得られないばかりでなく、料金支払いが不要であるにも関わらず進化するACSの最新機能を活用されていないので、製品担当者としては正直なところモッタイナイという思いを拭えません。
どのようなものであれ、新テクノロジーへの移行に対する不安ないし漠然とした抵抗感は常に見られるものですが、正直に言って要因として意外だったのがコスト増、すなわちJavaの「有償化」問題が影を落としているケースがある事でした。Oracle社が有償化を発表してから2年以上、それが現実のものとなってから1年半近くが経過し、IBM i コミュニティ内外でも多くの情報が飛び交いました。具体的内容やACS利用における対策は世間に十分浸透したものと想定していたのですが、私の勝手な思い込みに過ぎなかったようです。
事の起こりはOracle社によるJavaライセンス、すなわちJavaを使用するにあたってユーザーが従うべき条件を変更しようという発表にありました。新ライセンスは2019年4月16日付けで発効しています。旧ライセンスが適用される最後のJavaは8u202、すなわちJavaバージョン8アップデート202であり、ここまでは利用目的を問わず無償使用が許諾されています。ちなみに8u202の入手時期は条件化されていませんので、これからダウンロードする場合でも旧ライセンスが継続適用されます。これに対してJavaバージョン8アップデート211である8u211以降は新ライセンスが適用され、業務用途の使用においては有償のJava SEサブスクリプションが前提として必要になりました。誤解を恐れる故かOracle社のサイトには端的な説明が見当たらないので少々わかりにくいようにも思いますが、ユーザーの立場からこれを乱暴に一言で表現するならば、実質的にはサポート付きのJava使用料だと見て良さそうです。
別途Oracle社はオープンソースのGPLライセンスに基づくJavaとして、OpenJDKも従来から無償提供しており、これが中止されるといった情報は私の知る限りどこにもありません。すなわち業務用途であってもJavaを無償で利用し続ける可能性が完全に絶たれたわけではなく、理屈上は8u202ないしそれ以前のリリースか、オープンソースのOpenJDKを使用するのか、二者択一の可能性が残されているわけです。ただし8u202だと新たなセキュリティ・パッチなどが提供されるわけではありませんし、オープンソース製品だとサポート体制に疑念を抱く方が多いのも事実です。業務用途にACS採用の検討を進めているお客様の中には、より新しいJavaバージョンの使用を前提にしていたために、年間300万円以上もの追加コストが発生する旨の「忠告」を受け取ったところもあります。ここで有償化を受け入れたくなかったり予算化が間に合わなかったりすると、ACS採用を見送って、サポートが無いままにIBM i Access のWindows版を継続使用する事になるかもしれません。業務用途である事を考えると、この選択は望ましいものではありません。
ACSを提供しているIBM社は、対応策としてOpenJDKと同様のライセンスの元で、すなわち無料のJDKディストリビューション(パッケージ)として、AdoptOpenJDKサイト上の「OpenJDK with the IBM OpenJ9 JVM」、すなわちIBM OpenJ9 JVMを含んだOpenJDKか、Amazon Correttoの使用を推奨しています。ここで迷いが生じそうなポイントについていくつか説明しておきたいと思います。
そもそもJVMとJDKとはどう違うのか、上記サイトを見ただけでは説明はありません。Javaプログラムの実行環境である仮想マシンがJVM(Java Virtual Machine)、それを含みながらAPIやアプリケーション開発ツールなどをまとめたより大きなパッケージがJDK(Java Development Kit)です。そしてIBMの開発チームは、OpenJ9という独自のJVMだけでなく、OpenJDK開発にも参画しており、バグ対応やセキュリティ対策のための修正プログラムを無償で提供するとしています。また、上記のAdoptOpenJDKサイトには選択可能なJDKバージョンがいくつかリストされていますが、単に新しいものではなく、長期的なサポートが提供されるバージョンを選択する事をお勧めします。当コラム執筆時点で対象となるのはJava 8ないし11で、「LTS」(Long Term Support : 長期サポート)と付記されている事があります。バージョン毎のサポート期間については、Oracle社のサイト「Oracle Java SE Supportロードマップ」をご覧ください。なお、上記のJDKパッケージは継続的に無償で利用でき、ACS利用において問題にはならない旨の説明を、e-BELLNET「IBM i 資料集」内の文書「Javaライセンスの変更がACS利用コスト増になるのを避ける方法はありますか」にも掲載しておりますので、別途参照いただければと思います。
さて、必要なJDKをダウンロードしzip ファイルを解凍してもそれだけでは有効にはなりませんし、インストーラーである「install.exe」ファイルが無いためにインストールする事もできません。該当PCで使用するJavaバージョンを全面的に刷新する方法もありますが、既にインストール済みのJavaがあって他のアプリケーションで利用中なのだとしたら、迂闊には環境を変えたくはない方が多いのではないでしょうか。ダウンロードしたJavaは、ACS限定で利用できると便利ですね。ここから先はその設定方法に関するガイドになります。
Windowsのコマンド・プロンプトからACSを起動することもできますが、タイプ量が多くなり面倒なので、ショートカット・アイコンを作成したいと思います。ACSをダウンロードしてZIPファイルを解凍したら、エクスプローラを利用して「Start_Programs」フォルダーを開きます。次にこの中から64ビット版Windowsならば「Windows_x86-64」、32ビット版ならば「Windows_i386-32」フォルダーを開き、「acslaunch_win-64.exe」または「acslaunch_win-32.exe」ファイルを見つけてください。マウスポインタをこれに合わせて右クリックし、「ショートカット・アイコンの作成(S)」を選択します。
64ビット版ならば、「acslaunch_win-64.exe - ショートカット」が作成されますので、再度これにマウスポインタを合わせて右クリックします。「プロパティ(R)」を選択して「ショートカット」タブを選択すると、以下のように表示されます。ここで手を入れたいのは、「リンク先(T)」です。
現在は「acslaunch_win-64.exe」ファイルへのパスを指定するようになっていますので、その後に半角スペースを空けながら、「-vm」パラメータとして新たにダウンロードしたJavaへのパス名を追加します。例えば現状が以下のようになっていたとしたら、
"C:\Work\IBM i Access Client Solutions\Product 1185\Start_Programs
\Windows_x86-64\acslaunch_win-64.exe"
以下青字のように追記します。私の場合はCドライブのルートディレクトリ直下にIBMOpenJ9フォルダーを作成し、そこにZIPファイルを解凍・展開してあります。青字が追加された部分です。
"C:\Work\IBM i Access Client Solutions\Product 1185\Start_Programs<
\Windows_x86-64\acslaunch_win-64.exe" -vm "C:\IBMOpenJ9\jdk-11.0.9+11-jre"
新たに作成されたアイコンから起動されるACSは、Javaバージョン11(11.0.9)のOpenJDKを利用するように変更されました。ACS起動後に「ヘルプ(H)」「製品情報」を選択すると、以下のようなウィンドウが表れて、利用中のJavaバージョンを確認できます。
いかがでしたでしょうか。今回コラムを読んで、大してややこしくないな、ならばACSを試してみようか、と思っていただけたら幸いです。
ではまた