Java
Java は当初 Sun Microsystems によって開発されたプログラミング言語で、Java バイトコードをリアルタイムに実行できる、プラットフォーム非依存な仮想機械を採用しています。クロスプロットフォームのビジネスアプリケーションを作りたい開発者にとって、Java は人気のある選択肢です。
Javaとは何ですか?
概要
Javaは、Sun Microsystems社が開発したプログラミング言語です。 言語はオブジェクト指向であり、各プラットフォーム用のコードを再コンパイルする必要なく複数のプラットフォーム上で動作するように設計されています。 Javaはネイティブプログラムとしてコンパイルすることができますが、Javaの人気の多くは、自動メモリー管理など他の機能に加え、その携帯性によるものでしょう。 プラットフォーム独立を可能にするために、JavaコンパイラはJavaコードをオペレーティングシステム上で直接動作するのではなく JVM (Java仮想マシン) 上で動作するJavaバイトコードと呼ばれる中間表現にコンパイルします。
Javaバイトコードを実行するためには、JRE (Javaランタイム環境)がインストールされている必要があります。 JREは、とりわけコアライブラリ、プラットフォーム依存の JVM、ブラウザ用のプラグインを提供します。JDK(Java開発キット)は、バイトコードコンパイラやデバッガなどのプログラミングツールを追加します。
JVM の諸言語
Java 仮想マシンは Java プログラミング言語のみによって使用されているわけではありません。複数のプログラミング言語が Java プラットフォームを使用し、JVM 上で動作しています。そうした例には以下を含みます: Clojure、Apache Groovy、Kotlin、Scala。
仮想マシンをインストールする
選択肢
Gentoo は Java 実行環境 (JRE) と Java 開発キット (JDK) を提供しています。使用可能な選択肢は以下の通りです。
| ベンダ | JDK |
|---|---|
| OpenJDK | dev-java/openjdk |
| Eclipse Temurin | dev-java/openjdk-bin および dev-java/openjdk-jre-bin |
JRE/JDK をインストールする
プロファイルのデフォルトの JDK をインストールするには、次のコマンドを実行します。
root #emerge --ask --oneshot virtual/jdkプロファイルのデフォルトの JRE をインストールするには、次のコマンドを実行します。
root #emerge --ask --oneshot virtual/jre各 JDK には JRE が含まれていることに留意してください; JDK がemerge されていれば JRE をインストールする必要はありません。
ヘッドレス JRE をセットアップする
時には Java のすべての機能を持つ完全な JRE が必要ない場合もあるでしょう。サーバーで Java を使う場合、GUI、グラフィック、サウンド、あるいはプリンター関連の機能すら必要ないことがしばしばあります。簡略化された(時にはヘッドレスとも呼ばれる) JRE をインストールするには、選んだ JRE のタイプに応じていくつかの USE フラグを変える必要があります。
/etc/portage/package.use必要な USE フラグの変更dev-java/openjdk headless-awt -alsa -cups
dev-java/openjdk-bin headless-awt -alsa -cups
現在の Gentoo プロファイルによってはこれは既にそうなっているかもしれません。通常通り、特定のパッケージに当てはまる USE フラグの設定は emerge を pretend モードで実行することで確認できます:
user $emerge --pretend --verbose virtual/jreJava 仮想マシンの設定
概要
Gentoo では複数の JDK や JRE を衝突させることなくインストールすることができます。
デフォルトを設定する
インストールされている Java インスタンス (JRE または JDK) の一覧を表示するには、eselect コマンドを使用することができます。これは出力の例です:
user $eselect java-vm listAvailable Java Virtual Machines: [1] openjdk-8 [2] openjdk-11 [3] openjdk-17 [4] openjdk-bin-8 system-vm user-vm
user-vm フラグはユーザのデフォルトの JVM であることを表します。system-vm フラグはシステムのデフォルトの JVM であり、ユーザ JVM が設定されていない場合のフォールバックであることを表します。角括弧 ([]) 内の数値 ([1]) はその特定の JVM の参照です。デフォルトのシステム VM を設定するには:
root #eselect java-vm set system 1好みのユーザ JVM を設定するには:
user $eselect java-vm set user 1通常、ユーザーやシステムの VM を変更した時に既存のシェルセッションでプロファイルを source する必要はありません。唯一の例外は、ユーザー VM を初めて設定したりシステム VM に戻したりした後に、JAVA_HOME といった変数がまだ古い位置を指している場合です。
Java ブラウザプラグイン
Java プラグインのサポートは JDK 9 で非推奨になりました[1]。
Chromium ベースのブラウザのバージョン 42 以降と Firefox のバージョン 52 以降は、もはや NPAPI ベースのプラグインをサポートしていません[2]。これにより現代のブラウザでは Java プラグインは事実上無効化されています。
特定のユースケースのために Java が有効化されたブラウザが必要な場合は、例えば www-client/palemoon::palemoon または www-clint/palemoon-bin::palemoon パッケージが palemoon オーバーレイで利用可能です。これは NPAPI への長期サポートを備えており、つまり JDK 8 までの Java プラグインをサポートしています[3]。
Java で使用される USE フラグ
USE フラグの設定
USE フラグについての詳細は Gentoo ハンドブックの USE フラグの章を参照してください。
USE フラグ
javaフラグはさまざまなプログラムの Java サポートを追加します;nspluginフラグは今でも www-plugins/lightspark によって使用されています;
以下の USE フラグは JAVA_PKG_IUSE に含まれます。これらの詳細や、Java に特有な他の USE フラグについては、Gentoo Java USE flags を参照してください:
sourceフラグはパッケージのソースコードの zip ファイルをインストールします。これは伝統的に IDE で使用中のライブラリーにソースを「アタッチ」するために使われます;- Java パッケージでは、
docフラグは javadoc を使用して API ドキュメンテーションをビルドします。
複数のバージョンの Java
複数のバージョンの Java が必要な場合は、スロット化されたパッケージを使用することができます。
root #emerge --ask dev-java/openjdk:8root #emerge --ask dev-java/openjdk:11root #emerge --ask dev-java/openjdk:17root #emerge --ask dev-java/openjdk:21デフォルトは、デフォルトを設定することで変更できます。
トラブルシューティング
Java 21 の循環依存
openjdk:21 をインストールするときにエラーが発生する場合は、openjdk-bin:21 を emerge してください。
root #emerge --ask dev-java/openjdk-bin:21Minecraft launcher のエラー
- minecraft-launcher がクラッシュして数秒後に、"Alarm" と "SaveToBuffer failed" のエラーを throw する特定のエラーは、net-misc/curl に threads USE フラグを設定することで解消されました。
- minecraft-launcher を実行するときに、次のエラーが出力されました:
user $./minecraft-launcher[0229/184549.183275:ERROR:sandbox_linux.cc(346)] InitializeSandbox() called with multiple threads in process gpu-process.
これは minecraft-launcher を次のオプション付きで実行することで解決しました:
user $MESA_GLSL_CACHE_DISABLE=true ./minecraft-launcher関連項目
- Java Developer Guide — covers specific details on Gentoo Java ebuilds.
- Project:Java/Why build from source
- Project:Java/Getting Involved
外部資料
- jEnv を使ってディレクトリ単位で Java を設定する
- IRC の #gentoo (webchat) と #gentoo-java (webchat)
参照
- ↑ JDK 9 and the Java Plugin, java.com. 2018年11月30日取得
- ↑ How do I enable Java in my web browser?, java.com. 2018年11月30日取得
- ↑ Pale Moon future roadmap、palemoon.org。2019 年 6 月 28 日取得
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, nightmorph
Editors: please do not add yourself here. Contributions are recorded on each article's associated history page, this list is only present to preserve authorship information, as wiki history does not allow for any external attribution.