静岡理工科大学 菅沼ホーム Java目次 索引

使用方法

      1. Java アプレットの Web ページへの貼り付け
      2. Java アプレットのプログラム

  1. Java アプレットの Web ページへの貼り付け

      Java プログラムを Web ページ内で実行( Java アプレットを実行)させるには,以下に示してあるように,HTML の OBJECT 要素PARAM 要素を使用します.下の例では,実行するプログラムを「 Ball.class 」,そのプログラムが存在する場所を HTML ファイルが存在する場所からの相対アドレス「 applet/ 」で指定しています.なお,Java プログラムが HTML ファイルと同じディレクトリに存在する場合は,この行は必要ありません.
    <object type="application/x-java-applet" width="600" height="400">
    	<param name="code" value="Ball.class">
    	<param name="codebase" value="applet/" >
    </object>
    			
      一般に,プログラムが大きくなると多くのクラスファイルが生成されます.アプレットを実行する際,その中に含まれるクラスファイルが必要になるたびにそれをダウンロードすることは,実行時間上問題です.そこで,Java では,jar コマンドを使用して,複数のファイルを圧縮しながら 1 つのファイルにまとめることができます.例えば,
    jar cvf Ball.jar *.class

    のようにして作成された jar ファイルをアプレットで利用する場合は,以下のようになります.
    <object type="application/x-java-applet" width="600" height="400">
    	<param name="codebase" value="applet/" >
    	<param name="archive" value="Ball.jar" >
    	<param name="code" value="Ball" >
    </object>
    			
      「アプレットを表示できない」,「 Java コンソールが現れない」,「 Java コントロールパネルを表示できない」といった問題が生じる場合があります( Edge や Chrome は,アプレットに対応していない).原因は,ブラウザやそのバージョン,Java のバージョン等によって異なると思いますが,参考のため,「アプレットを表示できない場合の処理」( Wnidow 10 )を行ってみてください.

  2. Java アプレットのプログラム

      プログラムを使いやすくするためには,ボタン,チェックボックスなどのグラフィカルなユーザインタフェースGUI )を利用してデータを入力し,その結果も GUI 上に表示する,場合によっては,グラフなど,より視覚的に分かりやすい形で結果を表示することが望まれます.Java において,ボタン,チェックボックスなどのグラフィカルなコンポーネントは,AWT または Swing という形で提供されています.AWT の各種コンポーネントは,「ピアモデル」という方法で設計されてきました.ピア( peer )とは,ある作業を行うために自分に協力してくれる仲間ないし相手を言います.AWT の各コンポーネント毎に,それと対をなすプラットホーム固有の部品(ピア,実際の作業を行う)が作成されていました.しかし,ピアをユーザが直接書き直すことができないため,あるコンポーネントの機能を拡張したいような場合は困難が生じます.そこで,ピアを持たないコンポーネント( lightweight component :軽量部品)もサポートするようになりました(従来のピアを持つコンポーネントを heavyweight component :重量部品と呼ぶ).それらの軽量部品は,「 javax.swing.* 」というパッケージにまとめて提供されています.

      また,Java には,直線,四角形,円などを描画する機能があります.ただし,AWT と Swing では描画方法に多少の違いがあります.Swing では,AWT と異なり,再描画の時,クライアント領域を背景色で塗りつぶしません.AWT のクライアント領域は,Update() が呼び出されると背景色で塗りつぶして初期化されますが,Swing では Update() をオーバーライドし,初期化せずに再描画するようになっています.また,Swing では,ダブルバッファリング機能もデフォルトとしてサポートしています.

      下に示すプログラムは,HTML ファイルから PARM 要素を通して渡された 2 つの値の和を求めるためのものです.より多くの例については,次章以降や「 Java と C/C++ の 13 章」を参照して下さい.なお,下に示すプログラムにおいて,「 Swing を利用した場合」と「 AWT を利用した場合」との違いは,継承するクラスの違いだけ( Applet クラスJApplet クラス.02 行目~ 04 行目)ですので,Swing に対する説明は省略します.

    AWT を利用した場合

    01	import java.io.*;
    02	import java.applet.*;
    03	
    04	public class Test extends Applet {
    05	    public void init()
    06	    {
    07	        int a, b;
    08	
    09	        a = Integer.parseInt(getParameter("x"));
    10	        b = Integer.parseInt(getParameter("y"));
    11	
    12	        System.out.println("和は " + (a+b));
    13	    }
    14	}
    			
    01 行目~ 02 行目

      import 文によって,java.io,及び,java.applet パッケージ内のクラスを利用することを宣言している.

    04 行目

      クラス Test が Applet クラスを継承することを宣言している.この結果,クラス Test は,Applet クラスのメソッドやプロパティをそのまま利用できるようになる.

    05 行目

      メソッド init は,Applet クラスのメソッドであり,アプレットが開始されるとき呼び出され,アプレットの初期化が行われる.05 行目~ 13 行目では,メソッド init をオーバーライド(再定義)している.

    09 行目~ 10 行目

      下に示した HTML ファイル( example.html )の 13 行目~ 14 行目の記述を通してアプレットに渡されたパラメータを,Applet クラスのメソッド getParameter によって受け取り,Integer クラスのスタティック( static )メソッド parseInt によって文字列を整数に変換している.

    12 行目

      System.out.println は,標準出力に出力するためのメソッドである.アプレットの場合は, Java コンソールに出力される.

    Swing を利用した場合

    01	import java.io.*;
    02	import javax.swing.*;
    03	
    04	public class Test extends JApplet {
    05	    public void init()
    06	    {
    07	        int a, b;
    08	
    09	        a = Integer.parseInt(getParameter("x"));
    10	        b = Integer.parseInt(getParameter("y"));
    11	
    12	        System.out.println("和は " + (a+b));
    13	    }
    14	}
    			

      上の例を「 Test.java 」というファイル名(拡張子を除き,クラス名と同じである必要がある)で保存し,コマンドプロンプト上で,

    javac Test.java ( Shift JIS の場合)
    javac -encoding utf-8 Test.java ( utf-8 の場合)
    			

    のように入力しコンパイルすると,「 Test.class 」というファイルが生成されます.このプログラムを,たとえば,

    example.html

    01	<!DOCTYPE HTML>
    02	<HTML>
    03	<HEAD>
    04		<TITLE>計算(加算)</TITLE>
    05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    06		<LINK REL="stylesheet" TYPE="text/css" HREF="../../../../master.css">
    07	</HEAD>
    08	<BODY CLASS="ccffcc">
    09		<H1 STYLE="text-align: center">計算(加算)</H1>
    10		<P CLASS="center">
    11			<object type="application/x-java-applet" width="200" height="100">
    12				<param name="code" value="Test.class">
    13				<param name="x" value="10">
    14				<param name="y" value="20">
    15			</object>
    16		</P>
    17	</BODY>
    18	</HTML>
    			

    のような形で HTML ファイルに埋め込めばアプレットが表示されます.ただし,この例では,アプレットには何も表示されず,演算の結果は,Java コンソールに表示されます. -> example.html の表示: 「AWT の利用」,「Swing の利用

      この例に示すように,アプレットとして使用する Java プログラムには,main メソッドが明示的には含まれていません.その代わり,Applet クラスJApplet クラス)を継承したクラスに含まれる init メソッドが main メソッドのような働きをします.アプレットを実行すると,その状態により,以下に示す Applet クラス( JApplet クラス)の 4 つのメソッドが自動的に呼ばれます.必要な関数をオーバーライド(書き直す)する必要があります.上の例では,init だけをオーバーライドしています.

    • public void destroy()  ブラウザが正常終了したときに自動的に呼び出されます.アプレットがアクティブであるときは,destroy メソッドを呼び出す前に stop メソッドを呼び出します.アプレットパネル以外に解放すべきリソースがない場合は特に使用する必要はありません.

    • public void stop()  他のページへ移動するとき自動的に呼び出されます.start メソッドと同様,何回も呼び出される可能性があります.スレッドを使用してアニメーションを実行しているような場合,他のページへ移っている間そのアニメーションを停止させておくような処理のために使用されます.

    • public void init()  アプレットが開始されるときにブラウザから呼び出され,アプレットの初期化を行います.コンストラクタの機能と非常に似ています.init メソッドの後には,必ず,start メソッドが呼び出されます.

    • public void start()  ブラウザが init メソッドを呼び出したとき,または,他のページからアプレットのあるページへ戻ったときに自動的に呼び出されます.init メソッドとは異なり,何回も呼ばれる可能性があります. .

静岡理工科大学 菅沼ホーム Java目次 索引