ACS
iBM
IBMi
IBM,

All About ACS: IBM i Access Client Solutions 用のJavaの選択と利用

久々の ACS の記事です。いよいよ、Oracle Java の 商用利用が有償化されるので ACS に使う Java について書きました。


Oracle Java の商用利用有償化

これまでは Oracle が配布するJavaを商用であっても無償利用することができましたが、2019年1月から商用利用のダウンロードができなくなりました。

できなくなるのは、新たな商用利用のダウンロードで、ダウンロード済みのものをダウンロード時に同意したライセンス条項で利用することはできるという理解です。この場合、もちろん、新たなセキュリティ更新は利用できないので、お勧めできる利用形態ではありません。


ACSには、どのJavaを使えばいいのかという IBM からの情報

ACSには、どのJavaを使えばいいのかという情報として、IBM から Java Options for IBM i Access Client Solutions? が公開されました。

ざっくり言えば、ACS は Java で動くように作ってあり(1.1.8 以降 はJava 8 以降が必要)、OpenJDK でもいいと言っています。

OpenJ9 JVM 版の AdoptOpenJDK なら、IBM の有償サポートも利用できます。

ACS は Java に依存するだけなので、Java がまともに動いていれば「Write once, run anywhere (WORA)」のキャッチフレーズのように、どの Java でもいいはずです。

ただ、ACS のサポートは ACS をサポートするだけで、Java のサポートは同然しません。Java 側に問題がある場合は、お客様が Java の入手方法に応じて Java 提供元のサポートを得る必要があります。

結局、どの Java を使うのかは、Java 8 以降という制限以外は、お客様のポリシーで選択いただくことになります。


32 ビット ? 64 ビット ?

Java には、32 ビット版と 64 ビット版があります。

以前は、ACS EHLLAPI は 32 ビット版 Java でしか動かなかったのですが、1.1.8.1 から 64 ビット版 Java でも動くようになりました。


Starting at IBM i Access Client Solutions 1.1.8.1 when used with the IBM i Access Client Solutions EHLLAPI Bridge 8.18.316 or later code levels the IBM i Access Client Solutions EHLLAPI environment is now supported in a 64-bit Java runtime.

EHLLAPI With the Access Client Solutions Emulator


32 ビット Java を使う必要があるのは、OS が 32 ビットの時だけになりました。

(2019/06/24 追記ーここから)

32 ビット Java を使っていると、下記のように1GBのヒープが取れないとエラーになることもあります。その対応のためにも64 ビット Javaを使うべきです。



C:\ACS\IBMiAccess_1.1.8.2\Start_Programs\Windows_i386-32>acslaunch_win-32.exe

Error occurred during initialization of VM

Could not reserve enough space for 1048576KB object heap

なお、OSが32 ビットのため32ビットJavaしか使えない場合、ダウンロードサイトからIBMiAccess_v1r1.zip を再度ダウンロードし、導入先し直してください。発生しにくくなるように下記のファイルが更新されています。


  • Start_Programs\Windows_i386-32/acslaunch_win-32.exe

  • Start_Programs\Windows_i386-32/acsnative.dll

image.png

(2019/06/24 追記ーここまで)


インストーラーを使わない Unzip で導入する Java の利用

Oralce JREは、通常、インストーラーで導入しました。そのため、Java の導入先を意識する必要はありませんでした。

しかし、OpenJDK は zip 形式で提供され、導入は unzip するだけだったりします。

この場合、acslaunch_win-XX.exe は、導入した Java を見つけらず、ACS が起動できません。アイコンのクリックや .hod などの拡張子の関連付けによる起動も exe 経由なのでできません。


JAVA_HOME 環境変数に Java の導入先を指定

acslaunch_win-XX.exe は環境変数「JAVA_HOME」で Java を見つけることができます。


JAVA_HOME environment variable. If the User or System environment variable is pointing to the location of a valid, compatible Java runtime this will be used to launch IBM i ACS.

Java Options for IBM i Access Client Solutions?


Java の場所を指定する他の方法もありますが、この方法であれば、アイコンのクリックや .hod などの拡張子の関連付けによる起動もできるので、お勧めです。

環境変数を指定しても正常に起動しない場合は、下記から(ESSからでなく) ACSをダウンロードしなおししてみてください。

https://www.ibm.com/services/forms/preLogin.do?source=swg-ia

acslaunch_win-XX.exe が更新されている場合があります。執筆時点のプログラムは下記になっています。

プログラム
タイムスタンプ

acslaunch_win-64.exe
2018/11/16

acslaunch_win-32.exe
2018/12/13


Java12では OpenJDK や Oracle 11 で横方向用紙に印刷ができないの件も修正済み

OpenJDK を使う一番の問題は、画面印刷やJava Print Service(JPS) で、横方向用紙に印刷ができないことです。

これは、ACS の問題ではなく 3 年以上前から存在する Java のバグです。

Wrong fontMetrics when printing in Landscape (OpenJDK)

Java 自体のバグですので ACS では、どうしようもありませんでした。

しかし、ついに、Java 12に対して2018-11-30 12:27 に修正が終わりました。

JDK 12 Early-Access Build 23 (2018/12/6) には、この修正が含まれています。


ただし、Java 9 以降画面レイアウトが崩れる場合がある (2019/06/24 追加)

Java 9 以降を使うと、レイアウトが崩れる場合があります。詳しくは下記をご覧ください。

https://qiita.com/6onoda/items/fd8c42ec3088c4ef105d



履歴

2019/06/24

- 32 ビット Javaで 1GB ヒープが取れないという事象の追記

- Java 9 以降画面レイアウトが崩れる場合がある情報の追記


「All About ACS」では IBM i に対する新しいクライアント「IBM i Access Client Solutions」の情報をいろいろ提供していきます。

記事一覧はこちらで確認いたけます。

許可の無い転載を禁じます。

この記事は筆者の個人的な責任で無保証で提供しています。

当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。