# Java (日本語)

関連記事

- Java パッケージガイドライン

"Java は Sun Microsystems によって開発され1995年に Sun Microsystems の Java プラットフォームのコアコンポーネントとしてリリースされたプログラミング言語です。構文は C および C++ から多くを引き継いでいますが、オブジェクトモデルがシンプルで低水準の機能が削られています。基本的に Java のアプリケーションはコンピュータアーキテクチャに関係なく動く Java 仮想マシン (JVM) で動くバイトコードにコンパイルされます。" — Wikipedia

## インストール

Arch Linux でサポートされている JVM の実装はオープンソースの OpenJDK だけです。それでほとんど間に合うため、Oracle のプロプライエタリな Java をインストールする必要はないはずです。OpenJDK と一緒に Oracle Java をインストールしたい場合は、#JDK-compat を見て下さい。

Note: インストールした後、Java 環境をシェルに認識させる必要があります (`$PATH` 変数と `$JAVA_HOME`)。コマンドラインから `/etc/profile` を source するか、デスクトップ環境ならばログアウトとログインが必要です。

### OpenJDK

OpenJDK Java 実行環境 (JRE) は公式リポジトリの jre7-openjdk パッケージでインストールできます。また、Java 開発キット (JDK) は jdk7-openjdk パッケージで利用可能です。ソースはパッケージ openjdk7-src で入手できます。

ブラウザで Java を使うには (Java アプレット や Java Web Start)、icedtea-web-java7 をインストールしてください。詳しくは Browser Plugins (日本語)#Java (IcedTea) を見て下さい。

#### パッケージの out-of-date

- jre7-openjdk, jdk7-openjdk, jre7-openjdk-headless は IcedTea のバージョン にあわせて out-of-date になります。Oracle のバージョン (例: `u45`) は関係ありません。
- icedtea-web-java7 は IcedTea Web のバージョン (例: `1.4.1`) にあわせて out-of-date になります。IcedTea のバージョンは関係ありません。

### Oracle Java SE

Oracle による JRE と JDK の実装は AUR から利用できます: jre と jdk。

#### Java SE 6/7

AUR には Java SE 6/7 の Oracle の実装である jre6/jre7 と jdk6/jdk7 が含まれています。

#### JDK-compat

Oracle JDK (6 と 7) は他の Java 環境 (例えば OpenJDK) と並行してインストールすることも可能です。パッケージは AUR にあります: jdk6-compat と jdk7-compat。

### Oracle JRockit

JRockit は Oracle による Java の JIT バージョンであり、AUR の jrockit からインストールできます。

### VMkit

VMkit は JIT 仮想マシンのための LLVM ベースのフレームワークです。J3 は VMkit を動作させる JVM です。ウェブページはここにあります: vmkit。J3 は GNU classpath ライブラリに依存していますが、Apache のクラスパスライブラリを使うことも可能です。

### Parrot VM

Parrot は VM であり、異なる2つの方法によって実験的に Java をサポート しています: Java VM バイトコード翻訳機 もしくは Parrot VM のための Java コンパイラ。parrot は公式リポジトリからインストールでき、AUR には parrot-git があります。

## トラブルシューティング

### MySQL

JDBC ドライバーは URL のポートを使ってデータベースへの接続を確立するため、同じホストで動作していたとしても"リモート"とされます (すなわち MySQL はデフォルト設定のようにポートを開きません)。そのため、JDBC と MySQL を使うには MySQL のリモートアクセスを有効にする必要があります。MySQL の記事の指示に従って下さい。

### Pulseaudio と Java のサウンド

Note: 以下は昔のバージョンの Java (Java 6) だけに関係しています。

デフォルトでは、Java と PulseAudio は互いに問題を生じさせますが、padsp を使うことで簡単に修正できます。

(以下のパスは Sun の Java にあわせています、OpenJDK ではパスを変更する必要があります)

まず、`java` バイナリを `java.bin` に名前を変更してください:

    # mv /opt/java/jre/bin/java /opt/java/jre/bin/java.bin

それから `/opt/java/jre/bin/java` に新しいランチャースクリプトを作成してください:

    #!/bin/sh
    padsp /opt/java/jre/bin/java.bin "$@"

最後に、スクリプトを実行可能にしてください:

    # chmod +x /opt/java/jre/bin/java

この処理は Java が更新される度に再度行う必要があります。

You can also try replacing padsp with aoss, which can also fix it under standard ALSA as well as in Pulse, do what works best. I must warn everyone that these hacks sometimes work perfectly, but are sometimes very unstable as well.

### 他のウィンドウマネージャになりすます

suckless.org の wmname を使うことで JVM に他のウィンドウマネージャを動かしていると信じこませることが可能です。これによって Awesome や Dwm などのウィンドウマネージャで起こる Java の GUI のレンダリング問題が解決する可能性があります。

    $ wmname LG3D

(wmname コマンドを実行した後、アプリケーションを再起動してください。)

This works because the JVM contains a hard-coded list of known, non-re-parenting window managers. For maximum irony, some users prefer to impersonate `LG3D`, the non-re-parenting window manager written by Sun, in Java.

### フォントが読みにくい

下の #フォントレンダリングを改善する で書かれている方法でも、フォントによっては読みやすくならないことがあります。このようなときは、使用している MS フォントを変えてみて下さい。AUR から ttf-ms-fonts をインストールしてください。

## Tips and tricks

Note: Suggestions in this section are applicable to all applications, using explicitly installed (external) Java runtime. Some applications are bundled with own (private) runtime or use own mechanics for GUI, font rendering, etc., so none of written below is guaranteed to work.

Java アプリケーションのほとんどは Java ランタイムの前に変数を設定することで挙動をコントロールすることができます。フォーラムの投稿より、変数を設定するには `~/.bashrc` (もしくは全てのユーザーに適用するには `/etc/profile.d/jre.sh`) に次の行を追加してください:

    export _JAVA_OPTIONS="-D<option 1> -D<option 2>..."

例えば、システムのアンチエイリアスがされたフォントを使用して swing に GTK のルックアンドフィールを使わせるには:

    export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'

### フォントレンダリングを改善する

クローズドソースとオープンソースの Java 実装のどちらもがフォントのアンチエイリアスを不適当に実装していることが知られています。次のオプションを使うことでこれを修正することが可能です: `awt.useSystemAAFontSettings=on`, `swing.aatext=true`

詳しい情報は Java Runtime Environment Fonts (日本語) を見て下さい。

### GTK のルックアンドフィール

Java プログラムの見た目が酷い場合、swing コンポーネントのデフォルトのルックアンドフィールを設定することができます: `swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel`.

頑固な Java プログラムはクロスプラットフォームの Metal ルックアンドフィールを使用し続けることがあります。そのような場合には以下のプロパティを設定することで GTK のルックアンドフィールを使うように強制することが可能です:

`swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel`.

### シンボリックリンクの変更

例によって、OpenJDK をインストールすると `/usr/bin` に java や javac などのシンボリックリンクが作成されます。これらのシンボリックリンクを他の JDK に変更したい場合 (例えば Oracle JDK の environment-compat パッケージをインストールした場合)、このスクリプトが役に立つでしょう。

Category:

- Programming language (日本語)