diff --git a/README.md b/README.md index a577f9f..8fd92c8 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,12 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o - [Awesome Java](#awesome-java) - [Build Tool](#build-tool) - [Bytecode Manipulation](#bytecode-manipulation) + - [Cluster Management](#cluster-management) - [Code Analysis](#code-analysis) - [Compiler-compiler](#compiler-compiler) - [Continuous Integration](#continuous-integration) - [Database](#database) + - [Data structures](#data-structures) - [Date and Time](#date-and-time) - [Dependency Injection](#dependency-injection) - [Development](#development) @@ -16,6 +18,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o - [Distributed Databases](#distributed-databases) - [Distribution](#distribution) - [Document Processing](#document-processing) + - [Functional Programming](#functional-programming) - [Game Development](#game-development) - [GUI](#gui) - [High Performance](#high-performance) @@ -66,6 +69,13 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [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. +## Cluster Management + +*Frameworks which can dynamically manage applications inside of a cluster.* + +* [Apache Aurora](http://aurora.apache.org/) - Apache Aurora is a Mesos framework for long-running services and cron jobs. +* [Singularity](http://getsingularity.com/) - Singularity is a Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks. + ## Code Analysis *Tools that provide metrics and quality measurements.* @@ -98,6 +108,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o *Everything which simplifies interactions with the database.* +* [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. * [HikariCP](https://github.com/brettwooldridge/HikariCP) - High performance JDBC connection pool. @@ -107,6 +118,10 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [Presto](https://github.com/facebook/presto) - Distributed SQL query engine for big data. * [Querydsl](http://www.querydsl.com/) - Typesafe unified queries for Java. +## Data structures + +* [Apache Parquet](https://parquet.incubator.apache.org/) - A columnar storage format based on assembly algorithms from the Dremel paper by Google. + ## Date and Time *Libraries related to handling date and time.* @@ -120,6 +135,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [Dagger](http://square.github.io/dagger/) - Compile-time injection framework without reflection, mainly for Android. * [Guice](https://github.com/google/guice) - Lightweight but powerful framework that completes Dagger. +* [HK2](https://hk2.java.net) - A light-weight and dynamic dependency injection framework. ## Development @@ -128,6 +144,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [AspectJ](https://eclipse.org/aspectj/) - Seamless aspect-oriented programming extension. * [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. @@ -144,6 +161,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [Hazelcast](http://hazelcast.org/) - Distributed and highly scalable in-memory datagrid. * [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. +* [Orbit](http://orbit.bioware.com/) - Virtual Actors, adding another level of abstraction to traditional Actors. * [Quasar](http://www.paralleluniverse.co/quasar/) - Lightweight threads and actors for the JVM. ## Distributed Databases @@ -170,6 +188,14 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [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. +## Functional Programming + +*Libraries that facilitate functional programming in Java.* + +* [Functional Java](http://www.functionaljava.org) - Implements numerous basic and advanced programming abstractions that assist composition oriented development. +* [Javaslang](http://javaslang.com) - Functional component library built for Java 8+ that provides persistent data types and functional control structures. +* [jOOλ](https://github.com/jOOQ/jOOL) - An extension to Java 8 which aims to fix gaps in lambda, providing numerous missing types and a rich set of sequential Stream API additions. + ## Game Development *Frameworks that support the development of games.* @@ -219,7 +245,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o *Libraries that simplify JSON processing.* -* [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. ## JVM and JDK @@ -292,6 +318,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o *Libraries for network programming.* +* [Async Http Client](https://github.com/AsyncHttpClient/async-http-client) - Asynchronous HTTP and WebSocket client library. * [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. * [OkHttp](http://square.github.io/okhttp/) - An HTTP+SPDY client for Android and Java applications. @@ -316,6 +343,14 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [iText](http://itextpdf.com/) - Easy to use PDF library which creates PDF files programmatically but requires a license for commercial purposes. * [JasperReports](http://community.jaspersoft.com/project/jasperreports-library) - Complex reporting engine. +## Performance analysis + +*Tools for performance optimization and dynamic program analysis.* + +* [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html) - Commercial Java profiler. +* [YourKit Java Profiler](https://www.yourkit.com/features/) - Commercial Java profiler. +* [VisualVM](http://visualvm.java.net/) - Visual interface for detailed information about running applications. + ## REST Frameworks *Frameworks specifically for creating RESTful services.* @@ -324,6 +359,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [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. * [RESTEasy](http://resteasy.jboss.org/) - Fully certified and portable implementation of the JAX-RS specification. +* [RestX](http://restx.io) - Opinionated framework based one annotation processor, providing support for REST endpoint, type safe DI, hot compile/reload, API doc, metrics, specs-oriented endpoint testing. * [Retrofit](http://square.github.io/retrofit/) - A type-safe REST client for Java. * [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. @@ -367,6 +403,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [Apache TomEE](http://tomee.apache.org/) - Tomcat plus Java EE. * [GlassFish](https://glassfish.java.net/) - Open source reference implementation for Java EE sponsored by Oracle. * [Jetty](http://www.eclipse.org/jetty/) - Lightweight, small server, often embedded in projects. +* [WebSphere Liberty](https://developer.ibm.com/wasdev/) - Lightweight, modular server developed by IBM * [WildFly](http://www.wildfly.org/) - Formerly known as JBoss and developed by Red Hat with extensive Java EE support. ## Template Engine @@ -386,22 +423,25 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o * [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. * [AssertJ](http://joel-costigliola.github.io/assertj/) - Fluent assertions that improve readability. +* [Awaitility](https://github.com/jayway/awaitility) - DSL for synchronizing asynchronous operations. +* [Cucumber](https://github.com/cucumber/cucumber-jvm) - A BDD testing framework that supports the most popular programming languages for the JVM. * [Hamcrest](http://hamcrest.org/JavaHamcrest/) - Matchers that can be combined to create flexible expressions of intent. * [JMH](http://openjdk.java.net/projects/code-tools/jmh/) - Microbenchmarking tool for the JVM. +* [JMockit](http://jmockit.org/) - The Mock Anything Toolkit for Java, mocks static, final methods and more. * [JUnit](http://junit.org/) - Common 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. +* [Mockito](https://github.com/mockito/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. * [TestNG](http://testng.org/) - Testing framework. -* [VisualVM](http://visualvm.java.net/) - Visual interface for detailed information about running applications. ## Utility *Libraries which provide general utility functions.* * [args4j](http://args4j.kohsuke.org/) - Command line arguments parser +* [JCommander](http://jcommander.org/) - Command line arguments parser; its been around, active, and maintained by the creator since 2010. * [Apache Commons](http://commons.apache.org/) - Provides different general purpose functions like configuration, validation, collections, file upload or XML processing. -* [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. * [JGraphT](http://jgrapht.org/) - A graph library that provides mathematical graph-theory objects and algorithms. @@ -410,7 +450,7 @@ A curated list of awesome Java frameworks, libraries and software. Inspired by o *Libraries that analyze the content of websites.* * [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. ## Web Frameworks @@ -444,6 +484,7 @@ h * [Effective Java (2nd Edition)](http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683) * [Java Concurrency in Practice](http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601) +* [Java 8 in Action](http://www.amazon.com/Java-Action-Lambdas-functional-style-programming/dp/1617291994/) * [Thinking in Java](http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0131872486) ## Podcasts @@ -471,9 +512,12 @@ h * [Lukas Eder](https://twitter.com/lukaseder) - Founder and CEO Data Geekery (jOOQ). * [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. +* [Markus Eisele](https://twitter.com/myfear) - Java EE evangelist, Red Hat * [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. +* [Peter Lawrey](https://twitter.com/PeterLawrey) - Peter Lawrey, Java performance expert * [Reza Rahman](https://twitter.com/reza_rahman) - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker. +* [Roberto Cortez](https://twitter.com/radcortez) - Java EE/JPA expert, speaker, open source * [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. @@ -490,11 +534,15 @@ h * [Java.net](http://java.net/) * [Javalobby](http://java.dzone.com/) * [JavaWorld](http://www.javaworld.com/) +* [Java, SQL, and jOOQ](http://blog.jooq.org/) * [JAXenter](http://jaxenter.com/) * [RebelLabs](http://zeroturnaround.com/rebellabs/) * [The Java Specialist' Newsletter](http://www.javaspecialists.eu/archive/archive.jsp) * [TheServerSide.com](http://www.theserverside.com/) +* [The Takipi Blog](http://blog.takipi.com/) * [Thoughts On Java](http://www.thoughts-on-java.org/) +* [Vanilla Java](http://vanillajava.blogspot.ch/) +* [Vlad Mihalcea on Hibernate](http://vladmihalcea.com/) * [Voxxed](https://www.voxxed.com/) # Contributing