Mac OS X Javaの確認アップルでは、バージョン10.0以降、すべてのMac OS XにJ2SEのリリースを付属させています。リリースに限定されない一般的なJ2SEアプリケーションはMac OS Xで問題なく動作しますが、アプリケーションがどのプラットフォームで動作しているのか知りたい場合があります。一番良い例は、Mac OS Xの「アプリケーション」メニューです。「・・・について」、「環境設定」、および「終了」メニュー項目に応答するためにcom.apple.eawt APIを使用して記述しますが、このコードはMac OS Xでのみアクティブになるようにする必要があります。これを行うにはいくつかの方法がありますが、最も簡単で信頼性の高い方法は、すべてのプラットフォームのどのJ2SEバージョンにも存在することが分かっている標準のos.nameシステムプロパティをチェックすることです。 リスト1:JavaコードでのMac OS Xの検出 String lcOSName = System.getProperty("os.name").toLowerCase();
boolean MAC_OS_X = lcOSName.startsWith("mac os x");
これは既知の値を持った標準のJ2SEシステムプロパティを使用しているため、Mac OS Xシステムの検出方法として推奨されます。 先頭に戻る  Javaバージョンの確認次の精度レベルは、アプリケーションがどのJ2SEバージョンで動作するかということになります。たとえば、Java 1.4固有のAPIを使用するけれどもJava 1.3との互換性を残したい場合などが考えられます。これに関しては、Mac OS Xでは何も特別なことはありません。他のプラットフォームと同様に、java.versionシステムプロパティをチェックする必要があります。リスト2 に、その方法を示します。 リスト2:J2SEのメジャーバージョンの検出 String javaVersion = System.getProperty("java.version");
if (javaVersion.startsWith("1.4")) {
// 1.4の新機能
}
注:複数のJ2SEバージョンをサポートする予定であれば、必ず-target <version>フラグを付けてコンパイルします。この場合、versionはサポートしたい最も初期のバージョンにします(すなわち、javac -target 1.3 *.java)。 先頭に戻る  Apple J2SEリリースの確認アップルでは、J2SEリリースが最新のSunのリリースと適切に同期しているか確認するために最善を尽くしていますが、アップル独自のリリーススケジュールがあり、Sunが提供するJ2SEリリースを必ずしもすべて出荷するとは限りません。たとえば、Mac OS Xにおける最初の1.4.2リリースは、JDK 1.4.2_03がベースでした。新しいマイナーバージョン(たとえば、1.4.2_04)がSunから登場する前に、アップルがMac OS X上のJavaに固有の問題を修正するJava 1.4.2 Updateをリリースすることはまったくありえない話ではありません。このシナリオでは、Mac OS X用に2つのJ2SE 1.4.2_03リリースが存在することになるため、単にjava.versionシステムプロパティをチェックするだけでは、アプリケーションがどちらのAppleリリースで動作しているのかを判断するのに適切ではありません。 これはどうしてデベロッパと関係があるのでしょうか。アプリケーションに影響を及ぼす、Mac OS X上でのJava固有の問題がある場合は、2つの解決策が考えられます。
- アプリケーションがユーザに対して、問題が修正されているバージョンにJavaを更新するよう促す方法。
- 上記が可能でない場合は、問題のあるリリースでその問題を回避します。
これらの対策のどちらでも、アプリケーションがどのApple J2SEリリースで動作しているかを明確に判断する方法が必要になります。これを行うにはいくつかの方法がありますが、お勧めの方法はjava.runtime.versionシステムプロパティを分析することです。アップルではメジャー/マイナーのJ2SEリリース番号に関係なく、このプロパティの末尾に、どのAppleリリースを使用しているかを特定できるリリース固有のバージョン文字列を追加しています。リスト3に、Javaコードでこれを行う方法を示します。 リスト3:特定のApple Javaリリースの確認
String rtv = System.getProperty("java.runtime.version");
// Mac OS X版の初期のJava 1.4.2リリース用専用コード
// リスト1からプラットフォーム検出コードを組み込む
if (MAC_OS_X && rtv.startsWith("1.4.2")
&& rtv.endsWith("117.1")) {
...
}
上記のサンプルのように、J2SEとAppleバージョンの両方の部分文字列を必ずチェックしてください。非常にありそうもないことですが、1つ以上のメジャーなApple J2SEリリース(すなわち、1.3.x、1.4.x、1.5.x)が末尾に同じビルド文字列を持つ可能性があります。同じような末尾に対して、このチェックはリスト1のMac OS Xチェックと併せて実行します。 上記の他のサンプルと同様に、これは標準のJ2SEシステムプロパティを使用するため、Mac OS X Javaのどのリリースを実行しているか判断するための推奨される方法です。 mrj.versionアップルが提供しているもう1つのシステムプロパティ、mrj.versionを、同様に使用できます。しかし、これはClassic Mac OSまでさかのぼるレガシーなシステムプロパティであり、将来のリリースを通じて形式が変わらないという保証はありません。さらに、アップルはできるだけJ2SEの標準機能に準拠しようとしています。このような理由から、このテクニカルノートで概説したように、あらゆる進行中のJava開発では、Macintoshの識別により標準的なos.nameおよびjava.runtime.versionプロパティを代わりに使用することをお勧めします。 先頭に戻る  Javaバージョン文字列上記の手法を利用するためには、Mac OS X上のあらゆるJavaリリースのバージョン文字列を知っている必要があります。表1から3は、Mac OS X 10.0以降のあらゆるJ2SE 1.3、1.4、および5.0リリースにそれぞれ関連したシステムプロパティを示しています。Mac OS Xのリリースに含まれているJavaのバージョンは、バージョンごとに「Javaリリース」の列にダッシュ記号つきで示してあります。Software Updates、あるいは手動ダウンロードとして登場したJavaのリリースは、「Javaリリース」の列に、対象となったMac OS Xのバージョンの横に示してあります。J2SE 1.4はMac OS X Jaguar (v10.2)まで、J2SE 5.0はMac OS X Tiger (v10.4)まで利用できませんでした。 表1.Mac OS X上のJava 1.3リリース
| Mac OS Xリリース |
Javaリリース |
java.version |
java.runtime.version |
| 10.0 |
- |
1.3.0 |
1.3 |
| 10.1 |
- |
1.3.1 |
1.3.1-root-010902-18:51 |
| 1.3.1 Update 1 |
1.3.1 |
1.3.1-root_1.3.1_020714-12:46 |
| 10.2 |
- |
1.3.1 |
1.3.1-root-010902-18:51 |
| 1.4.1 Update 1 |
1.3.1 |
1.3.1-root_1.3.1_030709-15:51 |
| 10.3 |
- |
1.3.1 |
1.3.1-root_1.3.1_030912-19:52 |
| Java Security Update (4.0) |
1.3.1_16 |
1.3.1_16-root_1.3.1_050825-11:50 |
| 10.4 |
- |
1.3.1_15 |
1.3.1_15-root_1.3.1_050320-16:33 |
| 1.3.1 and 1.4.2 Release 2 |
1.3.1_16 |
1.3.1_16-root_1.3.1_050718-17:36 |
注:Mac OS X Jaguar向けの「1.4.1 Update 1」のリリースは、Java 1.3.1もアップデートしたので、表1にも含まれています。 表2.Mac OS X上のJava 1.4リリース
| Mac OS Xリリース |
Javaリリース |
java.version |
java.runtime.version |
| 10.2 |
1.4.1 [Initial Release] |
1.4.1_01 |
1.4.1_01-39 |
| 1.4.1 Update 1 |
1.4.1_01 |
1.4.1_01-69.1 |
| 10.3 |
- |
1.4.1_01 |
1.4.1_01-99 |
| 1.4.2 |
1.4.2_03 |
1.4.2_03-117.1 |
| 1.4.2 Update 1 |
1.4.2_05 |
1.4.2_05-141 |
| 1.4.2 Update 2 |
1.4.2_05 |
1.4.2_05-141.3 |
| Security Update 2005-002 |
1.4.2_05 |
1.4.2_05-141.4 |
| Java Security Update (4.0) |
1.4.2_09 |
1.4.2_09-233 |
| 10.4 |
- |
1.4.2_07 |
1.4.2_07-215 |
| 1.3.1 and 1.4.2 Release 2 |
1.4.2_09 |
1.4.2_09-232 |
表3.Mac OS X上のJ2SE 5.0リリース
| Mac OS Xリリース |
Javaリリース |
java.version |
java.runtime.version |
| 10.4 |
5.0 Release 1 |
1.5.0_02 |
1.5.0_02-56 |
| 5.0 Release 3 |
1.5.0_05 |
1.5.0_05-83 |
| 5.0 Release 4 |
1.5.0_06 |
1.5.0_06-112 |
先頭に戻る  ドキュメント改訂履歴| 日付 | メモ |
|---|
| 2006-04-17 | J2SE 5.0 Release 4(Tiger向け)に関するバージョン情報。 | | 2006-01-12 | J2SE 5.0 Release 3(Tiger向け)に関するバージョン情報。 | | 2005-09-21 | 1.3.1および1.4.2 Release 2(Tiger向け)、Java Security Update v4.0(Panther向け)に関するバージョン情報。 | | 2005-05-05 | Mac OS X 10.4向けのバージョン情報(1.3.1、 1.4.2、および5.0/1.5)を追加。 | | 2005-02-25 | Security Update 2005-002 (10.3.4+)からの新しいバージョン文字列。 | | 2004-10-05 | Java 1.4.2 Update 2に関するバージョン情報を表2に追加。 | | 2004-08-10 | Java 1.4.2 Update 1に関するバージョン情報を表2に追加。 | | 2004-05-26 | 改訂情報 | | 2004-04-26 | 改訂詳細不明。 | | 2004-03-04 | Javaコードから、Mac OS XにインストールされているJ2SEのバージョンを調べる方法。 |
掲載日: 2006-04-17
|