昨年の4月頃から仕事で本格的にJavaを使い始めました。ちなみにそれまでの自分の仕事をざっと言語別にみると「Perl、
ActionScript、JavaScript、(時々)PHP」という感じで、いわゆるスクリプト言語が殆どでした。しかしここ1年を見ると、サーバーサイド言語に関してはPerlよりもJavaが多くなり、クライアントサイドがJavaScriptとActionScript、そしてバッジ処理、テキスト処理等の部分でPerlを使うという具合に変わってきています。
最初のうちはJavaという慣れないプラットフォームに戸惑いましたが、周囲にいらっしゃる優秀なJavaプログラマーの皆さんのおかげで、なんとか仕事で使えるレベルまで到達してきました。またスクリプト言語とJavaの双方を経験することにより、お互いの良いところ、あるいは足りないところを再認識できたのも、自分にとっての大きな収穫でした。
そこで今回は、私の感じたプラットフォームとしてのJavaが優れていると思った点をメモしてみたいと思います。
1. VMの存在
- JavaVM(Java仮想マシン)のおかげで、開発環境や実運用環境の構築の際に、OSの種類やバージョン等に振り回されることが少なくなりました。JavaVMという仮想世界に閉じこもることのできないスクリプト言語では、そうはいかない場合が多いのです。そういう意味で、Perl6から導入されるであろうParrotに期待しています。
2. DIとAOP
- Depandency Injection(依存性注入)とAOP(アスペクト指向プログラミング)。これらの概念が最も浸透している言語のひとつがJavaだと思います。DIとAOPについての詳しい説明はここでは省きますが、極めて平たく言うと、部品(オブジェクト)同士の依存関係を切り詰めることによって、全体の柔軟性を高めることが可能となり、その結果、メンテナンス性が高まるとか、テストがやり易くなる等のメリットを享受することができるというものです。特に規模の大きなプロジェクトでその効力を発揮します。ちなみに私はSeasar2というフレームワークをメインで使っています。
- DIもAOPもスクリプト言語ではあまり馴染のない概念ですが、現在私はPerlのDIフレームワークであるBread::Boardを弄っています。Perlの場合、Mooseあるいは将来登場するPerl6のように、成熟した純然たるオブジェクト指向で書けるようになるつれて、DIや
AOPのような概念がどんどん普及してくるのではないかと思っています。そういう意味で近い将来に期待したいと思います。
3. 周辺技術の充実
1. IDE
スクリプト言語のコーディングやXHTMLのマークアップの際にはVimかEmacsを使いますが、Javaプログラミングでは専らElipse
を使っています。Javaのように静的な型付けをする言語の場合、型を補完したりチェックしてくれるIDEがないとかなり厳しいと思います。定番と呼ばれるものには、それなりの理由があって、Eclipseの場合も慣れてしまえば本当に便利なツールになるはずです。
2. Maven
プロジェクトのスケルトン作成、依存ライブラリの管理、ビルド、テスト、そしてデプロイ(サーバーへの配備)まで、一貫して面倒を見てくれるツールです。スクリプト言語の場合だと、複数のツールをいろいろ組み合わせて実現するようなことを、Mavenの場合には、これひとつで一貫してできるというのがポイントです。また意外と柔軟性もあって、豊富なpluginを使ってさらに便利に拡張することも可能ですし、Antやシェルスクリプトなど他のツールと組み合わせて使うこともできます。最初のうちはMavenの仕様というか哲学みたいなものを理解するのに時間がかかりましたが、理解が深まるにつれて、とても便利なツールだということを実感しました。
3. Tomcat
実績のある定番アプリケーションサーバーの存在は、特に実運用の際に心強いものです。スクリプト言語にもそれぞれ定番の運用環境はあるものの、
Tomcatほど簡単に設置できるものは見かけません。やはりここでもプラットフォームの差異を吸収してくれるVMの存在が大きいのかも知れません。
4. CIツール
有名なものとしてはHudsonとContiniumがあります。言語を問わずソフトウェアの品質を維持・管理する上で、「コンピューターにできることは、できる限り自動的にそして定期的にコンピューターにやらせる」というのはとても大切なことだと思います。私も今後はこのCI(継続的インテグレーション)という概念を、スクリプト言語にも積極的に取り入れたいと思っています。
5. 豊富な情報量
これは書店の技術書のコーナーへ行くとわかるのですが、プログラミング言語の場合、おそらくJavaに関する書籍の数が最も多いのではないでしょうか?英語が苦にならないような現場ならば別ですが、大抵の場合、日本語の情報量が豊富というのは、かなり重要な要因になると思います。
以上、大雑把ですが、ざっとまとめてみました。今後もJavaとスクリプト言語のお互いの良いところを取り入れながら、適材適所で上手く使い分けていきたいと思います。