はじめに
これは, Awesome Java の日本語訳兼自分用メモです.
Awesome Java
素晴しい Java フレームワーク, ライブラリ, ソフトウェアの一覧
Ancients
今後も長い間使われ続けるであろう, 古くからあるライブラリ, ソフトウェア
- Apache Ant - XMLとビルドプロセス管理.
- Apache Hadoop - コモディティ・ハードウェア・クラスタ上のデータ・セットストレージと大規模処理.
- Apache OpenNLP - トークン化などの一般的なタスクのためのツールキット.
- Apache Velocity - 一般的なHTMLページ, 電子メールまたはソースコード生成のためのテンプレート.
- FreeMarker - 軽量で依存関係のない, 一般的なテンプレートエンジン.
- GlassFish - Oracle が主の Java EE のアプリケーションサーバーと参照実装.
- GWT - Java から JavaScript へのコンパイラ, クライアント側のコード, XML パーサー, RPC の API, JUnit の統合, 国際化サポートと GUI のためのウィジェットが含まれているツールボックス.
- HornetQ - 埋め込みのための, クリアで, 簡潔な, モジュラー.
- Hudson - まだ活発に開発されている, インテグレーション統合サーバー.
- Java Modeling Language (JML) - コードモジュールの動作を指定するために使用することができる行動インターフェース仕様言語.
- JavaCC - より具体的で, 簡単に学ぶことができます. 構文的な先読みがあります.
- JavaServer Faces - Oracle のオープンソースJSF標準である, Mojarra の実装.
- JavaServer Pages - カスタムタグライブラリを持つ Web サイトの一般的なテンプレート.
- JUnit - 共通のテストフレームワーク.
- Launch4j - jar を軽量でネイティブな Windows 実行ファイルにラップします.
- Quartz - Apache 2.0 ライセンスのオープンソースジョブスケジューラライブラリ.
- Trove - プリミティブのコレクション.
Bean Mapping
Bean マッピングを容易にするフレームワーク
- Dozer - アノテーション, API または XML 設定を使用して, あるオブジェクトから別のオブジェクトへデータをコピーするマッパー.
- JMapper - 高速コードマッピングのためにバイトコード操作を使用. アノテーション, API または XML 設定をサポートします.
- MapStruct - コンフィグレーションアプローチの慣例に基づいて, 異なる Bean タイプ間のマッピングを単純化するコードジェネレータ.
- ModelMapper - ModelMapper は, オブジェクトをお互いに自動的にマッピングするインテリジェントなオブジェクトマッピングライブラリです.
- Orika - Orika は, Java Bean マッピングフレームワークで, あるオブジェクトから別のオブジェクトに(他の機能の中でも)データを再帰的にコピーします.
- Selma - 愚かしいほど単純な, 静的リンクマッパー. アノテーションプロセスベース Bean マッパーです.
Build
アプリケーションのビルドサイクルと依存関係を処理するツール
- Apache Maven - 宣言的なビルドと依存関係管理. 手続き的アプローチを使い, 維持するのが難しい Apache Ant にとっては好ましいかもしれません.
- Bazel - コードを迅速かつ確実にビルドするための, Google によるビルドツール.
- Gradle - XML で宣言するのではなく, Groovy を介してプログラムされるインクリメンタルなビルド. Maven の依存関係管理をうまく動作させます.
Bytecode Manipulation
プログラムでバイトコードを操作するライブラリ
- ASM - 汎用, 低レベル, バイトコードの操作と解析.
- Byte Buddy - 流暢な API を使用して, バイトコードの生成をさらに簡素化します.
- Byteman - 主に, テスト / トラブルシューティングのために, 実行時にバイトコードを DSL(ルール)で操作します.
- cglib - バイトコード生成ライブラリ.
- Javassist - バイトコードの編集を単純化します.
Caching
キャッシング機能を提供するライブラリ
Cluster Management
動的に, クラスター内部のアプリケーションを管理することができるフレームワーク
- Apache Aurora - Apache Aurora は, 長期実行サービスと cron ジョブのための Mesos フレームワークです.
- Apache Mesos - マシンの CPU, メモリ, ストレージ, その他のコンピューティングリソースを抽象化します.
- Singularity - Singularity は, 配置と操作を簡単にする Mesos フレームワークです. Web サービス, バックグラウンドワーカー, スケジュールされたジョブ, および1回限りのタスクをサポートします.
Code Analysis
メトリクスと品質測定を提供するツール
- Checkstyle - コーディング規則と標準の静的分析.
- Codacy - コードレビューを自動化するための静的解析, コードカバレッジ, およびソフトウェアメトリックを継続します.
- Error Prone - 一般的なプログラミングミスをコンパイル時エラーとして検出します.
- FindBugs - 潜在的なバグを見つけるためのバイトコードの静的解析.
- Infer - 潜在的なバグのリストを生成するためのツール.
- jQAssistant - Neo4J ベースのクエリ言語による静的コード解析.
- PMD - 悪いコーディング習慣を見つけるためのソースコード分析.
- SonarQube - プラグインを介して他の分析コンポーネントを統合し, 経時的なメトリックの概要を提供します.
- Spoon - Java ソースコードを解析し変換するためのライブラリ.
Code Coverage
テストスイートのコードカバレッジメトリックの収集を可能にするフレームワークおよびツール
- Clover - バイトコード計測の代わりに, ソースコード計測に依存する Atlassian 独自のコードカバレッジツール.
- Cobertura - コード・カバレッジ・メトリックを収集するために, オフライン(または静的)バイトコード計測とクラス・ロードに依存します. GPLv2ライセンス.
- JaCoCo - オフラインとランタイムの両方のバイトコード計測を使用して, コードカバレッジメトリックを収集できるフレームワーク. 著名な Eclipse コードカバレッジプラグインである, EclEmma によって使用されています.
Code Generators
冗長性とエラーの可能性を減らすために, 繰り返しコードのパターンを生成するツール
- ADT4J - 代数的データ型用の JSR-269 コードジェネレータ.
- Auto - ファクトリ, サービス, および値クラスを生成します.
- FreeBuilder - Builder パターンの自動生成.
- Immutables - シンプルで安全で一貫したバリューオブジェクトを生成するアノテーションプロセッサー.
- JHipster - Spring Boot と AngularJS 用の Yeoman ソースコードジェネレータ.
- Joda-Beans - クエリ可能なプロパティを Java に追加し, JavaBeans を強化する小さなフレームワーク.
- Lombok - 冗長を減らすことを目的としたコードジェネレータ.
Command-line Argument Parsers
コマンドラインオプション, 引数などを簡単に解析できるライブラリ
- Airline - Git のようなコマンドライン引数を解析するアノテーションベースのフレームワーク.
- args4j - javac に似た引数のようなコマンドを解析する小さなライブラリ.
- JCommander - インターフェイスを実装することによりカスタムタイプと検証で, コマンドライン引数を解析するフレームワーク.
-
JOpt Simple - POSIX の
getopt()
と GNUgetopt_long()
の構文を使用する単純なパーサです. アノテーションを使用せず, API を使用します.
Compiler-compiler
パーサ, インタプリタ, コンパイラの作成に役立つフレームワーク
Configuration
外部設定を提供するライブラリ
- config - JVM 言語用の設定ライブラリ.
- ini4j - Windows の INI ファイルを処理するための API を提供します.
- owner - プロパティの定型文を減らします.
- KAConf - Java および Kotlin 用のアノテーションベース構成システム.
Constraint Satisfaction Problem Solver
最適化と充足可能性の問題の実装に役立つライブラリ
- Choco - 制約プログラミング技法を使用する, 制約充足問題解決.
- JaCoP - FlatZinc 言語用のインターフェイスを含み, MiniZinc モデルを実行できるようにします.
- OptaPlanner - ビジネスプランニングとリソーススケジューリング最適化ソルバー.
Continuous Integration
アプリケーションの構築, テスト, およびリリースを継続的にサポートするツール
- Bamboo ![c] - Atlassian のソリューションは良好な他の製品との統合を行います. オープンソースのライセンスを申請するか, または購入することができます.
- Concourse - バージョンコントロールに保存できる設定で, ドッキングされたパイプラインを提供します.
- fabric8 - コンテナの統合プラットフォーム.
- Go - ThoughtWork のオープンソースソリューション.
- Jenkins - サーバーベースのデプロイメントサービスを提供します.
- TeamCity -JetBrain CI ソリューションの無料版.
- Travis - オープンソースプロジェクトで頻繁に使用されるホスティングサービス.
CSV
CSV データの読み書きを簡素化するフレームワークとライブラリ
- opencsv - シンプルな CSV パーサー.
- Super CSV - Dozer, Joda-Time, Java 8 をサポートする強力な CSV パーサー.
- uniVocity-parsers - 最も速く, 最も機能が豊富な CSV パーサーの1つです. また, TSV と固定幅レコードのパーサも付属しています.
Database
データベースとのやりとりを簡単にする
- Apache Hive - Hadoop 上に構築された, データ・ウェアハウス・インフラストラクチャ.
- Apache Phoenix - 低遅延アプリケーション用の HBase 上の高性能リレーショナルデータベースレイヤー.
- Chronicle Map - 効率的なメモリ内(ディスクに保存されたまま)の off-heap key-value ストア.
- eXist - NoSQL ドキュメントデータベースとアプリケーションプラットフォーム.
- FlexyPool - 最も一般的な接続プーリングソリューションにメトリックとフェールオーバー戦略をもたらします.
- Flyway - 簡単なデータベース移行ツール.
- H2 - メモリ内機能が特長の小さな SQL データベース.
- HikariCP - 高性能 JDBC 接続プール.
- JDBI - JDBC の便利な抽象化.
- Jedis - コマンドのためのメソッドと, Redis との対話のための小さなクライアント.
- jetcd - etcd のクライアントライブラリ.
- jOOQ - SQL スキーマに基づいて型保証されたコードを生成します.
- Liquibase - 追跡, 管理, データベース・スキーマの変更を適用するための, データベースに依存しないライブラリ.
- MapDB - ディスクまたはオフヒープメモリにバックアップされた, 並行コレクションを提供する組み込みデータベースエンジン.
- MariaDB4j - インストールまたは外部依存関係を必要としない MariaDB のランチャー.
- Presto - 大規模データ用の分散 SQL クエリエンジン.
- Querydsl - タイプセーフ統一クエリ.
- Realm - 電話機, タブレット, またはウェアラブルの中で直接実行されるモバイルデータベース.
- Redisson - Redis サーバーの上に分散型およびスケーラブルなデータ構造を可能にします.
- Speedment - クエリーのために Java 8 Stream API を使用するデータベースアクセスライブラリ.
- sql2o - データベースへのアクセスを簡素化し, ResultSet を POJO に簡単にマッピングできる Thin JDBC ラッパーです.
- Vibur DBCP - 高度なパフォーマンス監視機能を提供する JDBC 接続プールライブラリ.
Data structures
効率的で具体的なデータ構造
- Apache Avro - 動的な型指定, タグなしのデータ, 手動で割り当てられた ID の欠如などのデータ交換フォーマット.
- Apache Orc - Hadoop ベースのワークロードのための, 高速かつ効率的な円柱ストレージ形式.
- Apache Parquet - Google の Dremel の論文のアセンブリアルゴリズムに基づいた, カラム形式のストレージフォーマット.
- Apache Thrift - Facebook が開発したデータ交換形式.
- Persistent Collection - 永続的で不変な Java Collections Framework.
- Protobuf - Google のデータ交換フォーマット.
- SBE - 単純なバイナリエンコーディング. 最速のメッセージフォーマットの1つです.
- Wire - きれいで軽量なプロトコルバッファー.
Date and Time
日時を扱うライブラリ
- Almanac Converter - 異なるカレンダーシステム間の簡単な変換.
- Joda-Time - Java 8 以前のデファクトスタンダードの日付/時刻ライブラリ.
- ThreeTenBP - oda-Time の著者による, JSR 310 のポート (java.time パッケージ).
- Time4J - 高度な日時ライブラリ.
Dependency Injection
Inversion of Control のパラダイムを実現するのに役立つライブラリ
- Apache DeltaSpike - CDI 拡張フレームワーク.
- Dagger2 - リフレクションのない, コンパイル時のインジェクションフレームワーク.
- Guice - Dagger を完成させる軽量ながら強力なフレームワーク.
- HK2 - 軽量で動的な依存性注入フレームワーク.
Development
基本的なレベルでの開発プロセスの強化
- AspectJ - シームレスなアスペクト指向プログラミング拡張.
- DCEVM - 実行時にロードされたクラスの無制限の再定義を可能にする JVM の変更.
- Faux Pas - Java Runtime の機能インタフェースのいずれも, デフォルトでチェック例外をスローすることができないという問題を回避して, エラー処理を簡素化するライブラリです.
- HotswapAgent - 無制限の実行時クラスとリソースの再定義.
- JRebel ![c] - 再デプロイせずに, コードと構成の変更を直ちに再ロードします.
- Spring Loaded - クラスリロードエージェント.
Distributed Applications
分散アプリケーションとフォールトトレラントアプリケーションを作成するためのライブラリとフレームワーク
- Akka - 同時, 分散, フォールトトレラントのイベント駆動型アプリケーションを構築するためのツールキットとランタイム.
- Apache Storm - リアルタイム計算システム.
- Apache ZooKeeper - 大規模分散システム用の分散構成, 同期, および命名レジストリによる調整サービス.
- Atomix - フォールトトレラント分散協調フレームワーク.
- Axon Framework - CQRS アプリケーションを作成するためのフレームワーク.
- Copycat - フォールトトレラントな状態マシンの複製フレームワーク.
- Hazelcast ![c] - 無料のオープンソースバージョンを備えたスケーラブルなメモリ内データグリッド.
- Hystrix - レイテンシとフォールトトレランスを提供します.
- JGroups - 信頼できるメッセージングとクラスタ作成のためのツールキット.
- Orbit - 仮想アクター. 伝統的なアクターに別のレベルの抽象化を追加します.
- Quasar - JVM 用の軽量のスレッドとアクター.
Distributed Databases
アプリケーションに単一のデータソースとして見える分散システム内のデータベース
- Apache Cassandra - 単一障害点なく, 列指向で高可用性を提供します.
- Apache HBase - ビッグデータ用の Hadoop データベース.
- Druid - 集約および近似クエリで優れたリアルタイムの OLAP データストアです.
- Infinispan - キャッシュに使用される高度に同時の key-value データストア.
- OpenTSDB - Apache HBase の上に書かれたスケーラブルで分散型の時系列データベース.
- OrientDB - Hazelcast の上に書かれた埋め込み可能な分散データベース.
Distribution
ネイティブ形式のアプリケーションの配布を処理するツール
- Bintray ![c] - パブリッシングを処理するバイナリのバージョン管理. また, Maven や Gradle で使用することもでき, オープンソースソフトウェアや, いくつかのビジネスプランのための無料プランがあります.
- Boxfuse - 不変インフラストラクチャの原則を使用して, AWS に JVM アプリケーションをデプロイします.
- Capsule - シンプルでパワフルなパッケージングと展開. JVM に最適化されたコンテナをサポートする, 「Java 用の Docker」.
- Central Repository - オープンソースコミュニティへの無料サービスとして利用できる最大のバイナリコンポーネントリポジトリ. Apache Maven で使用され, 他のすべてのビルドツールで使用可能なデフォルト.
- IzPack - クロスプラットフォーム環境向けのセットアップオーサリングツール.
- JitPack - GitHub のための使いやすいパッケージリポジトリ. オンデマンドで Maven / Gradleプ ロジェクトを構築し, すぐに使えるパッケージを公開します.
- Nexus ![c] - プロキシとキャッシング機能を備えたバイナリ管理.
- packr - Windows, Linux, Mac OS X 上の JAR, アセット, および JVM をネイティブ配布用にパックします.
- really-executable-jars-maven-plugin - 自己実行型 JAR を作成するための Maven プラグインです.
Document Processing
オフィス文書フォーマットの処理を支援するライブラリ
- Apache POI - OOXML(XLSX, DOCX, PPTX)と OLE2(XLS, DOC または PPT)をサポートします.
- documents4j - MS Word などのサードパーティのコンバータを使用したドキュメントフォーマット変換用の API.
- docx4j - Microsoft Open XML ファイルの作成と操作.
- XlsMapper - excel ファイルの読み込み・書き込み. また, Java Beans へのマッピングができる.
Formal Verification
フォーマルメソッドツール:証明アシスタント, モデルチェック, シンボリック実行など
- CATG - Concolic ユニットテストエンジン. 正式な方法を使用して単体テストを自動的に生成します.
- Checker Framework - プラッガブルタイプのシステム. nullness タイプ, 物理ユニット, 不変型などが含まれます.
- Daikon - Daikon は, プログラムの不変量を検出し, そのinvariatsに基づいてJML仕様を生成することができます.
- Java Path Finder (JPF) - モデルチェッカーなどを含む JVM フォーマル検証ツール. NASA によって作成されました.
- JMLOK 2.0 - フィードバック指向のランダムテスト生成によりコードと JML 仕様の間の不適合を検出し, 検出された各不適合の可能性のある原因を示します.
- KeY - KeY システムは, オブジェクト指向ソフトウェアの設計, 実装, 正式仕様, 正式な検証を可能な限りシームレスに統合することを目指す, 正式なソフトウェア開発ツールです. 検証のための仕様とシンボリック実行に JML を使用します.
- OpenJML - JML の仕様を SMT-LIB 形式に変換し, プログラムが暗示している証明上の問題をバックエンドのソルバに渡します.
Functional Programming
機能プログラミングを容易にするライブラリ
- cyclops-react - モナドとストリームのユーティリティー, 解説, パターンマッチング, すべてのJDKコレクションの機能拡張, トランポリンなど.
- derive4j - 代数的データ型コンストラクタ, パターンマッチング, モーフを導出するための Java 8 アノテーションプロセッサとフレームワーク.
- Fugue - Guava の機能拡張.
- Functional Java - コンポジション指向開発を支援する多数の基本的かつ高度なプログラミング抽象化を実装します.
- Javaslang - 永続的なデータ型と機能的な制御構造を提供する機能コンポーネントライブラリ.
- jOOλ - lambda のギャップを修正することを目的とした Java 8 の拡張機能. 数多くの欠落しているタイプと豊富な一連の Stream API 追加機能を提供します.
- protonpack - ストリームユーティリティのコレクション.
- StreamEx - Java 8 ストリームを拡張します.
Game Development
ゲームの開発をサポートするフレームワーク
- jMonkeyEngine - モダンな 3D ゲーム開発のためのゲームエンジン.
- libGDX - オールラウンドクロスプラットフォーム, ハイレベルなフレームワーク.
- LWJGL - OpenGL / CL / AL のようなライブラリを抽象化する強力なフレームワーク.
Geospatial
地理空間データとアルゴリズムを扱うライブラリ
- Apache SIS - 地理空間アプリケーションを開発するためのライブラリ.
- Geo - GeoHash ユーティリティ.
- Geotoolkit.org - 理空間アプリケーションを開発するためのライブラリ. Apache SIS プロジェクトの上に構築されています.
- GeoTools - 地理空間データ用のツールを提供するライブラリ.
- GraphHopper - ロードルーティングエンジン. Java ライブラリまたはスタンドアロン Web サービスとして使用されます.
- H2GIS - H2 データベースの空間的拡張.
- Jgeohash - Java 開発者が GeoHash アルゴリズムを使用する際に役立つライブラリ.
- Mapsforge - OpenStreetMap データに基づくマップのレンダリング用ソフトウェア.
- Spatial4j - 空間/地理空間 ASL ライセンスの, 汎用的なオープンソース Java ライブラリ.
GUI
モダンなグラフィカルユーザーインターフェイスを作成するためのライブラリ
- JavaFX - Swing の後継です.
- Scene Builder - JavaFX アプリケーション用のビジュアルレイアウトツール.
- SWT - 標準ウィジェットツールキット(SWT)は, Java プラットフォームで使用するグラフィカルなウィジェットツールキットです.
High Performance
コレクションから特定のライブラリまでの高性能計算に関するすべて
- Agrona - 高性能アプリケーションで一般的な, データ構造とユーティリティメソッド.
- Disruptor - スレッド間メッセージングライブラリ.
- Eclipse Collections - Smalltalk に触発されたコレクションフレームワーク.
- fastutil - 高速かつコンパクトなタイプ固有のコレクション.
- HPPC - プリミティブコレクション.
- JCTools - 現在の JDK にはない並行性ツール.
- Koloboke - ハッシュセットとハッシュマップ.
Hypermedia Types
ハイパーメディアタイプへのシリアライズを処理するライブラリ
IDE
開発を単純化する統合開発環境
- Eclipse - 多くのプラグインと言語をサポートする, オープンソースプロジェクト.
- IntelliJ IDEA ![c] - 多くの JVM 言語をサポートし, Android 開発にも適したオプションを提供しています.
- NetBeans - データベースアクセスから HTML5 への Java SE および EE 機能の統合を提供します.
Imagery
グラフィカルイメージの作成, 評価, 操作を支援するライブラリ
- Imgscalr - 純粋な Java 2D で実装された, シンプルで効率的なハードウェアアクセラレーションの画像スケーリングライブラリ.
- Tess4J - Tesseract OCR API の JNA ラッパー.
- Thumbnailator - Thumbnailator は, Java 用の高品質のサムネイル生成ライブラリです.
- TwelveMonkeys - サポートされているイメージファイル形式の数を拡張するプラグインのコレクション.
- ZXing - マルチフォーマット 1D / 2D バーコード画像処理ライブラリ.
JSON
JSON を Java オブジェクトとの間でシリアル化およびデシリアライズするためのライブラリ
- Genson - 強力で使いやすい Java から JSON への変換ライブラリ.
- Gson - オブジェクトを JSON にシリアル化, またその逆を行います.
- Jackson-datatype-money - JavaMoney データ型の JSON 直列化と非直列化をサポートする, オープンソースの Jackson モジュール.
- Jackson - GSON に似ていますが, ライブラリをより頻繁にインスタンス化する必要がある場合は, パフォーマンスが向上します.
- JSON-io - Java を JSON に変換, JSON を Java に変換します.
- jsoniter - イテレータと遅延解析 API を備えた高速で柔軟なライブラリです.
- LoganSquare - Jackson のストリーミング API に基づいた, JSON の解析とシリアライズライブラリ. GSON & Jackson のライブラリより優れています.
JSON Processing
データを JSON 形式で処理するためのライブラリ
- fastjson - 追加の依存関係や完全なデータバインディングを持たない非常に高速なプロセッサー.
- Jolt - JSON から JSON への変換ツール.
- JsonPath - XPATH のような構文を使用して JSON からデータを抽出します.
- JsonSurfer - 大きく複雑な JSON データの処理専用の, ストリーミング JsonPath プロセッサ.
JVM and JDK
JVM / JDK の現在の実装
- Avian - JIT と AOT の両方のモードを持つ JVM. iOS ポートが含まれています.
- JDK 9 - JDK 9 のアーリーアクセスリリース.
- OpenJDK - Linux 向けのオープンソース実装.
- ParparVM - iOS 用のノンブロッキング並行 GC を搭載した VM.
- Zulu OpenJDK 9 - Windows, Linux, Mac OS X用の Early Access OpenJDK 9 ビルド.
- Zulu OpenJDK - Windows, Linux, Mac OS X 用にビルドされた Java 8 OpenJDK.
Logging
アプリケーションの動作を記録するライブラリ
- Apache Log4j 2 - 強力なプラグインと設定アーキテクチャ.
- Graylog - 拡張ロールと権限管理に適したオープンソースアグリゲータ.
- Kibana - ログファイルを分析し可視化します. 一部機能は有料です.
- Logback - Groovy を介した面白い設定オプションを備えた, ロバストロギングライブラリ.
- Logbook - HTTPリクエストとレスポンスロギングのための, 拡張可能なオープンソースライブラリ.
- Logstash - ログファイルを管理するためのツール.
- SLF4J - 実装で使用される抽象レイヤー.
- tinylog - 静的ロガークラスを使用した軽量ロギングフレームワーク.
- Tracer - 分散システムにおけるトレースとログの相関を呼び出す.
Machine Learning
機械学習を可能にする特定の統計アルゴリズムを提供するツール
- Apache Flink - 高速で信頼性の高い大規模データ処理エンジン.
- Apache Mahout - 協調フィルタリング, クラスタリング, 分類に焦点を当てたスケーラブルなアルゴリズム.
- Apache Spark - データ分析クラスタコンピューティングフレームワーク.
- DatumBox - 自然言語処理のためのいくつかのアルゴリズムと, 事前に訓練されたモデルを提供します.
- DeepDive - 非構造化データから構造化情報を作成し, 既存のデータベースに統合します.
- Deeplearning4j - 分散型マルチスレッド深層学習ライブラリ.
- H2O - 大規模なデータに対する統計分析エンジン.
- JSAT - マルチスレッド実行サポートによる前処理, 分類, 回帰, およびクラスタリングのためのアルゴリズム.
- Oryx 2 - コラボレーティブなフィルタリング, 分類, 回帰, およびクラスタリングのためのエンドツーエンドアプリケーションを含む, リアルタイムの大規模機械学習アプリケーションを構築するためのフレームワーク.
- Smile - Statistical Machine インテリジェンスと学習エンジンは, 機械学習アルゴリズムと視覚化ライブラリのセットを提供します.
- Weka - 前処理から可視化までのデータマイニングタスクのためのアルゴリズム集.
Messaging
プロトコルの独立性を保証するために, クライアント間でメッセージを送信するのに役立つツール
- Aeron - 効率的な信頼性のあるユニキャストおよびマルチキャストメッセージ転送.
- Apache ActiveMQ - JMS を実装し, 同期を非同期通信に変換するメッセージブローカー.
- Apache Camel - エンタープライズ統合パターンを介して異なるトランスポート API をまとめます.
- Apache Kafka - ハイスループット分散型メッセージングシステム.
- Hermes - Kafka の上に構築された高速で信頼性の高いメッセージブローカー.
- JeroMQ - ZeroMQ の実装.
- Nakadi - Kafka 上に RESTful API を提供します.
- RocketMQ - 高速で信頼性が高くスケーラブルな分散型メッセージングプラットフォームです.
- Smack - クロスプラットフォーム XMPP クライアントライブラリ.
Miscellaneous
その他すべて
- Codename One - ネイティブモバイル(iOS, Android など)を作成するためのクロスプラットフォームソリューション.
- CQEngine - Java コレクションに対する SQL のような超高速クエリー.
- Design Patterns - 最も一般的なデザインパターンの実装と説明.
- Failsafe - リトライと回路ブレーカーによる簡単な障害処理.
- J2ObjC - Android ライブラリを iOS に移植するための Java to Objective-C トランスレータ.
- jabba - nvm に触発された Java バージョンマネージャー.
- javaslang-circuitbreaker - 機能的なフォールトトレランスライブラリ.
- JavaX - 単純化に重点を置いて Java を再考し, 拡張する.
- JBake - 静的なウェブサイトジェネレータ.
- Jimfs - メモリ内ファイルシステム.
- Joda-Money - JDK が提供していない, 基本通貨およびマネークラスおよびアルゴリズム.
- JPad - スニペットランナー.
- Lanterna - curses に似た簡単なコンソールテキスト GUI ライブラリ.
- LightAdmin - 迅速なアプリケーション開発のためのプラグイン可能な CRUD UI ライブラリ.
- Membrane Service Proxy - Java で書かれたオープンソースのリバースプロキシフレームワーク.
- Modern Java - A Guide to Java 8 - よく使われる Java 8 のガイド.
- Modernizer - レガシーな Java API の使用を検出します.
- OpenRefine - 扱いにくいデータを処理するツール. クリーニング, 変換, Webサービスでの拡張, データベースへのリンク.
- TypeTools - ジェネリック型を解決するためのツール.
Microservice
マイクロサービス. すなわち作成, 調整または発見を管理するためのツール
- Apollo - 構成可能なマイクロサービスを書くためのライブラリ.
- consul-api - Consul のクライアントで, 分散した高可用性のデータセンター対応のレジストリ / ディスカバリサービスです
- Eureka - 回復力のあるロードバランシングとフェイルオーバーのための REST ベースのサービスレジストリ.
- Lagom - マイクロサービスベースのシステムを作成するためのフレームワーク.
- SnopEE - Java EE マイクロサービスのディスカバリーサービス.
Monitoring
プロダクションのアプリケーションを監視するツール
- AppDynamics ![c] - パフォーマンスモニタ.
- Glowroot - オープンソース Java APM.
- JavaMelody - パフォーマンスの監視とプロファイリング.
- jmxtrans - 複数の JVM に接続し, それらの属性を JMX 経由で問い合わせるためのツール. そのクエリは, Java 以外のプログラマが JVM 属性にアクセスできるよう, JSON に基づいています. また, Graphite, Ganglia, StatsD などの様々な入出力をサポートします.
- Jolokia - REST の JMX.
- Kamon - JVM 上で動作するアプリケーションを監視するためのツール.
- Metrics - MX または HTTP を介してメトリックを公開し, それらをデータベースに送信できます.
- New Relic ![c] - パフォーマンスモニタ.
- nudge4j - Java 8 用の, ブラウザからバイトコード注入を介したリモート開発者コンソール.
- OverOps ![c] - リアルタイムエラー監視とデバッグ.
- Pinpoint - オープンソースの APM ツール.
- Prometheus - 多次元データモデル, DSL, 自律型サーバーノードなどを提供します.
- SPM ![c] - JVM アプリケーション用のトランザクショントレースを配布するパフォーマンスモニタ.
- Stagemonitor - JVM アプリケーション用のオープンソースのパフォーマンス監視とトランザクショントレース.
Native
プラットフォーム固有のネイティブライブラリでの動作
- JNA - JNI を書かずにネイティブライブラリを扱う. 共通のシステムライブラリへのインタフェースも提供します.
- JNR - JNI を書くことなく, ネイティブライブラリで動作します. 共通のシステムライブラリへのインタフェースも提供します. JNA と同じ目標ですが, より速く, 今後の Project Panama の基礎としての役割を果たします.
Natural Language Processing
テキストの処理に特化したライブラリ
- CoreNLP - スタンフォードの CoreNLP は, タグ付け, 名前付きエンティティ認識, センチメント分析などのタスクの基本ツールのセットを提供します.
- DKPro - 言語の前処理, 機械学習, 語彙リソースなどのための再利用可能な NLP ツールのコレクション.
- LingPipe - POS タギングからセンチメント分析までのさまざまなタスクのためのツールキット.
Networking
ネットワークプログラミングのためのライブラリ
- Async Http Client - 非同期 HTTP と WebSocket クライアントライブラリ.
- Comsat - 標準の Java Web 関連 API を Quasar ファイバーおよびアクターに統合します.
- Finagle - 高並列サーバを構築するために使用される拡張可能な RPC システム. これは, いくつかのプロトコル用の統一されたクライアントおよびサーバー API を実装し, プロトコルに依存しないため, 新しいプロトコルの実装を簡素化します.
- Grizzly - NIO フレームワーク. Glassfish のネットワーク層として使用されます.
- gRPC - protobuf と HTTP/2 に基づく RPC フレームワーク.
- MINA - Java NIO を介した TCP/IP および UDP/IP によるネットワーク操作のための, 抽象的なイベント駆動の非同期 I/O API.
- Netty - 高性能ネットワークアプリケーションを構築するためのフレームワーク.
- Nifty - Netty 上の Thrift クライアントとサーバーの実装.
- OkHttp - HTTP + SPDY クライアント.
- Riptide - Spring RestTemplate のクライアント側レスポンスルーティング.
- Undertow - NIO に基づくブロッキング API とノンブロッキング API の両方を提供する Web サーバー. WildFly のネットワーク層として使用されます.
- urnlib - RFC 2141 のように URN を表現, 解析, エンコードするための Java ライブラリ.
ORM
オブジェクトの永続性を扱う API
- Apache Cayenne - データアクセス用のクリーンで静的な API を提供します. データベースマッピング, DB リバースエンジニアリング, および生成を扱うためのGUIモデラーも含まれています.
- Ebean - シンプルで高速なデータアクセスを提供します.
- EclipseLink - JPA, JAXB, JCA, SDO などのいくつかの永続性標準をサポートしています.
- Hibernate - 堅牢で, アクティブなコミュニティで広く使用されています.
- MyBatis - ストアドプロシージャまたは SQL 文を持つオブジェクトを結合します.
PaaS
Java Platform as a Service
- AWS Elastic Beanstalk ![c] - AWS ベースで, Tomcat と Jetty をサポートしています.
- AWS Lambda ![c] - サーバレス計算.
- Google App Engine ![c] - Google インフラストラクチャ上の PaaS.
- Heroku ![c] - 抽象コンピューティング環境.
- Jelastic ![c] - Tomcat, Jetty, GlassFish, JBoss, TomEE, WildFly をサポートします.
- OpenShift Enterprise ![c] - オンプレミスソリューション.
PDF ファイルの作成に役立つ
- Apache FOP - XSL-FO から PDF を作成します.
- Apache PDFBox - PDFの 作成と操作のためのツールボックス.
- Dynamic Jasper - JasperReports への抽象レイヤー.
- DynamicReports - JasperReports を単純化します.
- flyingsaucer - XML / XHTML および CSS 2.1 レンダラー.
- iText - プログラムで PDF ファイルを作成できますが, 商用目的の場合, ライセンスが必要です.
- JasperReports - 複雑なレポーティングエンジン.
Performance analysis
パフォーマンス分析, プロファイリング, ベンチマークのためのツール
- fastThread ![c] - 無料のクラウドベースのアップロードインタフェースで, スレッドダンプを解析し可視化します.
- GCeasy ![c] - GC ログを分析し可視化するツール. 無料のクラウドベースアップロードインターフェイスを提供します.
- honest-profiler - オーバーヘッドが少なく, バイアスのないサンプリングプロファイラです.
- jHiccup - プラットフォーム JVM のストールを記録し, 記録します.
- JITWatch - HotSpot JVM による JIT コンパイラの最適化を分析します.
- JMH - JMH は, JVM をターゲットとする Java や, その他の言語で作成された, ナノ/マイクロ/ミリ/マクロのベンチマークを構築, 実行, 分析するための Java ハーネスです.
- JProfiler ![c] - プロファイラ.
- LatencyUtils - レイテンシの測定と報告のためのユーティリティーです.
- XRebel ![c] - Web アプリケーションのためのプロファイラ.
- YourKit Java Profiler ![c] - プロファイラ.
Platform
いくつかのカテゴリを含む複数ライブラリのスイートであるフレームワーク
- CUBA Platform - Spring, EclipseLink, Vaadin をベースとした, 豊富なWebインターフェイスを備えたエンタープライズアプリケーションの開発のための高レベルのフレームワーク.
- Spring - 依存性注入からアスペクト指向プログラミング, セキュリティまで, 多くのパッケージを提供します.
Reactive libraries
リアクティブアプリケーションを開発するためのライブラリ
- Reactive Streams - ノンブロッキングバックプレッシャーを持つ非同期ストリーム処理の標準を提供します.
- Reactor - リアクティブ高速データアプリケーションを構築するためのライブラリ.
- RxJava - JVM の観測可能なシーケンスを使用して非同期およびイベントベースのプログラムを作成するためのライブラリ.
- vert.x - Polyglot イベント駆動型アプリケーションフレームワーク.
REST Frameworks
特に RESTful なサービスを作成するためのフレームワーク
- Dropwizard - Jetty, Jackson, Jersey, Metrics で, 最新の Web アプリケーションをセットアップするためのフレームワーク.
- Feign - Retrofit, JAXRS-2.0, および WebSocket からインスピレーションを得た HTTP クライアントバインダー.
- Jersey - JAX-RS リファレンス実装.
- Microserver — Spring & Spring Boot 用の, 便利で拡張可能なマイクロサービスプラグインシステム. 30 以上のプラグインと拡張が可能で, マイクロモノリスと純粋なマイクロサービスの両方のスタイルをサポートします.
- RAML - REST API を生成する言語をモデリングします.
- Rapidoid - 組み込み HTTP サーバー, GUI コンポーネント, および依存関係注入で構成された, シンプルで安全で非常に高速なフレームワーク.
- rest.li - タイプセーフなバインディングと, 非同期非ブロッキング IO を使用した, 堅牢でスケーラブルな RESTful アーキテクチャを構築するためのフレームワークで, クリーンプラクティス, 統一的なインターフェイス設計, 一貫したデータモデリングを促進するエンドツーエンドの開発者ワークフローを提供します.
- RESTEasy - JAX-RS 仕様の, 完全に認定されたポータブルな実装.
- RestExpress - スケーラビリティとパフォーマンスを提供する JBoss Netty HTTP スタック上のシンラッパーです.
- Restlet Framework - 強力なルーティングとフィルタリング機能を備えた先駆的なフレームワーク, 統合されたクライアントとサーバAPI.
- Retrofit - タイプセーフな REST クライアント.
- Spark - Sinatra にインスパイアされたフレームワーク.
- Swagger - Swagger は, RESTful な Web サービスを記述, 生成, 使用, 可視化するための完全なフレームワークの実装です.
Science
科学計算, 分析, 視覚化のためのライブラリ
- DataMelt - 科学計算, データ分析, データ視覚化のための環境.
- GraphStream - 動的グラフのモデリングと解析のためのライブラリ.
- JGraphT - 数学的グラフ理論オブジェクトとアルゴリズムを提供するグラフライブラリ.
- JGraphX - 視覚化のためのライブラリ(主にSwing)とノードエッジグラフとの相互作用.
Search
検索と分析のために文書を索引付けするエンジン
- Apache Lucene - 高性能なフル機能のクロスプラットフォームのテキスト検索エンジンライブラリ.
- Apache Solr - 大量のトラフィックに最適化されたエンタープライズ検索エンジン.
- Elasticsearch - RESTful Web インターフェイスとスキーマフリーの JSON ドキュメントを備えた, 分散されたマルチテナント対応フルテキスト検索エンジン.
Security
セキュリティ, 認証, 承認, またはセッション管理を処理するライブラリ
- Apache Shiro - 認証, 承認, 暗号化, およびセッション管理を実行します.
- Bouncy Castle - 万能暗号ライブラリ. 基本ヘルパーから, JCA プロバイダー, PGP / SMIME 操作までの幅広い機能.
- Cryptomator - クラウド内のファイルのマルチプラットフォーム透過的なクライアント側暗号化.
- Hdiv - OWASP 10 のセキュリティリスクに対するランタイムアプリケーションの自己防衛. 不確実な直接オブジェクト参照, SQLインジェクション, クロスサイトスクリプティング(XSS), クロスサイトリクエスト偽造(CSRF)など.
- jjwt - Java および Android 用の JSON Web トークン.
- Keycloak - ブラウザーアプリと RESTful Web サービス用の統合された SSO と IDM.
- Keyczar - 使いやすくて安全な暗号化フレームワークで, キーバージョニング機能を備えています.
- Nbvcxz - 高度なパスワード強度推定.
- OACC - 許可ベースの認可サービスを提供します.
- pac4j - セキュリティエンジン.
- PicketLink - セキュリティとアイデンティティ管理のためのアンブレラプロジェクト.
Serialization
高効率で直列化を処理するライブラリ
- FlatBuffers - 直列化されたデータを解凍して解析せずにアクセスできる, メモリ効率の高い直列化ライブラリ.
- FST - JDK 互換の高性能オブジェクトグラフのシリアル化.
- Kryo - 高速かつ効率的なオブジェクトグラフの直列化フレームワーク.
- MessagePack - 効率的なバイナリシリアル化形式.
Server
アプリケーションをデプロイするために使用されるサーバー
- Apache Tomcat - サーブレットと JSP 用の強力なオールラウンドサーバー.
- Apache TomEE - Tomcat + Java EE.
- Jetty - 軽量で小型のサーバーで, しばしばプロジェクトに組み込まれています.
- nanohttpd - 小型で簡単に埋め込み可能な HTTP サーバー.
- WebSphere Liberty - IBM が開発した軽量でモジュラーなサーバー.
- WildFly - これまでは JBoss として知られていて, Red Hat によって開発された, 広範な Java EE サポート .
Template Engine
テンプレート内の式を置換するツール
- Handlebars.java - ロジックレスと意味論的な Mustache テンプレート.
- Jtwig - モジュール化され, 構成可能で, 完全にテストされたテンプレートエンジン.
- Thymeleaf - JSP の代用品となることを目指し, 一般的な XML ファイルを扱う.
Testing
モデルからビューをテストするツール
- Apache JMeter - 機能テストと性能測定.
- Arquillian - Java EE コンテナの統合と機能テストプラットフォーム.
- AssertJ - 可読性を向上させる流暢なアサーション.
- Awaitility - 非同期操作を同期するための DSL.
- Citrus - クライアントとサーバーサイドのメッセージングに焦点を当てた統合テストフレームワーク.
- ConcurrentUnit - マルチスレッドおよび非同期アプリケーションをテストするためのツールキット.
- Cucumber - BDD テストフレームワーク.
- Cukes-REST - Cucumber を使用した REST サービステストのための Gherkin ステップのコレクション.
- Gatling - 使いやすさ, 保守性, 高性能を考慮して設計された負荷テストツール.
- GreenMail - 統合テストのためのメモリ内メールサーバー. SSL を含む SMTP, POP3 および IMAP をサポートします.
- Hamcrest - 結合でき, 柔軟な表現を作成できるマッチャー.
- J8Spec - Java で書かれたテストが, RSpec と Jasmine によって導入された BDD スタイルに従うことを可能にするライブラリです.
- JSONAssert - JSON 文字列のテストを簡略化します.
- JBehave - 行動駆動開発のためのフレームワーク.
- JGiven - JUnit および TestNG と互換性がある, 開発者に適した BDD テストフレームワーク.
- JMockit - 静的メソッド, 最終メソッドなどをモックします.
- junit-dataprovider - JUnit 用の, TestNG のようなデータプロバイダーランナー.
- JUnitParams - 読み書き可能なパラメータ化されたテストの作成.
- Lambda Behave - 記述的な動作仕様フレームワーク.
- Mockito - TDD または BDD を目的とした自動単体テストでのテストダブルオブジェクトの作成.
- MockServer - HTTP/S と統合されたシステムを嘲笑します.
- Moco - スタブとモックのための簡潔なWebサービス. Duke's Choice Award 2013.
- PIT - 既存の JUnit または TestNG テストスイートの障害検出能力を評価するための高速突然変異検査フレームワーク.
- PowerMock - 静的メソッド, コンストラクタ, 最終的なクラスとメソッド, プライベートメソッド, 静的イニシャライザの削除を可能にします.
- raml-tester - リクエスト/レスポンスが指定された RAML 定義と一致するかどうかをテストします.
- REST Assured - REST/HTTP サービスを簡単にテストするための Java DSL.
- Selenide - 安定した読みやすい UI テストを書くための, Selenium の簡潔なAPI.
- Selenium - Web アプリケーション用のポータブルソフトウェアテストフレームワーク.
- Spock - 表現力豊かな Groovy 由来の仕様言語を備えた JUnit 互換フレームワーク.
- TestContainers - 一般的なデータベース, Selenium Web ブラウザ, または Docker コンテナで実行可能なその他の物を提供します.
- Truth - Google のアサーションと命題フレームワーク.
- WireMock - スタブとモックの Web サービス.
Utility
一般的なユーティリティー機能を提供するライブラリー
- Apache Commons - 設定, 検証, コレクション, ファイルアップロード, XML処理などのさまざまな汎用機能を提供します.
- CRaSH - CRaSH を実行している JVM にシェルを提供します. Spring Boot などで使用されます.
- Dex - 強力な ETL とデータの視覚化が可能な Java / JavaFX ツール.
- Gephi - 大きなグラフネットワークを視覚化し操作するためのクロスプラットフォーム.
- Guava - コレクション, キャッシング, プリミティブサポート, 並行性ライブラリ, 共通アノテーション, 文字列処理, I/O など.
- JADE - マルチエージェントシステムの構築とデバッグのためのフレームワークと環境.
- JavaVerbalExpressions - 困難な正規表現の作成に役立つライブラリ.
- minio-java - Amazon S3 互換のオブジェクトストレージサーバーにアクセスするための簡単な API を提供します.
- Protégé - 知識ベースのシステムを構築するためのオントロジエディターとフレームワークを提供します.
- Underscore-java - Underscore.js の機能のポート.
Web Crawling
ウェブサイトのコンテンツを分析するライブラリ
- Apache Nutch - プロダクション環境用に拡張性とスケーラビリティの高い Web クローラーを提供します.
- Crawler4j - シンプルで軽量な Web クローラー.
- JSoup - HTML をスクレイプし, 解析し, 操作し, 消去します.
Web Frameworks
Web アプリケーションのレイヤー間の通信を処理するフレームワーク
- Apache Tapestry - 動的で, 堅牢で, 拡張性の高い, Web アプリケーションを作成するためのコンポーネント指向のフレームワーク.
- Apache Wicket - ステートフルな GUI を備えた Tapestry に似た, コンポーネントベースの Web アプリケーションフレームワーク.
- Baratine - 複数環境(スタンドアロンまたは埋め込みのいずれか)用の分散型およびリアクティブ型アプリケーションを構築するためのツールキット.
- Blade - エレガントでシンプル, 軽量でモジュラーなフレームワーク.
- Bootique - 実行可能なアプリケーションのための最小限フレームワーク.
- Grails - コンフィグレーションよりも慣例を優先し, XML やミックスインをサポートすることにより, 生産性の高い環境を提供することを目指す Groovy フレームワーク.
- Jooby - 複数のプログラミングモデルを提供するスケーラブルで高速かつモジュラーなマイクロフレームワーク.
- Ninja - フルスタック Web フレームワーク.
- Pippo - 小型で高度にモジュール化された Sinatra のようなフレームワーク.
- Play - ブラウザの設定, ホットコードの再読み込み, およびエラーの表示に関する規則を使用します.
- PrimeFaces - 無料で市販のバージョンをサポートしている JSF フレームワーク. いくつかのフロントエンドコンポーネントを提供します.
- Ratpack - 高速で効率的, よくテストされた, HTTP アプリケーションを容易にするライブラリのセット.
- Spring Boot - 新しい Spring アプリケーションの開発を簡素化するマイクロフレームワーク.
- Vaadin - GWT 上に構築されたイベント駆動型フレームワーク. クライアント側で Ajax を使用してサーバーのアーキテクチャを使用します.
Resources
Communities
活発な議論
- r/java - Java コミュニティのサブレッジ.
- stackoverflow - 質問/回答プラットフォーム.
- vJUG - 仮想 Java ユーザーグループ.
Frontends
Awesome Java の Web サイト (※公式サイトではありません)
Influential Books
Books that had a high impact and are still worth reading.
Podcasts
読む価値のある, 影響の大きかった書籍
- Java Off Heap
- The Java Council
- The Java Posse - Discontinued as of 02/2015.
フォローをおすすめする, アクティブな Twitter アカウント
- Adam Bien - Freelancer: Author, JavaONE Rockstar Speaker, Consultant, Java Champion.
- Aleksey Shipilëv - Performance Geek, Benchmarking Tzar, Concurrency Bug Hunter.
- Antonio Goncalves - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
- Arun Gupta - Java Champion, JavaOne Rockstar, JUG Leader, Devoxx4Kids-er, VP of Developer Advocacy at Couchbase.
- Brian Goetz - Java Language Architect at Oracle.
- Bruno Borges - Product Manager/Java Jock at Oracle.
- Ed Burns - Consulting Member of the Technical Staff at Oracle.
- Eugen Paraschiv - Author of the Spring Security Course.
- James Weaver - Java/JavaFX/IoT developer, author and speaker.
- Java EE - Official Java EE Twitter account.
- Java Magazine - Official Java Magazine account.
- Java - Official Java Twitter account.
- Javin Paul - Well-known Java blogger.
- Lukas Eder - Java Champion, speaker, JUG.ch co-leader, Founder and CEO Data Geekery (jOOQ).
- Mario Fusco - RedHatter, JUG coordinator, frequent speaker and author.
- Mark Reinhold - Chief Architect, Java Platform Group, Oracle.
- Markus Eisele - Java EE evangelist, Red Hat.
- Martijn Verburg - London JUG co-leader, speaker, author, Java Champion and much more.
- Martin Thompson - Pasty faced performance gangster.
- OpenJDK - Official OpenJDK account.
- Peter Lawrey - Peter Lawrey, Java performance expert.
- Reza Rahman - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
- Simon Maple - Java Champion, virtualJUG founder, LJC leader, RebelLabs author.
- Stephen Colebourne - Java Champion, speaker.
- Trisha Gee - Java Champion and speaker.
Websites
読むとためになるサイト
- Google Java Style
- InfoQ
- Java Algorithms and Clients
- Java, SQL, and jOOQ
- Java.net
- Javalobby
- JavaWorld
- JAXenter
- RebelLabs
- The Takipi Blog
- TheServerSide.com
- Vanilla Java
- Voxxed
Contributing
貢献は大歓迎です!
ガイドラインについては, CONTRIBUTING を御覧ください.