プロジェクト

全般

プロフィール

Java開発環境

Oracle Java SE Development Kit

JDK搭載ツール

統合開発環境(IDE)

2013年から2014年にかけてのJavaアプリケーション開発用のIDEは、3大頂上決戦 といわれるNetBeans IDE、Eclipse、IntelliJ IDEAの3つに代表されています。

NetBeans

Eclipse

IntelliJ IDEA

商用製品(機能を限定したCommunity Edition、用途を限定したアカデミックライセンス、オープンソース開発ライセンスは無償)。

GUIデザイン

Scene Builder

JavaFXの画面をビジュアルにデザインするツールで、FXMLを生成します。OpenJFXサイトでソースが公開されています。

ビルド環境

Javaのソースファイルから必要な成果物を生成するためのツールです。
昔はソースファイルからクラスファイルを生成し、JARファイルを生成する程度でしたが、昨今では必要な依存物をリポジトリからダウンロードしたり、ユニットテストや静的検証を実施するといった高度な作業を実施するようになってきました。

Ant

http://ant.apache.org/
ツールのイメージは、UNIX古来のMakefileをXML形式で記述する感じです。ビルド設定をXMLで記述し、Javaで実行するツールなのでプラットフォーム依存がほとんどなく、マルチプラットフォームで使えるビルドツールとなっています。ビルド対象プログラミング言語もJavaに限定されません。
汎用性が高いので、依存物の管理などは一から書く必要があります。なお、NetBeansは標準でAntを使ったビルド設定を使うので、NetBeansで作業していれば一から記述する必要はありません。自由度が高いので、いろいろな形態に対応できます。

Maven

http://maven.apache.org/
ツールのイメージは、お決まりの作法でディレクトリ構成を作っていれば呪文一発でビルドができるといったものです。オープンソースのライブラリを駆使しているプログラムでは、ライブラリの管理をMavenがしてくれるので(Mavenリポジトリ)、開発環境にライブラリ群を構築する手間をMavenまかせにできるので、かなり作業は楽になります。
ただし、作法を守らないということを聞いてくれないし、拡張機能を用意するには難しいMaven Pluginを作らないといけないし、インターネットから隔離された開発環境ではメリットである依存ライブラリの管理が大変になるなど自由度は低くなっています。

Gradle

http://www.gradle.org/
XML形式で設定を書くのが大変、宣言的(推移的)に設定を記述するのは分かりにくい、といったことから、Groovyのスクリプトで設定を記述し、手続き的に設定を記述するビルドツールとして登場しました。Mavenなどの他のツールのリポジトリをちゃっかり利用できる機能と、自由度の高さとが既存のビルドツールに苦労した人のハートを射止めているようです。

JDK標準ツールで頑張る

Java SE概要
Java SE 7 JDKの開発ツール
いざというときのために、JDK標準ツールでコンパイル、JAR生成を知っておいた方がいいと思います。普段ビルドツールを使ってビルドしているプログラムを、JDKのコマンドで手作業でビルドしてみると、スキルが身につきます。
JDK 7のアップデートから、javafxpackager(JDK 8からはjavapackagerに改名)というインストーラ(Windows OSだったらmsi形式ほか、Linux OSだったらrpm形式ほか)を作成するコマンドも追加されていますのでなかなかあなどれないかも。

継続的インテグレーション環境

継続的インテグレーション(CI:Continuous Integration)を実現する、自動化ツールです。

Jenkins(旧名Hudson)

ビルド・テストの自動化ツールの定番です。

静的検証ツール

ソースコード、またはバイトコードを対象として(つまりプログラムを実行することなく)、コードの検証を行うツールです。スタイル、命名規約、ドキュメントコメントの不足、非推奨なコード、バグの可能性のあるコードなどを検出します。

Checkstyle

ソースコードをパースして書式、命名規約、Javadocコメント、final修飾、必須メソッド欠如、コードサイズや循環複雑度違反などを検出します。

PMD

ソースコードをパースして、書式、命名、様々なバグパターンを検出します。CheckstyleやFindBugsと被る領域があります。
Java PMD

FindBugs

バイトコードをパースして、バグパターンを検出します。コードフローを解析してリークの原因などを検出する能力が高いです。

ユニットテスト・動的検証ツール

プログラムを実行してプログラムのどの部分が実行されたかのカバレッジ計測、メモリ等のリソースの使い方やパフォーマンス面を検証する動的検証ツールと、開発途中のプログラムを実行するためのテストツールです。

ユニットテストツール

JUnit

カバレッジツール

メモリリーク

性能解析

  • Java Flight Recorder
  • JMH(Java Harness for building, running, and analysing nano/micro/milli/macro benchmarks)

コンパイル関連

逆コンパイラ

Java開発環境構築例

クリップボードから画像を追加 (サイズの上限: 1 GB)