初めてのJavaプログラミング


  1. JDK1.0.2をゲットする

    Javaプログラミングの秘密の花園に踏み込むためにまず最初に必要な ことは、Javaの開発(プログラミング)環境を入手することです。 Javaは米国Sun社が、全ての開発環境、ドキュメント類、サンプル等 をフリーで公開することで世界中の支持を得てきましたので、Webから 誰でも簡単に入手して、誰でもスグにJava人になれるのです。(^_^)

    まず最初に、 ここ(http://java.sun.com) にアクセスします。Macな人もUnixな人もWinな人も、入口は 誰も同じです。このURLは覚えておきましょう。Javaに関する あらゆることは、このサイトから常に最新情報として得ることが できる、Javaの総本山です。

    次に、このサイト内の、 ここ に行きます。ここにあるのは、JDK(Java Developers Kit)の バージョン1.0の最終確定版である、JDK1.0.2です。 Javaのバージョンは大きくは1.0、1.1、1.2という世代が あります。この1.0.2では、主にホームページ上で走る アプレットというプログラムの基礎を学ぶために十分な ものが完備しています。しかし、セキュリティ上の制限から、 普通のソフトのように何でもできるというものではないために、 制限を外して別のセキュリティ機構を盛り込んだ1.1.*に 進化したのですが、これはまだ完成しないまま消えようと しています(^_^;)。そして1.1.*を諦めて、別のセキュリティ 機構による1.2.*がスタートし、現在これを改めて「Java2」 と呼んで普及させようとしています。市販されるようなソフトを Javaで作る場合には1.2.*が必要となりますが、これは 本講議の範囲を超えるので、興味のある人は自習して下さい。 ホームページで何かしよう、という人には、とりあえず JDK1.0.2でも十分な内容があります。

    そこで、続けて ここ に行きます。ここでは、コンピュータの環境によって、 該当するものをダウンロードします。この例では、Windows (95/98/NT)を指定してダウンロードしています。 このような 説明がいろいろありますが、当面は無視して(^_^;)、 サクサクと次に進みます。ちなみにこの画面はMacなの ですがまぁ気にせずに この ように して、とにかくこの長い名前のEXEファイルをダウンロード します。大学からなら十数秒ですが、自宅で電話回線から ダウンするとかなりかかるかもしれません。(^_^;)

    ここからは、Windowsな人は、画面内の「Virtual PC」と いう枠内だけを見て下さい。この中はWindows98です。 IEでない、普通のエクスプローラを開いてみると(IEなんて 危険なものは絶対に開かないように(^_^;))、 このように ダウンロードした「JDK-1_0_2-win32-x86.exe」と いう3752キロバイトのファイルができている筈です。 これを、 このように パソコンの標準ドライブにコピーないし移動します。 普通はCドライブで、ルート「C:\」にします。別のところ に置くと、あとでインストールする時にヘンなところに 解凍されて動揺します。(^_^;)

    Cドライブのルートディレクトレリに置かれた、この長い 名前のEXEファイルは、自己解凍方式のプログラムです ので、あとは黙ってダブルクリックすると、 このように 勝手に「DOS窓」(DOSプロンプト)が出てきて、ズラズラと たくさんのファイルが勝手に作られます。途中で慌てて ストップしたりしないように。 インストールが完了すると、 このように Cドライブの直下に「java」という名前のディレクトリが 作られ、その下には「bin」「demo」「include」「lib」 など、さらに深い構造で多数のファイルが整備されます。 この、「C:\java\」以下にある全てのファイルは、基本的には 消したり移動したりせずに、そのまま置いておきましょう。 下手に何かすると、あとでまた全部消してインストール し直し、という悲惨なことになります。使わないものも 多いのですが、グッとこらえてここはノータッチです。

  2. Javaの開発環境を整備する

    上述のように、Javaの開発環境一式の入った「C:\Java」という ディレクトリはそのままにしておきたいので、Javaプログラミング のための自分のサンプルプログラム等を置く、実験のためのエリア として、何か別に新しいディレクトリ(フォルダ)を作って おきましょう。ここでは、Cドライブの直下に、「C:\javatest」 というディレクトリを作っていますので、自分で分かっていて独自に したい、という人でなければ、同様に「C:\javatest」を作って 下さい。やり方は、IEでない、普通のエクスプローラで(IEなんて 危険なものは絶対に使わないように(^_^;))、簡単ですよね。

    さて、環境整備として最初にするのは、IEでない、普通の エクスプローラで「C:\Windows」に行って、その中から Dospromptのショートカットを作り、そのコピーをデスクトップ にコピーして、「Java開発ウインドウ」を簡単に呼び出せる ようにすることです。 この画面例 では、デスクトップに置いたショートカットの名前を「Java」と 変更しています。そして、このデスクトップ上のショートカット の上にカーソルを乗せてマウスの右ボタンで このように 「プロパティ」を呼び出します。つまり、このアイコンを 叩いてJava開発する時に限って、特別な環境設定をする 必要があるのです。

    ここではデスクトップ上で「Java」と名付けたDosプロンプト のプロパティとして設定すべき項目は、二つだけです。 このように、 まずは「作業ディレクトリ」のところを、さきほど自分の テスト用に作成したディレクトリに指定します。ここでは 「C:\javatest」ですが、自分で独自の場所に独自の名前を 持った場合には、それをC:からフルパスで指定します。 そしてもう一つ、「バッチファイル」というところに、 ここではとりあえず「start.bat」というのを書きました。 これはまだ、このあとで作るファイルなので、名前は何でも いいのですが、あとで作ったバッチファイル名とここでの指定 との対応がとれていないと、Java開発環境設定に失敗します。 これで、デスクトップ上のDosプロンプト「Java」の プロパティ設定は完了ですので、他はそのままでOKとします。

    次に、上で設定したバッチファイルを実際に作ります。 Wordでなく、テキストエディタの「秀丸」で(Wordなんて 危険なものは僕は恐くてパソコンに入れておけません(^_^;))、 たった1行、
      set path=c:\java\bin
    と記述して、これを、さきほど自分の作業用に作成した ディレクトリ(ここでは「C:\javatest」)の中に、 このように 「start.bat」という名前で保存します。この意味ですが、 Java開発に関するプログラム群は全て「c:\java\bin」の 中にあるので、このDosプロンプト内での作業については、 実行プログラムのある場所として、この「c:\java\bin」 を検索対象にしなさいよ、という設定です。これをしない と、コンパイルとかの作業が「ファイルがありません」とか でできないのです。

    以上の設定作業ができたら、デスクトップ上に作った、 ここでは「Java」と名付けたDosプロンプトをダブルクリック してみます。すると、 このように DOS窓が出て、さらにその中で「set path=c:\java\bin」 というのが実行されます。ここで何も余計なエラーメッセージ が出なければ、設定は成功しています。(^_^)
    さらに確認するために、このDOS窓の中のプロンプト (「>」という記号)のところに「java」と入力して リターンしてみると、 このように なります。これは、「java」のあとの文字列がないよ、 という正常なメッセージで、設定が成功している証拠です。

  3. Javaアプリケーションのプログラミング

    それではいよいよ、Javaプログラミングの最初の一歩です。 あらゆるコンピュータ言語について共通ですが、新しい言語を 学ぶ時に、教科書を読破してその言語を理解してから始めよう、 などというのはナンセンスです。いろいろ触ってみるうちに 次第に理解できてきて、そのあとで必要に応じて教科書を 読めば、ハハァなるほどと理解が進みます。よってここでも、 とりあえずは以下のようなサンプルプログラムをそのまま 使うことに徹しましょう。
    class hello1 {
    	public static void main(String[] args) {
    		System.out.println("Hello World ! [^o^]/~");
    	}
    }
    
    これは、C言語で有名な「Hello World」プログラムの Java版です。この部分を、秀丸エディタやメモ帳で 開いた新規作成文書にコピー・ペーストして、 このように ファイル名として「hello1.java」として保存すれば、 最初のJavaサンプルプログラムは完成です。

    ここで、これまでC言語とか他のプログラミング言語に 接してきた人には、いくつか注意点があります。 まず最初に、

    class hello1
    
    というところを見て下さい。これは、このJavaプログラムの 名前が「hello1」であることを自分で宣言しています。つまり、 このプログラムを保存する時に、「test.java」とか「hello.java」 と保存しても別に構わない、というのがこれまでのプログラミング 言語でしたが、Javaはそれが禁止されています。つまり、 内部で宣言した自分の名前(ここでは「hello1」)と、その ファイル自体の名前(ここでは「hello1.java」)が一致している ことが要請されています。

    このように、Javaプログラムの内部に自分自身の名前を 宣言しているので、これを保存する際のファイル名は 一つに決まります。classのところで定義した名前と別に 勝手には付けられません。逆に言えば、Javaプログラムの ファイル名を変更する時には、ちゃんとJavaソースプログラム のclassの直後の宣言の部分も対応して変えればいい ことになります。そして、

    class hello1 {
    	************
    }
    
    というように書かれたJavaプログラムは、最終的には 「Javaアプリケーション」というプログラムになります。 これはブラウザの中で動作する「Javaアプレット」とは 違うもので、実行させるためには「Javaインタプリタ」と いうプログラムが必要になります。Javaインタプリタも ちゃんとJDKに付属しています(^_^)。
    		System.out.println("Hello World ! [^o^]/~");
    
    のところの、ダブルクォーテーションマークスに囲まれた 部分については、自分のオリジナル文字列とすることが できます。ただし、カッコなどの特殊記号や、全角文字、 あるいは半角であってもカタカナ等は全て使用できません。 日本語メッセージが扱えるのはJDK1.2.*ということです。

    さて、ここにあるのはJava言語で書かれたplain textファイル、 つまりJavaソースプログラムですので、これをコンピュータで 実行するプログラムに変換(コンパイル)する、という作業が 必ず必要です。これは、同じDos窓の中で、 このように 「javac hello1.java」と入力してリターンします。この 意味は、「javac(Javaコンパイラ)さんや、hello1.java というJavaソースをコンパイルしておくれ」という意味で、 このように プロンプトが出て戻ってくれば、バグもなくコンパイルが成功 したことになります。ちゃんとdir(ファイル一覧表示)コマンド で見ると、「hello1.class」というファイルができています。 ちなみに、Javaの文法的なエラーとか、あるいはセキュリティ 的に禁止されている命令(パソコン内部ファイルのアクセスなど)が あると、ドカドカと多数のエラーメッセージが出てきて(^_^;)、 コンパイルは成功しません。

    この「hello1.class」のことを、「Javaバイトコード」 あるいは「Javaクラスファイル」と言います。これは名前の 通り、バイナリのデータですが、なんとこのバイナリは、 MacでもWinでもUnixでも、全て同じもので実行できます。 これがJavaの一つの真髄である、「プラットフォームを選ばない」 という特質で、いったん完成したJavaバイトコードは、いずれ この世からWindowsというOSとかMacintoshというコンピュータ が消えても、後で登場する未来のコンピュータ(現在は存在していない) で動作することが保証されています。

    ところで、ウイルスのプログラムをJavaで誰かが作って、 よく知られて出回っている一般のJavaプログラムと同じ名前を 名乗って流布させたら困ります。そこでJavaでは、この バイトコードのファイル名「hello1.class」は、Javaソース と同様に、あとで変更できません。つまり、バイトコードの中には このプログラムのソースは何という名前であったか、という情報 が埋め込まれているので、これを変更すると、実行時のチェックに ひっかかって実行できません。Javaとは、セキュリティを最初から 考慮した初めての言語なのです。

  4. Javaアプリケーションの実行とデバッグ

    さて、それでは完成したJavaアプリケーションを実行して みましょう。 このように 「java hello1」と入力してリターンします。hello1の あとの.classというのは不要です(バイトコードはclassに 決まっているので)。この意味は、「java(Javaインタプリタ) さんや、hello1.classというJavaアプリケーションを実行 しておくれ」という意味で、よく見ると、ちゃんとDos窓 の中にメッセージが表示されています。 これが、初めて作ったJavaプログラムが完成して走った 瞬間というわけです。これが出たら、もう「私はJavaで プログラミングできます」(^_^;)と言えることになります。

    ここから先は、一般のプログラミング言語と同じです。 後述するようないろいろなJavaサンプルをコピーして きて、ちゃんとJavaソースの冒頭の宣言の部分から 名前を自分の使いやすいように変更しつつその名前で セーブして、コンパイルして、実行するのです。 現在、あらゆるソフトハウスの市販ソフトがJavaで プログラムされつつあります。これも原理的には全て、 同じことをしているのです。 この講議では、ホームページデザインに関するJavaが 中心なので、Javaアプリケーションについてはここまで です。あとは興味ある人は、どうぞ自分で挑戦してみて下さい。

  5. Javaアプレットのプログラミング

    さて、いよいよ次は、ホームページ上で、つまり世界中のユーザ のパソコンのブラウザの中でいろいろな「芸」をするJavaプログラム、 つまり「Javaアプレット」についてです。ただし、前述の Javaアプリケーションと、ほとんど見たところの違いはありません。 ここでは、
    import java.applet.Applet;
    import java.awt.Graphics;
    
    public class hello2 extends Applet {
    	public void paint(Graphics g) {
    		g.drawString("Hello world ! [^o^]/~", 50, 25);
    	}
    }
    
    というJavaプログラムがスタートとなります。 これは、C言語で有名な「Hello World」プログラムの Javaアプレット版です。この部分を、秀丸エディタやメモ帳で 開いた新規作成文書にコピー・ペーストして、 このように ファイル名として「hello2.java」として保存すれば、 最初のJavaサンプルプログラムは完成です。

    さて、前述のJavaアプリケーションのところと、重大な違い があります。これはいわば、「運命の分かれ道」(^_^;)です。 最初のところ、冒頭のimportという2行はとりあえずパスして おくと、

    public class hello2 extends Applet
    
    となっています。publicも「おまじない」として無視すると、 ここでは最後に2つの単語からなる「extends Applet」と いうのが加わっています。 実はこの「extends Applet」があれば、行く先は Javaアプレット(ホームページ内のプログラム)であり、 これが無ければ、Javaアプリとなります。まさにこの2単語 (必ずセットとなるおまじない、と思って結構です)が 自分のその後の行く末を決定しているのです。そして、 ここではhello2という名前もまた、あとで変更できない 自分自身を特定するIDとなっています。

    具体的に表示するメッセージの部分は、

    		g.drawString("Hello world ! [^o^]/~", 50, 25);
    
    のところの、ダブルクォーテーションマークスに囲まれた 部分です。これも自分のオリジナル文字列とすることが できますが、カッコなどの特殊記号や、全角文字、 あるいは半角であってもカタカナ等は全て使用できません。 最後の「50,25」というのは、表示するためのステージの 左上からどの座標の位置に文字列を置くか、という情報 ですので、適当な数値を指定します。

    このJavaソースプログラムをコンピュータで実行する プログラムに変換(コンパイル)する、という作業は 前述のケースとまったく同一です。これは、同じDos窓の中で、 「javac hello2.java」と入力してリターンします。この 意味は、「javac(Javaコンパイラ)さんや、hello2.java というJavaソースをコンパイルしておくれ」という意味で、 このように プロンプトが出て戻ってくれば、バグもなくコンパイルが成功 したことになります。

    ここでできた「hello2.class」のことも、「Javaバイトコード」 あるいは「Javaクラスファイル」と言います。さらにこの場合 には、ブラウザ内で動作する小さなアプリ、という意味で、 「小さな」という意味のetを付けて、「Javaアプレット」 (Java Applet)とも呼びます。つまり、同じものに3通りの 呼び名があるのです。このアプレットも、MacでもWinでもUnixでも、 全て同じもので実行できます。つまりいったん完成したJavaアプレット は、いずれこの世からMicrosoft社とかIntel社という会社が消えて その製品が消滅しても、後で登場する未来のコンピュータ(現在は存在 していない)のブラウザ内で動作することが保証されています。 Javaアプレットを制作した本人が寿命で消え去っても、その作品 であるJavaアプレットがインターネット上のどこかに存在して いれば、そのJavaソースプログラムが見つからなくても、 メンテナンスフリーで永遠にそのJavaアプレットは世界中の ホームページ上で動作するのです。(^_^)

  6. Javaアプレットの実行とデバッグ

    既に紹介したJavaアプリケーションと違って、Javaアプレット はclassファイルのままでは使えません。これを呼び出すための、 対応したHTMLファイルが必要になります。HTMLファイルの名前は 別にJavaと合わせる必要はないのですが(一つのHTMLファイルの 中にいくつものJavaアプレットを置けますから、対応させる というのは不可能です)、ここでは混乱しないように、一応、 「hello2.html」ということにしておきます。その中身としては、

    というようなことになります。

    htmlとbodyのタグは形式的なものですから、ここでのポイントは 「appletタグ」です。これで囲まれた中に、

    code="hello2.class"
    
    という情報でJavaバイトコード(アプレット)を指定するとともに、
    width=250 height=100
    
    ということで、縦横のドット数を指定して、Javaアプレットが 活動するための、いわばステージを指定することになります。 このステージの大きさは、あとで呼ばれたJavaアプレットが 自分で改めて定義して変更することもできますが、とにかく 呼び出し側のHTMLファイルでは、appletタグの中に明示的に 指定する必要があります。このHTMLファイルも、 このように 同じ作業ディレクトリの中に、つまりclassファイルと同じ ところに置きます。

    さて、Javaアプレットの実行とデバッグですが、ここではJDKに 付いてくる「アプレットビューワ」をまず使ってみましょう。 これは、同じDosプロンプトの中で、classファイルでなく Javaアプレットをappletタグで指定しているHTMLファイルを 与えて、 このように します。この意味は、「appletviewer(アプレットビューワ) さんや、Javaアプレットを指定しているhello2.htmlという HTMLファイルの中のappletタグの部分を解釈して、その Javaアプレットの動作を見せておくれ」という意味で、 そういうウインドゥが開いて、その中でJavaアプレットが 走っています。 これが、初めて作ったJavaアプレットが完成して走った 瞬間というわけです。これが出たら、もう「私はJavaの ホームページを作れます」(^_^;)と言えることになります。

    なお注意点ですが、appletviewerはHTMLの中の appletタグしか見ませんので、背景色とか、他の コンテンツは全て無視しますので、これは名前の 通り、アプレットだけを見るツール、ということに なります。

    ちなみに、このWindows内で作ったJavaアプレットですが、 このように そのままMacに持って来て、HTMLをそのままMac版の appletviewerにドラッグドロップするだけで実行する ことができます。こんなのは、Java以前には無かった ことです。(^_^)

    そして、当然ですが、このclassファイル(Javaアプレット) と、それを指定したHTMLファイルが同じフォルダ内に あるという状態で、HTMLファイルをブラウザNetscapeに ドラッグドロップすれば、 このように それは一つのホームページとして見えます。アニメの ようにまだ動かないものですが、このアプレットは、 ホームページ内にステージを与えられて、そこで 動作するプログラムとなっているわけです。(^_^)

  7. JDK1.0.2のサンプルを研究しよう

    さて、ここからは各自の興味でプログラミング三昧(^_^;)を 楽しむ世界となります。JDKには、Javaを開発したsunの エンジニアが提供した、膨大なサンプルが入っています。 これです。 これを適宜、コピーしては少しずつ改変してコンパイル して試す、ということで身に付けていきましょう。

    ここから体験できます。

  8. Macな人はもっと簡単(^_^)

    既に紹介しましたが、Macの場合にも同様にJDKを ダウンロードしてきて解凍すると、 このように 必要なツールが一式、揃っています。Mac版では、Dos プロンプトを開いてそこに手でコマンドを打ち込むことも なく、ただテキストエディタで編集したJavaソースを javacにドラッグすればコンパイルでき、アプレット であれば指定したHTMLをappletviewerにドラッグ ドロップするだけで実行することができます。 まぁ、Macには元々「テキストコマンド入力」という 概念がほとんど無いので、こうなります。(^_^)