Java開発環境¶
- 目次
- Java開発環境
Java SE Development Kit¶
Javaのコンパイラ、開発コマンド、Java実行環境を含んだツール集です。
Oracle Java SE Development Kit¶
OpenJDK¶
JDKパッケージ管理¶
Windows¶
mise¶
JDK搭載ツール¶
- javapackager JDK 11以降は搭載されなくなりました
- jpackage JDK 14以降に搭載された、javapackager後継ツール
- jigsaw試行錯誤
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サイトでソースが公開されています。
- Scene Builderの構築
Scene Builderのソースコードを入手しビルドしてバイナリを作成する手順(Gluon社のGithubリポジトリ) - Scene Builderの構築(旧)
Scene Builderのソースコードを入手しビルドしてバイナリを作成する手順(JDK 8/Scenen Builder 8までの古い手順) - Scene Builderのバイナリ公開サイト(Gluon)
Scene Builderの各OS向けインストーラを作成・公開しています。 - Scene Builderのインストール
ビルド環境¶
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)
コンパイル関連¶
逆コンパイラ¶
インストール¶
ライブラリのインストール¶
Webアプリケーション環境¶
アプリケーションサーバー¶
Jakarta EE(旧Java EE)仕様に基づくアプリケーションの開発・実行には、アプリケーションサーバーを利用します。
アプリケーションサーバーには、Jakarta EEの機能を網羅する製品、Jakarta EEのうちWebアプリケーション向けのサブセットであるWeb Profileの機能を提供する製品、Servlet, JSPなどJakarta EEの一部の仕様を提供するTomcatのようにサーブレットコンテナ製品などがあります。
データベース¶
Java開発環境構築例¶