オブジェクト指向プログラミングa (環境情報学科2年次配当) 旧カリキュラム「オブジェクト指向モデリングI」


第2回 2. Javaによる開発の基礎知識(「Javaを学ぶ」第1回後半に相当)

※「Javaを学ぶ」第1回訂正情報:p.94 第2段6行目。正しくは以下のようにjavaではなくjavacコマンドを
 使ってコンパイルする。
  > java
c javaのソースプログラム名

【1】最も簡単なJavaプログラム

下記の最も簡単なJavaプログラムHello.javaを例にして,Javaプログラムの作成・コンパイル・実行の仕方を学習する
a)まず,大学のデスクトップPCのホームディレクトリ(Z:\)に,この授業用のディレクトリ"ooprog"を作成せよ。
b)テキストエディタ(TepaEditor)を使って,下記の内容を先ほど作ったディレクトリ"ooprog"の中にファイル"Hello.java"として保存する。保存時にファイルの種類を .java にすることに注意。

List 1 "Hello.java"
public class Hello {
  public static void main( String args[] ) {
    System.out.println( "hello!" );
  }
}
※プログラムはできるだけコピー&ペーストではなく,自分で書くこと
※大文字小文字の区別があるので注意せよ
ファイル名は必ず "Hello.java" とすること。ファイル名の大文字と小文字もちゃんと一致させること

▼ステップ1:Windows上でHello.javaをコンパイルするにはjavacコマンドを使う。
※「スタート」→「コマンドプロンプト」で表示されるコマンドプロンプトウィンドウで以下の操作を行う
Z:\> cd                     ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd ooprog               ← 授業用ディレクトリへ移動
Z:\ooprog> dir               ← ファイルの一覧を表示して,Hello.javaが存在することを確認しておくこと
Z:\ooprog> javac Hello.java  ← Windows用のJavaコンパイラjavacでコンパイルする
Z:\ooprog> dir               ← ファイルの一覧を表示して,Hello.classが有ることを確認しておくこと
※最後の dir コマンドで Hello.class がファイル一覧の中に存在していれば,コンパイルは成功である。次のステップ2に進む。
※最後の dir コマンドで Hello.class がファイル一覧の中に存在していないときは,コンパイル時にエラーが起こっている
 ことになる。その場合,javacコマンドによって出力されるエラーメッセージをよく読んで,Hello.java の間違いを見つけ,
 修正して,再度 javac コマンドでコンパイルしてみよ。良くある間違いは,
  ・スペルミスや(と{の取り違い
  ・半角文字を全角で書いてしまった
  ・全角のスペースが混じっている
 等である。間違いが無くなり,ちゃんと Hello.class が作成されるまで,この修正作業とコンパイルを繰り返すこと。
▼ステップ2:Windows上でHello.classをコンパイルするにはjavaコマンドを使う。
Z:\oopa> java Hello        ← Windows上で作成したクラスファイルHello.classを仮想マシンで実行してみる
hello!                     ← 実行結果 
※コンパイル時にエラーが出たら,エラーメッセージをよく見て間違いを直していくこと。


【2】ウィンドウを表示するプログラム

次のプログラムを,
 ・Windows上でコンパイル,実行せよ。ファイル名は必ず "HelloButton.java" とせよ。保存場所は,本授業用のディレクトリ Z:\ooprog 。

List 2 "HelloButton.java"
このプログラムは授業2回目にしては少々長めなので,プログラムの内容はここから右クリックで保存(ダウンロード)しても良い。
import javax.swing.*;
import java.awt.*;

public class HelloButton extends JPanel{
  public static void main( String[] args ) {
    JFrame fr = new JFrame();
    fr.setSize( 200, 150 );
    HelloButton hb = new HelloButton();
    JButton b = new JButton( "hello!" );
    hb.add( b );
    fr.getContentPane().add( hb, BorderLayout.CENTER );
    fr.getRootPane().setDefaultButton( b );
    fr.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    fr.setVisible( true );
  }
}

▼List 2の作成・コンパイル・実行の仕方
Windows編:HelloButton.javaをZ:\ooprogディレクトリ内に作成した後,「スタート」→「コマンドプロンプト」で表示
      されるコマンドプロンプトウィンドウで以下の操作を行う
Z:\> cd                     ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd ooprog               ← 授業用ディレクトリへ移動
Z:\ooprog> dir               ← ファイルの一覧を表示して,HelloButton.javaが有ることを確認せよ
Z:\ooprog> javac HelloButton.java ← Javaコンパイラjavacでコンパイル。成功するとHelloButton.class
                    というクラスファイルができる
Z:\ooprog> dir        ← ファイルの一覧を表示して,HelloButton.classが有ることを確認せよ
Z:\ooprog> java HelloButton  ← クラスファイルHelloButton.classをWindows上の仮想マシンで実行する

▼実行結果例
 Windows上でHelloButton.classを実行すると数左端のようにウィンドウが表示される。生成されたクラスファイルを
 Linux や MacOS Xといった別のOSが搭載されているコンピュータ上にコピーしても同様に実行することができ,動作
 しているプログラムの外観もほぼ同じである。

WindowsXpでの実行結果
Linuxでの実行結果
MacOS Xでの実行結果 (参考)


【3】お絵かきを行うアップレット

 アップレット(applet)とは,Webブラウザが実行するJavaで書かれたプログラムである。ここでは,実際にお絵かきのできる
アップレットを作ってみる。次のプログラムをコンパイルして出来上がるクラスファイル群と下のhtmlファイルを,自分のホーム
ディレクトリに置き,htmlファイルをブラウザで見てみよ。

List 3 "ArtBoard.java" ファイルはここから右クリックで保存(ダウンロード)せよ。
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;

public class ArtBoard extends Applet implements ItemListener {
  CheckboxGroup cgrp = new CheckboxGroup();
  Checkbox cp = new Checkbox( "Pen", cgrp, true );
  Checkbox ce = new Checkbox( "Eraser", cgrp, false );
  Graphics g = null;
  Button b = new Button( "Clear" );
  Color c = Color.red;
  int x = 0, y = 0;

  public void init() {
    g = getGraphics();
    Panel p = new Panel();
    p.add( cp ); p.add( ce ); p.add( b );
    setLayout( new BorderLayout() );
    add( "North", p );
    cp.addItemListener( this ); ce.addItemListener( this );

    addMouseListener(
      new MouseAdapter() {
        public void mousePressed( MouseEvent e ) { x = e.getX(); y = e.getY(); }
      }
    );

    addMouseMotionListener(
      new MouseMotionAdapter() {
        public void mouseDragged( MouseEvent e ) {
          g.setColor( c );
          g.drawLine( x, y, e.getX(), e.getY() );
          x = e.getX(); y = e.getY();
        }
      }
    );

    b.addActionListener(
      new ActionListener() {
        public void actionPerformed( ActionEvent e ){ repaint(); }
      }
    );
  }

  public void itemStateChanged( ItemEvent e ) {
    if( cp.getState() ) { c = Color.red; }
    if( ce.getState() ) { c = Color.white; }
  }
}

List 4 "sampleapplet.html" ファイルはここから右クリックで保存(ダウンロード)せよ
<html lang="ja">

<head>
  <meta http-equiv="content-type" content="text/html;charset=EUC-jp">
  <title>ArtBoard Java Applet</title>
</head>

<body bgcolor="#ccd4eb">
  <div align="center">
  <applet code="ArtBoard.class" width="512" height="512"></applet></div>
</body>

</html>


▼作業過程:Windowsでは,ArtBoard.java と sampleapplet.html を Z:\public_htmlフォルダに入れ,以下のようにコンパイルを行う
Windowsでは,ArtBoard.java と sampleapplet.html を Z:\public_html フォルダに入れ,次の操作を行う。
Z:\> cd                     ← 念のためホームディレクトリ(Z:\)へ移動
Z:\> cd public_html          ← カレントディレクトリを,Z:\public_html へ移動
Z:\public_html> javac ArtBoard.java  コンパイル
Z:\public_html> dir      コンパイルに成功すると,ArtBoard.class,ArtBoard$1.class,
                ArtBoard$2.class,ArtBoard$3.classの4つのクラスファイルが
                できる

ここまで出来たら,http://www.edu.tuis.ac.jp/%7Ee07000ab/sampleapplet.html をWebブラウザで見る
(e07000abは自分のID)。
※アップレット用に作成されたクラスファイルは,javaコマンドでは直接実行することは出来ないので注意すること

実際の例はココをクリックしてみること→ サンプル

参考)しぃペインターという有名なお絵かきアップレットで描かれたモナリザの絵の描画再生
  ※この例では,アップレットとデータベースが通信で連携して,お絵かきの過程を記録している。

▼実行例 (OSは違っても,同じように実行されている点に注意)

▼WindowsXp+InternetExplorerでの実行例
▼Linux+Netscapeでの実行結果
▼MacOS X+InternetExplorerでの実行例 (参考)


【課題】以下の課題を次回までにやってくること

1. このページに書いてあることでやりのこしたものをやっておくこと

2. 特に,今回やったお絵かきアップレットを自分のホームページにおくこと。その際のURLは
  http://www.edu.tuis.ac.jp/%7Ee07000ab/sampleapplet.html
とすること(e07000abは各自のID)。次回の授業後にチェックします。

3. 今回までに配った「Javaを学ぶ」のプリントを次回までに読んでおくこと。ほとんどC言語と同じ内容なので安心して読み始めてみて下さい。