What is Open Source in Java

Java open source projects

This collection of links lists good and meaningful open source and license-free additions, because the Java standard API is no longer sufficient today. The listed products not only include simple libraries, but also frameworks, large software packages such as databases or build tools.

Whenever possible, steal code. [Tom Duff, Bell Labs]

The type of license is shown in brackets after the project. Additional Swing components and JavaFX components are on special pages. An extensive GitHub page lists other products.

Software development environment (IDEs) / UML tools

General libraries

  • Google Guava (Apache). New data structures, event bus
  • Apache Commons (Apache). Broad utility library
  • Glazed Lists (LGPL and MPL). Watchable lists, also filterable / transformable, similar to what JavaFX offers. Supports Swing and SWT.
  • Alphanum Algorithm (LGPL). Comparator for strings with a mix of letters and numbers.
  • Log4j (Apache). Logging, update with Log4j 2
  • Logback Project (EPL / LGPL). Sends to be the successor of log4j
  • Simple Logging Facade for Java (SLF4J) (MIT). Logging facade
  • Command line parsing with Apache CLI, arg4j (MIT)
  • Freemarker (Apache). Template engine, also for web applications. Velocity (also Apache) falls behind in the updates.
  • Mustache (Apache). Very high-performance mustache templating system for Java
  • libphonenumber (Apache). Parse and format phone numbers anywhere in the world. Library for other languages ​​too. Used by Google.

XML / JSON / HTML / web services

  • JDOM (Apache). XML object model
  • dom4j (BSD), XML object model
  • Jaxen (Apache). XPath engine that works across the board with W3C-DOM, JDOM and dom4j
  • XStream (BSD). Serialization to XML documents without explicit mapping. (Tutorial 1, 2, 3)
  • TagSoup (Academic Free License / GPL). Parser for HTML based on the SAX principle. Corrects tag errors
  • CyberNeko HTML Parser (Apache). Correcting HTML parser
  • AXIOM, part of AXIS2 (Apache). Axis Object Model.
  • Apache Axis2 (Apache). SOAP stack
  • XFire (proprietary). Another popular SOAP stack
  • XML-RPC (Apache). Java implementation of Apache for XML-RPC
  • Dozer (Apache). Allows mapping of Java beans to Java beans

Web / Tag-Libs / Web Frameworks

Java EE / container / application server

  • GlassFish (CDDL). Reference implementation by Sun for Java EE 5, Java EE 6, Java EE 7. Also embedded
  • JBoss (LGPL). Free certified Java EE stack
  • Apache TomEE (pronounced "Tommy") is a certified Java EE 6 web profile based on Apache Tomcat. The Web Profile contains: CDI (Apache OpenWebBeans), EJB (Apache OpenEJB), JPA (Apache OpenJPA), JSF (Apache MyFaces), JSP, JSTL, Servlet (Apache Tomcat), JTA (Apache Geronimo Transaction), Javamail (Apache Geronimo JavaMail), Bean Validation (Apache BVal). As an extension to TomEE there is TomEE +; here comes: JAX-RS (Apache CXF), JAX-WS (Apache CXF), JMS (Apache ActiveMQ), Connector (Apache Geronimo Connector)
  • Spring (Apache). IoC container with support for aspects, DAO, ...
  • ActiveMQ (Apache). JMS 1.1 implementation. (Many other solutions, such as OpenJMS, only implement the 1.0 specification.) ActiveMQ is also the messaging solution in Geronimo.
  • Geronimo (Apache). Another certified Java EE 6 server from Apache
  • Dropwizard (Apache). Based on Jetty, the framework integrates further projects in order to be able to easily develop REST applications in Java. There are also Jersey, Jackson, Metrics, Guava, Logback, Hibernate Validator ..
  • File Resource Adapter (GPL). A JCA 1.5 connector adapter for the file system. Not complete, but can serve as a basis
  • James (Apache). Java Apache Mail Enterprise Server
  • JBoss Rules (Apache). Rule engine, formerly Drools

Performance / monitoring

  • JMeter (Apache). Load tests not only for HTTP, also for JDBC, SOAP, ...
  • VisualVM (GLP2)
  • P6Spy (Apache-like). Intercept, log and modify JDBC statements
  • Ehcache (Apache). Caching framework. Used in Hibernate, for example
  • JETM - Java Execution Time Measurement Library (BSD). Time of flight measurements
  • Jolokia (Apache). JMX-HTTP bridge that uses JSON
  • Metrics (Apache). Record metrics and report them via reporters (JMX, Console, ...)
  • jmh (GPL v2). Reliable benchmarks, see also JMH Samples
  • Caliper (Apache 2). Java microbenchmarks library from Google, less perfect results than jmh, but with visualization

Database / DB browser / persistence

  • Hibernate (LGPL). Popular OR mapper and the basis of JBoss for its persistence layer. Implementation of JPA.
  • Derby (Apache). As JavaDB from JDK 6 part of every distribution. Powerful database
  • hsqldb (proprietary). RDBMS implementation in Java, particularly interesting for embedded applications
  • H2 Database Engine (modified MPL). Hypersonic 2, a kind of hsqldb 2
  • Oracle Berkeley DB Java Edition (proprietary). Pure (embedded) Java database
  • C-JDBC / Sequoia (LGPL / Apache). Cluster solution. C-JDBC is a JDBC driver that is distributed over several nodes
  • SQuirreL (LGPL). SQL client
  • db4o (GPL). High-performance object database
  • OpenJPA (Apache). JPA implementation that goes back to BEA's KODO
  • JDBI (Apache). Annotates DAOs with SQL commands and assembles JDBC statements with a fluid API. Hosted on GitHub.

GUI / reports / graphics

GWT / Google App Engine for Java

Testing / Integration / Code Analysis / Build Management

  • JUnit (Common Public License). The most popular framework for testing Java applications
  • JUnit addons (Apache). Framework that offers, among other things, classes for comparing lists and files
  • Jenkins / Hudson (MIT + Create Commons). THE Continuous Integration Server
  • HTTPUnit (own license). Testing of web applications. Tutorial
  • HtmlUnit (Apache). Testing of web applications. Tutorial
  • DbUnit. JUnit extension for testing database states
  • arquillian (Apache). embedded JBoss for tests
  • EJB3Unit (LGPL). JUnit extension for EJB 3.0 projects
  • TestNG (Apache). Popular alternative to JUnit
  • Hamcrest (BSD). Fluent API for building matchers for test expressions
  • FindBugs (LGPL). Automatic detection of bugs at the bytecode level. Also as an Eclipse plugin
  • PMD (BSD). Finding bugs
  • Checkstyle (GLPL). Checks the code for unwanted patterns
  • error-prone (Apache). Hooks itself into the Java compiler (so it doesn't work with Eclipse at the moment) and detects programming errors, similar to FindBugs. Although fewer bugs are detected overall, error-prone also looks for incorrect inject annotations, for example. Developed within Google, FindBugs developer Bill Pugh also worked briefly.
  • The Checker Framework (GLP 2 / MIT). It depends on the Java compiler and carries out additional type checks (null pointers, SQL injections, ...). Works great with Java 8, as annotation is now allowed on every declaration.
  • Cheers (GPL). Cheats in the source code
  • Lint4j (proprietary). Finding irregularities
  • Hammurapi (GPL). Automatic code reviews
  • Selenium (Apache). Web browser automation for testing web apps
  • Cobertura (GPL). Code coverage based on jcoverage.
  • Ant (Apache). The standard build tool
  • Maven (Apache). Build management
  • CruiseControl. Monitor / automate the build
  • Crap4j (EPL). A number (the software metric) tells you how crappy the project is
  • Orangevolt Ant Tasks (successor to ROXES Ant Tasks) (GPL). Extended tasks for Ant, for example to access the Windows registry or to create an executable program with jstub under Windows, MacOS X or Unix
  • Gradle (Apache). Gradle is Ant in Groovy :)
  • Capsule (EPL). "Dead-Simple Packaging and Deployment for JVM Apps". At its core a fat jar builder. Also enables executable WARs and capsules can be converted to Docker images. Alternative: One-JAR.

Project planning and management / bug tracking / wiki

  • Trac (BSD). Web-based project management tool in Python
  • XPlanner (LGPL). Planning of XP projects
  • TUTOS (GPL). Web application for project planning
  • OpenPoint Issue Tracker. Closed source and not Java either, but free
  • ITracker (GPL). Tracking system based on Java EE
  • Scarab (BSD). Tracking
  • XWiki (LGPL). Free and popular wiki
  • JSPWiki (LGPL). Also popular wiki, which is used by NetBeans, for example

File system / network / IO libraries

  • Apache Commons Net (Apache). Java packages for Internet protocols FTP, NNTP, SMTP, POP3, Telnet, TFTP, Finger
  • Apache HttpComponents (formerly Jakarta Commons HttpClient) (Apache). HTTP client library
  • Async HTTP Client (Apache). Modern HTTP client API
  • memory filesystem (MIT). In-memory implementation of a JSR-203 (NIO.2) file system
  • TrueZIP Library (Apache). Treats ZIP archives like a file system
  • LZF Compressor (Apache). Fast, quasi real-time compressor (info)
  • Jersey (CDDL + GPL). REST reference implementation
  • Atmosphere (CDDL). Realtime client server framework for asynchronous web applications. Also for GWT. The new version 3 is called Vibe.
  • Smart and Simple Web Crawler (Apache). Expires recursive web pages
  • jCIFS (LGPL). Access to SMB resources, so \Computer\, for example from Windows or SAMBA shares
  • jpcap (Mozilla Public License). Catching (sniffing) of TCP / IP packets. Allows something like Wireshark (Ethereal)
  • Apache FTP Server (Apache).
  • Apache MINA (Apache). Network framework
  • Capivara (GPL). Synchronization software
  • Gmail4J (Apache). API to access Google Mails for sending and receiving messages.
  • Java Chronicle (Apache). Read high-performance data (messages) from files and write to them. Author of the famous Vanillajava blog

Data formats

  • POI (Apache). Access to MS file formats. Excelling in Excel with Java
  • ODF toolkit. Access to the Open Document Format (ODF)
  • JOOReports (LGPL). Template engine based on OpenOffice
  • OWNER (BSD). Mapt properties on methods of interfaces using annotations
  • JodConverter (LGPL). Convert Office formats via OpenOffice (e.g. Word to PDF)
  • [ini4j] (Apache). Read Windows INI files
  • 7-Zip-JBinding (LGPL). JNI-Java wrapper for 7Zip and processes cab, bzip2, iso, ...
  • MessagePack (Apache). Fast, platform-neutral serialization, alternatively Google Protocol Buffers (BSD). Furthermore, serialization system
  • Apache Avro (Apache). Fast serialization system
  • Gson (Apache). Java object after JSON serializer
  • JSefa (Apache). Serializes beans in CSV, XML, and flat file formats
  • Super CSV (Apache). Maps CSV documents to Java beans

JVM scripting / programming languages

  • Scala
  • JRuby
  • Groovy (Apache). Well-known scripting language on the JVM with Java-like syntax
  • doppio (proprietary). Complete JVM in Typescript, i.e. JavaScript. See also demo
  • Typescript 4J (license unspecified). Converts Typescript programs into JavaScript programs, last update a bit ago

Operating system integration / installer

Other / freeware / tools

  • Pegdown Doclet (GPL 3). Use markdown in Javadoc comments instead of HTML, including PlantUML and syntax highlighting with highlight.js.
  • BCEL (Apache), ASM (BSD), Javassist (MPL and LGPL). Generate bytecode at runtime
  • cglib. Uses generated bytecode for proxies and more
  • Quartz (similar to BSD). Job scheduling system
  • ANTLR (BSD). Parser generator. Alternative: JavaCC
  • rxtx (LGPL). Connection of the serial / parallel interface under Linux / MaxOS X and Windows
  • Jad 1.5.8e. A Java decompiler. Not open source and not looked after for a long time. A visual frontend is FrontEnd Plus, for example. (Jad is integrated here.)
  • Krakatau. Java assembler, disassembler, decompiler
  • jadx. Dex to Java decompiler
  • LimSee2 (Proprietary) A SMIL 2.0 authoring tool
  • OVal (EPL) and JaValid (EPL). Validate business objects
  • ICU4J (ICU License). Always use the latest Unicode standard and all countries in the world to parse, format, and perform time calculations. More up-to-date than the JDK.

Popular open source licenses

Fresh code