Apple Developer Connection
高度な検索
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1295
Java on Intel-based Macintosh Computers

Q:インテルベースのMacintoshコンピュータで動作させるために、Javaアプリケーションを変更する必要はありますか?

A: 答えはおそらく「いいえ」です。ピュアJavaアプリケーションの場合は、インテルベースのMacintoshコンピュータで動作させるためのコード変更は必要ありません。これには次の配布形態が含まれます。

  • シェルスクリプトベース、またはコマンドラインベースのJavaアプリケーション

  • ダブルクリック起動が可能なjarファイル

  • Xcode、Jar Bundler、またはProject Builderを使用してパッケージ化されたダブルクリック起動が可能なJavaアプリケーション

  • Javaアプレット

  • Java Web Startアプリケーション

ネイティブコードを含んでいるJavaアプリケーションは、これにあてはまりません。以下の2つの場合は、『Universal Binariesプログラミングガイド』に記載の手順に従って、必ずUniversal Binaryをビルドする必要があります。この2つの場合には例外はありません。どのような配布形態の下でも、それがたとえ上に示した形態であっても、PowerPCベースのネイティブコードとインターフェイスをとるJavaアプリケーションは、インテルベースのMacintoshコンピュータでは正しく動作しません。

  • JNIライブラリ。 PowerPCベースのMacintoshコンピュータ用にビルドされたJNIライブラリは、Java仮想マシンがRosettaなしですでに起動しているため、Rosettaのもとでロードされません。Javaアプリケーションは、インテルベースのMacではPowerPCのみのバイナリをロードしようとすると失敗します。

  • ネイティブランチャ。 VMの呼び出しインターフェイスを使用してJava仮想マシンを起動するネイティブアプリケーションを、インテルベースのMacで動作させるには、Universal Binaryとしてビルドする必要があります。Java VMはネイティブで実行する必要があります。このためRosettaのもとで動作しているアプリケーションからJVMをインスタンス化しようとすると失敗します。

Java VMがRosettaのもとで実行されないため、上記のどちらの場合もRosettaのもとでは実行されないことを理解することが重要です。JNIライブラリ、またはJVMをインスタンス化するネイティブアプリケーションは、インテルベースのMacintoshコンピュータで動作させるにはUniversal Binaryとしてビルドする必要があります。

ネイティブコード(C/C++/Objective-C)をビルドするXcodeターゲットのみ、Universal Binaryをビルドするようにアップデートする必要があります。Javaターゲットは変更する必要はありません。ターゲットがXcodeの以前のバージョンで作成されている場合、ネイティブターゲットにアップデートする必要が生じる可能性があります。必要かどうかを調べるには:

  • Xcode 2.1でプロジェクトを開きます。

  • JNIライブラリターゲットなど、「Groups & Files」リストの中で対象のターゲットを選択します。

  • 「Project」メニューを開きます。

「Upgrade To Native Target」メニュー項目が有効ならば、Universal Binaryをビルドする前にターゲットをアップグレードする必要があります。アップグレードが完了すると、変更点をまとめた「Native Target Upgrade」ログが表示されます。図1にアップグレードが必要な古いターゲットを示します。

図1: Xcodeでネイティブターゲットにアップグレードする

図1 Xcodeでネイティブターゲットにアップグレードする

ターゲットがアップグレードされると、Universal Binaryをビルドする準備ができたことになります。詳細については『Universal Binaryプログラミングガイド』の「Univeasal Binaryのビルド」のセクションを参照してください。

ドキュメント改訂履歴

日付メモ
2006-01-10編集上の変更
2005-08-29画像の改訂
2005-08-25初版

掲載日: 2006-01-10




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.