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