merge conflict fix

This commit is contained in:
Kristoffer Sjogren
2015-04-23 12:47:08 +02:00
2 changed files with 154 additions and 94 deletions

View File

@ -2,24 +2,26 @@
Unfortunately, not every library/tool/framework can be considered. The aim of the list is to provide a concise list of noteworthy modern software. This means that suggested software is either Unfortunately, not every library/tool/framework can be considered. The aim of the list is to provide a concise list of noteworthy modern software. This means that suggested software is either
(a) widely recommended and used regardless of your personal opinion (a) widely recommended regardless of personal opinion
(b) highly discussed in the community due to its innovative nature (b) highly discussed in the community due to its innovative nature
(b) absolutely unique in its approach and function (c) absolutely unique in its approach and function
Self-promotion is frowned upon and will be reviewed critically but the suggestion will of course be approved if the criteria match. (d) a niche product that fills a gap
Self-promotion is frowned upon and will be reviewed critically but the suggestion will of course be approved if they criteria match.
If a certain entry does not get accepted, you should first look if there has been a discussion before. These discussions are in the issue section and normally marked with the question tag. If there hasn't been such a topic, you are free to create a new issue tagged as question. If a certain entry does not get accepted, you should first look if there has been a discussion before. These discussions are in the issue section and normally marked with the question tag. If there hasn't been such a topic, you are free to create a new issue tagged as question.
Furthermore, please ensure your pull request follows the following guidlines: Furthermore, please ensure your pull request follows the following guidelines:
* Please search previous suggestions before making a new one, as yours may be a duplicate. * Please search previous suggestions before making a new one, as yours may be a duplicate.
* Please make an individual pull request for each suggestion. * Please make an individual pull request for each suggestion.
* Use the following format for libraries: \[LIBRARY\]\(LINK\) - DESCRIPTION. * Use the following format for libraries: \[LIBRARY\]\(LINK\) - DESCRIPTION.
* Entries should be sorted in ascending alphabetical order, i.e. a to z. * Entries should be sorted in ascending alphabetical order, i.e. a to z.
* New categories, or improvements to the existing categorisation are welcome. * New categories, or improvements to the existing categorization are welcome.
* Keep descriptions short, simple and unbiased. * Keep descriptions short, simple and unbiased.
* End all descriptions with a full stop/period. * End all descriptions with a full stop/period.
* Check your spelling and grammar. * Check your spelling and grammar.

236
README.md
View File

@ -4,6 +4,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
- [Awesome Java](#awesome-java) - [Awesome Java](#awesome-java)
- [Build Tool](#build-tool) - [Build Tool](#build-tool)
- [Bytecode Manipulation](#bytecode-manipulation)
- [Code Analysis](#code-analysis) - [Code Analysis](#code-analysis)
- [Compiler-compiler](#compiler-compiler) - [Compiler-compiler](#compiler-compiler)
- [Continuous Integration](#continuous-integration) - [Continuous Integration](#continuous-integration)
@ -12,12 +13,12 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
- [Dependency Injection](#dependency-injection) - [Dependency Injection](#dependency-injection)
- [Development](#development) - [Development](#development)
- [Distributed Applications](#distributed-applications) - [Distributed Applications](#distributed-applications)
- [Distributed Databases](#distributed-databases)
- [Distribution](#distribution) - [Distribution](#distribution)
- [Document Processing](#document-processing) - [Document Processing](#document-processing)
- [Game Development](#game-development) - [Game Development](#game-development)
- [GUI](#gui) - [GUI](#gui)
- [High Performance](#high-performance) - [High Performance](#high-performance)
- [HTTP](#http)
- [IDE](#ide) - [IDE](#ide)
- [Imagery](#imagery) - [Imagery](#imagery)
- [JSON](#json) - [JSON](#json)
@ -34,11 +35,11 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
- [Science](#science) - [Science](#science)
- [Search](#search) - [Search](#search)
- [Security](#security) - [Security](#security)
- [Serialization](#serialization)
- [Server](#server) - [Server](#server)
- [Template Engine](#template-engine) - [Template Engine](#template-engine)
- [Testing](#testing) - [Testing](#testing)
- [Utility](#utility) - [Utility](#utility)
- [Visualization](#visualization)
- [Web Crawling](#web-crawling) - [Web Crawling](#web-crawling)
- [Web Frameworks](#web-frameworks) - [Web Frameworks](#web-frameworks)
- [Resources](#resources) - [Resources](#resources)
@ -56,16 +57,26 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
* [Apache Maven](http://maven.apache.org/) - Declarative build and dependency management which favors convention over configuration. It's preferable to Apache Ant which uses a rather procedural approach and can be difficult to maintain. * [Apache Maven](http://maven.apache.org/) - Declarative build and dependency management which favors convention over configuration. It's preferable to Apache Ant which uses a rather procedural approach and can be difficult to maintain.
* [Gradle](http://www.gradle.org/) - Incremental builds which are programmed via Groovy instead of declaring XML. Works well with Maven's dependency management and treats Ant scripts as first-class citizens. * [Gradle](http://www.gradle.org/) - Incremental builds which are programmed via Groovy instead of declaring XML. Works well with Maven's dependency management and treats Ant scripts as first-class citizens.
## Bytecode Manipulation
*Libraries to manipulate Java bytecode programmatically.*
* [ASM](http://asm.ow2.org/) - All purpose, low level, bytecode manipulation and analysis.
* [Byte Buddy](http://bytebuddy.net/) - Further simplifies bytecode generation with a fluent API.
* [Javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/) - Tries to simplify the editing of bytecode.
## Code Analysis ## Code Analysis
*Tools that provide metrics and quality measurements of static code.* *Tools that provide metrics and quality measurements.*
* [Checkstyle](http://checkstyle.sourceforge.net/) - Static analysis of coding conventions and standards.
* [FindBugs](http://findbugs.sourceforge.net/) - Static analysis of bytecode to find potential bugs. * [FindBugs](http://findbugs.sourceforge.net/) - Static analysis of bytecode to find potential bugs.
* [SonarQube](http://www.sonarqube.org/) - Inspection tool for code quality. It integrates with several external tools like Gradle, Jira and Jenkins and provides an overview of the metrics over time. * [PMD](http://pmd.sourceforge.net/) - Source code analysis of bad coding practices.
* [SonarQube](http://www.sonarqube.org/) - Integrates other analysis components via plugins and provides an overview of the metrics over time.
## Compiler-compiler ## Compiler-compiler
*Tools that create parsers, interpreters or compilers.* *Frameworks that help to create parsers, interpreters or compilers.*
* [ANTLR](http://www.antlr.org/) - Complex full-featured framework for top-down parsing. * [ANTLR](http://www.antlr.org/) - Complex full-featured framework for top-down parsing.
* [JavaCC](https://javacc.java.net/) - More specific and slightly easier to learn. Has syntactic lookahead. * [JavaCC](https://javacc.java.net/) - More specific and slightly easier to learn. Has syntactic lookahead.
@ -74,69 +85,89 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Tools which support continuously building, testing and releasing applications.* *Tools which support continuously building, testing and releasing applications.*
* [Jenkins](http://jenkins-ci.org/) - Provides server-based services. Often seen as the successor to Hudson, although it is still actively developed. * [Bamboo](https://www.atlassian.com/software/bamboo) - Atlassian's solution with good integration of other products. You can either apply for an Open Source license or buy it.
* [Shippable](https://www.shippable.com/) - Based on Docker, it provides also Bitbucket integration. * [CircleCI](https://circleci.com/) - Hosted service with a free trial.
* [Travis](https://travis-ci.org) - A hosted continuous integration service that integrates with GitHub repositories. * [Codeship](https://www.codeship.io/features) - Hosted services with a limited free plan.
* [Go](http://www.thoughtworks.com/products/go-continuous-delivery) - ThoughtWork's CI open source solution.
* [Jenkins](http://jenkins-ci.org/) - Provides server-based deployment services.
* [TeamCity](http://www.jetbrains.com/teamcity/) - JetBrain's CI solution with a free version.
* [Travis](https://travis-ci.org) - Hosted service often used for open source projects.
## Database ## Database
*Everything which simplifies interactions with the database.* *Everything which simplifies interactions with the database.*
* [Apache Phoenix](http://phoenix.apache.org/) - High performance relational database layer over HBase for low latency applications. * [Apache Phoenix](http://phoenix.apache.org/) - High performance relational database layer over HBase for low latency applications.
* [Flyway](http://flywaydb.org/) - Simple database migration with Java API.
* [H2](http://h2database.com/) - Small SQL Database notable for its in-memory functionality.
* [JDBI](http://jdbi.org/) - Convenient abstraction of JDBC. * [JDBI](http://jdbi.org/) - Convenient abstraction of JDBC.
* [jOOQ](http://www.jooq.org/) - Generates typesafe code based on SQL schema. * [jOOQ](http://www.jooq.org/) - Generates typesafe code based on SQL schema.
* [Liquibase](http://www.liquibase.org/) - Source control for your database which can be embedded. * [Liquibase](http://www.liquibase.org/) - An open source database-independent library for tracking, managing and applying database schema changes.
* [presto](https://github.com/facebook/presto) - Distributed SQL query engine for big data. * [Presto](https://github.com/facebook/presto) - Distributed SQL query engine for big data.
* [Querydsl](http://www.querydsl.com/) - Typesafe unified queries for Java.
## Date and Time ## Date and Time
*Libraries related to date and time.* *Libraries related to handling date and time.*
* [Java 8 SE: Date and Time API](http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html) - Basically, it incorporates Joda-Time. * [Joda-Time](http://www.joda.org/joda-time/) - De facto standard date/time-library before Java 8.
* [Joda-Time](http://joda-time.sourceforge.net/) - De facto standard date/time-library before Java 8. * [Time4J](https://github.com/MenoData/Time4J) - Advanced date and time library for Java.
## Dependency Injection ## Dependency Injection
*Libraries that help to realize the [Inversion of Control](http://en.wikipedia.org/wiki/Inversion_of_control) paradigm.* *Libraries that help to realize the [Inversion of Control](http://en.wikipedia.org/wiki/Inversion_of_control) paradigm.*
* [Dagger](http://square.github.io/dagger/) - Compile-time injection framework without reflection, mainly for Android. * [Dagger](http://square.github.io/dagger/) - Compile-time injection framework without reflection, mainly for Android.
* [Google Guice](http://de.wikipedia.org/wiki/Google_Guice) - Lightweight but powerful framework. * [Guice](https://github.com/google/guice) - Lightweight but powerful framework that completes Dagger.
* [Spring](http://spring.io/) - Only Spring Context is needed for injections.
* [Weld](http://docs.jboss.org/weld/reference/latest/en-US/html_single/) - CDI reference implementation.
## Development ## Development
*Integrated environments that augment the process of development at a fundamental level.* *Augmentation of the development process at a fundamental level.*
* [DCEVM](http://ssw.jku.at/dcevm/) - Modification of the JVM that allows unlimited redefinition of loaded classes at runtime. * [AspectJ](https://eclipse.org/aspectj/) - Seamless aspect-oriented programming extension.
* [JRebel](http://zeroturnaround.com/software/jrebel/) - Instantly reloads code and configuration changes without redeploys. * [Auto](https://github.com/google/auto) - Collection of source code generators.
* [DCEVM](http://dcevm.github.io/) - Modification of the JVM that allows unlimited redefinition of loaded classes at runtime.
* [Immutables](http://immutables.github.io/) - Scala-like case classes in standard Java.
* [JRebel](http://zeroturnaround.com/software/jrebel/) - Commercial software that instantly reloads code and configuration changes without redeploys.
* [Lombok](http://projectlombok.org/) - Code-generator which aims to reduce the verbosity of Java.
* [RxJava](https://github.com/Netflix/RxJava) - Library for composing asynchronous and event-based programs using observable sequences from the JVM. * [RxJava](https://github.com/Netflix/RxJava) - Library for composing asynchronous and event-based programs using observable sequences from the JVM.
* [Spring Loaded](https://github.com/spring-projects/spring-loaded) - Another class reloading agent for the JVM.
* [vert.x](http://vertx.io/) - Polyglot event-driven application framework for the JVM. * [vert.x](http://vertx.io/) - Polyglot event-driven application framework for the JVM.
## Distributed Applications ## Distributed Applications
*Libraries and frameworks used to ease writing distributed and fault-tolerant applications.* *Libraries and frameworks for writing distributed and fault-tolerant applications.*
* [Akka](http://akka.io) - Toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications. * [Akka](http://akka.io) - Toolkit and runtime for building concurrent, distributed, and fault tolerant event-driven applications.
* [Apache Storm](http://storm.incubator.apache.org/) - Distributed realtime computation system. * [Apache Storm](http://storm.incubator.apache.org/) - Distributed realtime computation system.
* [Apache ZooKeeper](http://zookeeper.apache.org/) - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems. * [Apache ZooKeeper](http://zookeeper.apache.org/) - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.
* [Hazelcast](http://hazelcast.org/) - Distributed and highly scalable data distribution platform for Java. * [Hazelcast](http://hazelcast.org/) - Distributed and highly scalable in-memory datagrid.
* [Hystrix](https://github.com/Netflix/Hystrix) - Latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable. * [Hystrix](https://github.com/Netflix/Hystrix) - Latency and Fault Tolerance for Distributed Systems.
* [JGroups](http://www.jgroups.org/) - Toolkit for reliable messaging and creating clusters whose nodes can send messages to each other. * [JGroups](http://www.jgroups.org/) - Toolkit for reliable messaging and creating clusters whose nodes can send messages to each other.
* [Quasar](http://www.paralleluniverse.co/quasar/) - Lightweight threads and actors for the JVM.
## Distributed Databases
*Databases in a distributed system that appear to applications as a single data source.*
* [Apache Cassandra](http://cassandra.apache.org) - Apache Cassandra is a distributed column-oriented database providing high availability with no single point of failure.
* [Apache HBase](http://hbase.apache.org) - Apache HBase is the Hadoop database, a distributed, scalable, big data store.
* [Infinispan](http://infinispan.org/) - Distributed and highly concurrent key/value datastore used for caching.
## Distribution ## Distribution
*Tools which handle the distribution of Java applications in native formats.* *Tools which handle the distribution of Java applications in native formats.*
* [Bintray](https://bintray.com/) - Version control for your binaries which handles the publishing. Can also be used with Maven or Gradle. * [Bintray](https://bintray.com/) - Version control for binaries which handles the publishing. Can also be used with Maven or Gradle and has a free plan for Open Source Software or several business plans.
* [IzPack](http://izpack.org/) - Setup authoring tool for cross-platform deployments.
* [Launch4j](http://launch4j.sourceforge.net/) - Wraps JARs in lightweight and native Windows executables. * [Launch4j](http://launch4j.sourceforge.net/) - Wraps JARs in lightweight and native Windows executables.
* [packr](https://github.com/libgdx/packr#packr) - Packs your JAR, assets and JVM for native distribution on Windows, Linux and Mac OS X. * [packr](https://github.com/libgdx/packr/) - Packs your JAR, assets and JVM for native distribution on Windows, Linux and Mac OS X.
## Document Processing ## Document Processing
*Libraries that assist with processing office document formats.* *Libraries that assist with processing office document formats.*
* [Apache POI](http://poi.apache.org/) - Supports OOXML (e.g XLSX, DOCX, PPTX) as well as OLE2 (e.g. XLS, DOC or PPT). * [Apache POI](http://poi.apache.org/) - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
* [jOpenDocument](http://www.jopendocument.org/) - Processes the OpenDocument format. * [jOpenDocument](http://www.jopendocument.org/) - Processes the OpenDocument format.
## Game Development ## Game Development
@ -161,17 +192,12 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
* [Disruptor](http://lmax-exchange.github.io/disruptor/) - Inter-thread messaging library. * [Disruptor](http://lmax-exchange.github.io/disruptor/) - Inter-thread messaging library.
* [fastutil](http://fastutil.di.unimi.it/) - Fast and compact type-specific collections for Java. * [fastutil](http://fastutil.di.unimi.it/) - Fast and compact type-specific collections for Java.
* [GS Collections](https://github.com/goldmansachs/gs-collections) - Collection framework inspired by Smalltalk. * [GS Collections](https://github.com/goldmansachs/gs-collections) - Collection framework inspired by Smalltalk.
* [hftc](https://github.com/OpenHFT/hftc) - Hash sets and hash maps. * [Koloboke](https://github.com/OpenHFT/Koloboke) - Hash sets and hash maps.
* [HPPC](http://labs.carrotsearch.com/hppc.html) - Primitive collections. * [HPPC](http://labs.carrotsearch.com/hppc.html) - Primitive collections.
* [Javolution](http://javolution.org/) - Library for real-time and embedded systems. * [Javolution](http://javolution.org/) - Library for real-time and embedded systems.
* [Reactor](http://projectreactor.io/) - Library for building reactive fast-data applications.
* [Trove](http://trove.starlight-systems.com/) - Primitive collections. * [Trove](http://trove.starlight-systems.com/) - Primitive collections.
## HTTP
*Libraries for working with HTTP.*
* [OkHttp](http://square.github.io/okhttp/) - An HTTP+SPDY client for Android and Java applications.
## IDE ## IDE
*Integrated development environments that try to simplify several aspects of development.* *Integrated development environments that try to simplify several aspects of development.*
@ -184,21 +210,22 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Libraries that assist with the creation, evaluation or manipulation of graphical images.* *Libraries that assist with the creation, evaluation or manipulation of graphical images.*
* [Imgscalr](https://github.com/thebuzzmedia/imgscalr) - Imgscalr is an very simple and efficient (hardware accelerated) image-scaling library implemented in pure Java 2D.
* [Picasso](http://square.github.io/picasso/) - Image downloading and caching library for Android. * [Picasso](http://square.github.io/picasso/) - Image downloading and caching library for Android.
* [Thumbnailator](https://code.google.com/p/thumbnailator) - Thumbnailator is a high-quality thumbnail generation library for Java.
* [ZXing](https://github.com/zxing/zxing) - Multi-format 1D/2D barcode image processing library. * [ZXing](https://github.com/zxing/zxing) - Multi-format 1D/2D barcode image processing library.
## JSON ## JSON
*Libraries that simplify JSON processing.* *Libraries that simplify JSON processing.*
* [Google Gson](https://code.google.com/p/google-gson/) - Serializes Java objects to JSON and vice versa. Good performance with on-the-fly usage. * [Gson](https://github.com/google/gson) - Serializes Java objects to JSON and vice versa. Good performance with on-the-fly usage.
* [Jackson](http://wiki.fasterxml.com/JacksonHome) - Similar to GSON but has performance gains if you need to instantiate the library more often. * [Jackson](http://wiki.fasterxml.com/JacksonHome) - Similar to GSON but has performance gains if you need to instantiate the library more often.
## JVM and JDK ## JVM and JDK
*Various implementations of the JVM/JDK.* *Current implementations of the JVM/JDK.*
* [HotSpot](http://openjdk.java.net/groups/hotspot/) - Official JVM.
* [JDK 9](https://jdk9.java.net/) - Early access releases of JDK 9. * [JDK 9](https://jdk9.java.net/) - Early access releases of JDK 9.
* [OpenJDK](http://openjdk.java.net/) - Open source implementation. * [OpenJDK](http://openjdk.java.net/) - Open source implementation.
@ -207,6 +234,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Libraries that log the behavior of an application.* *Libraries that log the behavior of an application.*
* [Apache Log4j 2](http://logging.apache.org/log4j/) - Complete rewrite of the previous version. Now has a powerful plugin and configuration architecture. * [Apache Log4j 2](http://logging.apache.org/log4j/) - Complete rewrite of the previous version. Now has a powerful plugin and configuration architecture.
* [kibana](http://www.elasticsearch.org/overview/kibana/) - Analyzes and visualizes log files.
* [Logback](http://logback.qos.ch/) - Founded by the same developer as Log4j and proves to be a robust logging library with interesting configuration options via Groovy. * [Logback](http://logback.qos.ch/) - Founded by the same developer as Log4j and proves to be a robust logging library with interesting configuration options via Groovy.
* [logstash](http://logstash.net/) - Tool for managing log files. * [logstash](http://logstash.net/) - Tool for managing log files.
* [SLF4J](http://www.slf4j.org/) - Abstraction layer which is to be used with an implementation. * [SLF4J](http://www.slf4j.org/) - Abstraction layer which is to be used with an implementation.
@ -215,52 +243,63 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Tools that provide specific statistical algorithms which allow to learn from data.* *Tools that provide specific statistical algorithms which allow to learn from data.*
* [Apache Flink](https://flink.apache.org/) - Fast and reliable large-scale data processing engine.
* [Apache Hadoop](http://hadoop.apache.org/) - Open-source software framework for storage and large-scale processing of data-sets on clusters of commodity hardware. * [Apache Hadoop](http://hadoop.apache.org/) - Open-source software framework for storage and large-scale processing of data-sets on clusters of commodity hardware.
* [Apache Mahout](https://mahout.apache.org/) - Scalable algorithms focused on collaborative filtering, clustering and classification. * [Apache Mahout](https://mahout.apache.org/) - Scalable algorithms focused on collaborative filtering, clustering and classification.
* [Apache Spark](http://spark.apache.org/) - Open-source data analytics cluster computing framework. * [Apache Spark](http://spark.apache.org/) - Open-source data analytics cluster computing framework.
* [h2o](http://0xdata.github.io/h2o/) - Analytics engine for statistics over big data. * [H2O](http://0xdata.com/) - Analytics engine for statistics over big data.
* [Weka](http://www.cs.waikato.ac.nz/ml/weka/) - Collection of algorithms for data mining tasks ranging from pre-processing to visualization. * [Weka](http://www.cs.waikato.ac.nz/ml/weka/) - Collection of algorithms for data mining tasks ranging from pre-processing to visualization.
## Messaging ## Messaging
*Tools that help sending messages between clients to ensure protocol independency.* *Tools that help sending messages between clients to ensure protocol independency.*
* [Aeron](https://github.com/real-logic/Aeron) - Efficient reliable unicast and multicast message transport.
* [Apache ActiveMQ](http://activemq.apache.org/) - Open-source message broker that implements JMS and converts synchronous to asynchronous communication. * [Apache ActiveMQ](http://activemq.apache.org/) - Open-source message broker that implements JMS and converts synchronous to asynchronous communication.
* [Apache Camel](http://camel.apache.org/) - Glues together different transport APIs via Enterprise Integration Patterns.
* [Apache Kafka](http://kafka.apache.org/) - High-throughput distributed messaging system. * [Apache Kafka](http://kafka.apache.org/) - High-throughput distributed messaging system.
* [JBoss HornetQ](http://hornetq.jboss.org/) - Clear, concise, modular and made to be embedded. * [JBoss HornetQ](http://hornetq.jboss.org/) - Clear, concise, modular and made to be embedded.
* [JeroMQ](https://github.com/zeromq/jeromq) - Pure Java implementation of ZeroMQ.
## Miscellaneous ## Miscellaneous
*Everything else.* *Everything else.*
* [AspectJ](https://eclipse.org/aspectj/) - Aspect-oriented programming for Java. * [Design Patterns](https://github.com/iluwatar/java-design-patterns) - Implementation and explanation of the most common design patterns.
* [fabric8](http://fabric8.io/) - Integration platform for Java containers.
* [Jimfs](https://github.com/google/jimfs) - In-memory file system. * [Jimfs](https://github.com/google/jimfs) - In-memory file system.
* [Lanterna](https://code.google.com/p/lanterna/) - Easy console text GUI library similar to curses. * [Lanterna](https://code.google.com/p/lanterna/) - Easy console text GUI library similar to curses.
* [Lombok](http://projectlombok.org/) - Code-generator which aims to reduce the verbosity of Java. * [LightAdmin](http://lightadmin.org/) - Pluggable CRUD UI library for rapid application development.
* [Metrics](http://metrics.codahale.com/) - Create your own metrics (counters, gauges, timers) or add them for supported frameworks, then expose them via JMX or HTTP, or send them to a database (Graphite, Ganglia). * [Metrics](http://metrics.codahale.com/) - Create your own metrics or add them for supported frameworks, then expose them via JMX or HTTP, or send them to a database.
* [OpenRefine](http://openrefine.org/) - Tool for working with messy data: cleaning it; transforming it from one format into another; extending it with web services; and linking it to databases. * [OpenRefine](http://openrefine.org/) - Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases.
* [RoboVM](http://www.robovm.org/) - Write native iOS apps in Java. * [RoboVM](http://www.robovm.org/) - Commercial framework with a free trial to write native iOS apps in Java.
## Natural Language Processing ## Natural Language Processing
*Libraries that specialize on processing text.* *Libraries that specialize on processing text.*
* [Apache OpenNLP](https://opennlp.apache.org/) - Toolkit for common tasks like tokenization. * [Apache OpenNLP](https://opennlp.apache.org/) - Toolkit for common tasks like tokenization.
* [CoreNLP](http://nlp.stanford.edu/software/corenlp.shtml) - Stanford's CoreNLP provides a set of fundamental tools for tasks like tagging, named entity recognition, sentiment analysis and many more.
* [LingPipe](http://alias-i.com/lingpipe/) - Toolkit for a variety of tasks ranging from POS tagging to sentiment analysis. * [LingPipe](http://alias-i.com/lingpipe/) - Toolkit for a variety of tasks ranging from POS tagging to sentiment analysis.
* [Mallet](http://mallet.cs.umass.edu/) - Statistical natural language processing, document classification, clustering, topic modeling, etc. * [Mallet](http://mallet.cs.umass.edu/) - Statistical natural language processing, document classification, clustering, topic modeling and more.
## Networking ## Networking
*Libraries for network programming.* *Libraries for network programming.*
* [Grizzly](https://grizzly.java.net/) - NIO framework. Used as a network layer in Glassfish.
* [Netty](http://netty.io/) - A framework for building high performance network applications. * [Netty](http://netty.io/) - A framework for building high performance network applications.
* [OkHttp](http://square.github.io/okhttp/) - An HTTP+SPDY client for Android and Java applications.
* [Undertow](http://undertow.io/) - Web server providing both blocking and non-blocking APIs based on NIO. Used as a network layer in WildFly.
## ORM ## ORM
*APIs which handle the persistence of objects.* *APIs which handle the persistence of objects.*
* [Ebean](http://ebean-orm.github.io/) - ORM Framework that provides fast data access and even faster coding.
* [EclipseLink](https://www.eclipse.org/eclipselink/) - Supports a number of persistence standards: JPA, JAXB, JCA and SDO. * [EclipseLink](https://www.eclipse.org/eclipselink/) - Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
* [Hibernate](http://hibernate.org/orm/) - Robust and widely used with an active community. * [Hibernate](http://hibernate.org/orm/) - Robust and widely used with an active community.
* [OrmLite](http://ormlite.com/) - Lightweight ORM package avoiding the complexity and overhead of other ORM products.
## PDF ## PDF
@ -277,19 +316,17 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Frameworks specifically for creating RESTful services.* *Frameworks specifically for creating RESTful services.*
* [Dropwizard](https://dropwizard.github.io/dropwizard/) - Opinionated framework for setting up modern web applications, includes Jetty, Jackson, Jersey and Metrics. * [Dropwizard](https://dropwizard.github.io/dropwizard/) - Opinionated framework for setting up modern web applications, includes Jetty, Jackson, Jersey and Metrics.
* [Feign](https://github.com/Netflix/feign) - Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
* [Jersey](https://jersey.java.net/) - JAX-RS reference implementation. * [Jersey](https://jersey.java.net/) - JAX-RS reference implementation.
* [RESTEasy](http://resteasy.jboss.org/) - Fully certified and portable implementation of the JAX-RS specification. * [RESTEasy](http://resteasy.jboss.org/) - Fully certified and portable implementation of the JAX-RS specification.
* [RESTX](http://restx.io/) - A lightweight REST framework with emphasis on modularity, speed and dev-friendly features (light specs compiled to unit tests and documentation, authentication needed by default, ...)
* [Retrofit](http://square.github.io/retrofit/) - A type-safe REST client for Java. * [Retrofit](http://square.github.io/retrofit/) - A type-safe REST client for Java.
* [swookiee](http://swookiee.com/) - JVM Runtime for REST Services. * [Spark](http://www.sparkjava.com/) - A Sinatra inspired framework for java.
* [Swagger](https://helloreverb.com/developers/swagger) - Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services.
## Science ## Science
*Libraries for scientific computing and analysis.* *Libraries for scientific computing and analysis.*
* [JScience](http://www.jscience.org/) - Comprehensive framework of science related libraries.
* [JTransforms](https://sites.google.com/site/piotrwendykier/software/jtransforms) - Multithread FFT library.
* [Parallel Colt](https://sites.google.com/site/piotrwendykier/software/parallelcolt) - Multithread high performance scientific and technical computing.
* [SCaVis](http://jwork.org/scavis/) - Environment for scientific computation, data analysis and data visualization. * [SCaVis](http://jwork.org/scavis/) - Environment for scientific computation, data analysis and data visualization.
## Search ## Search
@ -297,17 +334,26 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Engines which index documents for search and analysis.* *Engines which index documents for search and analysis.*
* [Apache Solr](http://lucene.apache.org/solr/) - Full enterprise search engine optimized for high volume traffic. * [Apache Solr](http://lucene.apache.org/solr/) - Full enterprise search engine optimized for high volume traffic.
* [Elasticsearch](http://www.elasticsearch.org/) - Distributed, multitenant-capable full-text search engine with a RESTful web interface and schema-free JSON documents. * [Elasticsearch](http://www.elasticsearch.org/) - Distributed, multitenant-capable full-text search engine with a RESTful web interface and schema-free JSON documents.
## Security ## Security
*Libraries that handle security, authentication, authorization or session management.* *Libraries that handle security, authentication, authorization or session management.*
* [Apache Shiro](http://shiro.apache.org/) - Performs authentication, authorization, cryptography and session management. * [Apache Shiro](http://shiro.apache.org/) - Performs authentication, authorization, cryptography and session management.
* [Cryptomator](http://cryptomator.org/) - Multiplatform transparent client-side encryption of files in the cloud.
* [Keycloak](http://keycloak.jboss.org/) - Integrated SSO and IDM for browser apps and RESTful web services. Currently in beta but looks very promising. * [Keycloak](http://keycloak.jboss.org/) - Integrated SSO and IDM for browser apps and RESTful web services. Currently in beta but looks very promising.
* [PicketLink](http://picketlink.org/) - PicketLink is an umbrella project for security and identity management for Java applications. * [PicketLink](http://picketlink.org/) - PicketLink is an umbrella project for security and identity management for Java applications.
* [Spring Security](http://projects.spring.io/spring-security/) - Focuses on authentication/authorization and protects against several attack vectors. * [Spring Security](http://projects.spring.io/spring-security/) - Focuses on authentication/authorization and protects against several attack vectors.
## Serialization
*Libraries that handle serialization with high efficiency.*
* [FlatBuffers](https://github.com/google/flatbuffers) - Memory efficient serialization library that can access serialized data without unpacking and parsing it.
* [Kryo](https://github.com/EsotericSoftware/kryo) - Fast and efficient object graph serialization framework.
* [MessagePack](https://github.com/msgpack/msgpack-java) - Efficient binary serialization format.
## Server ## Server
*Servers which are specifically used to deploy applications.* *Servers which are specifically used to deploy applications.*
@ -324,7 +370,8 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
* [Apache Velocity](http://velocity.apache.org/) - Templates for HTML pages, emails or source code generation in general. * [Apache Velocity](http://velocity.apache.org/) - Templates for HTML pages, emails or source code generation in general.
* [FreeMarker](http://freemarker.org/) - General templating engine without any heavyweight or opinionated dependencies. * [FreeMarker](http://freemarker.org/) - General templating engine without any heavyweight or opinionated dependencies.
* [JavaServer Pages](https://jsp.java.net/) - Aged templating for websites with custom tag libraries. * [Handlebars.java](http://jknack.github.io/handlebars.java/) - Logic-less and semantic Mustache templates with Java.
* [JavaServer Pages](https://jsp.java.net/) - Common templating for websites with custom tag libraries.
* [Thymeleaf](http://www.thymeleaf.org/) - Aims to be a substitute for JSP and works for XML files in general. * [Thymeleaf](http://www.thymeleaf.org/) - Aims to be a substitute for JSP and works for XML files in general.
## Testing ## Testing
@ -333,51 +380,47 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
* [Apache JMeter](http://jmeter.apache.org/) - Functional testing and performance measurements. * [Apache JMeter](http://jmeter.apache.org/) - Functional testing and performance measurements.
* [Arquillian](http://arquillian.org/) - Integration and functional testing platform with integration of Java EE containers. * [Arquillian](http://arquillian.org/) - Integration and functional testing platform with integration of Java EE containers.
* [AssertJ](http://joel-costigliola.github.io/assertj/) - Fluent assertions. * [AssertJ](http://joel-costigliola.github.io/assertj/) - Fluent assertions that improve readability.
* [Caliper](https://code.google.com/p/caliper/) - Microbenchmarking framework. * [Hamcrest](http://hamcrest.org/JavaHamcrest/) - Matchers that can be combined to create flexible expressions of intent.
* [FEST](https://code.google.com/p/fest/) - Collection of testing libraries. * [JMH](http://openjdk.java.net/projects/code-tools/jmh/) - Microbenchmarking tool for the JVM.
* [Hamcrest](http://hamcrest.org/JavaHamcrest/) - Framework for writing declarative assertion matchers. * [JMockit](http://jmockit.org/) - The Mock Anything Toolkit for Java, mocks static, final methods and more.
* [JMH](http://openjdk.java.net/projects/code-tools/jmh/) - Microbenchmarking. * [JUnit](http://junit.org/) - Common testing framework.
* [JUnit](http://junit.org/) - Testing framework. * [Mockito](https://github.com/mockito/mockito) - Creation of test double objects in automated unit tests for the purpose of TDD or BDD.
* [Mockito](http://code.google.com/p/mockito/) - Creation of test double objects in automated unit tests for the purpose of TDD or BDD. * [Selenide](http://selenide.org/) - Concise API around Selenium to write stable and readable UI tests.
* [Selenium](http://docs.seleniumhq.org/) - Portable software testing framework for web applications. * [Selenium](http://docs.seleniumhq.org/) - Portable software testing framework for web applications.
* [TestNG](http://testng.org/) - Testing framework. * [TestNG](http://testng.org/) - Testing framework.
* [VisualVM](http://visualvm.java.net/) - Visual interface for viewing detailed information about Java applications while they are running on a JVM. * [VisualVM](http://visualvm.java.net/) - Visual interface for detailed information about running applications.
## Utility ## Utility
*Libraries which provide unspecific functionality, e.g. optimized datastructures.* *Libraries which provide general utility functions.*
* [args4j](http://args4j.kohsuke.org/) - Command line arguments parser
* [Apache Commons](http://commons.apache.org/) - Provides different general purpose functions like configuration, validation, collections, file upload or XML processing. * [Apache Commons](http://commons.apache.org/) - Provides different general purpose functions like configuration, validation, collections, file upload or XML processing.
* [Google Guava](http://code.google.com/p/guava-libraries/) - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth. * [Guava](https://github.com/google/guava) - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
* [javatuples](http://www.javatuples.org/) - Does what it says, although the concept of tuples in general is debatable. * [javatuples](http://www.javatuples.org/) - Does what it says, although the concept of tuples in general is debatable.
* [JGraphT](http://jgrapht.org/) - A graph library that provides mathematical graph-theory objects and algorithms.
## Visualization
*Libraries or frameworks which allow you to visualize data.*
* [kibana](http://www.elasticsearch.org/overview/kibana/) - Analyzes and visualizes log files.
* [Processing](https://www.processing.org/) - A project deeply rooted in visual art which allows you to program the visualization of data.
## Web Crawling ## Web Crawling
*Libraries that analyze the content of websites.* *Libraries that analyze the content of websites.*
* [Apache Nutch](http://nutch.apache.org/) - Highly extensible, highly scalable Web crawler for production environment. * [Apache Nutch](http://nutch.apache.org/) - Highly extensible, highly scalable Web crawler for production environment.
* [Crawler4j](https://code.google.com/p/crawler4j/) - Simple lightweight alternative. * [Crawler4j](https://github.com/yasserg/crawler4j) - Simple lightweight alternative.
* [jsoup](http://jsoup.org/) - Scrapes, parses, manipulates and cleans HTML. * [JSoup](http://jsoup.org/) - Scrapes, parses, manipulates and cleans HTML.
## Web Frameworks ## Web Frameworks
*Frameworks that handle the communication between the layers of an web application.* *Frameworks that handle the communication between the layers of an web application.*
h
* [Apache Tapestry](http://tapestry.apache.org/) - Component oriented framework for creating dynamic, robust, highly scalable web applications in Java. * [Apache Tapestry](http://tapestry.apache.org/) - Component oriented framework for creating dynamic, robust, highly scalable web applications in Java.
* [Apache Wicket](http://wicket.apache.org/) - Component-based web application framework similar to Tapestry with a stateful GUI. * [Apache Wicket](http://wicket.apache.org/) - Component-based web application framework similar to Tapestry with a stateful GUI.
* [Google Web Toolkit](http://www.gwtproject.org/) - Toolbox which includes a Java-to-JavaScript compiler for client-side code, XML parser, API for RPC, JUnit integration, internationalization support and widgets for the GUI. * [Google Web Toolkit](http://www.gwtproject.org/) - Toolbox which includes a Java-to-JavaScript compiler for client-side code, XML parser, API for RPC, JUnit integration, internationalization support and widgets for the GUI.
* [Grails](https://grails.org/) - Groovy framework with the aim to provide a highly productive environment by favoring convention over configuration, no XML and support for mixins. * [Grails](https://grails.org/) - Groovy framework with the aim to provide a highly productive environment by favoring convention over configuration, no XML and support for mixins.
* [Ninja](http://www.ninjaframework.org/) - Full stack web framework for Java. Rock solid, fast and super productive.
* [Play](http://www.playframework.com/) - Uses convention over configuration, hot code reloading and display of errors in the browser. * [Play](http://www.playframework.com/) - Uses convention over configuration, hot code reloading and display of errors in the browser.
* [PrimeFaces](http://primefaces.org/) - JSF framework which has a free and a commercial version with support. Provides several frontend components. * [PrimeFaces](http://primefaces.org/) - JSF framework which has a free and a commercial version with support. Provides several frontend components.
* [Spark](http://www.sparkjava.com/why.html) - Unique framework which focuses not on complex MVC patterns but on rapid development. * [Ratpack](http://www.ratpack.io/) - A set of Java libraries that facilitate fast, efficient, evolvable and well tested HTTP applications.
* [Spring Boot](http://projects.spring.io/spring-boot/) - Microframework which simplifies the development of new Spring applications. * [Spring Boot](http://projects.spring.io/spring-boot/) - Microframework which simplifies the development of new Spring applications.
* [Spring](http://projects.spring.io/spring-framework/) - Aims to simplify the development with Java EE and provides packages for dependency injection and aspect-oriented programming. * [Spring](http://projects.spring.io/spring-framework/) - Aims to simplify the development with Java EE and provides packages for dependency injection and aspect-oriented programming.
* [Vaadin](https://vaadin.com/) - Event-driven framework build on top of GWT. Uses server-side architecture with Ajax on the client-side. * [Vaadin](https://vaadin.com/) - Event-driven framework build on top of GWT. Uses server-side architecture with Ajax on the client-side.
@ -403,40 +446,55 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o
*Something to listen to while programming.* *Something to listen to while programming.*
* [The Java Posse](http://www.javaposse.com/) * [The Java Posse](http://www.javaposse.com/) (discontinued as of 02/2015)
## Twitter ## Twitter
*People to follow.* *Active accounts to follow.*
* [Adam Bien](https://twitter.com/AdamBien/) * [Adam Bien](https://twitter.com/AdamBien/) - Freelancer: Author, JavaONE Rockstar Speaker, Consultant, Java Champion.
* [Antonio Goncalves](https://twitter.com/agoncal/) * [Antonio Goncalves](https://twitter.com/agoncal/) - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
* [Arun Gupta](https://twitter.com/arungupta/) * [Arun Gupta](https://twitter.com/arungupta/) - Java Champion, JavaOne Rockstar, UG Leader, Devoxx4Kids-er, Red Hatter.
* [Ed Burns](https://twitter.com/edburns) * [Bruno Borges](https://twitter.com/brunoborges) - Product Manager/Java Jock at Oracle.
* [Java EE](https://twitter.com/Java_EE/) * [Ed Burns](https://twitter.com/edburns) - Consulting Member of the Technical Staff at Oracle.
* [Java Magazine](https://twitter.com/Oraclejavamag) * [Eugen Paraschiv](https://twitter.com/baeldung) - Author of the Spring Security Course.
* [Java.net](https://twitter.com/javanetbuzz/) * [James Weaver](https://twitter.com/JavaFXpert) - Java/JavaFX/IoT developer, author and speaker.
* [Java](https://twitter.com/java/) * [Java EE](https://twitter.com/Java_EE/) - Official Java EE Twitter account.
* [Mark Reinhold](https://twitter.com/mreinhold) * [Java Magazine](https://twitter.com/Oraclejavamag) - Official Java Magazine account.
* [OpenJDK](https://twitter.com/OpenJDK) * [Java.net](https://twitter.com/javanetbuzz/) - Official Java.net account.
* [Pete Muir](https://twitter.com/plmuir/) * [Java](https://twitter.com/java/) - Official Java Twitter account.
* [Reza Rahman](https://twitter.com/reza_rahman) * [Javin Paul](https://twitter.com/javinpaul) - Well-known Java blogger.
* [Simon Maple](https://twitter.com/sjmaple) * [Lukas Eder](https://twitter.com/lukaseder) - Founder and CEO Data Geekery (jOOQ).
* [Tim Boudreau](https://twitter.com/kablosna) * [Mario Fusco](https://twitter.com/mariofusco) - RedHatter, JUG coordinator, frequent speaker and author.
* [Mark Reinhold](https://twitter.com/mreinhold) - Chief Architect, Java Platform Group, Oracle.
* [Martijn Verburg](https://twitter.com/karianna) - London JUG co-leader, speaker, author, Java Champion and much more.
* [OpenJDK](https://twitter.com/OpenJDK) - Official OpenJDK account.
* [Reza Rahman](https://twitter.com/reza_rahman) - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
* [Simon Maple](https://twitter.com/sjmaple) - Java Champion, virtualJUG founder, LJC leader, RebelLabs author.
* [Stephen Colebourne](https://twitter.com/jodastephen) - Java Champion, speaker.
* [Tim Boudreau](https://twitter.com/kablosna) - Author and NetBeans guru.
* [Trisha Gee](https://twitter.com/trisha_gee) - Java Champion and speaker.
## Websites ## Websites
*Sites to read.* *Sites to read.*
* [Android Arsenal](https://android-arsenal.com)
* [Google Java Style](http://google-styleguide.googlecode.com/svn/trunk/javaguide.html)
* [InfoQ](http://www.infoq.com/)
* [Java Code Geeks](http://www.javacodegeeks.com/)
* [Java.net](http://java.net/) * [Java.net](http://java.net/)
* [Javalobby](http://java.dzone.com/) * [Javalobby](http://java.dzone.com/)
* [JavaWorld](http://www.javaworld.com/) * [JavaWorld](http://www.javaworld.com/)
* [JAXenter](http://jaxenter.com/)
* [RebelLabs](http://zeroturnaround.com/rebellabs/) * [RebelLabs](http://zeroturnaround.com/rebellabs/)
* [The Java Specialist' Newsletter](http://www.javaspecialists.eu/archive/archive.jsp)
* [TheServerSide.com](http://www.theserverside.com/)
* [Thoughts On Java](http://www.thoughts-on-java.org/)
* [Voxxed](https://www.voxxed.com/)
# Contributing # Contributing
Contributions are very welcome! Contributions are very welcome!
Please have a look at [CONTRIBUTING](https://github.com/akullpp/awesome-java/blob/master/CONTRIBUTING.md) for guidelines. Please have a look at [CONTRIBUTING](https://github.com/akullpp/awesome-java/blob/master/CONTRIBUTING.md) for guidelines.
Topics which have no libraries as of yet are located in [TOPICS](https://github.com/akullpp/awesome-java/blob/master/TOPICS.md).