labunix's blog

labunixのラボUnix

Debian Wheezyにopenjdk-7を導入する

■Debian Wheezyにopenjdk-7を導入する

$ apt-cache search openjdk-7-*
java-package - Utility for creating Java Debian packages
openjdk-7-dbg - OpenJDK ベースの Java ランタイム (デバッグシンボル)
openjdk-7-demo - OpenJDK ベースの Java ランタイム (デモおよびサンプルファイル)
openjdk-7-doc - OpenJDK 開発キット (JDK) ドキュメント
openjdk-7-jdk - OpenJDK 開発キット (JDK)
openjdk-7-jre - OpenJDK Java ランタイム - Hotspot JIT 版
openjdk-7-jre-headless - OpenJDK Java ランタイム - Hotspot JIT 版 (ヘッドレス)
openjdk-7-jre-zero - Zero/Shark を用いた OpenJDK 用の代替 JVM
openjdk-7-source - OpenJDK 開発キット (JDK) ソースファイル
openjdk-7-jre-lib - OpenJDK Java runtime (architecture independent libraries)

$ sudo apt-get install -y openjdk-7-*

■バージョン

$ whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/bin/X11/java /usr/share/java /usr/share/man/man1/java.1.gz

$ /usr/bin/java -version
java version "1.6.0_32"
OpenJDK Runtime Environment (IcedTea6 1.13.4) (6b32-1.13.4-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

$ /usr/lib/jvm/java-7-openjdk-amd64/bin/javac -version
javac 1.7.0_65

$ export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH

$ java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-2~deb7u1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

$ javac -version
javac 1.7.0_65

$ echo 'export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH' | \
  tee -a ~/.bashrc > /dev/null

■単に「Hello World」を表示するだけの使えないプログラム。
 「class」に「public」を付けると、1つのソースファイルにクラスは1つだけ。
 ファイル名は「クラス名.java」の形式とする。
 「println」は最後に改行が入る。

$ cat Hello.java 
public class Hello {
	public static void main(String[] args) {
		System.out.println( "Hello World!" );
	}
}

$ javac Hello.java 
$ java Hello 
Hello World!

■シェルのechoのような「Jecho」

$ cat Jecho.java 
public class Jecho {
	public static void main(String[] args) {
		for (int i = 0; i < args.length; i++)
			System.out.print(args[i]);
		System.out.println();
	}
}

$ javac Jecho.java 
$ java Jecho "Hello World"
Hello World
$ java Jecho Test
Test

■「echo」同様、パイプの場合は「xargs」で渡す。

$ echo "Hello World" | xargs java Jecho
HelloWorld

$ echo "日本語" | xargs java Jecho
日本語

■確認

$ man java | xargs -0 echo > sample1
$ man java | xargs -0 java Jecho > sample2
$ diff -s sample[12]
ファイルsample1とsample2は同一

$ wc -l sample[12]
  370 sample1
  370 sample2
  740 合計