mirror of
https://github.com/akullpp/awesome-java.git
synced 2024-11-20 11:28:01 -05:00
c0f5a2e6f4
Added testing frameworks
256 lines
7.8 KiB
Markdown
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.
|