Java

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Java and the translation is 100% complete.

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 上で動作しています。そうした例には以下を含みます: ClojureApache GroovyKotlinScala

仮想マシンをインストールする

選択肢

Gentoo は多くの Java 実行環境 (JRE) と Java 開発キット (JDK) を提供しています。現時点で使用可能な選択肢は以下の通りです。

ベンダ JDK
The IcedTea Open Java SE (旧 icedtea6-bin) dev-java/icedtea および dev-java/icedtea-bin
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 フラグを変える必要があります。

ファイル /etc/portage/package.use必要な USE フラグの変更
dev-java/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
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-binpalemoon オーバーレイで利用可能です。これは NPAPI への長期サポートを備えており、つまり JDK 8 までの Java プラグインをサポートしています[3]

Java で使用される USE フラグ

USE フラグの設定

USE フラグについての詳細は Gentoo ハンドブックの USE フラグの章を参照してください。

USE フラグ

  • java フラグはさまざまなプログラムの Java サポートを追加します;
  • nsplugin フラグはMozilla ライクなブラウザ (Firefox を含む) 向けのサポートを追加します。Mozilla ライクなブラウザで Java アプレットを表示するために必要です;

以下の 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 flag threads を設定することで解消されました。
  • 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

関連項目

外部資料

さらなる情報はオフラインで入手できます:

  • man java-config
  • java-config --help

この(訳註: 翻訳元の)文書に関する提案や質問については、Gentoo Java team までメールをお寄せください: java@gentoo.org

参照

  1. JDK 9 and the Java Plugin, java.com. 2018年11月30日取得
  2. How do I enable Java in my web browser?, java.com. 2018年11月30日取得
  3. 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.