プロジェクト

全般

プロフィール

Java開発環境

Java SE Development Kit

Javaのコンパイラ、開発コマンド、Java実行環境を含んだツール集です。

Oracle Java SE Development Kit

OpenJDK

JDK搭載ツール

JDK環境設定

統合開発環境(IDE)

Javaの開発には、統合開発環境(IDE: Integrated Development Environment)と呼ぶジャンルの開発ツールを使用することが多いです。エディタとコマンドラインのコンパイル・実行に比べ、ビルドプロジェクトの生成、依存ライブラリの管理、エディット中のコード記述支援、文法チェック、リファクタリング、ユニットテスト、デバッガー、プロファイラー、リリースアーティファクト作成などの機能が搭載されているので開発効率がとても良いものです。

主要なIDE

2010年頃の情勢

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

2023年の情勢

IntelliJ IDEAとEclipseがトップ2を、そのあとにはVisual Studio Codeが使われているという状況です。NetBeansも残っています。

https://www.jrebel.com/blog/best-java-ide

NetBeans

Eclipse

IntelliJ IDEA

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

Visual Studio Code

Visual Studio Code は、プログラミング向きのエディタですが、割と高機能でIDEに準じるレベルになっているようです。

GUIデザイン

Scene Builder

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

ビルド環境

Javaのソースファイルから必要な成果物を生成するためのツールです。
昔はソースファイルからクラスファイルを生成し、JARファイルを生成する程度でしたが、昨今では必要な依存物をリポジトリからダウンロードしたり、ユニットテストや静的検証を実施するといった高度な作業を実施するようになってきました。
さらに、Javaはマルチプラットフォーム環境で使用されるので、ビルド環境もLinux、Windows、MacOSで共通に利用できることが望ましいです。そこで、Javaのビルドツールはマルチプラットフォーム環境で共通に利用できるものが揃っています。

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のスクリプト(またはKotlinのスクリプト)で設定を記述し、手続き的に設定を記述するビルドツールとして登場しました。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

バイトコードをパースして、バグパターンを検出します。コードフローを解析してリークの原因などを検出する能力が高いです。
FindBugsはJDK 8対応のバージョン3.0.1(2015年リリース)で開発が止まっているので、JDK 11以降で利用する場合はSpotBugs1を使うのがよいでしょう。

1 SpotBugsは、FindBugsをフォークし独自の開発が継続しています。
https://spotbugs.github.io/

Error Prone

Googleが提供している、バグパターンに合致するコードを検出するツール。

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

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

ユニットテストツール

JUnit

カバレッジツール

メモリリーク

VisualVM

Java SE 8まではJDKに同梱されていた性能計測ツール。Java SE 9以降はオープンソースとして独立。CPU使用率、GCの活動、ヒープメモリ、スレッドなどの監視と計測が行えます。

性能解析

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

コンパイル関連

逆コンパイラ

インストール

ライブラリのインストール

Java開発環境構築例


4ヶ月前に更新