46.
java.net.URLEncoderクラスの encode、decode メソッドを使って行ないます。 例えばエンコードするのならば、 String out = URLEncoder.encode("xxx & yyy"); なような感じで行ないます。勿論 import java.net.*; は必要です。 ところで VisualBasicのような言語にはこうしたメソッドはないらしく、自前で用意するようです。VBユーザーの方は次のサイト等を参考に手作りしているようです。 http://www.geocities.co.jp/SilkRoad/4511/vb/urlenc.htm |
start javaw class-name |
Stringの前後にあるスペースを削除する。 String中途のスペースは削除されない。 |
SWINGの場合は下の40と異なります。 frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); これが元々の終了法でしたが、その後改善されて下のようなコードで足ります。 ImagePanel1 w = new ImagePanel1( "ImagePanel1" ); w.setDefaultCloseOperation(3); |
Javaは内部文字表現としてunicodeを採用しています。そこでunicodeに変換する必要がある場合に使えるツールがnative2asciiです。
|
これはFAQかもしれません。Frameを作って右上のX印をクリックしてもJavaプログラムが終了しない。それはそのはずで、自分でイベントを拾う必要があるのです。 import java.awt.*; class FrameQuit extends Frame { public quitApplication(String label) { setTitle(label); resize(120,120); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY){ System.exit(0); } return(super.handleEvent(evt)); } public static void main(String[] args) { FrameQuit f = new quitApplication("Java Frame quit"); f.show(); } } |
実行形式Jarファイルとはファイル名をダブルクリックするあるいはコマンドラインで java -jar hogehoge.jar として実行可能なJarファイルです。これの実現のためにはJarファイル内にメインクラスを指定したマニフェストファイルを入れてあげます。具体的には例えばhogehogeクラス場合、下記の文を含むテキスト(manifest.txt)を作ります。 Main-class: hogehoge 更に次のコマンドでJarファイルを作ります。 jar cvmf manifest.txt hogehoge.jar hogehoge.class 2004/09 下記は新情報 manifest.mfの中身 Manifest-Version: 1.0 Created-By: 1.4.1_01 (Sun Microsystems Inc.) Main-class: hogehoge jar cvmf manifest.mf hogehoge.jar hogehoge.class |
J2EEで規定するWARファイル(Web ARchive [WAR])には次のファイルを格納する。
|
java.langパッケージのRuntimeクラスを使います。例えばNTだとこんな感じです。勿論セキュリティの問題でアプレットで動くことは原則ありません。 import java.io.*; public class Jexec { public static void main(String argv[]){ try{ Runtime.getRuntime().exec("c:\\winnt\\system32\\cmd /c copy src dest"); } catch (IOException ex){ System.out.println(ex); } } } |
下記のような例となります。ところがIEではうまく動くもののNetscapeでは新しいWindowを開いて、期待通りとはなりませんでした。もしNetscapeでも同じhtml内の別frameにhtmlを呼ぶ方法をご存知であれば是非知らせて下さい。 ------------- UrlLink.htm --------------------- <HTML> <HEAD><TITLE>UrlLink</TITLE></HEAD> <FRAMESET COLS = "50%,50% " > <FRAME SRC="hidari.htm" NAME="hidari" RESIZE> <FRAME NAME="migi" RESIZE> </FRAMESET> <NOFRAMES> <BODY> <P> </BODY> </NOFRAMES> </HTML> ------------- Hidari.htm --------------------- <HTML> <HEAD><TITLE>Hidari</TITLE></HEAD> <BODY BGCOLOR="#99FFFF"> <CENTER> <P><APPLET CODE="UrlWindow.class" WIDTH="256" HEIGHT="256" ALIGN="BOTTOM"> </APPLET> </P> <P>Click Upper Applet Area</P> <P>Then Open NewURL to Right Frame </CENTER> </BODY> </HTML> -----------------------UrlWindow.java------------------------------------ import java.applet.*; import java.net.*; import java.awt.*; public class UrlWindow extends Applet{ URL ozawa = null; public void init(){ try{ ozawa = new URL("http://member.nifty.ne.jp/~ozawa"); } catch (MalformedURLException e){ System.out.println("Error:" + e.getMessage()); } } public boolean mouseDown(Event evt, int x, int y){ getAppletContext().showDocument(ozawa,"migi"); return(true); } } |
finalキーワードはその使われ方で次のような意味を持ちます。
|
いくつかのファイルから、JARファイルをつくるには、jarコマンドを使います。 jarコマンドは、UNIXで良く使われる tar コマンドと同じオプションが使えます。 jarコマンドの第一引数には、次のオプションの組み合わせを指定する必要があります。 c JARファイルを生成(Create)します。f指定がなければ、標準出力へ。 t JARファイルの中身のテーブル(Table)を表示します。f指定がなければ、 標準入力の内容のテーブルを表示します。 x JARファイルから元のファイルを引き出し(eXtract)します。 f 第二引数が、c,t,x の操作の対象となるJARファイルとなります。 v Verbosオプションです。 これらのオプションとは別に、jarコマンドの引数には、三つの種類のファイルが 登場します。 manifest ファイル。これは、オプショナルで、なくても構いません。 JARファイル。 JARファイルにまとめられるファイル。 典型的な使い方は、次のようなものです。 classファイルをmyjarfileに格納する。 jar cf myjarfile *.class test.jarを解凍する。 jar xvf test.jar |
CODEBASE アプレットのクラスファイルが格納されていたディレクトリ名またはURL指定する。 CODE 必須。アプレットのクラス名を指定する。 WIDTH 必須。アプレットの初期ウィンドウ幅を指定する。 HEIGHT 必須。アプレットの初期ウィンドウ高さを指定する。 ALT Java未対応のブラウザで代替表示するテキストを指定する。 NAME アプレットのインスタンスに名前を付与する。 ALIGN ページ上でのアプレットのアラインメントを付与する。 VSPACE アプレットの上下に取るマージンを指定する。 HSPACE アプレットの左右に取るマージンを指定する。 PARAM アプレットに名前を指定して引数を渡す。 例えば codebase を使えば他のURLにあるAppletも使えます。 例:ルービックキューブ <APPLET CODEBASE="http://www.npac.syr.edu/projects/java/magic/" ARCHIVE="Magic.zip" CODE="Magic.class" WIDTH="348" HEIGHT="384" ALIGN="BOTTOM"> </APPLET> |
LayoutManagerで用意されているLayoutには次の5個があります。 1.BorderLayout 中央と上下左右の5ケ所に配置します。 2.CardLayout ちょうどカードをめくるように、部品の中の一つだけが表示されるようにします。 3.FlowLayout 文字を行につめていくように部品の左から右に配置します。 4.GridLayout 格子状に部品を配置します。 5.GridBagLayout 見えない格子の上に部品を配置します。格子の間隔を変えたり、部品が複数のマスタを占めるようにできます。いろいろな設定ができる自由度が高いLayoutManagerです。 |
普通の配列に対し、Vectorは大きさが変わる配列です。 import java.util.*;
} |
import java.awt.*;
} |
fillRectメソッド単体で色付けは出来ません。よって直前でsetColorにて色を宣言します。 例) g.setColor(Color.cyan); g.fillRect(0, 0, 500, 40); |
例) public boolean mouseDown(Event ev,int x,int y){ if(x>50 & x<100 & y>300 & y<320){ flg = 0; } if(x>50 & x<100 & y>360 & y<380){ flg = 1; } return true; } x, yにはそれぞれmouseDown発生時のx,y座標が入いる。範囲で指定してフラグを立てればアクションを行なえる。 |
synchronizedされたメソッドがstaticメソッド(クラスメソッド)の場合、クラス単位で排他制御が行われます。これはマルチスレッドでJavaを使う場合、同一メソッドが同時に複数走ることで生じる不都合を回避するために使います。 |
アプレットでrepaintメソッドを呼び出すと、 repaint() --> update() -->paint() の順で呼び出されます。update()はアプレット全体を背景色で塗りつぶしてpaint()を呼び出します。 |
Sun microsystems社製作のWebサーバーでその殆どがJavaで書かれている。期間限定版を同社のサイトからダウンロード可能。JavaWebServerの最大の特徴は、サーブレット機能を標準で備えている点であり、特別な組込作業をする事なく、Java Servletを利用する事が出来る。 |
同じ名前のメソッドでありながら引数(数、型、並び方)が異なると、それに応じて異なったメソッドを定義可能であり、これをメソッドの「オーバーロード」と言います。 例 int Calc(int a,int b); double Calc(double a,double b); |
オブジェクト指向は1980年代にSmallTalkという言語を使ったプログラムの作り方として広く知られるようになったもの。オブジェクト指向ではオブジェクト(object)とそれに対して送られるメッセージ(message)だけで全ての動きを表現します。オブジェクトとは1つの実体として頭に描ける概念を表現したものです。一方メッセージとはオブジェクトが持つ機能を動作させるための要求のことです。 |
(1) Windows NTの場合 javac Hello.java 2> error.txt (2) Windows 95/98の場合(JDK 1.1) javac -J-Djavac.pipe.output=true Hello.java > error.txt (3) Windows 95/98の場合(JDK 1.2) javac -Xstdout Hello.java > error.txt |
Java以外のプログラミング言語で書かれたメソッドの事。記述にはCかC++が良く使われる。キーワード native を使う。 native void m(); |
モディファイヤとは、クラスやインタフェースやメソッドや変数の宣言部分に指定することで、クラスやインターフェースやメソッドに対してアクセス制御等の付加的な意味付けを行なうための下記キーワード public, protected, private, abstract, static, final, synchronized, native |
Javaのオブジェクトの状態を後で復元できるようなデータ列にすることをオブジェクト・シリアライゼイション(Object serialization)、または単にシリアライゼイションという。シリアライゼイションを利用すれば、インスタンスの状態をファイルに保存したり、ネットワークを介してインスタンスを転送することが可能となる。RMIやJavaBeansなどの標準APIでも利用されている。 |
スタブ リモートオブジェクトの呼出しや、リモートオブジェクトへ渡すデータのマーシャリングを行なう代理オブジェクト。リモートオブジェクトのソースコードに、JDKに含まれるRMIスタブコンパイラ(rmic)を実行することにより、自動的に生成される。 スケルトン スタブからの呼出し応答し、スタブから渡されたデータのアンマーシャリングを行なう。代理オブジェク、スケルトンはアンマーシャリング完了後、リモートオブジェクトのメソッドを呼び出しその処理結果をクライアントに返す。スタブ同様、JDKに含まれるるRMIスタブコンパイラ(rmic)を使用することにより自動生成される。 |
マーシャリング オブジェクトなどのデータの内容を、ネットワーク経由で送信出来るようにバイトストリームに変換する処理。 アンマーシャリング バイトストリームから、オブジェクトなどのデータを復元する処理。 |
this はクラス定義内で、そのクラスのオブジェクト自身を表すための キーワードです。 メソッドの引数として自分自身のオブジェクトを渡したり、 ローカル変数との名前の衝突を解消する場合などに用いられます。 super はクラス定義内で、そのクラスのスーパー・クラスの機能を 呼び出すために用いるキーワードです。 super.init() のようにして、スーパー・クラスで定義されたメソッドを 呼び出すことを可能にします。 super() はスー パー・クラスのコンストラクタを呼び出します。 |
パッケージ宣言は次の二つの目的のために行ないます。 ・作成したクラスやインターフェースを登録するパッケージを定義する。 ・利用したいクラスやインターフェースが格納されているパッケージをコンパイラに知らせる。 package パッケージ名1. パッケージ名2. パッケージ名; パッケージはピリオドで区切られたパッケージ名で記述された階層的なディレクトリ構造となっています。 これらのパッケージ名はファイルシステムのディレクトリ名と一致しています。 |
メソッドが自分のメソッドの中で例外を発生する可能性があるが、その例外処理を自分で行なわないで、自分をコールした親メソッドに任せる場合にthrows節を使う。 public static void main(Sring args[]) throws IOException |
サーバー JavaWebServer Jigsaw(http://www.w3.org/Jigsaw/) jserv(http://java.apache.org/) + Apache JRun(http://jrun.com/) + Apaxhe,IIS,Netscape ServletExcec(http://www.newatlanta.com/) + IIS,Netscape Websphere(http://www.software.ibm.com/webservers/appserv/) + Apache,IIS,Netscape ISP SISネット(http://www.sis.ad.jp/)で利用可能。 |
---- RedBack.java ------ import java.applet.Applet; // アプレットのベースとなるクラス import java.awt.Color; // 色のデータを扱うクラス /** オレンジ色の領域のクラス RedArea の定義 */ public class RedBack extends Applet { /** 初期設定を行うメソッド(生成時に自動的に呼ばれる)*/ public void init() { setBackground( Color.red ); // 背景色を赤色にする } } ---- ReaBack.html ----- <HTML> <TITLE>RedBack</TITLE> <H1> RedBack アプレットのサンプル </H1> <P> <APPLET CODE="RedBack.class" WIDTH="540" HEIGHT="4"> </APPLET> </HTML> |
UnicodeをJIS変換する。 具体的にはエンコード付きのストリームWriterを作成し、MIMEでcharset=iso-2022-jpを指定します。 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(res.getOutputStream(),"JIS"))); res.setContentType("text/html; charset=iso-2022-jp"); |
JDKの場合です。 appletのテストにはappletviewerを利用します。 servletのテストにはservletrunnerを利用します。 |
<APPLET CODE="xxx.class" archive="xxx.jar" WIDTH="www" HEIGHT="hhh"
> 重要なのはarchive指定でjarファイル化されたclassファイルを転送出来る点です。 |
} |
単純なAWTのサンプル
} |
}
} |
}
} |
} |
JDBC type1 JDBC-ODBC bridge driver JDBC type2 Native API partly-Java driver JDBC type3 Net Protocol ALL-Java driver JDBC type4 Native Protocol ALL-Java driver http://www02.so-net.ne.jp/~kikuta/jdbcnote/jdbc1_4.html |
Appletからブラウザマシン上のファィルへのアクセス禁止 Appletが通信をおこなうのは送信ホストのみ Appletからブラウザマシン上の他のアプリケーションを起動することは出来ない。 1.What are applets prevented from doing? In general, applets loaded over the net are prevented from reading and writing files on the client file system, and from making network connections except to the originating host. In addition, applets loaded over the net are prevented from starting other programs on the client. Applets loaded over the net are also not allowed to load libraries, or to define native method calls. If an applet could define native method calls, that would give the applet direct access to the underlying computer. |
アプレット中で、printlnを実行したときはいったいどのディスプレイに表示されるのか? アプレットで、 System.out.println("Hello"); のようにした場合、文字列はJavaコンソールと呼ばれるウインドウに表示される。 これはブラウザに用意されている。ブラウザのメニューから選択して使う。 |
前ページに戻る---> RETURN