2005年08月14日

JavaによるWebアプリケーション開発:参考書リストとツール

これまでVB中心で開発してきた私がJavaを使ったWebアプリを開発することになった。
Javaについてはほとんど無知の状態で取り掛かり、ほぼ2ヶ月で一応稼動させるところまでこぎつけた。
その際に参考にした書籍や開発ツールを紹介し私なりの評価をしてみたい。

なお、開発環境は以下の通り
---------------------------------------
データベース:Oracle10g(10.1.2)
アプリケーションサーバ:OracleApplicationServer10g(10.0.1.2)J2EE版
開発用アプリケーションサーバ:Tomcat4.1
開発用ツール:Cpad for Java(フリーのエディタ)NECの講習で使ったもの。
帳票作成ツール:ReportsStation2.0 for Java
---------------------------------------
今日からつかえる JSP&サーブレット サンプル集 JSP2.0+サーブレット2.4対応版
開発への貢献度・・・・★★★

本当はもっと貢献度が上がるはずだったが、OracleApplicationSever10gがJSP2.0/Servlet2.4に未対応だったため、旧版(下に紹介)を利用することになったことで星3つ。内容的は旧版の焼き直しでは無く、全く新しいアプローチ(新仕様に対応)で刷新されているところが凄いと思う。
私がこの著者(山田祥寛氏)が只者でないことを知った作品でもある。
今日からつかえるJSP&サーブレットサンプル集 応用編
開発への貢献度・・・・★★★★★

OracleApplicationServer10gがJSP1.2/Servlet2.3というJ2EE1.3仕様であることが開発途中で知り、新版のサンプルが利用できないため購入した。
特に第3章のログインから始まり登録・検索・管理・ログアウトの流れの基本が大いに参考になった。そのまま利用させてもらった箇所もいっぱいある。
無駄なコーディングをするのではなく、部品化し再利用可能な形でまとめる工夫が大いに為になった。
ちなみに、私が一番最初にやったことは、この本のサンプルをMySQLからOracle仕様に変更して動作させることだった。
サーブレット&JSP逆引き大全 500の極意
開発への貢献度・・・・★★★★

山田氏の著作はシステム開発の全体像を数々のサンプルで教えてくれた。が、実際のコーディング現場では細々した処理が多々ある。
それにはその処理だけの参考資料が必要だ。それを提供してくれるのがこの本である。秀和システムの「逆引き大全」シリーズはこういう場合にもっとも利用価値が高い書籍である。
明解JSP&Servletプログラミング入門
開発への貢献度・・・・★★★

NECのJava講習会を受講した後、復習用のテキストに買った。本の内容が講習の内容に近かったからでもある。
講習会はTomcat5だったが、この本はTomcat4.1を使っている。
本番用のOracleApplicationServer10gに移行する前にまず同じJ2EE1.3仕様のTomcat4.1で確認するには、この本の内容は参考になった。
最新Java逆引き大全 550の極意
開発への貢献度・・・・★★★

JSP/サーブレットといってもJava言語だからコーディング上の疑問・エラー対応に活用した。
特に文字列の処理(変換・抽出・検索)や日付型データの処理(日付の書式)、テキスト出力方法等。
それにしても、VBで使い慣れた変数の型変換(文字列を数値、数値を文字列、日付型文字列と日付型変数への相互変換)には、とても苦労させられた。なんでこんなことが簡単に出来ないのかとJavaを呪った(^^#
実践JDBC―そのまま使えるサンプルコード100選
開発への貢献度・・・・★★★★

Javaでデータベースを扱うときにJDBCは必須である。ところが参考書に載っているデータベースの扱いはあまりに初歩的というかワンパターンで、実際のシステムでは使い勝手が悪いものばかりである。
従来VBで行ってきた処理を模倣しようとすると参考になる資料がどこにも載っていない。
そうしたときに見つけたJDBC操作のバイブル的な参考書がこの本である。
JSP&サーブレットスーパーリファレンス―JSP2.0+サーブレット2.4完全対応
開発への貢献度・・・・★★

山田氏の著作で、内容はそれなり良い。
貢献度が低いのは使い勝手の悪さのためである。
一番の問題は初心者に優しい索引になっていないことだ。索引が階層になっていて、ダイレクトに知りたいメソッド・プロパティ等が見つけられない。
初心者はそのメソッドやプロパティがどのクラス、ライブラリ、インターフェースにあるのか知らないのだ。
索引さえ改善されればもっと活用できると思う。
ホームページ作りにそのまま使えるJavaScript例文活用辞典
開発への貢献度・・・・★★★★

JAVAだけでなく全てのWebアプリはサーバーサイドの処理と同時にクライアント(ブラウザ)サイドの処理も大変重要になる。そこで活躍するのがJavaScriptであるが、この本のサンプルはそうした処理の際に直面する疑問に具体例で回答を与えてくれる。特にフォーム内容の取得やチェックに豊富なサンプルで説明があるので即利用できる。
改訂第3版 Java Scriptポケットリファレンス
開発への貢献度・・・・★★★

上記JavaScirpt例文活用辞典の著者が書いたリファレンスである。
イベントやプロパティの確認に利用した。
上の辞典とこれがあればJavaScriptは何も怖くないといえる。
Oracle逆引き大全550の極意―プログラミング編
開発への貢献度・・・・★★★

JDBCとはいっても、扱うデータベースによって提供される機能や処理手順は異なるからOracle用JDBCの扱いに参考にした。
改訂 新Java言語入門 ビギナー編
開発への貢献度・・・・★★★★

Javaを勉強するために最初に買った参考書がこれである。著者の本は以前にもC言語やC++言語の勉強のために買ったことがあるが、これが一番利用した本かもしれない。
開発中にJavaの基本構文・制御文・演算子を忘れてしまうことがたびたびあり、その都度開いて確認した。



これらの参考書の中では、山田祥寛氏[関連サイト:Wings]の著作が大変参考になった。
これまで様々な教則本・参考書・サンプル集をみてきたが、この著者のものは分りやすさ・サンプルの実用性・ロジックのスマートさと三拍子そろった高品位の優れもので感動した。読者のレベルもそれ相当に要求されるしシステムに取り込むにはそれなりに苦労させられたが、質の良いサンプルを使いこなせれば自分の質も向上するという良い見本になった。


帳票作成にはJava版ツールを幾つか検討したが、サンプル帳票の出来栄えを見て「ReportsStation」を使うことにした。これはVBでもよく利用したCrystalReportsのようにフォームデザインを別に用意して、これとデータをマージさせて帳票を作成するものである。Windows(.NET)版とJava版があるが、フォームはどちらでも利用できるので両方を手がけるものにとっては効率的な開発が可能だ。
フォームを編集するエディタはCrystalReportsより使い勝手がよく、レイヤーがあるので、作業単位ごとにレイヤーを用意し、罫線やラベルなどの固定データに邪魔されること無くデザインできる点が良い。
唯一の欠点といえば、ラベル印刷のように、固定フォーマットを一枚の用紙内部に複数印刷させる機能が無いことだ。この場合は一枚の用紙に配置するデータを1レコードとして用意する必要がある。つまりワークデータ1レコード分にオリジナルデータ数レコード分を詰め込むことになる。JDBCから読み込みも可能なようだが、csvにフォーマット済みデータを出力してそれをフォームとマージする方法をとっている。これはCDに付属のサンプルを利用して手っ取り早くやろうとした結果であるが十分実用に耐える。


開発ツールは当初Oracle JDeveloper10gを使うつもりでいた。だがこれは諦めた。どうやってもサンプルを動かすことが出来なかった。問題は、パスの問題である。実行時のパスをハードコーティング(ソースに直接記述)せざるを得ないので、どうしてもエラーになってしまう。
開発ツールでは、デバッグのために特殊なパスを利用して動作させているためどうしてもパス(URL)が合わないのである。そこでフリーのエディタ(NECの講習会で使用したCPad for Java2 SDK)でコーディングし、コンパイルしてTomcat4.1でテストし、動作確認後warファイルに変換しOracleApplicationServer10gにデプロイするという流れで開発を進めた。
デプロイは本当に簡単で、拍子抜けするほどだった。Windowsアプリの配布と比べると遥かに楽である。このあたりはJavaの仕様の厳格さを感じる。
Tomcat4.1はサービスとして実行させないで、コンソール画面を表示させる起動方法をとっている。これの良いところはSystem.out.println()を使いデバッグが行えることだ。Java専用開発ツールを使わない環境ではこれが大変重宝した。


posted by なっちゃん at 23:41| 静岡 ☁| ソフトウェア | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。