実践Java

10.Eclipse3 (2004.12.07)

9. iTextでPDF作成 (2004.03.16)

8.Eclipse(2004.03.08)

7.JavaMail(2001.05.29)

6.SWINGでJDBC(2001.05.19)

5.うるう年判定(2001.04.07)

4.GridBagLayoutを使う(2001.02.17)

3.ApacheでTOMCATを使う (2001.01.27)

2.Java Servlet (2001.01.21)

1.Localeの指定 (2001.01.01)


10.Eclipse3 (2004.12.07)

 Eclipseは早くもバージョン3です。以前同様に下記サイトで日本語化プクグイン共々ダウンロード出来ます。

http://www.eclipse.org/

元々はIBMのVisual Age だったのだと思いますが、今はオープンソース化されています。基本的な機能もかって以前のVisual Cafe等を凌駕しています。オープンソースなので当然にタダですから、Javaを趣味で使っている方は使わない手はありません。仕事で使うとしても機能として十分だと思います。

 因みに仕事で殆どJavaを使っていない私は、Javaで時々ツールだけ作りますが、基本的にエディターとjavacだけ使っています。これだと簡単なプログラムは問題ありませんが、複雑になってバグが潜んで来るとブレークホインタとか使いたくなりますが、Eclipseならマウスクリックだけで簡単にブレークポインタは設定出来ます。

 プラグインも豊富で、例えばTOMCAT用のプラグインとかネットから簡単に入手出来ます。自分用のプラグイン自作も難しくはないようで、それなりの発展性を秘めています。Javadocの生成とか、痒いところに手が届く感じで機能が揃っています。JBuilderなんかも勿論ありますが、もはやEclipseで十分と考えています。


9. iTextでPDF作成 (2004.03.16)

 元々はJavaWorldの記事読んでいたのが発端です。[PDF生成用ライブラリ・カタログ]

http://direct.idg.co.jp/detail_1.msp?id=998&class=10005&n=2

この記事の中には幾つかのフリー・有償のライブラリが出てきて、Hobbit'sのように国内で作られたのもあるのですが、iTextがなかなか良いように感じられました。

http://www.lowagie.com/iText/

サイトは英語ですが、PDFには日本語フォントも使えます。サイトの中にかなりのサンプルが載っているので、英語で探せる人は問題ありませんが、それでは困るという方は先ほどのJavaWorldのサンプルソースの中に日本語表示の例が出ています。

ftp://ftp.idg.co.jp/pub/jw/0403/Beginners_PDF.zip


8.Eclipse(2004.03.08)

 今話題のEclipseを試してみました。下記URLから本体と日本語化プラグインがダウンロード出来ます。

http://www.eclipse.org/

このソフトは元々IBMが開発していたものですが、現在はオープンソース化されています。フリーとは言え商用と変わらない機能を提供しています。プロジェクトを作成しクラスを作る手順で例えば定番のHelloWorldなどは、殆ど何もしないで雛型が作られるので、自分では println の本文だけ書くと終わりです。本屋へ行くと多数の参考書が出ていますが、次のURL辺りで勉強すれば本を買う必要もなくEclipseを理解出来ます。 Visual CafeからJBuilderへと来た流れは、これでEclipseへと流れを変えていくのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/eclipse01/eclipse01.html


7.JavaMail(2001.05.29)

 JavaMailを試してみました。Javaはネットワーク機能が優れているので特にJavaMail APIに依存しなくてもメールソフトは書けます。しかしJavaMailを使えば相当に楽になるのも事実です。JavaMailを利用するのには次のものをSunのサイトからダウンロードします。

javamail-1_2.zip

jaf1_0_1.zip

まだ私は購入していませんが、「JavaMail完全解説」という本が出ているようで、この本のサイトからサンプルソースをダウンロード出来ます。またJavaMail Programmingといったサイトもあって簡単な説明も書かれているので、本を買わなくとも学習は可能です。私もこれらサイトを参考にmail送受信プログラムを作ってみましたが、送信・受信とも特に問題なく行なえました。


6.SWINGでJDBC(2001.05.19)

 1998年の後半にJDBCドライバに触ったことがありましたが。久方振りに簡単なプログラムを作ってみました。但しJDBCドライバはJDBC2.0対応のものではないので機能面では以前と大差ありません。Sunのサイトを見てもJDBC2.0正式対応でフリーにダウンロード出来るドライバは見付けていません。2.0対応となるとカーソルが前後に動かせることからプログラミングは楽になります。1.0対応でも前に戻る機能の実現は出来ない訳ではありませんが、効率は良くないでしょう。

 さて今回はSWINGで作ってみましたが、こちらもJDK1.1の時と較べて大きな進展があります。先ずは実行速度が改善された点ですが、更にNetscape6がJDK1.2に対応したので、下図のような感じでブラウザ上で動きます。(但しこれも実質上はJava-pluginです。) 今回Java2に標準搭載されたSWINGを使い幾つか気付いた点がありましたので下記にまとめておきます。

  1. com.sun.java.swingパッケージからjavax.swingパッケージへの変更。
  2. SwingアプレットではFlowLayoutではなくBorderLayoutがデフォルト。
  3. SwingアプレットはContentPaneに対してコンポーネントを追加する。
  4. JTextareaなどのスクロール機能は意識的に実装する。
  5. アプレットとアプリケーション両用にすることができる。

 この中で役に立ちそうなのは5.です。JAppletを継承してinitメソッド内に初期化処理を記述しmainメソッドも書いてあげる等するとアプレットであると同時にアプリケーションとしても動かす事が可能となります。今回作ったプログラムもアプリケーションとしてテストし、その後ブラウザ上での動作を確認しました。


5.うるう年判定(2001.04.07)

 COBOLでもPL/Iでも、うるう年を判定するためにはその都度ロジックを組んでいました。しかしJavaの場合は、そうしたことが可能なクラスが元々用意されているのでそれを使えば事足ります。例えば、うるう年の判定や大小月の判定ということであれば次のようにGregorianCalendarクラスを使います。但しこのクラスは月が0から始まる (0=1月) ので要注意。

import java.util.*;

public class TestCalendar {

	public static void main(String[] args) {

		int year;
		int month;
		int day;

		GregorianCalendar g = new GregorianCalendar();
		year =  g.get( Calendar.YEAR );
		month = g.get( Calendar.MONTH )+1;
		day = g.get( Calendar.DATE );

		System.out.println("year = " + year);
		System.out.println("month = " + month);
		System.out.println("day = " + day);

//  うるう年かどうかの判定
		System.out.println(g.isLeapYear(year));
//  その月の最終日(月末日)は何日
		System.out.println(g.getActualMaximum(Calendar.DATE));
	}
}
			


4.GridBagLayoutを使う(2001.02.17)

 JavaのAWTには5つのレイアウトマネジャーがあります。BorderLayout,CardLayout,FlowLayout,GridLayoutとGridBagLayoutです。はじめの4つは使い方は簡単なのですが、ちよっと凝ったレイアウトにしようとすると結局絶対座標で書くかGridBagLayoutを使うこととなります。GridBagLayoutは他の四つに較べると設定は複雑です。しかし絶対座標で書くことを思えば楽ですし、慣れてしまえば結構使えます。GridBagLayoutはパネル上に架空の格子を作り左上を(0,0)として部品を当てはめて行きます。自分でパネルを使ったプログラムを作りたいという方は是非試してみて下さい。

サンプルソース

パラメタの意味

 gridx gridy 部品の格子上の位置 左上が 0,0
 gridwidth,gridheight 部品の格子上での大きさ
 weightx,weighty その部品のx方向、y方向の重み
 fill その部品が表示マスより大きくなった場合の扱い NONE、BOTH、HORIZONTAL、VERTICAL(=高さだけ大きくする。)
 anchor 部品よりマスが大きい場合の扱い
CENTER,NORTH,NORTHEAST,EAST,SOUTHEAST
SOUTH,SOUTHWEST,WEST,NORTHWEST
 insets 部品の上下左右に空ける間隔をピクセル単位で。
 ipadx,ipady 部品の幅と高さをこの値だけ大きくする。


3.ApacheでTOMCATを使う (2001.01.27)

 ITのページでTOMCATを取り上げたのは去年の7月末でしたが、その後さらにバージョンアップし今は3.2.1です。TOMCATはそれ自身にもHTTPサーバーの機能を内蔵していますが、Apacheに組み込んで、純粋なサーブレット・エンジンとして使うことも可能です。

1.http://jakarta.apache.org/site/binindex.htmlの\win32\i386

 からApacheModuleJServ.dllをダウンロードしApacheのmodulesディレクトリー下に置く。

2.TOMCATのtomcat.conf

 8行目 # LoadModule jserv_module modules/ApacheModuleJServ.dll

 のコメントを外す

 13行目 LoadModule jserv_module libexec/mod_jserv.so

 をコメントにする。

 tomcat.confはapacheから見れるディレクトリー配下に置く。

3.APACHEのhttpd.conf

 最終行に下記追加

 Include c:\jakarta-tomcat\conf\tomcat-apache-conf

 (但しディレクトリーは実際にTOMCATを導入した所とする)

 以上でApache、TOMCATの順で起動し、http://localhost/examples/jsp/としてサンプル画面が表示されればOKです。


2.Java Servlet (2001.01.21)

 Java Servletは本サイトでも過去各所で触れています。先ず実行環境となるサーブレットエンジンですが、apacheのjakartaプロジェクトを見るとTOMCATは既にバージョン3.2.1となっていました。

http://jakarta.apache.org/builds/tomcat/

このサイトから私は jakarta-tomcat-3_2_1.zip をダウンロードしWindowsNT4.0の環境で解凍しました。NTマシンには事前にJDK1.3をインストールしてあります。解凍すると binディレクトリーの中に startup.bat があるのでこれを動かせばTOMCATが起動します。ディフォルトでは8080ポートですのでNetscapeで http://localhost:8080/とすればTOMCATサイトに接続されます。TOPページからServletとJSPのサンプルが実行可能です。JSP (Java Server Pages)は一応スクリプトですが、実際上はServletなので同じものと言えます。Servletはサーバー側で実行されるJavaプログラムであり、ブラウザ側にHTMLを返信することとなります。appletプログラムがAppletクラスを継承するように、servletプログラムはHttpServletクラスを継承します。最も簡単なプログラム下記のようなものとなります。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Hello extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws IOException, ServletException{
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<body>");
  out.println("<head>");
  out.println("<title>Hello</title>");
  out.println("</head>");
  out.println("<body>");
  out.println("<h1>Hello this is small servlet program!!</h1>");
  out.println("</body>");
  out.println("</html>");
 }
}


1.Localeの指定 (2001.01.01)

 Javaはご存知のように内部文字コードをunicodeで保持するなど国際化を良く考慮した言語です。国際化の一つとしてLocaleの指定があります。Win98/JDK1.2の環境で次のソースをコンパイルし実行します。

public class Test {
 public static void main(String args[]) {
  DateFormatSymbols a = new DateFormatSymbols(Locale.JAPAN);
  String sMonth[] = a.getShortMonths();
  for(int i=0; i<12; i++){
   System.out.println(sMonth[i]);
  }
 }
}

 結果は睦月、如月〜師走とはならないで何故か1、2〜12です。ではLocaleにUSを指定するとどうでしょうか? 結果はJan、Feb〜Decとなって結構実用になります。ではCHINAはどうでしょう。これで実行するとなんと一月、二月〜十二月となって寧ろJAPAN向きのような気もしてしまいます。LocaleについてはAPIリファレンスに色々と書かれています。


前ページに戻る---> RETURN