「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集部)
2006年12月11日に待望のJava SE(Standard Edition) 6が正式にリリースされました。Java SE 6はコードネームMustangと呼ばれていたJava開発キットの新バージョンです。
Javaは前バージョンと現在のバージョンで、バージョン番号の表記法が大きく変化しました。どのような数値が付いたものが、どのくらい新しいのかが分かりにくい、との声をよく聞きます。いま一度、Javaのバージョンを振り返ってみるとしましょう。
1.3.1以前のバージョンはEnd of Life、サポート終了の扱いです。
研究開発や新しいもの好きであれば、すぐにも新しいバージョンにアップグレードするかもしれません。一方、業務用アプリケーション開発や、安定性が求められる用途において、「新バージョン」への移行は、どうしても慎重にならざるを得ません。
ただ、明確な理由なしに新しいバージョンを忌み嫌うのではなく、的確な判断の下、移行計画を練るのが得策です。
Java開発キットのメジャーバージョンアップがリリースされたら、通常2つ前のバージョンがサポート終了へ向かいます。マイナーバージョンアップがリリースされると、1つ前のバージョンは約6カ月でサポート終了となります(各バージョンのリリース時期にもよりますが、その瞬間すぐにサポートが停止するわけではありません)。
サポートによる一番の影響は、新規に発見されたバグに対応したメンテナンスリリースバージョンが新たにリリースされなくなることです(セキュリティ関連の脆弱性が発見された場合、急きょ対応バージョンがリリースされる場合もあります)。
ちなみに、過去にリリースされたバージョンはほぼすべてArchiveからダウンロードできるので、検証や互換性テストの際に役立ちます。
Java開発ツールのバージョンのリリースから、開発・利用しているアプリケーションやツールのライフサイクルを的確に考慮する必要があります。現在の環境やアプリケーションがいつまで使われるのか、現在のアプリケーション・ツールはいつまでバージョンアップや機能拡張が続くのか、といったスケジュールと照らし合わせ、的確な判断を行わなければいけません(例えば、Java SE 6はItanium 1、2をサポートしません。また、Java SE 6はWindows 98、Windows MEをサポートしません)。
編集部注:Itaniumそのものについて詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[Itanium]を参照してください。
J2SE(J2SDK)1.4.X 時代からJDK 5.0時代へは言語仕様の大きな変化がありました。アノテーションやジェネリックなどソースコードの表記自体も大きく拡張されました。サン公式の移行ガイド(Java Platform Migration Guide)も用意されています。
編集部注:アノテーションやジェネリックについての詳細は、「J2SE 5.0「Tiger」で何が変わるか?」をご参照ください。
JDK SE 6はJ2SE 5.0とバイナリ互換性があります。これはコンパイラ済みのクラスファイルがそのままで正常に動作するということです。
JDK 5.0からの移行は文法の変化ではなく、性能・機能の進化と受け止められます。よって、現在のバージョンがメンテナンスモードに入る時期を見極め、次バージョンへの移行、最新バージョンへの移行を常に考慮しつつ開発することが大切です。
また、統合開発ツールの対応としては、サン標準の統合開発環境「NetBeans IDE」は5.5よりJava SE 6に対応しています。また、「Borland JBuilder 2006」は SP3でJava SE 6に対応しています。「Eclipse 3.2.X」はJava SE 5に対応してはいますが、一般的にJDK 1.4.2世代の環境を想定しています。
●スクリプト言語対応
JavaScript、PythonなどのプログラムをJavaVM上で実行可能になった。スクリプト言語との連携を高めるためのAPIが用意された。
JavaScriptエンジンはMozilla Projectの成果でもあるRhinoを搭載している。Javaが標準でスクリプト言語との親和性を高めたことによって、昨今のWebアプリケーション的なさまざまな言語が混在した環境の安定性が高まったといえる。
編集部注:Rhinoについての詳細は、「JavaとJavaScriptの親しい関係」をご参照ください。
●データベース対応
標準搭載のJava DBとしてApache Derbyが付属するようになった(ただし、現時点ではベータ版の扱いであり、大規模開発などにはお勧めできない)。
編集部注:Java DBとApache Derbyについての詳細は、「待望のJava SE 6 でパーシステンス」をご参照ください。
●監視と管理機能の充実
スタックトレースとしてエラー個所の特定がとても簡単になった(OutOfMemory Exception Handling)。
●Webサービス対応の充実
JAX-WS(Java API for XML Web Services) 2.0、JAXB(Java Architecture for XML Binding) 2.0、STAX(Streaming API for XML)、JAXP(Java API for XML Parsing)や、Microsoftとサンが共同で進めているProject Tango(Microsoft .NETのWebサービスとJavaの相互運用性を向上させることを目指したプロジェクト)の成果が取り込まれている。
●Java2DとJOGL(Java bindings for OpenGL)の統合
2次元描画の際にも三次元グラフィックスハードウェアの性能を最大限生かせるようになり、2次元のSwing部品上での2次元描画や、3次元描画領域でのJava2Dの扱いなど、2Dと3Dがシームレスで扱えるようになってきた。
編集部注:JOGLについての詳細は、「SIGGRAPH 2003に見るJavaの進化」をご参照ください。
●Windows Vista対応対応
IE 7.0のセキュリティ強化により、ブラウザ上のJava動作環境も大きく変化した、ととらえよう。署名付きアプレットの権限が縮小されたり、Java Web Startの振る舞いも細かい部分で変化している。
●そのほか
和暦に対応した。「平成」などの表記が(やっと)標準でできるようになった。
Java SE 6になり、JDK 1.2、1.3時代の裏技的なチューニング技は役立たないことがはっきりとしてきました。普通に書いた方が確実に動作し、確実に速いです。Java SE 6の登場を機会に、旧来のソースコードを見直し、リファクタリングやメンテナンス、パフォーマンスチェックを行う良い機会かもしれません。
年が明けたばかりですが、2008年にはJava SE 7(コードネーム:Dolphin)がリリースされる予定です。より長い期間、安定して使えるシステムを開発するためにも、Javaのバージョンを的確に把握し、開発環境の充実に役立てていってほしいものです。
今回、2007年最初のコラム記事は、前回のコラムからだいぶ時間がたってしまいました。2007年からは再び意欲的に、興味深い内容を続々と紹介していきます。
今後は、Javaプログラマ向けポッドキャスト番組の紹介や、ソースコード専用検索エンジンの便利な活用法などを取り上げる予定です。
安藤幸央(あんどう ゆきお)
1970年北海道生まれ。現在、株式会社エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。
ホームページ
Java News.jp(Javaに関する最新ニュース)
所属団体
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)
主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
「The Java3D API仕様」(監修、アスキー)
Copyright © ITmedia, Inc. All Rights Reserved.