Edited at

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のフレームワークやライブラリ、ソフトウェアリスト