Git Product home page Git Product logo

awesome-java's Introduction

Awesome Java

A curated list of awesome Java frameworks, libraries and software. Inspired by awesome-python.

Build Tool

Tools which handle the buildcycle of an application.

  • Apache Maven - Declarative build and dependency management which favors convention over configuration. It's preferable to Apache Ant which uses a rather procedural approach and can be rather difficult to maintain.
  • Gradle - Incremental builds which are programmed via Groovy instead of declaring XML. Works well with Maven's dependency management and treats Ant scripts as first-class citizens.

Code Analysis

Tools that provide metrics and quality measurements of static code.

  • SonarQube - Inspection tool for code quality. It integrates with several external tools like Gradle, Jira and Jenkins and provides an overview of the metrics over time.
  • FindBugs - Static analysis of bytecode to find potential bugs.
  • Metrics - Measures the behavior of critical components.

Compiler-compiler

Tools that create parsers, interpreters or compilers.

  • ANTLR - Complex full-featured framework for top-down parsing.
  • JavaCC - More specific and slightly easier to learn. Has syntactic lookahead.

Continuous Integration

Tools which support continuously building, testing and releasing applications.

  • Jenkins - Provides server-based services. Often seen as the successor to Hudson, although it is still actively developed.
  • Travis - A hosted continuous integration service that integrates with GitHub repositories.
  • Shippable - Based on Docker, it provides also Bitbucket integration.

Database

Everything which simplifies interactions with the database.

  • jOOQ - Generates typesafe code based on SQL schema.
  • Liquibase - Source control for your database which can be embedded.

Date and Time

Libraries related to date and time.

Dependency Injection

Libraries that help to realize the Inversion of Control paradigm.

  • Dagger - Compile-time injection framework without reflection, mainly for Android.
  • Google Guice - Lightweight but powerful framework.
  • Spring - Only Spring Context is needed for injections.
  • Weld - CDI reference implementation.

Development

Integrated environments that augment the process of development at a fundamental level, e.g. classloading.

  • DCEVM - Modification of the JVM that allows unlimited redefinition of loaded classes at runtime.
  • JRebel - Instantly reloads code and configuration changes without redeploys.

Distributed Applications

Libraries and frameworks used to ease writing distributed and fault-tolerant applications.

  • Akka - Toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications.
  • JGroups - Toolkit for reliable messaging and creating clusters whose nodes can send messages to each other.
  • Apache ZooKeeper - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.

Distribution

Tools which handle the distribution of Java applications in native formats.

  • Launch4j - Wraps JARs in lightweight and native Windows executables.
  • packr - Packs your JAR, assets and JVM for native distribution on Windows, Linux and Mac OS X.
  • Bintray - Version control for your binaries which handles the publishing. Can also be used with Maven or Gradle.

Document Processing

Libraries that assist with processing office document formats.

  • Apache POI - Supports OOXML (e.g XLSX, DOCX, PPTX) as well as OLE2 (e.g. XLS, DOC or PPT).
  • jOpenDocument - Processes the OpenDocument format.

GUI

Libraries to create modern graphical user interfaces.

Game Development

Frameworks that support the development of games.

  • jMonkeyEngine - Game engine for modern 3D development.
  • LWJGL - Robust framework that abstracts libraries like OpenGL/CL/AL.
  • libGDX - All-round cross-platform, high-level framework.

High Performance

Everything about high performance computation, from collections to specific libraries.

  • Trove - Primitive collections.
  • HPPC - Primitive collections.
  • Disruptor - Inter-thread messaging library.
  • Javalution - Library for real-time and embedded systems.

HTTP

Libraries for working with HTTP.

  • OkHttp - An HTTP+SPDY client for Android and Java applications.

IDE

Integrated development environments that try to simplify several aspects of development.

  • NetBeans - Provides integration for several Java SE and EE features starting with database access and servers to HTML5 and AngularJS.
  • Eclipse - Does a lot of things in the background. Noteworthy are its large amount of plugins.
  • IntelliJ IDEA - Supports a lot of JVM languages and provides good options for Android development. The commercial edition targets the enterprise sector.

JVM and JDK

Various implementations of the JVM/JDK.

  • HotSpot - Official JVM.
  • JDK 9 - Early access releases of JDK 9.
  • OpenJDK - Open source implementation.

JSON

Libraries that simplify JSON processing.

  • Google Gson - Serializes Java objects to JSON and vice versa. Good performance with on-the-fly usage.
  • Jackson - Similar to GSON but has performance gains if you need to instantiate the library more often.

Logging

Libraries that log the behavior of an application.

  • Apache Log4j 2 - Complete rewrite of the previous version. Now has a powerful plugin and configuration architecture.
  • Logback - Founded by the same developer as Log4j and proves to be a robust logging library with interesting configuration options via Groovy.
  • SLF4J - Abstraction layer which is to be used with an implementation.

Machine Learning

Tools that provide specific statistical algorithms which allow to learn from data.

  • Apache Hadoop - Open-source software framework for storage and large-scale processing of data-sets on clusters of commodity hardware.
  • Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
  • Apache Spark - Open-source data analytics cluster computing framework.
  • Weka - Collection of algorithms for data mining tasks ranging from pre-processing to visualization.

Messaging

Tools that help sending messages between clients to ensure protocol independency.

  • Apache ActiveMQ - Open-source message broker that implements JMS and converts synchronous to asynchronous communication.
  • Apache Kafka - High-throughput distributed messaging system.
  • JBoss HornetQ - Clear, concise, modular and made to be embedded.

Miscellaneous

Everything else.

  • Jimfs - In-memory file system.
  • Lanterna - Easy console text GUI library similar to curses.
  • Lombok - Code-generator which aims to reduce the verbosity of Java.
  • RoboVM - Write native iOS apps in Java.

Natural Language Processing

Libraries that specialize on processing text.

  • Apache OpenNLP - Toolkit for common tasks like tokenization.
  • LingPipe - Toolkit for a variety of tasks ranging from POS tagging to sentiment analysis.
  • Mallet - Statistical natural language processing, document classification, clustering, topic modeling, etc.

Networking

Libraries for network programming.

  • Netty - A framework for building high performance network applications.

ORM

APIs which handle the persistence of objects.

  • EclipseLink - Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
  • Hibernate - Robust and widely used with an active community.

PDF

Everything that helps with the creation of PDF files.

  • Apache FOP - Creates PDF from XSL-FO.
  • Apache PDFBox - Toolbox for creating and manipulating PDF.
  • JasperReports - Complex reporting engine.
  • DynamicReports - Simplifies JasperReports.
  • iText - Easy to use PDF library which creates PDF files programmatically but requires a license for commercial purposes.

Security

Libraries that handle security, authentication, authorization or session management.

  • Apache Shiro - Performs authentication, authorization, cryptography and session management.
  • Keycloak - Integrated SSO and IDM for browser apps and RESTful web services. Currently in beta but looks very promising.
  • PicketLink - PicketLink is an umbrella project for security and identity management for Java applications.
  • Spring Security - Focuses on authentication/authorization and protects against several attack vectors.

Science

Libraries for scientific computing and analysis.

  • JScience - Comprehensive framework of science related libraries.
  • JTransforms - Multithread FFT library.
  • Parallel Colt - Multithread high performance scientific and technical computing.
  • SCaVis - Environment for scientific computation, data analysis and data visualization.

Server

Servers which are specifically used to deploy applications.

  • GlassFish - Open source reference implementation for Java EE sponsored by Oracle.
  • WildFly - Formerly known as JBoss and developed by Red Hat with extensive Java EE support.
  • Jetty - Lightweight, small server, often embedded in projects.
  • Apache Tomcat - Robust all-round server for Servlet and JSP.
  • Apache TomEE - Tomcat plus Java EE.

Template Engine

Tools which substitute expressions in a template.

  • Apache Velocity - Templates for HTML pages, emails or source code generation in general.
  • FreeMarker - General templating engine without any heavyweight or opinionated dependencies.
  • JavaServer Pages - Aged templating for websites with custom tag libraries.
  • Thymeleaf - Aims to be a substitute for JSP and works for XML files in general.

Testing

Tools that test from object to interface level including performance and other benchmarks.

  • AssertJ - Fluent assertions.
  • Apache JMeter - Functional testing and performance measurements.
  • Arquillian - Integration and functional testing platform with integration of Java EE containers.
  • Calipher - Microbenchmarking framework.
  • FEST - Collection of testing libraries.
  • Hamcrest - Framework for writing declarative assertion matchers.
  • JMH - Microbenchmarking.
  • JUnit - Testing framework.
  • Mockito - Creation of test double objects in automated unit tests for the purpose of TDD or BDD.
  • Selenium - Portable software testing framework for web applications.
  • TestNG - Testing framework.
  • VisualVM - Visual interface for viewing detailed information about Java applications while they are running on a JVM.

Utility

Libraries which provide unspecific functionality, e.g. optimized datastructures.

  • Apache Commons - Provides different general purpose functions like configuration, validation, collections, file upload or XML processing.
  • Google Guava - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
  • javatuples - Does what it says, although the concept of tuples in general is debatable.

Visualization

Libraries or frameworks which allow you to visualize data.

  • Processing - A project deeply rooted in visual art which allows you to program the visualization of data.

Web Crawling

Libraries that analyze the content of websites.

  • Apache Nutch - Highly extensible, highly scalable Web crawler for production environment.
  • Crawler4j - Simple lightweight alternative.
  • jsoup - Scrapes, parses, manipulates and cleans HTML.

Web Frameworks

Frameworks that handle the communication between the layers of an web application.

  • Apache Tapestry - Component oriented framework for creating dynamic, robust, highly scalable web applications in Java.
  • Spring - Aims to simplify the development with Java EE and provides packages for dependency injection and aspect-oriented programming.
  • Spring Boot - Microframework which simplifies the development of new Spring applications.
  • Vaadin - Event-driven framework build on top of GWT. Uses server-side architecture with Ajax on the client-side.
  • Google Web Toolkit - Toolbox which includes a Java-to-JavaScript compiler for client-side code, XML parser, API for RPC, JUnit integration, internationalization support and widgets for the GUI.
  • Grails - Groovy framework with the aim to provide a highly productive environment by favoring convention over configuration, no XML and support for mixins.
  • Apache Wicket - Component-based web application framework similar to Tapestry with a stateful GUI.
  • Play - Uses convention over configuration, hot code reloading and display of errors in the browser.
  • PrimeFaces - JSF framework which has a free and a commercial version with support. Provides several frontend components.
  • Spark - Unique framework which focuses not on complex MVC patterns but on rapid development.

REST Frameworks

Frameworks specifically for creating RESTful services.

  • Dropwizard - Opinionated framework for setting up modern web applications, includes Jetty, Jackson, Jersey and Metrics.
  • Jersey - JAX-RS reference implementation.
  • RESTEasy - Fully certified and portable implementation of the JAX-RS specification.
  • Retrofit - A type-safe REST client for Java.

Resources

Communities

Active discussions.

Influential Books

Books about Java that had a high impact and are still worth reading.

Podcasts

Something to listen to while programming.

Twitter

People to follow.

Websites

Sites to read.

Contributing

Contributions are very welcome!

Please have a look at CONTRIBUTING for guidelines.

Topics which have no libraries as of yet are located in TOPICS.

awesome-java's People

Contributors

acisternino avatar akullpp avatar jon-ruckwood avatar mattrr78 avatar mizanrahman avatar rhoderij avatar tobias-placht avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.