diff --git a/README.md b/README.md index 648a4f7..d77c7b2 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,19 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [awesome-python](https://github.com/vinta/awesome-python). + +Legend: + +* :heavy_dollar_sign: = Commercial, either completely or in a specific use case. +* :heavy_exclamation_mark: = The usage of this software is rather discouraged by the open-source community. + + - [Awesome Java](#awesome-java) - [Build Tool](#build-tool) - [Code Analysis](#code-analysis) - [Compiler-compiler](#compiler-compiler) - [Continuous Integration](#continuous-integration) - - [Database Access](#database-access) + - [Database](#database) - [Date and Time](#date-and-time) - [Dependency Injection](#dependency-injection) - [Development Tools](#development-tools) @@ -16,18 +23,17 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ - [Game Development](#game-development) - [High Performance](#high-performance) - [IDE](#ide) - - [JVM And JDK](#jvm-and-jdk) + - [JVM and JDK](#jvm-and-jdk) - [JSON](#json) - [Logging](#logging) - [Machine Learning](#machine-learning) - - [MapReduce](#mapreduce) - [Messaging](#messaging) - [Miscellaneous](#miscellaneous) - [Natural Language Processing](#natural-language-processing) - [ORM](#orm) - [PDF](#pdf) - - [Permissions](#permissions) - - [Science and Data Analysis](#science-and-data-analysis) + - [Security](#security) + - [Science](#science) - [Server](#server) - [Template Engine](#template-engine) - [Testing](#testing) @@ -56,7 +62,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ * [SonarQube](http://www.sonarqube.org/) - Inspection tool for code quality. * [FindBugs](http://findbugs.sourceforge.net/) - Static analysis to find potential bugs. -* [Metrics](http://metrics.codahale.com/) - Measure the behavior of critical components. +* [Metrics](http://metrics.codahale.com/) - Measures the behavior of critical components. ## Compiler-compiler @@ -69,18 +75,15 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ *Tools which support continuously building, testing and releasing applications* -* [Hudson](http://hudson-ci.org/) - Still actively maintained but not recommended in new projects. +* [Hudson](http://hudson-ci.org/) (:heavy_exclamation_mark:) - Still actively maintained but not recommended in new projects. * [Jenkins](http://jenkins-ci.org/) - Provides server-based CI services, often seen as the successor to Hudson. -## Database Access +## Database -*Everything which simplifies the access to the database* +*Everything which simplifies interactions with 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 SQL schema. -* [Liquibase](http://www.liquibase.org/) - Source control for your database. -* [Spring JDBCTemplate](http://www.spring.io/) - Simplification of JDBC. +* [Liquibase](http://www.liquibase.org/) - Source control for your database which can be embedded. * [MapDB](http://www.mapdb.org/) - Database engine with optimized datastructures. ## Date and Time @@ -95,27 +98,28 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ *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. -* [Google Guice](http://de.wikipedia.org/wiki/Google_Guice) +* [Google Guice](http://de.wikipedia.org/wiki/Google_Guice) - Lightweight DI framework. * [Spring](http://spring.io/) - The Spring Context module provides DI. * [Weld](http://docs.jboss.org/weld/reference/latest/en-US/html_single/) - CDI reference implementation. ## Development Tools * [DCEVM](http://ssw.jku.at/dcevm/) - 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. +* [JRebel](http://zeroturnaround.com/software/jrebel/) (:heavy_dollar_sign:) - Instantly reloads code and configuration changes without redeploys. ## 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. -* [Apache ZooKeeper](http://zookeeper.apache.org/) - Coordination service. +* [Apache ZooKeeper](http://zookeeper.apache.org/) - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems. ## GUI *Libraries to create modern graphical user interfaces* -* [JavaFX](http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html) +* [JavaFX](http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html) - Considered the successor of Swing. +* [Scene Builder](http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-info-2157684.html) - Visual Layout Tool for JavaFX Applications. ## Game Development @@ -141,14 +145,12 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ * [Eclipse](http://www.eclipse.org/) * [IntelliJ IDEA](http://www.jetbrains.com/idea/) -## JVM And JDK +## JVM and JDK *Various implementations of the JVM/JDK* * [HotSpot](http://openjdk.java.net/groups/hotspot/) - Official JVM. -* [IBM J9](https://www.ibm.com/developerworks/java/jdk/) * [JDK 9](https://jdk9.java.net/) - Early access releases of JDK 9. -* [JRockit](http://www.oracle.com/technetwork/middleware/jrockit/overview/index.html) - Originally developed by BEA, has a different kind of GC and is often used with WebLogic. * [OpenJDK](http://openjdk.java.net/) - Open source implementation. ## JSON @@ -162,33 +164,25 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ *Libraries that log the behavior of an application* -* [Apache Log4j](http://logging.apache.org/log4j/) -* [SLF4J](http://www.slf4j.org/) - Abstraction layer which is to be used with an implementation. +* [Apache Log4j 2](http://logging.apache.org/log4j/) * [Logback](http://logback.qos.ch/) +* [SLF4J](http://www.slf4j.org/) - Abstraction layer which is to be used with an implementation. ## Machine Learning *Tools that allow to learn from data via a set of specific algorithms* +* [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 Spark](http://spark.apache.org/) - Open-source data analytics cluster computing framework. * [Weka](http://www.cs.waikato.ac.nz/ml/weka/) - Collection of algorithms for data mining tasks ranging from pre-processing to visualization. -## MapReduce - -*Libraries that provide access to the MapReduce model* - -* [Apache Crunch](http://crunch.apache.org/) - Framework for simple MapReduce pipelines. -* [Apache Hadoop](http://hadoop.apache.org/) - Open-source software framework for storage and large-scale processing of data-sets on clusters of commodity hardware. - ## Messaging *Tools that help sending messages between clients to ensure protocol independency* * [Apache ActiveMQ](http://activemq.apache.org/) * [JBoss HornetQ](http://hornetq.jboss.org/) -* [Spring AMQP](http://projects.spring.io/spring-amqp/) -* [Spring Integration](http://projects.spring.io/spring-integration/) - Enterprise Service Bus. ## Miscellaneous @@ -219,27 +213,25 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ * [Apache FOP](http://xmlgraphics.apache.org/fop/) - Creates PDF from XSL-FO. * [Apache PDFBox](http://pdfbox.apache.org/) - Toolbox for creating and manipulating PDF. * [JasperReports](http://community.jaspersoft.com/project/jasperreports-library) - Complex reporting engine. -* [DynamicJasper](http://dynamicjasper.com/) - Simplifies JasperReports. * [DynamicReports](http://dynamicreports.org/) - Simplifies JasperReports. -* [iText](http://itextpdf.com/) - Easy to use PDF library but for commercial products you need a license. -* [PDF Clown](http://www.stefanochizzolini.it/en/projects/clown/features.html) +* [iText](http://itextpdf.com/) (:heavy_dollar_sign:) - Easy to use PDF library which creates PDF files programmatically but requires a license for commercial purposes. -## Permissions +## Security -*Libraries that handle role/rights with associated permissions* +*Libraries that handle security, authentication, authorization or session management* -* [Apache Shiro](http://shiro.apache.org/) -* [Keycloak](http://keycloak.jboss.org/) - Integrated SSO and IDM for browser apps and RESTful web services. +* [Apache Shiro](http://shiro.apache.org/) - Performs authentication, authorization, cryptography and session management. * [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 and authorization and protects against several attack vectors. -## Science and Data Analysis +## Science *Libraries for scientific computing and analysis* -* [Colt](http://acs.lbl.gov/ACSSoftware/colt/) - High performance scientific and technical computing. +* [JScience](http://www.jscience.org/) - Comprehensive framework of science related libraries. * [JTransforms](https://sites.google.com/site/piotrwendykier/software/jtransforms) - Multithread FFT library. -* [Mines JTK](http://inside.mines.edu/~dhale/jtk/) - Tools for digital signal processing, linear algebra, inversion, 2-D and 3-D graphics, and more. * [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. ## Server @@ -255,31 +247,28 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ *Tools which substitute expressions in a template* -* JSP -* [Apache Tapestry](http://tapestry.apache.org/) * [Apache Velocity](http://velocity.apache.org/) -* [Freemarker](http://freemarker.org/) -* [Jtwig](http://jtwig.org/) -* [Mustache](http://mustache.github.io/) +* [FreeMarker](http://freemarker.org/) +* [JavaServer Pages](https://jsp.java.net/) * [Thymeleaf](http://www.thymeleaf.org/) +* [Scalate](http://scalate.fusesource.org/) ## Testing *Tools that test from object to interface level including performance and other benchmarks* -* [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. +* [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. * [Calipher](https://code.google.com/p/caliper/) - Microbenchmarking framework. +* [FEST](https://code.google.com/p/fest/) - Collection of testing libraries. +* [Hamcrest](http://hamcrest.org/JavaHamcrest/) - Framework for writing declarative assertion matchers. * [JMH](http://openjdk.java.net/projects/code-tools/jmh/) - Microbenchmarking. -* [TestNG](http://testng.org/) - Testing framework. * [JUnit](http://junit.org/) - Testing framework. +* [Mockito](http://code.google.com/p/mockito/) - Creation of test double objects in automated unit tests for the purpose of TDD or BDD. +* [Selenium](http://docs.seleniumhq.org/) - Portable software testing framework for web applications. +* [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 ## Utility @@ -287,7 +276,6 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ * [Apache Commons](http://commons.apache.org/) * [Google Guava](http://code.google.com/p/guava-libraries/) -* [JavaTuples](http://www.javatuples.org/) - Tuples for Java. ## Web Crawling @@ -300,13 +288,14 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by [ *Frameworks that handle the communication between the layers of an web application* +* [Apache Struts](http://struts.apache.org/) +* [Apache Tapestry](http://tapestry.apache.org/) * [Spring](http://projects.spring.io/spring-framework/) * [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/) * [Spark](http://www.sparkjava.com/why.html)