2014-07-09 09:35:42 -04:00
# Awesome Java
2014-07-09 06:12:44 -04:00
2014-07-10 06:28:58 -04:00
A curated list of awesome Java frameworks, libraries and software. Inspired by [awesome-python ](https://github.com/vinta/awesome-python ). Topics which have no libraries as of yet are located in README.tmp!
2014-07-09 09:35:42 -04:00
- [Awesome Java ](#awesome-java )
2014-07-10 04:13:02 -04:00
- [Application Server ](#application-server )
2014-07-10 06:10:22 -04:00
- [Build Tool ](#build-tool )
2014-07-10 04:31:54 -04:00
- [Code Analysis ](#code-analysis )
2014-07-10 12:39:10 -04:00
- [Compiler-compiler ](#compiler-compiler )
2014-07-10 04:13:02 -04:00
- [Continuous Integration ](#continuous-integration )
2014-07-10 08:12:40 -04:00
- [Database Access ](#database-access )
2014-07-09 09:35:42 -04:00
- [Date and Time ](#date-and-time )
2014-07-10 04:31:54 -04:00
- [Dependency Injection ](#dependency-injection )
2014-07-10 14:16:54 -04:00
- [Development Tools ](#development-tools )
2014-07-10 11:20:21 -04:00
- [Distributed Applications ](#distributed-applications )
2014-07-10 08:16:09 -04:00
- [GUI ](#gui )
2014-07-09 09:35:42 -04:00
- [Game Development ](#game-development )
2014-07-10 09:19:28 -04:00
- [High Performance ](#high-performance )
2014-07-10 04:31:54 -04:00
- [IDE ](#ide )
2014-07-10 08:31:20 -04:00
- [JSON ](#json )
2014-07-09 09:35:42 -04:00
- [Logging ](#logging )
- [Machine Learning ](#machine-learning )
- [MapReduce ](#mapreduce )
- [Messaging ](#messaging )
- [Miscellaneous ](#miscellaneous )
- [Natural Language Processing ](#natural-language-processing )
2014-07-10 08:12:40 -04:00
- [ORM ](#orm )
2014-07-09 09:35:42 -04:00
- [Permissions ](#permissions )
- [Template Engine ](#template-engine )
- [Testing ](#testing )
- [Utility ](#utility )
- [Web Crawling ](#web-crawling )
- [Web Frameworks ](#web-frameworks )
2014-07-10 07:05:51 -04:00
- [REST Frameworks ](#rest-frameworks )
2014-07-09 09:35:42 -04:00
- [Resources ](#resources )
- [Twitter ](#twitter )
- [Websites ](#websites )
2014-07-10 14:16:54 -04:00
- [Communities ](#communities )
2014-07-10 09:19:28 -04:00
- [Influental Books ](#influental-books )
2014-07-09 09:35:42 -04:00
- [Contributing ](#contributing )
2014-07-10 04:13:02 -04:00
## Application Server
2014-07-10 10:12:26 -04:00
*Servers which are specifically used to deploy applications*
2014-07-09 10:08:42 -04:00
2014-07-10 10:12:26 -04:00
* [GlassFish ](https://glassfish.java.net/ ) - Open source reference implementation for Java EE sponsored by Oracle
* [WildFly ](http://www.wildfly.org/ ) - Formerly known as JBoss and developed by Red Hat with extensive Java EE support
* [Jetty ](http://www.eclipse.org/jetty/ ) - Lightweight, small server often embedded in projects. Part of the Eclipse Foundation
* [Apache Tomcat ](http://tomcat.apache.org/ ) - Robust allround server for Servlet and JSP
2014-07-10 06:10:22 -04:00
## Build Tool
2014-07-10 10:23:50 -04:00
*Tools which handle the buildcycle of an application*
2014-07-10 06:10:22 -04:00
2014-07-10 10:12:26 -04:00
* [Apache Ant ](http://ant.apache.org/ ) - Procedural build configurations via XML files
2014-07-10 10:23:50 -04:00
* [Apache Maven ](http://maven.apache.org/ ) - Declarative lifecycle and dependency managment which favors conventions
2014-07-10 10:12:26 -04:00
* [Gradle ](http://www.gradle.org/ ) - Incremental builds which are programmed via Groovy
2014-07-09 10:08:42 -04:00
2014-07-10 04:31:54 -04:00
## Code Analysis
2014-07-10 04:13:02 -04:00
2014-07-10 10:23:50 -04:00
*Tools that provide metrics and quality measurements of static code*
2014-07-10 06:10:22 -04:00
2014-07-10 10:12:26 -04:00
* [SonarQube ](http://www.sonarqube.org/ ) - Inspection tool for code quality
* [FindBugs ](http://findbugs.sourceforge.net/ ) - Static analysis to find potential bugs
2014-07-10 04:13:02 -04:00
2014-07-10 12:39:10 -04:00
## Compiler-compiler
*Tools that create parsers, interpreters or compilers*
* [ANTLR ](http://www.antlr.org/ )
* [JavaCC ](https://javacc.java.net/ )
2014-07-10 04:13:02 -04:00
## Continuous Integration
2014-07-10 06:10:22 -04:00
*Tools which support continuously building, testing and releasing applications*
2014-07-10 12:44:53 -04:00
* [Jenkins ](http://jenkins-ci.org/ ) - Provides server-based CI services, often seen as the successor to Hudson
2014-07-10 08:12:40 -04:00
## Database Access
*Everything which simplifies the access to the database*
* [DBeaver ](http://dbeaver.jkiss.org/ ) - Graphical database manager
* [JDBI ](http://jdbi.org/ ) - Simplification of JDBC
2014-07-10 10:23:50 -04:00
* [jOOQ ](http://www.jooq.org/ ) - Generates typesafe code based on SQL schema
2014-07-10 11:57:05 -04:00
* [Spring JDBCTemplate ](http://www.spring.io/ ) - Simplification of JDBC
2014-07-10 04:13:02 -04:00
2014-07-09 09:35:42 -04:00
## Date and Time
2014-07-09 10:08:42 -04:00
2014-07-10 04:13:02 -04:00
*Libraries related to date and time.*
2014-07-10 10:23:50 -04:00
* [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://joda-time.sourceforge.net/ ) - De facto standard date/time-library before Java 8
2014-07-09 10:08:42 -04:00
2014-07-10 04:13:02 -04:00
## Dependency Injection
2014-07-10 11:20:21 -04:00
*Libraries that help to realize the [Inversion Of Control ](http://en.wikipedia.org/wiki/Inversion_of_control ) paradigm*
2014-07-10 06:10:22 -04:00
2014-07-10 11:57:05 -04:00
* [Dagger ](http://square.github.io/dagger/ )
2014-07-10 04:13:02 -04:00
* [Google Guice ](http://de.wikipedia.org/wiki/Google_Guice )
2014-07-10 10:23:50 -04:00
* [Spring ](http://spring.io/ )
2014-07-10 12:44:53 -04:00
* [Weld ](http://docs.jboss.org/weld/reference/latest/en-US/html_single/ ) - CDI reference implementation
2014-07-10 04:13:02 -04:00
2014-07-10 14:16:54 -04:00
## Development Tools
* [DCEVM ](http://ssw.jku.at/dcevm/ ) - A modification of the JVM that allows unlimited redefinition of loaded classes at runtime
* [JRebel ](http://zeroturnaround.com/software/jrebel/ ) - Instantly reloads code and configuration changes without redeploys
2014-07-10 11:20:21 -04:00
## Distributed Applications
*Libraries and frameworks used to ease writing distributed and fault-tolerant applications*
* [Akka ](http://akka.io ) - Toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM.
* [JGroups ](http://www.jgroups.org/ ) - Toolkit for reliable messaging and creating clusters whose nodes can send messages to each other
2014-07-10 08:16:09 -04:00
## GUI
*Libraries to create modern graphical user interfaces*
* [JavaFX ](http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html )
2014-07-09 09:35:42 -04:00
## Game Development
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Frameworks that support the development of games*
2014-07-09 10:08:42 -04:00
* [LWJGL ](http://lwjgl.org/ )
* [libGDX ](http://libgdx.badlogicgames.com/ )
2014-07-10 09:19:28 -04:00
## High Performance
*Everything about high performance computation, from collections to specific libraries*
* [Trove ](http://trove.starlight-systems.com/ ) - High performance collections
* [HPPC ](http://labs.carrotsearch.com/hppc.html ) - High performance collections
* [Disruptor ](http://lmax-exchange.github.io/disruptor/ ) - High Performance Inter-Thread Messaging Library
2014-07-10 04:31:54 -04:00
## IDE
2014-07-09 16:56:32 -04:00
2014-07-10 06:10:22 -04:00
*Integrated development environments that try to simplify several aspects of development*
2014-07-09 16:56:32 -04:00
* [NetBeans ](https://netbeans.org/ )
* [Eclipse ](http://www.eclipse.org/ )
* [IntelliJ ](http://www.jetbrains.com/idea/ )
2014-07-10 08:31:20 -04:00
## JSON
*Libraries that simplify JSON processing*
* [Google Gson ](https://code.google.com/p/google-gson/ )
* [Jackson ](http://wiki.fasterxml.com/JacksonHome )
2014-07-09 09:35:42 -04:00
## Logging
2014-07-09 16:56:32 -04:00
2014-07-10 06:10:22 -04:00
*Libraries that log the behavior of an application*
2014-07-10 04:13:02 -04:00
* [SLF4J ](http://www.slf4j.org/ ) - An abstraction layer which is to be used with an implementation
2014-07-09 16:56:32 -04:00
* [Log4j ](http://logging.apache.org/log4j/ )
* [Logback ](http://logback.qos.ch/ )
2014-07-09 09:35:42 -04:00
## Machine Learning
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Tools that allow to learn from data via a set of specific algorithms*
2014-07-09 10:08:42 -04:00
* [Apache Mahout ](https://mahout.apache.org/ )
* [Apache Spark ](http://spark.apache.org/ )
* [Mallet ](http://mallet.cs.umass.edu/ )
* [Weka ](http://www.cs.waikato.ac.nz/ml/weka/ )
2014-07-09 09:35:42 -04:00
## MapReduce
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Libraries that provide access to the MapReduce model*
2014-07-09 10:08:42 -04:00
* [Apache Hadoop ](http://hadoop.apache.org/ )
2014-07-09 09:35:42 -04:00
## Messaging
2014-07-10 04:31:54 -04:00
2014-07-10 06:10:22 -04:00
*Tools that help sending messages between clients to ensure protocol independency*
2014-07-10 04:31:54 -04:00
* [Apache ActiveMQ ](http://activemq.apache.org/ )
2014-07-10 06:59:58 -04:00
* [JBoss HornetQ ](http://hornetq.jboss.org/ )
2014-07-10 04:31:54 -04:00
2014-07-09 09:35:42 -04:00
## Miscellaneous
2014-07-10 04:13:02 -04:00
2014-07-10 06:10:22 -04:00
*Everything else*
2014-07-10 08:43:56 -04:00
* [Jimfs ](https://github.com/google/jimfs ) - An in-memory file system
2014-07-10 04:13:02 -04:00
* [Lombok ](http://projectlombok.org/ ) - Code-generator which aims to reduce the verbosity of Java
2014-07-09 09:35:42 -04:00
## Natural Language Processing
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Libraries that are specialized on processing text*
2014-07-09 10:08:42 -04:00
* [Apache OpenNLP ](https://opennlp.apache.org/ )
* [LingPipe ](http://alias-i.com/lingpipe/ )
2014-07-10 08:12:40 -04:00
## ORM
*APIs which handle the persistence of objects*
* [EclipseLink ](https://www.eclipse.org/eclipselink/ )
* [Hibernate ](http://hibernate.org/orm/ )
2014-07-09 09:35:42 -04:00
## Permissions
2014-07-09 16:56:32 -04:00
2014-07-10 06:10:22 -04:00
*Libraries that handle role/rights with associated permissions*
2014-07-09 16:56:32 -04:00
* [Apache Shiro ](http://shiro.apache.org/ )
2014-07-09 09:35:42 -04:00
## Template Engine
2014-07-09 16:56:32 -04:00
2014-07-10 06:10:22 -04:00
*Tools which substitute expressions in a template*
* JSP
2014-07-09 16:56:32 -04:00
* [Apache Tapestry ](http://tapestry.apache.org/ )
* [Apache Velocity ](http://velocity.apache.org/ )
2014-07-10 11:57:05 -04:00
* [Freemarker ](http://freemarker.org/ )
2014-07-09 16:56:32 -04:00
* [Thymeleaf ](http://www.thymeleaf.org/ )
2014-07-10 08:18:50 -04:00
* [Jtwig ](http://jtwig.org/ )
2014-07-09 16:56:32 -04:00
2014-07-09 09:35:42 -04:00
## Testing
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Tools that test from object to interface level*
2014-07-10 06:11:10 -04:00
* [Apache JMeter ](http://jmeter.apache.org/ ) - Functional testing and performance measurements
2014-07-09 10:08:42 -04:00
* [Mockito ](http://code.google.com/p/mockito/ )
2014-07-10 04:13:02 -04:00
* [Arquillian ](http://arquillian.org/ )
2014-07-10 08:43:56 -04:00
* [Selenium ](http://docs.seleniumhq.org/ ) - Frontend testing
2014-07-10 04:13:02 -04:00
* [VisualVM ](http://visualvm.java.net/ )
* [Eclipse Memory Analyzer Tool ](http://www.eclipse.org/mat/ )
2014-07-10 08:43:56 -04:00
* [Hamcrest ](http://hamcrest.org/JavaHamcrest/ ) - Framework for writing declarative assertion matchers
* [FEST ](https://code.google.com/p/fest/ ) - Collection of testing libraries
* [AssertJ ](http://joel-costigliola.github.io/assertj/ ) - Fluent assertions
* [Calipher ](https://code.google.com/p/caliper/ ) - Microbenchmarking framework
* [JMH ](http://openjdk.java.net/projects/code-tools/jmh/ ) - Microbenchmarking
2014-07-10 08:44:34 -04:00
* [TestNG ](http://testng.org/ ) - Testing framework
* [JUnit ](http://junit.org/ ) - Testing framework
2014-07-09 10:08:42 -04:00
2014-07-09 09:35:42 -04:00
## Utility
2014-07-10 04:13:02 -04:00
2014-07-10 06:10:22 -04:00
*Libraries which provide unspecific functionality, e.g. optimized datastructures*
2014-07-10 04:13:02 -04:00
* [Apache Commons ](http://commons.apache.org/ )
* [Google Guava ](http://code.google.com/p/guava-libraries/ )
2014-07-10 11:57:05 -04:00
* [JavaTuples ](http://www.javatuples.org/ ) - Tuples for Java
2014-07-10 04:13:02 -04:00
2014-07-09 09:35:42 -04:00
## Web Crawling
2014-07-09 16:56:32 -04:00
2014-07-10 06:10:22 -04:00
*Libraries that analyze the content of websites*
2014-07-09 16:56:32 -04:00
* [Apache Nutch ](http://nutch.apache.org/ )
* [Crawler4j ](https://code.google.com/p/crawler4j/ )
2014-07-09 09:35:42 -04:00
## Web Frameworks
2014-07-09 10:08:42 -04:00
2014-07-10 06:10:22 -04:00
*Frameworks that handle the communication between the layers of an web application*
2014-07-10 11:57:05 -04:00
* [Spring ](http://projects.spring.io/spring-framework/ )
2014-07-09 10:08:42 -04:00
* [Grails ](https://grails.org/ )
* [Vaadin ](https://vaadin.com/ )
* [GWT ](http://www.gwtproject.org/ )
* [Apache Wicket ](http://wicket.apache.org/ )
* [Play ](http://www.playframework.com/ )
* [Apache Struts ](http://struts.apache.org/ )
2014-07-09 16:56:32 -04:00
* [PrimeFaces ](http://primefaces.org/ )
2014-07-09 10:08:42 -04:00
2014-07-10 07:05:51 -04:00
## REST Frameworks
*Frameworks specifically for creating RESTful services*
2014-07-10 14:16:54 -04:00
* [Dropwizard ](https://dropwizard.github.io/dropwizard/ ) - Opinionated framework for setting up modern web applications, includes Jetty, Jackson, Jersey and Metrics
* [Jersey ](https://jersey.java.net/ ) - JAX-RS reference implementation
# Resources
2014-07-10 07:05:51 -04:00
2014-07-09 09:35:42 -04:00
## Twitter
2014-07-09 15:47:53 -04:00
2014-07-10 06:10:22 -04:00
*People to follow*
2014-07-09 15:47:53 -04:00
* [Adam Bien ](https://twitter.com/AdamBien/ )
* [Antonio Goncalves ](https://twitter.com/agoncal/ )
* [Arun Gupta ](https://twitter.com/arungupta/ )
* [Java ](https://twitter.com/java/ )
* [Java EE ](https://twitter.com/Java_EE/ )
* [Java.net ](https://twitter.com/javanetbuzz/ )
* [Joshua Bloch ](https://twitter.com/joshbloch/ )
* [Pete Muir ](https://twitter.com/plmuir/ )
2014-07-09 09:35:42 -04:00
## Websites
2014-07-09 15:47:53 -04:00
2014-07-10 06:10:22 -04:00
*Important websites*
2014-07-09 15:47:53 -04:00
* [Java.net ](http://java.net/ )
2014-07-10 14:16:54 -04:00
## Communities
* [r/java ](http://www.reddit.com/r/java ) - Subreddit for the Reddit Java community
2014-07-10 09:19:28 -04:00
## Influental Books
2014-07-10 14:16:54 -04:00
*Books about Java that had a high impact and are still worth reading*
2014-07-10 09:19:28 -04:00
* [Effective Java (2nd Edition) ](http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683 )
2014-07-10 11:57:05 -04:00
* [Java Concurrence in Practice ](http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601 )
* [Thinking in Java ](http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0131872486 )
2014-07-10 09:19:28 -04:00
2014-07-09 09:35:42 -04:00
# Contributing
Contributions are very welcome. Just mind the general style.