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