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 および dev-java/openjdk-bin |
Eclipse Temurin | 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 フラグを変える必要があります。
dev-java/openjdk headless-awt -alsa -cups
dev-java/openjdk-bin headless-awt -alsa -cups
現在の Gentoo プロファイルによってはこれは既にそうなっているかもしれません。通常通り、特定のパッケージに当てはまる USE フラグの設定は emerge を pretend モードで実行することで確認できます:
user $
emerge --pretend --verbose virtual/jre
Java 仮想マシンの設定
概要
Gentoo では複数の JDK や JRE を衝突させることなくインストールすることができます。
デフォルトを設定する
インストールされている Java インスタンス (JRE または JDK) の一覧を表示するには、eselect コマンドを使用することができます。これは出力の例です:
user $
eselect java-vm list
Available 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 が有効化されたブラウザが必要な場合は、例えば palemoon
/palemoon-bin
が 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 ドキュメンテーションをビルドします。
トラブルシューティング
Minecraft launcher のエラー
minecraft-launcher
がクラッシュして数秒後に、"Alarm" と "SaveToBuffer failed" のエラーを throw する特定のエラーは、net-misc/curl に USE flagthreads
を設定することで解消されました。
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)
- Gentoo フォーラムの Java 7 and bootstrapping icedtea
さらなる情報はオフラインで入手できます:
user $
man java-config
user $
java-config --help
参照
- ↑ 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 日取得
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.