SDKによるJavaプログラムの作成


  1. 開発環境


    1. SDK

      Javaの基本的な開発ツールはにはSDK(Software Development kti)( 以前はJDK:Java Developpers Kit)が利用できます。SDKはコマンド形式の処理ですので、コマンドプロンプトウインドウで実行します。
      なお、現在では Java2に移行し、J2SEとなっていますから、これをダウンロードします。
           http://java.sun.com/j2se/1.4.2/ja/download.html
      に接続します。以下の表示があります。SDKのダウンロードに進みます。JREでは実行は出来ますが、プログラム作成ができません。



       license agreement が表示されます。利用条件の提示で、Accept しないとダウンロードできません。


      Offline Installationを選択します。約52MBありますから、かなりの時間がかかります。これで、
      j2sdk-1_4_2_04-windows-i586-p.exe
      がダウンロードできます。これを実行するとインストールを案内する ウイザード が実行を開始します。使用許可条件に同意し、カスタムセットアップに進みます。開発ツールを選択し、組み込むフォルダを選択します。
       次は、ブラウザのプラグインの選択です。通常、Internet Explorer を選択します。これで、インストールが開始されます。組み込んだフォルダを記録しておいて下さい。標準では、C:\j2sdk1.4.2_04 になります。

    2. 準備:pathの指定

       これは、コマンドプロンプトでJava プログラムを作成するとき必要な作業です。
       マイコンピュータ右クリック>システムのプロパティ>詳細>環境変数、「環境変数」ウインドウを開きます。システム変数のpathを選択し、編集ボタンを押します。文字列の最後に、; に続けて j2sdk1.4.2_04 のbin のpathを指定します。詳細は、こちらの例を参照して下さい。


  2. コマンドの利用


    1. マンドプロンプトウインドウ

      JDKでは、コマンドプロンプトウインドウで作業をします。ここではコマンドをキーボードから入力して作業を進めます。この方法は計算機を利用する、基本的な手法です。コマンドの行は、BackSpaceと左右の矢印キーで編集できます。コマンドプロンプトウインドウは標準では スタートメニュー>アクセサリ の内部に含まれています。


      コマンドプロンプトウインドウは、コマンド(指令)と呼ぶ文字列で処理する内容を指定します。通常、コマンドの最初も名前は実行するプログラム名、続く文字は 実行するプログラムに送るパラメータになります。

    2. フォルダの移動

       コンパイルするにはコマンドプロンプトの注目するフォルダを、ソースファイル .java の存在するフォルダに移動する必要があります。コマンドプロンプトでのフォルダ移動には、cd(Change Directory)コマンドを利用します。まず、ドライブを切り替えます。
           >H:
      で、注目するドライブを切り替えます。次に
           >cd java\ex
      などで、ソースファイルの存在するフォルダに移動します。フォルダへのファイルパスが長い場合、ファイルをコマンドプロンプトのドラッグすると、ファイルへのパスがコマンド行にコピーされます。最後のファイル名を削除すれば、ファイルパスが残ります。

    3. フォルダのファイル名を知る

       現在のフォルダにあるファイル名を調べるには、dir コマンドを利用します。
           >dir
      フォルダに多くのファイルが存在する場合、特定の名前で始まるファイル名のみを表示できます。
           >dir ex*
      では、exで始まるファイル名のみを表示します。

    4. コマンドの再利用

      実行したコマンドは、内部で記録されています。上下の矢印キーで、入力済みのコマンドを表示できます。

  3. JAVAアプリの作成


    1. Javaアプリ

       Javaアプリは、C言語と同じく main() で始まるプログラムです。ホームページで利用できるアプレットプログラムの作成は、次の章を参照してください。
       Javaアプリは、セキュリティ対策としてアプリが実行できないファイル処理やネットワーク接続が可能です。ただし、アプレットのようにGUI部品を利用するには、フレームクラスを継承したクラスを定義する必要があります。

    2. 文字列表示

      1. hello.java
        適当なテキストエディタでクラス Hello を定義するhello.javaファイルを作成します。
        public class hello {
         public static void main(String[] args){
          System.out.println("Hello world !");
         }
        }
        このファイルを、コマンドプロンプトが注目するフォルダに保存します。

      2. コンパイル
        hello.java をコンパイルします。
               %javac hello.java
        hello.classが生成されます。Javaではプログラムのclassで指定するクラス名と、.javaのファイル名(したがって、.classファイル名)を一致させる必要があります。大文字と小文字は区別します。

      3. 実行
        .classファイルを実行します。.classファイルは、プロセッサの機械語ではなく、仮想マシン(VM)の機械語です。.classファイルの実行には、VMを実行するツールが必要で、これは java コマンドで起動できます。
         %java hello



      4. パスの指定
        アプリでファイルを利用する場合、class ファイルとデータファイルを同じフォルダにおきます。データファイルを class ファイルと異なるフォルダにおく場合、class ファイルからのファイルパスをつけてデータファイルを指定します。
         データファイルのあるフォルダから class ファイルを起動したい場合、java コマンドに -cp <クラスファイルへのパス> を指定します。たとえば、データのあるフォルダの内部の classes フォルダにクラスファイル Appli.class がある場合、次のようにファイルパスを指定します。
         >java -cp classes Appli
        さらに、classesフォルダのアプリのクラスが pkg とパッケージ 宣言されている場合、以下のように起動します。
         >java -cp classes pkg.Appli
        また、コンパイルするとき、関連するインタフェースやソースファイルが別のフォルダにあるとき、  -sourcepath フォルダのリスト
        で、javac コマンドのオプションを指定します。src フォルダに関連するソース群がある場合、次のように指定します。java ファイルにもパスが必要です。
         >javac -sourcepath src src\ec.java

      5. エラー
        javac.exeが見つからない場合、「C:\Java\sample\hello>javac **」に対し、
        「'javac' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示されます。jdk\bin\javac.exeの存在、path の設定を確認して下さい。

    3. 平均値の計算例


      1. 目的
        他の例として、配列と繰り返しを利用して、平均値を求めます。p.lengthは配列の要素の個数を意味します。
        次の内容を、GetAvg.java の名前で保存してください。
        ファイル名は大文字と小文字を区別します。

      2. GetAvg.java

        class GetAvg{
         public static void main(String a[]){
         int p[]={30,40,50,60,80};
         int sum=0;
        
         for (int i=0; i < p.length ;i++)
          sum +=p[i];
        
         int avg=sum/p.length;
         System.out.println("Average=" + avg);
         }
        }

      3. 実行
         以下のコマンドで実行します。
        javacでエラー表示が出たら、プログラムを見直して下さい。


        int p[]={30,40,50,60,80}; の値や数字の個数を変更して再度実行してください。

    4. 文字列処理

      1. 目的
        最後に文字列の処理例を示します。StringBufferは文字列が編集可能なクラスで、 Stringは編集出来ないクラスです。new StringBuffer("This is a rose.");で文字列を生成し、insert(10,"red ");で第10文字から文字列を挿入します。toString();でStringクラスのコピーして、表示します。

      2. InsertString.java

        class InsertString{
        public static void main(String a[]){
         String st;
         StringBuffer sb=new StringBuffer("This is a rose.");
         sb.insert(10,"red ");
         st=sb.toString();
         System.out.println(st);
         }
        }

      3. 実行


  4. アプレットの作成


    1. アプレット

      HTMLの中で実行可能となるJavaクラスがアプレットです。Appletクラスのサブクラスとして作成します。
       アプレットでは、表示が必要になると、paint() が呼び出されます。表示画面は文字型ウインドウではなく、一般のグラフィックウインドウになります。したがって、文字表示には、Graphicsクラスの drawString("Hello, world!", 50, 25); を利用します。50,25は文字表示を開始する座標(画素単位)です。

      コンパイルし直してクラスファイルを更新しても、そのままではブラウザの実行画面は変化しません。ブラウザで 「更新」するか、ブラウザを上げ直します。

    2. アップレットソース(helloAplt.java)

      以下のファイルhelloApp.javaをコンパイルして helloAplt.class ファイルを生成します。

      import java.applet.Applet;
      import java.awt.Graphics;
      
      public class helloAplt extends Applet {
      
       public void paint(Graphics g) {
        g.drawString("Hello, world!", 50, 25);
       }
      }

    3. コンパイルエラー

      ファイル名やクラス名に大文字と小文字を混用すると、名前が一致しないため以下のようなエラーとなります。例の場合、先頭のHが小文字です。

      C:\JAVA\javaBook\chapter4\hellow>javac Helloaplt.java
      helloapp.java:4: Warning: Public class Helloapp must be defined in a file called "Helloaplt.java".
      
      public class HelloAplt extends Applet {
      ^

    4. HTMLで実行

      helloAplt.class をアプレットとして実行するホームページ hello.htm を作成します。APPLETタグの WIDTHとHEIGHTはアプレットの実行画面の幅と高さです。

      <HTML>
      <HEAD>
       <TITLE>HelloWorld Applet</TITLE>
      </HEAD>
      <BODY>
       HelloWorld Applet
       <HR>
       <APPLET CODE="helloAplt.class" WIDTH=150 HEIGHT=30>
       </APPLET>
       <HR>
       </BODY>
      </HTML>

    5. ブラウザによる実行

       ブラウザでは、vm(仮想マシン)でJavaのクラスファイルを実行しますが、このVMは内蔵されていなかったり、最新版でない場合があります。IEの場合、ツール>オプション>詳細設定
       の第2項目に、<アプレットでjava2を使用>の項目がない場合java2(JRE)の組み込みを行います。項目がある場合、チェックを入れて下さい。詳細は、こちらをご覧下さい。

    6. ブラウザでメッセージを見る

       ブラウザでも、システムからのエラーメッセージやプログラムで System.out.println() により表示するメッセージを見ることができます。Java2を利用している場合、ツールメニューのSunの「Javaコンソール」をクリックします。



      こんなウインドウが現れ、メッセージを表示します。消去ボタンでクリアできます。プログラムの実行経過を
       System.out.println("xの値"+x)
      などとで表示すれば、デバッグがぐんと楽になります。

    7. appletviewer

      アプレットは、JDKのappletviewerコマンドで実行することも出来ます。この場合でも、htmファイルが必要です。

      C:\JAVA\hellow>appletviewer hellowAplt.htm

      ブラウザでは作成した環境(VM)と異なる環境で実行されるため、正しく表示されない場合があります。appletviewerでは、同じ環境で実行されるため、このような問題はありません。また、アプレット内の System.out.println() による、エッセージも、コマンドプロンプト画面で表示されます。

    8. アプレットタグのパラメータ

       アプレットは アプレットタグよりパラメータを受け取ることができます。次の例で、アプレットタグのnameがアプレットに渡すパラメータです。

      <body>
      keyevent.Applet1 は Java が使用できるブラウザで下に表示されます<br>
      <applet
        codebase = "."
        code     = "paraAplt.class"
        name     = "Appletのパラメータ利用"
        width    = "300"  height   = "100"
        align    = "middle"
      >
      </applet>
      </body>
      アプレットでは、タグで渡されるパラメータの値を、getParameter("name") で参照できます。nameはアプレットタグで指定するパラメータの名前です。ここでは、 name はアプレットタグで文字列 "Appletのパラメータ利用" を指定しています。
       アプレットでは、getParameter("name"); で、name に対応する値を取得できます。
          import java.applet.Applet;
          import java.awt.Graphics;
      
          public class paraAplt extends Applet {
      
          public void paint(Graphics g) {
              String name=getParameter("name");
              g.drawString(name, 70, 25);
          }
        }
      以下は、nameパラメータの値を変更して、paraAplt.class を2回実行した例です。
      <body>
      keyevent.Applet1 は Java が使用できるブラウザで下に表示されます<br>
      <applet
        codebase = "."
        code     = "paraAplt.class"
        name     = "Appletのパラメータ利用"
        width    = "300"  height   = "100"
        align    = "middle"
      >
      </applet>
      <br><br>
      <applet
        codebase = "."
        code     = "paraAplt.class"
        name     = "パラメータを変更"
        width    = "300"  height   = "100"
        align    = "middle"
      >
      </applet>
      </body>これを実行すると、次のようになります。



トップに戻る