Java
ツール
ライブラリ

Javaを使うなら知っておきたい技術、フレームワーク、ライブラリ、ツールまとめ

Javaの開発と言っても、各種ミドルウェアやフレームワーク、ライブラリ、ツールなどが豊富にあり選択に悩むことは少なくないと思います。
そこで関連技術のインデックスになればと作成しました。

あくまで知っている範囲で記述しているので、コメントしてもらえれば随時追加します!

すべてを書くと膨大な量になるため、現状採用が減ってきているものや、そもそもあまり採用されていないもの、後継があったり、類似のものと比較した場合に明らかに劣っているものは省いています。

ちなみにライブラリには高機能なものも多いので、分類は参考程度にご覧下さい。

サーバ系

  • Apache HTTP Server
    世界中でもっとも多く使われているWebサーバ。

  • nginx
    フリーかつオープンソースのWebサーバで、処理性能・高い並行性・メモリ使用量の小ささに焦点を当てて開発されている。

  • Tomcat
    Java ServletやJSPを処理するオープンソースのアプリケーションサーバ。

  • Jetty
    単純で効率的な組み込みやすいWebサーバとなるよう意図して開発されたアプリケーションサーバ。

  • WebLogic
    Oracleが開発・販売する、商用Java EE対応のアプリケーションサーバ。

  • GlassFish
    オープンソースで開発されている、Java EE対応のアプリケーションサーバ。

  • Payara Micro
    GlassFishからフォークしてライブラリのバージョンアップやバグフィックスが行われているPayaraのマイクロサービス向けビルド。

  • WildFly(JBoss)
    Redhatが開発・販売する、Java EE対応のアプリケーションサーバ。

  • WebSphere(Liberty Profile)
    IBMが開発・販売する、Java EE対応のアプリケーションサーバー。

IDE

  • Eclipse
    Javaで最も普及しているオープンソースのIDE。

  • IntelliJ IDEA
    JetBrainsが開発したIDE。ZeroTurnaroundの調査によると、JavaのIDEとしてはEclipseに続いて2番人気。

  • NetBeans
    Oracleが中心としたコミュニティで開発されているIDE。

標準API系

  • Java SE(Java Platform, Standard Edition)
    多くのJavaプラットフォームプログラムで役立つJava APIの集合体である。
    Java SEでは標準的な機能のみが定められており、サーバ向けの機能についてはJava SEを拡張したJava EEにて定義されている。

  • Java EE(Java Platform, Enterprise Edition)
    Javaの企業用機能セット。JavaSEにサーバ関係のライブラリなどを追加したもので、ベースはJavaSEそのもの。
    JavaEE SDKは、JavaSE+JavaEE用ライブラリ+標準JavaEEサーバ+各種ドキュメントからなる。

  • Java ME(Java Platform, Micro Edition)
    Java Platform Java ME (Java Platform, Micro Edition) 組み込み向けの機能セット Java SE のサブセット+組み込み向けAPI。

  • JavaFX
    Swingに代わる Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリ。Java SE 7 Update 2以降に標準搭載されている。

フレームワーク系

  • Spring
    狭義の意味ではDI、AOP、MVC、ORMなどを含んだフルスタックフレームワーク(Spring framework)。
    広義の意味ではSpring Projectを指しており、多数の機能やフレームワークなどに別れたサブプロジェクトを持つ。

  • Play Framework
    CoCやホットリローディング、エラーのブラウザ上への表示といった方針により、開発者の生産性を上げることを目的としているMVCフレームワーク。

テンプレートエンジン

  • Thymeleaf
    XML/XHTML/HTML5テンプレートエンジンで、一般的なアプリケーションを通して表示するだけでなく、拡張子に.htmlを採用しているため、コンパイル無しでもブラウザで表示ができる。

  • Mustache.java
    Java以外にRuby, JavaScript, Python, PHP, Go, Scala, node.js他多数の言語で使用可能なテンプレートエンジン。

  • Apache Velocity
    HTMLだけでなくXMLやSQL文などテキストファイルならどのようなものにでも適用できる高い汎用性をもっているテンプレートエンジン。

データベース系

  • Hibernate
    データベースアクセスを直接高レベルなオブジェクト操作機能に置換することで、ドメインモデルを関係データベースにマッピングするフレームワーク。

  • MyBatis
    XMLまたはアノテーションを用いてSQLをオブジェクトと紐付けるフレームワーク。
    他のORMとは異なりDBとオブジェクトのマッピングではなく、SQL文とオブジェクトのマッピングを行うため、レガシーな環境や非正規化されたDBでも有用。

  • jOOQ
    SQLライクなクエリービルダーや自動生成したクラスによる型安全を目指したORM。

  • Doma
    注釈処理を利用したコード生成、検証、2-way SQLによるSQLテンプレート、Java 8標準対応などの特徴を持った安全でシンプルなORM。

  • H2 Database
    Javaプラットフォーム上で動き、組み込み、クライアント・サーバーモードでも動作する、高速・軽量なデータベース。

  • Flyway
    複数人でのアプリケーション開発時のDBマイグレーション作業を素早く手軽に行うことができるDBマイグレーションフレームワーク。

  • Commons DbUtils
    関係データベース(JDBC)へのアクセスを容易にするライブラリ。

オブジェクトマッピング・帳票出力系

  • Jackson
    JavaオブジェクトとJSONの相互変換を行う高機能なライブラリ。

  • Gson
    JavaオブジェクトとJSONの相互変換をシンプルに行うライブラリ。

  • XStream
    JavaオブジェクトとXMLの相互変換を行うライブラリ。

  • dom4j
    XMLをDOMツリーとして使うためのライブラリ。

  • OrangeSignal CSV
    CSV入出力操作を簡易化させる高機能なライブラリ。

  • POI
    WordやExcelといったMicrosoft Office形式のファイルを読み書きできるライブラリ。

  • XLSBeans
    アノテーションを付与してJavaオブジェクトとExcelをマッピングするライブラリ。

  • jXLS
    Excel出力を行うためのテンプレートエンジンライブラリ。

  • Apache PDFBox
    JavaでPDFを使うためのライブラリ。

  • JasperReports
    PDF/HTML/Excel/CSV/XML/プリンタダイレクトなど様々な帳票出力に対応したライブラリ。

テスト系

  • JUnit
    Javaでユニットテストの自動化を行うためのフレームワーク。

  • testNG
    JUnitとNUnitに触発されたテスティングフレームワーク。

  • Spock
    Groovyで記述する、JavaとGroobyのためのテスティングフレームワーク。

  • Geb
    SeleniumのWebDriverとJQueryライクな記述でWebアプリケーション向けのテストを自動化するためのライブラリ。

  • JMockit
    jMockやEasyMock、Mockitoなど他のライブラリと比べ、高機能なモックライブラリ。

  • AssertJ
    流れるインターフェイスで、IDEの補完も有効活用出来るAssertを行うためのライブラリ。

ログ系

  • Logback
    log4jの開発者が作った後継的な実装ライブラリ。

  • log4j2
    log4jの最新バージョン。1.x系に比べ機能向上、機能追加が行われたライブラリ。

  • SLF4J
    ログ出力のためのインターフェイス。別途アダプターライブラリを経由してlog4jやlogbackなどの実装を利用する。

各種ライブラリ系

  • Guava
    Googleによって開発された、ユーティリティライブラリ。
    単純なユーティリティとしての機能だけでなく関数型プログラミング、Immutable Collection、キャッシュ、ハッシュなどをサポートする。

  • Caffeine
    Guavaからインスパイアを受けた、キャッシュライブラリ。

  • Lombok
    AST変換によりJava特有の冗長なコードを簡潔に記述するためのライブラリ。

  • Immutables
    Annotation processorによって値クラスを生成するためのライブラリ。

  • AutoValue
    Google製のボイラープレートコードを削減するためのライブラリ。

  • Guice
    アノテーションを使用した依存性の注入 (DI)ライブラリ。JSR 330のリファレンス実装。

  • RxJava
    JavaでReactive Programmingを可能にするためのライブラリ。

  • Reactor
    Pivotalが開発している、Reactive Streamsの実装の一つ。

  • Jersey
    RESTアーキテクチャにのっとってwebアプリケーションを記述するためのライブラリ。JAX-RSのリファレンス実装。

  • Retrofit
    型安全性を重視したHttpクライアント。

  • Jsoup
    jQuery風HTMLを解析・操作するライブラリ。

  • Ehcache
    高速・シンプル・軽量なキャッシュライブラリ。

  • ModelMapper
    高機能でカスタマイズ性も高いオブジェクトマッピングライブラリ。

  • MapStruct
    Annotation processorを使用したタイプセーフなオブジェクトマッピングライブラリ。

  • Functional Java
    Scalazの主要コミッターも参加する関数型プログラミングのためのライブラリ。

  • Vavr
    Java 8以降向けの関数型プログラミングライブラリ。

  • Quartz
    指定時間や特定の周期で実行したいジョブをcronの用にスケジュール・コントロールする機能を提供するライブラリ。

  • Joda Time
    Javaで扱いづらい日付関連を便利にするライブラリ。

  • Holiday.java
    日本の祝祭日判定を行うライブラリ。

  • Twitter4J
    JavaでTwitterを扱うためのライブラリ。

  • Kaptcha
    画像認証を行うためのライブラリ

  • ZXing
    様々なバーコード形式に対応したのデコード・エンコードライブラリ。

  • QRCode for Java
    QRコードのデコード・エンコードライブラリ。

  • ROME
    RSSを生成・取得・解析するためのライブラリ。

  • JSch
    JavaからSSHを行うためのライブラリ。

  • Commons Lang
    Javaのjava.langパッケージを拡張するライブラリ。

  • Commons IO
    Javaのjava.ioパッケージを拡張するライブラリ。

  • Commons Compress
    ファイル圧縮に関するライブラリ。

  • Commons Codec
    エンコード、デコードに関するライブラリ。

  • Commons BeanUtils
    Java Beansなどで利用出来るユーティリティライブラリ。

  • Commons FileUpload
    Java Servlet/JSPでのファイルアップロードをサポートするライブラリ。

  • Commons CLI
    Javaプログラムのオプションを含んだ引数を解析するためのライブラリ。Usageの作成もできる。

  • args4j
    Javaプログラムのオプションを含んだ引数を解析するためのライブラリ。アノテーションベースでUsageの作成もできる。

ビルドツール

  • Gradle
    AntとMavenのいい部分を組み合わせたGroovyで記述するビルドツール。

  • Apache Maven
    プロジェクト情報の一元管理、統一したビルドプロセスの提供、依存ライブラリの管理、 プラグイン拡張などによりプロジェクト管理を行うビルドツール。

その他ツール

  • JaCoCo
    EclEmmaの開発チームが開発したカバレッジ測定ツール。

  • FindBugs
    ソースコードからバグの可能性がある部分を静的解析するツール。

  • Checkstyle
    コーディング規約をチェックするための静的解析ツール。

JVM言語

  • Scala
    オブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語。

  • Groovy
    Javaの資産を利用可能でDSLなどの開発が得意なスクリプト言語。

  • Kotlin
    Javaよりも簡潔で安全なコードを書け、型推論やラムダ式,トレイトなどのモダンな文法,機能を持った静的型付けのオブジェクト指向言語。

  • Clojure
    マルチスレッドプログラムの開発を容易化するLisp系の関数型プログラミング言語。

  • Ceylon
    Javaの問題を解決しつつも、最近流行のScalaの言語仕様の複雑さを出来るだけ押さえたプログラミング言語。

情報ページ

  • Awesome Java Javaのフレームワークやライブラリ、ソフトウェアリスト