1
0
Fork 0
mirror of https://github.com/akullpp/awesome-java.git synced 2024-11-20 11:28:01 -05:00
java/README.md
akullpp c0f5a2e6f4 Update README.md
Added testing frameworks
2014-07-10 14:43:56 +02:00

256 lines
7.8 KiB
Markdown

# Awesome Java
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!
- [Awesome Java](#awesome-java)
- [Application Server](#application-server)
- [Build Tool](#build-tool)
- [Code Analysis](#code-analysis)
- [Continuous Integration](#continuous-integration)
- [Database Access](#database-access)
- [Date and Time](#date-and-time)
- [Dependency Injection](#dependency-injection)
- [GUI](#gui)
- [Game Development](#game-development)
- [IDE](#ide)
- [JSON](#json)
- [Logging](#logging)
- [Machine Learning](#machine-learning)
- [MapReduce](#mapreduce)
- [Messaging](#messaging)
- [Miscellaneous](#miscellaneous)
- [Natural Language Processing](#natural-language-processing)
- [ORM](#orm)
- [Permissions](#permissions)
- [Template Engine](#template-engine)
- [Testing](#testing)
- [Utility](#utility)
- [Web Crawling](#web-crawling)
- [Web Frameworks](#web-frameworks)
- [REST Frameworks](#rest-frameworks)
- [Resources](#resources)
- [Twitter](#twitter)
- [Websites](#websites)
- [Contributing](#contributing)
## Application Server
*Servers which are specifically used to deploy applications and provide extensive functionality for messaging and other Java specific features*
* [GlassFish](https://glassfish.java.net/) - Open source reference implementation for Java EE sponsored by Oracle with a limited lifetime
* [WildFly](http://www.wildfly.org/) - Formerly known as JBoss and developed by Red Hat
* [Jetty](http://www.eclipse.org/jetty/) - Part of the Eclipse Foundation
## Build Tool
*Tools which handle the build lifecycle of an application*
* [Apache Ant](http://ant.apache.org/) - Procedural build configuration via XML files
* [Apache Maven](http://maven.apache.org/) - Declarative lifecycle and dependency managment which favors convention over configuration
* [Gradle](http://www.gradle.org/) - Incremental build configuration which is programmed via Groovy
## Code Analysis
*Tools that provide metrics and quality measurements about static code*
* [SonarQube](http://www.sonarqube.org/)
* [FindBugs](http://findbugs.sourceforge.net/)
## Continuous Integration
*Tools which support continuously building, testing and releasing applications*
* [Jenkins](http://jenkins-ci.org/)
* [Hudson](http://hudson-ci.org/)
## 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
* [jOOQ](http://www.jooq.org/) - Generates typesafe code based on your SQL schema
## Date and Time
*Libraries related to date and time.*
* [Java 8 SE: Date and Time API](http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html)
* [Joda-Time](http://joda-time.sourceforge.net/)
## Dependency Injection
*Libraries that help to reliaze the [Inversion Of Control](http://en.wikipedia.org/wiki/Inversion_of_control) paradigma*
* [Google Guice](http://de.wikipedia.org/wiki/Google_Guice)
## GUI
*Libraries to create modern graphical user interfaces*
* [JavaFX](http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html)
## Game Development
*Frameworks that support the development of games*
* [LWJGL](http://lwjgl.org/)
* [libGDX](http://libgdx.badlogicgames.com/)
## IDE
*Integrated development environments that try to simplify several aspects of development*
* [NetBeans](https://netbeans.org/)
* [Eclipse](http://www.eclipse.org/)
* [IntelliJ](http://www.jetbrains.com/idea/)
## JSON
*Libraries that simplify JSON processing*
* [Google Gson](https://code.google.com/p/google-gson/)
* [Jackson](http://wiki.fasterxml.com/JacksonHome)
## Logging
*Libraries that log the behavior of an application*
* [SLF4J](http://www.slf4j.org/) - An abstraction layer which is to be used with an implementation
* [Log4j](http://logging.apache.org/log4j/)
* [Logback](http://logback.qos.ch/)
## Machine Learning
*Tools that allow to learn from data via a set of specific algorithms*
* [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/)
## MapReduce
*Libraries that provide access to the MapReduce model*
* [Apache Hadoop](http://hadoop.apache.org/)
## Messaging
*Tools that help sending messages between clients to ensure protocol independency*
* [Apache ActiveMQ](http://activemq.apache.org/)
* [JBoss HornetQ](http://hornetq.jboss.org/)
## Miscellaneous
*Everything else*
* [Jimfs](https://github.com/google/jimfs) - An in-memory file system
* [Lombok](http://projectlombok.org/) - Code-generator which aims to reduce the verbosity of Java
## Natural Language Processing
*Libraries that are specialized on processing text*
* [Apache OpenNLP](https://opennlp.apache.org/)
* [LingPipe](http://alias-i.com/lingpipe/)
## ORM
*APIs which handle the persistence of objects*
* [EclipseLink](https://www.eclipse.org/eclipselink/)
* [Hibernate](http://hibernate.org/orm/)
## Permissions
*Libraries that handle role/rights with associated permissions*
* [Apache Shiro](http://shiro.apache.org/)
## Template Engine
*Tools which substitute expressions in a template*
* JSP
* [Apache Tapestry](http://tapestry.apache.org/)
* [Apache Velocity](http://velocity.apache.org/)
* [Thymeleaf](http://www.thymeleaf.org/)
* [Jtwig](http://jtwig.org/)
## Testing
*Tools that test from object to interface level*
* [Apache JMeter](http://jmeter.apache.org/) - Functional testing and performance measurements
* [Mockito](http://code.google.com/p/mockito/)
* [Arquillian](http://arquillian.org/)
* [Selenium](http://docs.seleniumhq.org/) - Frontend testing
* [VisualVM](http://visualvm.java.net/)
* [Eclipse Memory Analyzer Tool](http://www.eclipse.org/mat/)
* [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
* [TestNG](http://testng.org/) Testing framework
* [JUnit](http://junit.org/) Testing framework
## Utility
*Libraries which provide unspecific functionality, e.g. optimized datastructures*
* [Apache Commons](http://commons.apache.org/)
* [Google Guava](http://code.google.com/p/guava-libraries/)
## Web Crawling
*Libraries that analyze the content of websites*
* [Apache Nutch](http://nutch.apache.org/)
* [Crawler4j](https://code.google.com/p/crawler4j/)
## Web Frameworks
*Frameworks that handle the communication between the layers of an web application*
* [Spring](http://spring.io/)
* [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/)
* [PrimeFaces](http://primefaces.org/)
## REST Frameworks
*Frameworks specifically for creating RESTful services*
* [Dropwizard](https://dropwizard.github.io/dropwizard/)
* [Jersey](https://jersey.java.net/)
## Twitter
*People to follow*
* [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/)
## Websites
*Important websites*
* [Java.net](http://java.net/)
# Contributing
Contributions are very welcome. Just mind the general style.