前章でも紹介のあったように、IBM iにおいてもほかのプラットフォーム同様、Javaプログラムの開発が可能である。古くはIBM i独自の実装である「クラシックJava」というMI(マシンインターフェース層)に実装されたJVMが使われていたが、IBM i 7.1以降はIBMのほかのプラットフォーム同様、Oracle Javaと互換性をもつJ9(IBM Technology for Java)の機能を共有できるようになった。ここでは、IBM i用のJava Development KitやJVM、IBM i上のオブジェクトにアクセスするためのクラス群である「Toolbox for Java」、そして最後に開発方法を紹介する。
IBM Developer Kit for Java
IBM iでJavaの開発、実行をするには、IBM i用のJDKである「IBM Developer Kit for Java」が必要になる。
IBM Developer Kit for Javaは、「5770-JV1」というライセンス・プログラムとして提供されている。IBM iでは複数のJavaバージョンをサポートし、5770-JV1のオプションによってバージョン、ビット数が異なる。
たとえば、本稿執筆時最新のJava8の場合、「5770-JV1 オプション16」で32bit版、オプション17で64bit版を提供している(図表1)。
・・・・・・・・
図表1 IBM i 7.3でサポートされるJavaバージョン
オプション16: IBM Technology for Java 8 32-bit
オプション17: IBM Technology for Java 8 64-bit
オプション14:IBM Technology for Java 71 32-bit
オプション14:IBM Technology for Java 7 32-bit
オプション15:IBM Technology for Java 71 64-bit
オプション15:IBM Technology for Java 7 64-bit
・・・・・・・・
複数のバージョンを導入している場合、JAVA_HOME環境変数でシステム、もしくはジョブごとに、どのバージョンのJavaを使うか決めることができる。どのバージョンが有効になっているかは、STRQSHというコマンドからQSHELLインタープリタを開始し、java-version とコマンドを実行することで、確認できる。
IBM Technology for JavaのJVMは、PASE(Portable Application Solutions Environment)上で稼働するので、前提として5770-SS1のオプション33が導入されている必要がある。PASEとは、AIXアプリケーションをIBM iに移植するための実行環境で、SSHやPHP、さらにはNode.jsやGit同様オープンソースのソリューションを、IBM iで実装できるようになっている。
CLなどのプログラムと異なり、Javaアプリケーションは、IFS上に配置する。Javaアプリケーションの任意のディレクトリを作成し、そこに.javaファイルを作成する(図表2)。
【図表2 画像をクリックすると拡大します】
.javaファイルは5250のEDTFコマンドを使って編集もできるが、前述のRDiもしくはIFSディレクトリに対してネットワーク・ドライブをマッピングし、お気に入りのWindows上のエディタからの編集もできる。
このときの注意点として、日本語環境の場合、UTF-8(CCSID 1208)のPASE環境でJVMが稼働していることから、デフォルトのfile.encodingはUTF-8となっている。そのため、コンパイルするJavaファイルもUTF-8で作成する必要がある。
編集したjavaソースのコンパイルには、QSHELLもしくはRDiを使用する。RDiの場合、javaファイルを右クリックし、コンパイル→JAVACでコンパイルすることができる。QSHELLからコンパイルする場合は、ほかのプラットフォームでのjava同様、javacをQSHELLコマンドラインから実行するのみである(図表3)。
【図表3 画像をクリックすると拡大します】
また、Javaクラスファイルの実行も同様に、QSHELLコマンドラインやRDiからjavaコマンドを実行するか、5250コマンドラインからRUNJVAコマンドを使用することもできる。
Toolbox for Java
IBM iにおいてJava開発を行う場合に活用するのが、Toolbox for Javaである。
Toolbox for Javaは、IBM i上のデータや資源を処理するための300以上のクラス群である(図表4)。
・・・・・・・
図表4 Toolbox for Java/JTOpenを使ってアクセスできるIBM iの資源
Database -- JDBC (SQL) and record-level access (DDM)
Integrated File System
Program calls (RPG、 COBOL、 service programs、 etc)
Commands
Data queues
Data areas
Print/spool resources
Product and PTF information
Jobs and job logs
Messages、 message queues、 message files
Users and groups
User spaces
System values
System status
・・・・・・・・
Toolbox for Javaは、OSの一部としても提供されているが、JTOpenと呼ばれるオープンソース・コミュニティ版も提供されているのが特徴である。最新のバージョンはオープンソース・コミュニティからダウンロードできるようになっているが(図表5)、オープンソース・コミュニティで更新された内容は、少し遅れてIBMからPTFという形で提供されている。
【図表5 画像をクリックすると拡大します】
Toolbox for Javaのクラスには、IBM i上のデータを操作するためのJDBCクラスや、IBM i上のプログラムを呼び出すためのクラス、データキューを処理するためのクラスなどがある。
これらのクラスを使ってIBM i上の資源を操作する際に必要なのが、ホストサーバーである。STRSHOSTSVRコマンドを用い、IBM iにサインオンするためのサインオンサーバー、データベースにアクセスするためのデータベース・サーバーなど、各用途に合わせて起動する必要がある。Javaアプリケーションはこのホストサーバーを介して、IBM i上の資源に対する処理を行う。
サーバーサイド
Webアプリケーション
IBM iでは、サーバーサイドWebアプリケーションの開発および実行も可能である。IBM iではWebSphere Application Serverもしくは、Libertyベースの実装であるIntegrated Web Application Serverという2種類のJavaアプリケーション・サーバーが使用できる。
WebSphere Application Serverは、5733WEx(xはWASのバージョンによって異なる)というライセンス・プログラムで提供され、Integrated Web Application ServerはOSに同梱されている。また、PHPアプリケーションの稼働環境として、サードベンダーからZend Server for IBM iも提供されている。これらのサーバーを使って、IBM i上でWebアプリケーションを実行できる。
サーバーサイドWebアプリケーションの開発は、前述のJava開発でも述べたように、RDiなどの開発ツールを用いるか、シェル環境などを使ってIFS上で開発する。また、Javaアプリケーションの場合、RDiでなくてもWindowsクライアントなどで稼働するEclipseベースのツールを用いてソースを編集、コンパイルし、パッケージされたオブジェクトのみを、IBM iの任意のIFSディレクトリにFTPなどで転送することで、サーバーへのデプロイが可能となる。
基幹業務と異なりWebアプリケーションの場合、短いサイクルでのリリースなどが要求されることが多いが、開発環境の章でも述べたように構成管理を行うための環境は必須である。それ以外にも、DevOpsを実現するには、継続的なテストのための環境、デプロイするための仕組みなどについても考慮する必要がある。とくに、Windowsなどの環境で開発されたアプリケーションは、本番環境と同じIBM i上で十分に稼働検証するスケジュールを設けることも忘れてはならない。[藤村 奈穂]