およそ10年ぶりに仕事でJavaを使うことになりそうです(C#を推す人がいるらしいので決定ではないが)。とりあえず、ツールセットの再確認から(フリーのツール編)
ビルドツール
10年前は、Antが登場するちょっと前で、バッチコマンド(シェルスクリプト)でjavacコマンドを呼び出すか、make/nmakeでjavacコマンドを呼び出すか、でした。
(個人的にはSmartMakeを使ってMakefileを生成していましたが)
いまでは、Antか、Mavenか、Ivy(+Ant)か、といったところのようですが、さて、どれにしたものか・・・
参考
議論:Mavenはビルドに適したツールか?
Mavenの賛否両論が掲載されているので、比較検討のよい参照となります。生半可な知識でMavenを使うと怪我の元、ただし使いこなせば強力なツールというところか。
万人のためのオートメーション: Ivy による依存関係の管理
Ivyは今回ビルドツールを調べて初めて知ったもの。
継続的インテグレーションツール
10年前にちょうどエクストリームプログラミングが登場し、「継続的インテグレーション」がプラクティスとして紹介されました。今ではいくつかツールが登場し、プラクティスの実施がずいぶんと容易になりました。
今のプロジェクトではHudsonを使ってC++のアプリケーションソースをビルドしているので、慣れたHudsonがいいなと思っていますが、候補となる他のツールには、Apache Continuum、CruiseControlあたりでしょうか。
ソースコード静的検証ツール
10年前は、JLint位しかなかったのが、CheckstyleやPMD、FindBugs、Hammurapi、JCSC、lint4jなど多数のオープンソースツールが登場してきました。商用製品でもこの分野は幾種類も出ています。
参考
Bill Pugh氏によるFindBugs 1.3.9がリリース
http://japan.internet.com/developer/20060523/25.html
Checkstyleの使い方とルールのカスタマイズ
djUnit
FindBugsとPMDの比較(というか双方の使い方概説)
メトリクス計測ツール
ソースコード静的検証ツールに分類できると思われるが、ツールが多いので分けました。
ツール一覧
CyVis - Software Complexity Visualiser
McCabeの循環複雑度
SourceMonitor V3.5
循環複雑度を含むいくつかのメトリクス
ソースコードのメトリクス(品質測定)を行うツール - ふにゃるん
SourceMonitorの紹介日記
JavaNCSS - A Source Measurement Suite for Java
循環複雑度を含むいくつかのメトリクス
GitHub - clarkware/jdepend: A Java package dependency analyzer that generates design quality metrics.
依存関係に関するメトリクス
Eclipse Metrics Plugin - State Of Flow
Eclipseのプラグイン、循環複雑度、LCOM、他
Metrics 1.3.6
Eclipseのプラグイン
xore.de - このウェブサイトは販売用です! - xore リソースおよび情報
Eclipseのプラグイン
Crap4j Home
循環複雑度と自動テスト実行時のカバレッジから問題点を定量評価
動的検証(メモリリーク、プロファイル)ツール
10年前は、商用のOptimizeItやJProbeを使っていました。しかし、最近はオープンソースなツールが出ています。
Java JDK標準のjhat、NetBeans搭載プロファイラ、Eclipse TPTP
参考
「Java SE 6完全攻略」第5回 プロファイラ hprofとよき相棒 jhat | 日経 xTECH(クロステック)
jhatの紹介
NetBeans IDE - Testing and Code Analysis
NetBeans 6.8のプロファイラ紹介、CPU、メモリ使用調査。
ドキュメント生成
ソースコードコメントからのAPIドキュメント生成はJDK標準のjavadoc、それからdoxygenがありますが、ここはjavadocでよいでしょう。
参考資料
エンジニアのためのJavadoc再入門講座 現場で使えるAPI仕様書の作り方
- 作者: 佐藤竜一
- 出版社/メーカー: 翔泳社
- 発売日: 2009/06/30
- メディア: 単行本(ソフトカバー)
- 購入: 15人 クリック: 263回
- この商品を含むブログ (49件) を見る
エディタ
統合開発環境としては、Eclipse、NetBeans、最近フリーのCommunity版が登場したIntelliJ IDEAあたりがあります。コード補完機能が強力過ぎるので、このいずれかを使うのが定番です。
(個人的にはEmacs+JDEEで頑張っているところですが・・・)