注: 本書および本書で紹介する製品をご使用になる前に、『特記事項』に記載されている情報をお読みください。
本書の内容は、新版で特に指定のない限り、IBM 32-bit Runtime Environment for Linux on Intel architecture, Java 2 Technology Edition, Version 1.4.1 と、それ以降のすべてのリリースならびにモディフィケーションに適用されます。
(c) Copyright Sun Microsystems, Inc. 1997, 2002, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.
(c) Copyright International Business Machines Corporation, 1999, 2003. All Rights Reserved.
(c) Copyright IBM Japan 2003
本書の内容には日本では発表されていない IBM 製品 (機械およびプログラム)、プログラミングまたはサービスについての参照または情報が含まれている場合があります。しかし、このことは、これらの未発表製品、プログラミングまたはサービスを、将来において IBM が日本国内で提供する意向があることを意味するものではありません。
IBM(R) 32-bit Runtime Environment for Linux on Intel architecture, Java(TM) 2 Technology Edition, Version 1.4.1 には、Java 仮想マシン (JVM)、コア Sun Microsystems Java クラス、およびそれらをサポートするファイルが含まれています。 Runtime vEnvironment に、SDK パッケージにあるすべてのクラスが含まれているわけではありません。
本書には、Runtime Environment についての一般的な情報と、Runtime Environment の Sun のインプリメンテーションと IBM のインプリメンテーションの相違点についての情報を記載しています。本書は、Sun の Web サイト (http://java.sun.com) の詳細な資料と一緒にお読みください。
SDK for Linux をテスト済みのディストリビューションのリストについては、http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html を参照してください。
Linux の Runtime Environment は SDK のサブセットであり、Java アプリケーションの実行のみを使用可能にすることに注意してください。 SDK をインストールしている場合には、Runtime Environment が組み込まれています。
用語「Runtime Environment」と「Java 仮想マシン」は、本書を通じて読み替えることができます。
本 1.4.1 ユーザー・ガイドでの技術的な変更は、「1.4.0」 から「1.4.1」への更新などの小さい変更や明らかな変更の場合を除き、HTML やカラー印刷コピーでは赤で示され、変更個所の左側に縦線が表示されています。
Runtime Environment for Linux の構成
Runtime Environment for Linux のアンインストール
Runtime Environment for Linux には、Java ランタイム環境の作成と Java プログラムの実行に必要なクラスのサブセットが用意されています。また、Java 仮想マシン、Java クラス、およびそれをサポートするファイルも用意されています。 Runtime Environment for Linux には、SDK にあるクラスのサブセットだけが入っています。
|一般に、SDK for Linux のバージョン 1.1.8、1.2.2、または 1.3.1 で動作するアプレットまたはアプリケーションは、 |このバージョンでも正しく動作します。 |Sun の Java 1.4.1 API に依存するアプレットは、Java 1.4.1 API をサポートするブラウザーでのみ機能します。
1.4.1 でコンパイルしたクラスが 1.4.0 以前の Runtime Environment のリリースで動作する保証はありません。
Runtime Environment for Linux には、実行時にプログラムをサポートするために必要な、デバッグできない .so ファイルとクラス・ファイルが含まれています。Runtime Environment for Linux には、appletviewer や javac などの開発ツールや、開発システムにのみ関係するクラスは含まれていません。
さらに、Java Communications アプリケーション・プログラミング・インターフェース (API) パッケージが、Runtime Environment for Linux と一緒に使用するように用意されています。
LICENSE_xx.html ファイルには、Runtime Environment for Linux ソフトウェアのご使用条件が入っています。(xx は言語の省略形です。)
このご使用条件を表示または印刷するには、このファイルを Web ブラウザーで開いてください。
just-in-time (JIT) コンパイラー (libjitc.so) は、Java アプリケーションやアプレットの実行中に、頻繁に使用されるバイト・コード・シーケンスのマシン・コードを動的に生成します。
Runtime Environment for Linux には JIT コンパイラー (libjitc.so) が組み込まれていて、デフォルトで使用できます。Java アプリケーション、アプレット、またはコンパイラー自体のいずれに問題があるかを判別するために、JIT を使用しないようにすることができます。
JIT を使用不可にするには、アプリケーションを実行するウィンドウのシェル ・プロンプトで、次のように入力します。
export JAVA_COMPILER=NONE
JIT を使用可能にするには、シェル・プロンプトで次のように入力します。
export JAVA_COMPILER=jitc
JIT が使用可能かどうかを確認するには、シェル ・プロンプトで次のように入力します。
java -version
JIT が使用できる場合には、以下の入ったメッセージが表示されます。
(JIT enabled: jitc)
JIT が使用できない場合には、以下の入ったメッセージが表示されます。
(JIT disabled)
本リリースでは Native Method Interface はサポートされていません。アプリケーションでこのインターフェースを使用しないでください。
Runtime Environment には Java Native Interface (JNI) が付属しています。 JNI の使用方法については、Sun の Web サイト (http://java.sun.com) を参照してください。
Runtime Environment for Linux をインストールしたら、シェル・ログイン・スクリプトを編集して、次のディレクトリーを PATH ステートメントに追加します。
/opt/IBMJava2-141/jre/bin
Runtime Environment for Linux を /opt/IBMJava2-141/ 以外にインストールしている場合には、 /opt/IBMJava2-141/ を、Runtime Environment for Linux をインストールしたディレクトリーと置き換えます。
Runtime Environment for Linux の除去に使用するプロセスは、インストール可能な
Red Hat Package Manager (RPM) パッケージをインストールしているか、圧縮 Tape Archive (TAR) パッケージをインストールしているかによって異なります。詳細については、『インストール可能な Red
Hat Package Manager (RPM) パッケージのアンインストール』または『圧縮 Tape Archive (TAR) パッケージのアンインストール』を参照してください。
インストール可能な RPM パッケージをインストールしている場合に、Runtime Environment for Linux をアンインストールするには:
rpm -e IBMJava2-JRE-1.4.1
あるいは、kpackage や yast2 などのグラフィック・ツールを使用することもできます。
圧縮 TAR パッケージをインストールしている場合に、Runtime Environment for Linux をアンインストールするには:
java ツールは Java アプリケーションを起動します。
JVM は、始動クラスと使用されるその他のクラスを、ブートストラップ・クラスパス、インストールされた拡張機能、ユーザー・クラスパスの 3 箇所で検索します。クラス名または JAR ファイル名の後の引き数が main 関数に渡されます。
javaw コマンドは、javaw には関連するコンソール・ウィンドウがないことを除けば、java とまったく同じです。コマンド・プロンプト・ウィンドウを表示したくない場合には javaw を使用してください。 javaw ランチャーは、起動に失敗した場合に、エラー情報を含むダイアログ・ボックスを表示します。
java および javaw コマンドの構文は次のとおりです。
java [ options ] class [ arguments ... ] java [ options ] -jar file.jar [ arguments ... ] javaw [ options ] class [ arguments ... ] javaw [ options ] -jar file.jar [ arguments ... ]
大括弧で囲まれている項目はオプショナルです。
-jar オプションが指定された場合には、指定された JAR ファイルにアプリケーションのクラスおよびリソース・ファイルが入っていて、始動クラスは Main-Class マニフェスト・ヘッダーで示されています。
ランチャーには、現在の Runtime Environment でサポートされ、将来のリリースでサポートされる標準オプショのセットがあります。このほかに、非標準オプションのセットがあります。
-D<property_name>=<value>
-assert
-cp または -classpath <: で区切られたディレクトリーおよび zip または jar ファイル>
-help または -?
-showversion
-verbose[:class | gc | jni]
-version
-X
以下にリストされている -X オプションは、使用可能なオプションのサブセットです。これらは非標準であり、予告なしに変更されることがあります。
-Xargencoding
-Xbootclasspath:<; で区切られたディレクトリーおよび zip または jar ファイル>
-Xbootclasspath/a:<; で区切られたディレクトリーおよび zip または jar ファイル>
|-Xbootclasspath/p:<; で区切られたディレクトリーおよび zip または jar ファイル>
|
-Xcheck:jni
-Xcheck:nabounds
-Xdebug
|-Xdisableexplicitgc
|
-Xdisablejavadump
|-Xgcpolicy:{optthruput
|| optavgpause}
|
-Xms<size>
-Xmx<size>
-Xnoclassgc
-Xoss<size>
-Xquickstart
-Xrs
-Xrunlibrary_name[:options]
-Xss<size>
|-Xverbosegclog:<path to file><filename>[,X, Y]
| |
|
-Xverify
java コマンドやその他の java ランチャー・コマンド (javaw など) によって、クラス名を現行ロケールの文字セット内の任意の Unicode 文字として指定できます。
java エスケープ・シーケンスを使用して、クラス名と引き数に任意の Unicode 文字を指定できます。これを行うには、 -Xargencoding を指定する必要があります。Unicode 文字を指定するには、エスケープ・シーケンスを \u#### の形式で使用します。ここで # は 16 進数字 (0 から 9、A から F) です。
クラス名およびコマンド引き数を UTF8 または ISO8859_1 エンコード方式で指定するには、 -Xargencoding:utf8 および -Xargencoding:latin を使用します。
Runtime Environment で英語以外のロケールを使用すると、java および javaw コマンドは、翻訳された出力メッセージを表示します。これらのメッセージは 1.3.1 バージョンのものとは異なり、また Java が実行しているロケールによっても異なります。java が戻す、エラーの詳細説明やその他のデバッグ情報は、英語で表示されます。初期化中に返されるデバッグ情報は大括弧で囲んで表示されます。
Runtime Environment では、クラス名を、フルパスおよび .class 拡張子を含む完全ファイル名として指定することができます。
SDK の以前のバージョンでは、
CLASSPATH に関連したクラスを指定できただけで、.class 拡張子は使用できませんでした。完全ファイル名を使用すれば、java アプリケーションをデスクトップやファイル・ランチャーから起動することができます。.class ファイルをパスおよび拡張子とともに指定すると、指定したパスが CLASSPATH に組み込まれます。たとえば、コマンド java c:¥myapp¥thisapp.class は、java -classpath c:¥myapp thisapp を指定した場合と同じ働きをします。 |JVM に関係のあるシグナルが生じると、シグナル・ハンドラーが呼び出されます。このシグナル・ハンドラーは、Java スレッドのために呼び出されたのか、または Java 以外のスレッドのために呼び出されたのかを判別します。シグナルが Java スレッドのためのものである場合、JVM がシグナル処理の制御を行います。シグナルが Java 以外のスレッドのためのものであり、インストール済みのアプリケーションに、以前に JVM がそのシグナル用の独自のハンドルをインストールしている場合、制御はそのハンドラーに与えられます。 そうでない場合、シグナルは無視されます (これが、そのシグナルのデフォルトのアクションであるかどうかには無関係です)。
|例外およびエラーのシグナルの場合、JVM は以下のいずれかを行います。 |割り込みシグナルの場合にも JVM は制御されたシャットダウンに入りますが、この場合は、以下を行う正常終了として扱われます。
| |このシャットダウンは、Java メソッド System.exit() を呼び出すことによって開始されるシャットダウンと同一です。
|JVM が使用するその他のシグナルは内部制御の目的のものであり、終了の原因となることはありません。関係のある唯一の制御シグナルは SIGQUIT であり、Java メモリー・ダンプを生成する原因となります。
|下記の表 1 は、JVM が使用するシグナルを示したものです。
|これらのシグナルは、以下のように、タイプまたは使用法ごとに表内でグループ化されています。 |シグナル 1 (SIGHUP)、2 (SIGINT)、4 (SIGILL)、6 (SIGABRT)、7 (SIGEMT)、8 (SIGFPE)、10 (SIGBUS)、11 (SIGSEGV)、12 (SIGSYS)、15 (SIGTERM)、および 24 (SIGXCPU) により、JVM はシャットダウンします。したがって、アプリケーション・シグナル・ハンドラーでは、JVM のサービスを必要としなくなった場合を除き、リカバリーを試みるべきではありません。
|IBM 32-bit Runtime Environment for Linux on Intel architecture, Java 2 Technology Edition, Version 1.4.1 JVM には、新しいシグナル・チェーニング機能が含まれています。シグナル・チェーニングにより、JVM は、独自のシグナル・ハンドラーをインストールするネイティブ・コードとの、より効率的な相互操作が可能となります。
|シグナル・チェーニング機能により、アプリケーションでは、libc/libthread/libpthread の前に共用ライブラリー libjsig.so にリンクしてロードすることが可能になります。
|jsig.dll ライブラリーにより、signal()、sigset()、および sigaction() などの呼び出しが確実にインターセプトされ、それらのハンドラーが JVM のシグナル・ハンドラーを置き換えることがなくなります。代わりに、これらの呼び出しは、新しいシグナル・ハンドラーを保管するか、または JVM がインストールしたハンドラーの後にそれらを「チェーニング」します。後で、これらのシグナルのいずれかが生じ、JVM をターゲットとしたものではないことが分かった場合、プリインストールされたハンドラーが起動します。
|libjsig.so を使用するには、以下のようにします。
|
|または
|sigaction() を使用するシグナル・ハンドラーをインストールしている場合、JVM がシグナルを使用するときに、一部の sa_flags は見ることができません。これらは、以下のものです。
|
|libjsig.so ライブラリーも、アプリケーションから JVM シグナル・ハンドラーを隠します。
|このため、JVM が開始した後で行われた signal()、sigset()、および sigaction() などの呼び出しでは、JVM のシグナル・ハンドラーへの参照を戻すことがなくなりますが、JVM の開始前にインストールされたハンドラーがあれば、代わりにそれを戻します。|JVM によるシグナルの処理方法
|
|JVM が使用するシグナル
|
|-Xrs (シグナル使用の削減) オプションを使用して、JVM がほとんどのシグナルを使用してしまうのを防止します。詳しくは、 http://java.sun.com/j2se/1.4.1/docs/tooldocs/windows/java.html にある、Sun の Java アプリケーション・ランチャーのページを参照してください。
シグナル名
シグナル・タイプ
説明
-Xrs による使用不可
SIGSEGV
例外
メモリーに対する誤ったアクセス (アクセス不能メモリーへの書き込み)
なし
SIGILL
例外
正しくない命令 (不明なマシン・インストラクション呼び出しの試行)
なし
SIGFPE
例外
浮動小数点例外 (0 除算)
なし
SIGBUS
例外
バス・エラー (存在しないメモリー・ロケーションへのアドレッシングの試行)
あり
SIGSYS
例外
正しくないシステム呼び出しの発行
あり
SIGXCPU
例外
CPU 時間制限の超過 (長時間実行し過ぎ)
あり
SIGXFSZ
例外
ファイル・サイズの制限超過
あり
SIGABRT
エラー
異常終了。JVM が JVM 障害を検出すると、このシグナルを生じさせます。
あり
SIGINT
割り込み
対話式アテンション (CTRL-C)。 JVM は正常に終了します。
あり
SIGTERM
割り込み
終了要求。JVM は正常に終了します。
あり
SIGHUP
割り込み
ハングアップ。JVM は正常に終了します。
あり
SIGUSR1
制御
ユーザー定義。内部制御の目的で一部の JVM が使用します。
なし
SIGUSR2
制御
ユーザー定義。内部制御の目的で一部の JVM が使用します。
なし
SIGQUIT
制御
端末用の終了シグナル。JVM は、これを Java メモリー・ダンプを取るために使用します。
あり
SIGTRAP
制御
dbx または ptrace で使用するための内部用。内部制御の目的で一部の JVM が使用します。
あり
SIGPIPE
制御
読み取りを行っていないパイプへの書き込み。JVM はこれを無視します。
なし
|ネイティブ・コード・ドライバーをシグナル・チェーニング・ライブラリーにリンクする
|gcc -L <directory of libjvm.so> -ljsig -ljvm java_application.c
|export LD_PRELOAD=<libjsig.so dir>/libjsig.so; java_application (ksh)
|
|setenv LD_PRELOAD <libjsig.so dir>/libjsig.so; java_application (csh)
|
システム・プロパティー ibm.jvm.bootclasspath は、-D オプションを使用して設定することができます (Java アプリケーションの起動に説明があります)。 このプロパティーの値は、追加の検索パスとして使用され、-Xbootclasspath/p: で定義された値と bootstrap クラスパスとの間に挿入されます。bootstrap クラスパスは、デフォルトか、または -Xbootclasspath: オプションを使用して定義されるかのいずれかです。
-Xgcpolicy JVM ランタイム・オプションは、ガーベッジ・コレクション・ポリシーを指定します。
-Xgcpolicy は、optthruput (デフォルト) と optavgpause の 2 つの値を取ります。このオプションは、ガーベッジ・コレクターの動作を制御して、アプリケーションおよびシステム全体のスループットとガーベッジ・コレクションに起因する休止時間との兼ね合いを図ります。
このオプションの形式と値は次の通りです。
-Xgcpolicy:optthruput
および
-Xgcpolicy:optavgpause
アプリケーションがオブジェクトを作成しようとしてその要求がヒープ内の使用可能スペースからすぐに満たされないとき、ガーベッジ・コレクターには、参照されていないオブジェクト (ガーベッジ) を識別してそれらを削除し、ヒープの状態を即時および後続の割り振り要求にすぐに応じられるような状態に戻す役割があります。そのようなガーベッジ・コレクションのサイクルによって、アプリケーション・コードの実行において予期しない休止が時々起こる場合があります。アプリケーションは大きく複雑になってきており、ヒープもそれに応じて大規模になっているので、このガーベッジ・コレクション休止時間は長さも重要度も増す傾向にあります。デフォルトのガーベッジ・コレクション値である optthruput は、これらの時々の休止 (ヒープのサイズとガーベッジの質によって数ミリ秒からかなりの秒数まであり得る) を犠牲にして、非常に高いスループットをアプリケーションにもたらします。
optavgpause オプションは、ヒープ・サイズの増加がガーベッジ・コレクション休止の長さに与える影響を制限することに加えて、これらのガーベッジ・コレクション休止に費やされる時間を大幅に削減します。このオプションは、特に大規模ヒープを持つ構成に関係があります。 休止時間は、一部のガーベッジ・コレクションのアクティビティーを、通常のプログラム実行と並行して実行することによって削減されます。休止時間を削減することによって、アプリケーションごとに異なりますが、アプリケーションのスループットがある程度縮小される場合があります。
Java ヒープが満杯に近く、再利用できるガーベッジが少ししかない場合、すぐに使用可能なスペースがないため、新規オブジェクト用の要求がすぐには満たされないことがあります。ヒープが容量いっぱいに近い状態で操作されている場合、上記オプションのどちらが使用されているのかには関係なく、アプリケーション・パフォーマンスは悪くなります。また、さらにヒープ・スペースの要求が続けば、アプリケーションはメモリー不足例外を受け取り、その例外がキャッチされ処理されなければ、JVM は終了します。このような状態の場合、-Xmx オプションを使用してヒープ・サイズを増やすか、使用中のアプリケーション・オブジェクトの数を減らすことをお勧めします。
ガーベッジ・コレクションに関する詳細は、以下を参照してください。
http://www.ibm.com/developerworks/ibm/library/i-garbage1/
http://www.ibm.com/developerworks/ibm/library/i-garbage2/
http://www.ibm.com/developerworks/ibm/library/i-garbage3/
|Java アプリケーション内のメモリー・リークの処理については、http://www.ibm.com/developerworks/library/j-leaks/index.html を参照してください。
IBM ビルド番号およびバージョン番号を確認するには、シェル・プロンプトで以下を入力してください。
java -version
Java Plug-in に関しては、Sun の http://java.sun.com/j2se/1.4.1/docs/guide/plugin/developer_guide/ に記述があります。
Java Plug-In は、SDK のこのリリースでは印刷をサポートしません。
Java Plug-in は Web ブラウザー・プラグインです。Java Plug-in を使用すると、アプレットや Bean を Web ブラウザーで実行する際に、ブラウザーのデフォルト Java 仮想マシンをう回して、代わりに Java Runtime Environment (JRE) を使用するようになります。
Java Plug-in をインストールして構成する方法:
|Netscape 6 または Mozilla 用の Java Plug-in をインストールして構成するには、ライブラリー・ファイル /opt/IBMJava2-141/jre/bin/libjavaplugin_oji.so からブラウザーの plugins ディレクトリー (/brower-install-path /plugins) へのシンボリック・リンクを作成します。
Java Plug-In をすべてのユーザーが使用できるようにするには:
ln -s /opt/IBMJava2-141/jre/bin/libjavaplugin_oji.so \ /usr/local/mozilla/plugins/
表 2. Java Plug-in でサポートされるブラウザー
ディストリビューション | Netscape のデフォルト・バージョン | Netscape でサポートされるバージョン | Mozilla のデフォルト・バージョン | Mozilla でサポートされるバージョン |
---|---|---|---|---|
Red Hat 7.3 | 4.79 | 4.79 | 0.9.9 | 0.9.9 |
Red Hat Advanced Server | 4.78 | 4.78 | 0.9.9 | 0.9.9 |
SuSE 8.0 |
|
| 0.9.8 | 0.9.8 |
SuSE SLES 7 | 4.77 | 4.77 |
|
|
TurboLinux 7 Server |
|
| 0.94 | 0.94 |
Java Plug-in は、 <APPLET>、<OBJECT>、および <EMBED> タグのパラメーターとして 2 バイト文字 (たとえば、中国語 (繁体字) BIG-5、韓国語、日本語)をサポートします。Java Plug-in がパラメーターを解析できるように、HTML 文書の正しい文字エンコード方式を選択しなければなりません。HTML 文書の文字エンコード方式は、 <HEAD> セクションで <META> タグを使用して次のように指定します。
<meta http-equiv="Content-Type" content="text/html; charset=big5">
この例は、ブラウザーに、中国語 BIG-5 文字エンコード方式を使用して HTML ファイルを解析するように指示するものです。すべてのパラメーターが正しく Java Plug-in に渡されます。しかし、一部の古いバージョンのブラウザーでは、このタグが正しく認識されないことがあります。その場合には、ブラウザーにこのタグを無視するように強制できますが、エンコードを手動で変更しなければならないこともあります。
次のようにして、HTML ファイルの解析に使用するエンコード方式を指定することができます。
Java Web Start は、Java テクノロジーをベースにしたアプリケーションの展開手段です。コンピューターとインターネットを接続して、ユーザーが Web から直接アプリケーションを立ち上げて管理できるようにします。Java Web Start を使えば、マウスをクリックするだけでアプリケーションを活動化することができ、また常に最新のバージョンを実行していることが保証されるので、インストールやアップグレードの手順を省くことができます。Web を介してソフトウェアを配布する場合、通常は Web 上でインストーラーを探してダウンロードして実行することが必要になる場合があります。インストーラーを実行すると、インストール・ディレクトリーや「完全」、「標準」、「最小」などのインストール・オプションを選択するプロンプトが出されます。これは、時間の浪費となり、またソフトウェアのバージョンが更新されるたびに繰り返さなければならない複雑な作業となる場合があります。
これに比べると、HTML ベースの e-mail クライアントやカレンダーなどの Web アプリケーションは、簡単にインストールして使用できます。Web ブラウザーではプロセスが自動化されています。複雑なダウンロード、セットアップ、構成などのステップはなく、最新のバージョンを実行するように保証されています。Java Web Start は、フル機能のアプリケーションにも同様の利点をもたらします。
Web Start をサポートするブラウザーの情報については、『サポートされるブラウザー』を参照してください。
Web Start の詳細については http://java.sun.com/products/javawebstart を、またより詳細な資料については http://java.sun.com/j2se/1.4.1/docs/guide/jws/index.html を参照してください。
Web Start インストール・スクリプトは、JRE for Java 1.4.1 と一緒にインストールされます。
このスクリプトは jre/bin/webstart_install_sdk.sh と呼ばれます。Web Start を使用するには、このスクリプトを実行してください。現行作業ディレクトリーを、Web Start をインストールしたい場所に設定します。インストール・プロセスでは、javaws と呼ばれるサブディレクトリーが現行作業ディレクトリーに作成されます。
また、インストール・プロセスでは、Netscape や他のブラウザーで使用される mime タイプも更新されます。
Web Start は、以下の 2 つの方法で起動できます。
これらのアクションのどちらを行っても、Web Start が選択したアプリケーションを開始します。このアプリケーションを初めて使用する場合には、アプリケーションがダウンロードされます。後の呼び出しで、更新が使用可能かどうかを確認するために元の Web サイトが調べられます。Web Start は、アプリケーションが開始される前に、これらの更新をダウンロードします。
jnlp にエラーが発生した場合 (例えば、無効なタグ名など) には、Web Start は、エラー・メッセージを表示しないで処理を中止します。
特定の Linux ディストリビューション - たとえば、Red Hat - では、「浮動スタック」と呼ばれる GLIBC 機能を使用できるようになっています。しかし、Linux のカーネルのレベルが 2.4.10 より下の場合には、制限があり、JVM は、浮動スタックが使用可能な状態の SMP ハードウェア上では稼動しません。この環境では、浮動スタックは、必ず、JVM または JVM を開始するすべてのアプリケーションが開始する前に使用不可になっていなければなりません。Red Hat では、次のコマンドを使用し、環境変数をエクスポートして浮動スタックを使用不可にします。
export LD_ASSUME_KERNEL=2.2.5
非浮動スタック Linux システムでは、-Xss の設定内容に関係なく、各スレッドに最小ネイティブ・スタック・サイズ 256 KB が提供されます。浮動スタック Linux システムでは、-Xss 値が使用されます。したがって、非浮動スタック Linux システムから移行する場合には、-Xss 値が十分大きく、最小の 256 KB に依存していないことを確認する必要があります。
2 バイト文字セット (DBCS) システムでインプット・メソッドを切り替えたい場合には、 IBMJAVA_INPUTMETHOD_SWITCHKEY や IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS 環境変数でなく、java.util.prefs.Preferences クラスを使用してください。詳細については、Sun の「Input Method Framework Specification」を参照してください。
Sun の Web サイト (http://java.sun.com) には、"Hello World" の例が入っていてダウンロードできます。この例は、Runtime Environment で実行される簡単な Java アプリケーションの作成方法を示したものです。
プロダクトの開発を終えて出荷準備が整ったら、ユーザー・システムにプロダクトをインストールして、ソフトウェアをサポートするように構成し、Runtime Environment を構成する必要があります。
Runtime Environment for Linux を使用する場合、インストール手順で既存のインストール・プロダクトを上書きしないように気を付けてください (既存の Runtime Environment for Linux が古いバージョンでない限り)。
Runtime Environment for Linux を再配布するには、ご使用のシステムにそれをインストールしてから、必要な Runtime Environment ファイルをインストール・セットにコピーします。この方法をとる場合、Runtime Environment for Linux の全ファイルを組み込む必要があります 。Runtime Environment for Linux ソフトウェアは、すべてのファイルが組み込まれている場合に限って再配布することができます。その結果、アプリケーションは、出荷時にそれぞれ個別の Runtime Environment for Linux のコピーを含むことになります。
再配布する必要があるファイルに関する特定の情報については、製品に同梱されているご使用条件を参照してください。
以下のセクションでは、SDK for Linux の既知の制約事項について説明します。
|
|
|
|
使用可能な最大スレッド数は、次のうちの最小値で決まります。
ただし、最大スレッド数に達する前に仮想記憶域を使い尽くしてしまうこともあります。
public interface interface java.lang.Runnable extends java.lang.Object...
xmodmap -pkこれは、SDK が Meta + Alt が押されたと見なす原因になります。その対策として、シェル・プロンプトで次のように入力して Meta_x マッピングを除去することもできます。
xmodmap -e "keysym Alt_L = Alt_L" -e "keysym Alt_R = Alt_R"
Sun バグ番号 | 制限の要旨 |
---|---|
4696508 | セレクターが指定どおりに同期しない |
|
|どの事例で作成された JVM も、ライブラリー (つまり、1.2.2、1.3.x、1.4.x) で |指定されたものであり、JNI インターフェースによって暗黙指定されたものではありません。 |インターフェース API は、JVM によってインプリメントされる言語仕様、 |クラス・ライブラリー API、またはその他の JVM の動作に影響を与えることはありません。 |インターフェース API は、必要な動作をネイティブ・コードが呼び出す方法のみを指定します。
以下の制約事項は、中国語 (繁体字) のユーザーのみに適用されます。
本書は米国 IBM が提供する製品およびサービスについて作成したものです。本書に記載の製品、サービス、または機能が日本においては提供されていない場合があります。日本で利用可能な製品、サービス、および機能については、日本 IBM の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービスに言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能であることを意味するものではありません。これらに代えて、IBM の知的所有権を侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用することができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの評価および検証は、お客様の責任で行っていただきます。
IBM は、本書に記載されている内容に関して特許権(特許出願中のものを含む)を保有している場合があります。本書の提供は、お客様にこれらの特許権について実施権を許諾することを意味するものではありません。
使用許諾については、下記の宛先に書面にてご照会ください。
以下の保証は、国または地域の法律に沿わない場合は、適用されません。
IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状態で提供し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。国または地域によっては、法律の強行規定により、保証責任の制限が禁じられる場合、強行規定の制限を受けるものとします。
本書は定期的に見直され、必要な変更 (たとえば、技術的に不適確な記述や誤植など) は、本書の次版に組み込まれます。 IBM は予告なしに、随時、この文書に記載されている製品またはプログラムに対して、改良または変更を行うことがあります。
本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のため記載しただけであり、決してそれらの Web サイトを推奨するものではありません。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありません。それらの Web サイトは、お客様の責任でご使用ください。
IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法で、使用もしくは配布することができるものとします。
本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとその他のプログラム(本プログラムを含む)との間での情報交換、および (ii) 交換された情報の相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする方は、下記に連絡してください。
本プログラムに関する上記の情報は、適切な使用条件の下で使用することができますが、有償の場合もあります。
本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれと同等の条項に基づいて、IBM より提供されます。
この文書に含まれるいかなるパフォーマンス・データも、管理環境下で決定されたものです。そのため、他の操作環境で得られた結果は、異なる可能性があります。一部の測定が、開発レベルのシステムで行われた可能性がありますが、その測定値が、一般に利用可能なシステムのものと同じである保証はありません。さらに、一部の測定値が、推定値である可能性があります。実際の結果は、異なる可能性があります。お客様は、お客様の特定の環境に適したデータを確かめる必要があります。
IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っておりません。したがって、他社製品に関する実行性、互換性、またはその他の要求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの製品の供給者にお願いします。
IBM は、IBM Corporation の商標です。
Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
他の会社名、製品名およびサービス名などはそれぞれ各社の商標または登録商標です。
この製品には、Apache Software Foundation (http://www.apache.org/) によって開発されたソフトウェアが含まれています。