Howto

Debian lenny で Java (Open JDK) を使う

Debian GNU/Linux 5.0 コードネーム "Lenny"(以下、Debian lenny と記述)をインストールしたArmadilloで、Java を動作させる方法を紹介します。Java のランタイムとして、OpenJDK を使用します。

おおまかな手順は以下のようになります。

  1. Debian lenny のインストール
  2. Java Runtime のインストール
  3. Java 開発環境のインストール
  4. サンプルプログラム(非GUI)
  5. サンプルプログラム(GUI)

本 Howto で使用する機器及びソフトウェアのバージョンは以下の通りです。

  • ターゲット: Armadillo-440 液晶モデル/Armadillo-500 FX 液晶モデル
  • 開発環境(作業用PC): ATDE v3 v20100309
  • ディストリビューション: Debian GNU/Linux 5.0 (コードネーム「Lenny」)
  • Javランタイム: OpenJDK 6b11-9.1+lenny2

1. Debian lenny のインストール

Armadillo-440 液晶モデルに Debian lenny と X Window System をインストールする方法は、「Howto: Armadillo-440 液晶モデル を使用して Debian 上で X.org を使ってみる」を参照してください。

また、Armadillo-500 FX 液晶モデルに Debian lenny と X Window System をインストールする方法は、「Howto: Armadillo-500 FX 液晶モデルでDebian lennyを使う」を参照してください。

2. Java Runtime のインストール

OpenJDK6のランタイムの Debian パッケージ名は、openjdk-6-jre です。Debian lenny がインストール済みの Armadillo に Javaランタイムをインストールするには、以下のコマンドを実行してください。

debian:~# apt-get install openjdk-6-jre

非GUIのアプリだけを実行する場合、openjdk-6-jre の代わりに openjdk-6-jre-headless をインストールしても構いません。

3. Java 開発環境のインストール

作業用 PC に Java 開発環境をインストールします。作業用 PC で以下のコマンドを実行してください。

[PC ~]$ sudo apt-get install openjdk-6-jdk

4. サンプルプログラム(非GUI)

ターミナルに「Hello World」と表示するだけのJavaアプリを作成し、実行してみます。

作業用 PC で以下の HelloWorld.java を作成してください。

HelloWorld.java

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

*.javaファイルをコンパイルするには、javacコマンドを使用します。以下のコマンドを実行してください。

[PC ~]$ javac HelloWorld.java

正常にコンパイルできると、HelloWorld.class が作成されます。クラスファイルを実行するには、javaコマンドを使用します。以下のコマンドを実行してください。

[PC ~]$ java HelloWorld
Hello World

Armadillo で実行する場合も、java コマンドを使用します。HelloWorld.class を Armadillo へコピーし、以下のコマンドを実行してください。

debian:~# java HelloWorld
Hello World

5. サンプルプログラム(GUI)

次は、GUIを使ったJavaアプリの動作を確認します。GUIツールキットには、swingを使用しました。

作業用 PC で以下の HelloWorldGui.java を作成してください。

HelloWorldGui.java

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

class HelloWorldGui extends JFrame implements ActionListener {
    private JLabel label;
    private JButton button;

    public HelloWorldGui() {
        // Disable Title Bar
        this.setUndecorated(true);

        // Full Screen
        GraphicsDevice device = GraphicsEnvironment.
            getLocalGraphicsEnvironment().getDefaultScreenDevice();
        device.setFullScreenWindow(this);

        // Get ContentPane
        Container contentPane = getContentPane();

        // Add label
        label = new JLabel("Hello Java with swing.");
        contentPane.add(label, BorderLayout.CENTER);

        // Add Button
        button = new JButton("Click me!");
        contentPane.add(button, BorderLayout.SOUTH);
        button.addActionListener(this);

        // Show Window
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == button) {
            label.setText("Button is clicked.");
        }
    }

    public static void main(String [] args) {
        new HelloWorldGui();
    }
}

コンパイル、実行方法は非GUIの場合と同じです。HelloWorldGuiを実行すると、「Hello Java with swing.」と書かれたラベルと、「Click me!」と書かれたボタンを含むフレームを全画面で表示します。ボタンをクリックすると、ラベルの値が「Button is clicked.」に変化します。

[PC ~]$ javac HelloWorldGui
[PC ~]$ java HelloWorldGui

HelloWorldGui.class を Armadillo にコピーして、同様に動作確認をしましょう。X のクライアントとして Java アプリを動作させます。すでに X が起動している場合は一度終了して、HelloWorldGui.class があるディレクトリで以下のコマンドを実行してください1

debian:~# startx $(which java) HelloWorldGui

起動直後は、ラベルに「Hello Java with swing.」と書かれています。

画面下のボタンをクリックすると、ラベルのテキストが「Button is clicked.」に変わります。


  1. このように、startx コマンドの引数として X クライアントを直接指定した場合、javaコマンドには DISPLAY 環境変数としてデフォルトのディスプレイ :0 が渡されます。