14:00プログラミング言語として世界でトップシェアを誇るJava。8も年内にリリースを予定している。伊藤敬氏が登壇し、この2つのリリースについて注目すべき新機能やバージョン移行のポイントなどを解説した。Jigsaw、jshellなどの新機能が追加される。APIのサブセットを定義しているだけにすぎない。JigsawはJavaにモジュール化の概念を取り入れる機能で、任意のAPIのみを含むランタイムを作成可能だ。不要なAPIを含めないことでランタイムの軽量化、セキュリティの向上といった効果を得られるほか、モジュールを意識したプログラミングが可能になる。使用するAPIは、module-info.javaファイル内にrequires文で指定する。exports文により自作のパッケージをどこまで公開するかを指定可能だ。新たに追加されるjlinkコマンドを使えば、必要なAPIのみを含めたカスタムJREを作成することもできる。Loop)環境を提供する。Javaプログラムはjavacコマンドでコンパイルし、javaコマンドで実行するが、jshellでJavaのコードを入力して実行し、その結果を表示するといった使い方が可能になる。コンパイルしなくても、ちょっとしたコードやロジックの確認に役立つ機能だ。既存の機能に関してもさまざまな変更が行われている。JavaのコードからHTMLドキュメントを生成するJavadocは、HTML5に対応する。検索機能が導入されることになった。注意したいのは、内部APIのカプセル化である。9からは隠蔽され、デフォルトでは直接使用できなくなる。代替APIが提供されていないものに関しては当分使用できる見込みだ。jarファイルの構造が拡張されることも大きい。これまでjarファイルは1つのバージョンにのみ対応していたが、複数のバージョンに対応するjarファイルを作成できるようになる。その他には、アプレットが非推奨となるほか、ヒープダンプを解析するjhatツールなどが削除される。9に移行する際には互換性に注意しなければならない。バグの修正、セキュリティの改善、サポートするバージョンの変更など、さまざまな原因によりアプリケーションの非互換性が生じる可能性がある。9では内部APIのカプセル化に伴い、sun.misc.*とsun.reflect.*の大部分が直接使用できなくなる。対策としては、jdepsツールでクラスの依存関係を調べ、該当箇所を修正する。しても使用したい場合は、実行時のコマンドラインでフラグを指定することで暫定的に対処する。モジュール化の導入により、JREのディレクトリやファイルの構造が変更され、ランタイムコアファイル(rt.jar)が削除されることにも注意が必要だ。ファイル名やファイル名の内部構造、インストールフォルダなどに依存するコードは修正して対処しなければならない。back」というポリシーが導入され、対応可能なバージョンが制限される。現バージョンと3つ前までという意味だ。9では6、7、8、9までがコンパイル可能で、5には対応していない。9では別途Apacheのサイトから入手する必要がある。9環境でアプレットを実行すると「プラグインが非推奨」というメッセージが表示される。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。