15 Jahre Erfahrung FreeCall 0800 tutegos

Java-Open-Source Projekte

Diese Sammlung von Links listet gute und sinnvolle quelloffene und lizenzfreundliche Ergänzungen auf, denn die Java-Standard-API reicht heute nicht mehr aus. Zu den aufgezählten Produkten zählen nicht nur einfache Bibliotheken, sondern es kommen Frameworks, große Software-Pakete wie Datenbanken oder Build-Tools dazu.

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

In Klammern steht hinter dem Projekt die Lizenzform. Zusätzliche Swing-Komponenten und JavaFX-Komponenten stehen auf Sonderseiten. Eine umfangreiche GitHub-Seite listet weitere Produkte auf.

Software Entwicklungsumgebung (IDEs) / UML-Tools

Java SE-Erweiterungen

XML / HTML / XML-Binding / Web-Services

  • JDOM (Apache). XML-Objekt-Modell, JDOM2 auf Java 5. Alternative ist dom4j (BSD),
  • Streaming API for XML (StAX) seit Java 6 im JDK. StaxMisc (LGPL) hat ein StaX-Parser für JDOM
  • Jaxen (Apache). XPath Engine, die übergreifend zu W3C-DOM, JDOM und dom4j arbeitet
  • Digester (Apache). Teil aus Apache Commons zum Einlesen von XML-Konfigurationsdateien (Tutorial)
  • Simple (GLPL). Objekt-XML-Mapping. Meta-Daten beschreiben Annotationen
  • XStream (BSD). Serialisierung in XML-Dateien ohne explizites Mapping. (Tutorial 1, 2, 3)
  • TagSoup (Academic Free License/GPL). Parser für HTML nach dem SAX-Prinzip. Korrigiert Tag-Fehler
  • CyberNeko HTML Parser (Apache). Korrigierender HTML-Parser
  • AXIOM, Teil aus AXIS2 (Apache). Axis Object Model.
  • Apache Axis2 (Apache). SOAP-Stack
  • XFire (Proprietär). Weiterer beliebter SOAP-Stack
  • XML-RPC (Apache). Java-Implementierung von Apache für XML-RPC
  • Dozer (Apache). Ermöglicht Mapping von Java-Beans auf Java-Beans

Web / Tag-Libs / Web Frameworks

Java EE / Container / Applikations-Server

  • GlassFish (CDDL). Referenzimplementierung von Sun für Java EE 5, Java EE 6, Java EE 7. Auch embedded
  • JBoss (LGPL). Freier zertifizierter Java EE-Stack
  • Apache TomEE (ausgesprochen "Tommy") ist ein zertifiziertes Java EE 6 Web Profile auf Basis von Apache Tomcat. Das Web Profile enthält: 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). Als Erweiterung zu TomEE gibt es TomEE+; hier kommt hinzu: JAX-RS (Apache CXF), JAX-WS (Apache CXF), JMS (Apache ActiveMQ), Connector (Apache Geronimo Connector)
  • Spring (Apache). IoC-Container mit Unterstützung für Aspekte, DAO, ...
  • ActiveMQ (Apache). JMS 1.1 Implementierung. (Viele andere Lösungen, wie OpenJMS, setzten nur die 1.0-Spezifikation um.) ActiveMQ ist auch die Messaging-Lösung in Geronimo.
  • Geronimo (Apache). Weiterer zertifizierter Java EE 6 Server von Apache
  • Dropwizard (Apache). Auf der Basis von Jetty integriert das Framework weitere Projekte, um einfach REST-Anwendungen in Java entwickeln zu können. Dazu kommen Jersey, Jackson, Metrics, Guava, Logback, Hibernate Validator zusammengebunden in einem fetten Jar.
  • File Resource Adapter (GPL). Ein JCA 1.5 Connector-Adapter für's Dateisystem. Nicht vollständig, kann aber als Basis dienen
  • James (Apache). Java Apache Mail Enterprise Server

Performance / Monitoring

Datenbank / DB-Browser / Persistenz

  • Hibernate (LGPL). Beliebter OR-Mapper und Basis von JBoss für seine Persistenzschicht. Implementierung von JPA.
  • Derby (Apache). Als JavaDB ab JDK 6 Teil jeder Distribution. Leistungsfähige Datenbank
  • hsqldb (proprietär). RDBMS-Implementierung in Java, besonders interessant für Embedded-Anwendungen
  • H2 Database Engine (abgewandelte MPL). Hypersonic 2, also eine Art hsqldb 2
  • Oracle Berkeley DB Java Edition (proprietär). Pure (embedded) Java-Datenbank
  • C-JDBC/Sequoia (LGPL/Apache). Cluster-Lösung. C-JDBC ist ein JDBC-Treiber, der auf mehrere Knoten verteilt
  • SQuirreL (LGPL). SQL Client
  • db4o (GPL). Performante Objekt-Datenbank
  • OpenJPA (Apache). JPA-Implementierung, die auf BEAs KODO zurückgeht
  • JDBI (Apache). Annotiert mit SQL-Kommandos DAOs und baut mit einer fluid-API JDBC-Anweisungen zusammen. Gehostet bei GitHub.

GUI / Reports / Grafik

GWT / Google App Engine für Java

Testen / Integration / Codeanalyse / Build-Management

  • JUnit (Common Public License). Das bekannteste Framework zum Testen von Java-Anwendungen
  • JUnit-addons (Apache). Framework, das u.a. Klassen zum Vergleichen von Listen, Dateien anbietet
  • Jenkins/Hudson (MIT+Create Commons). DER Continuous Integration Server
  • HTTPUnit (Eigene Lizenz). Testen von Web-Applikationen. Tutorial
  • HtmlUnit (Apache). Testen von Web-Applikationen. Tutorial
  • DbUnit. JUnit-Erweiterung zum Testen von Datenbankzuständen
  • arquillian (Apache). embedded JBoss für Tests
  • EJB3Unit (LGPL). JUnit-Erweiterung für EJB 3.0-Projekte
  • TestNG (Apache). Populäre Alternative zu JUnit
  • Hamcrest (BSD). Fluent-API zum Aufbau von Matchern für Test-Ausdrücke
  • FindBugs (LGPL). Automatisches Finden von Bugs auf Bytecode-Ebene. Auch als Eclipse-Plugin
  • PMD (BSD). Finden von Bugs
  • Checkstyle (GLPL). Überprüft den Code auf ungewünschte Muster
  • error-prone (Apache). Hängt sich in den Java-Compiler ein (daher funktioniert es im Moment nicht mit Eclipse) und erkennt Programmierfehler, ähnlich wie FindBugs. Zwar werden insgesamt weniger Bugs detektiert, doch sucht error-prone zum Beispiel auch nach falschen Inject-Annotationen. Entwickelt innerhalb von Google, auch FindBugs-Entwickler Bill Pugh hat kurz mitgearbeitet.
  • The Checker Framework (GLP 2/MIT). Hängt sich in den Java-Compiler und führt zusätzliche Typ-Prüfungen (Null-Pointer, SQL-Injections, …) durch. Funktioniert toll mit Java 8, da nun an jeder Deklaration eine Annotation erlaubt ist.
  • Juble (GPL). Mogelt Fehler in den Quellcode ein
  • Lint4j (Proprietär). Auffinden von Unregelmäßigkeiten
  • Hammurapi (GPL). Automatische Code-Reviews
  • HTTPTracer (Apache). HTTP-Proxy
  • Selenium (Apache). Web-Browser-Automatisierung zum Testen von Web-Apps
  • Cobertura (GPL). Code-Coverage auf der Basis von jcoverage.
  • Ant (Apache). Das Standard-Buildtool
  • Maven (Apache). Build-Management
  • CruiseControl. Überwachen/Automatisieren vom Build
  • Crap4j (EPL). Eine Zahl (die Software-Metrik) sagt aus, wie crappy das Projekt ist
  • Orangevolt Ant Tasks (Nachfolger von ROXES Ant Tasks)(GPL). Erweiterte Tasks für Ant, um etwa auf die Windows Registry zuzugreifen oder mit jstub ein ausführbares Programm unter Windows, MacOS X oder Unix zu erzeugen
  • Gradle (Apache). Gradle ist Ant in Groovy :)
  • Capsule (EPL). “Dead-Simple Packaging and Deployment for JVM Apps”. Im Kern ein Fat-Jar-Builder. Ermöglicht auch ausführbare WARs und Capsules können in Docker-Images konvertier werden. Alaternativ: One-JAR.

Projektplanung und -managing / Bug-Tracking / Wiki

  • Trac (BSD). Web-basiertes Projektmanagement-Werkzeug in Python
  • XPlanner (LGPL). Planung von XP-Projekten
  • TUTOS (GPL). Webanwendung zur Projektplanung
  • OpenPoint Issue Tracker. Closed Source und auch nicht Java, aber frei
  • ITracker (GPL). Tracking-System auf der Basis von Java EE
  • Scarab (BSD). Tracking
  • XWiki (LGPL). Freies und populäres Wiki
  • JSPWiki (LGPL). Ebenfalls populäres Wiki, was etwa von NetBeans verwendet wird
  • JAMWiki (LGPL). Java-Wiki mit weiteren kleinen Bibliotheken, etwa Wiki->HTML Renderer, Wikipedia-API

Dateisystem / Netzwerk / IO-Bibliotheken

  • Apache Commons Net (Apache). Java-Pakete für Internet-Protokolle FTP, NNTP, SMTP, POP3, Telnet, TFTP, Finger
  • Apache HttpComponents (früher Jakarta Commons HttpClient) (Apache). HTTP-Client Bibliothek
  • Async HTTP Client (Apache). Moderne HTTP-Client API
  • memoryfilesystem (MIT). In-memory Implementierung eines JSR-203 (NIO.2) Dateisystems
  • TrueZIP Library (Apache). Behandelt ZIP-Archive wie ein Dateisystem
  • LZF Compressor (Apache). Schneller quasi Echtzeit-Kompressor (Infos)
  • Jersey (CDDL+GPL). REST-Referenzimplementierung
  • Atmosphere (CDDL). Realtime Client Server Framework für asynchronone Web-Applikationen. Auch für GWT. Die neue Version 3 heißt Vibe.
  • JNotify (LGPL). Achtet auf Veränderungen im Dateisystem. In Java 7 nicht mehr nötig
  • Smart and Simple Web Crawler (Apache). Läuft rekursive Webseiten ab
  • jCIFS (LGPL). Zugriff auf SMB-Ressourcen, also \\Rechner\, etwa von Windows oder SAMBA-Freigaben
  • jpcap (Mozilla Public Licence). Fangen (Sniffen) von TCP/IP Paketen. Ermöglicht damit so etwas wie Wireshark (Ethereal)
  • cajo (LGPL). Kooperation zwischen mehreren virtuellen Maschinen
  • Apache FTP Server (Apache).
  • Apache MINA (Apache). Netzwerk-Framework
  • Capivara (GPL). Synchronisations-Software
  • Gmail4J (Apache). API zum Zugriff auf Google Mails zum Senden und Empfangen Nachrichten.
  • Java-Chronicle (Apache). Performant Daten (Messages) aus Dateien lesen und in selbige schreiben. Autor vom bekannten Vanillajava-Blog

Datenformate

  • POI (Apache). Zugriff auf MS Datei-Formate. Excelling in Excel with Java
  • Java Excel API (LGPL). Alternative zu POI für Excel-Tabellen
  • Apache ODF Toolkit (Apache). Zugriff auf das Open Document Format (ODF)
  • JOOReports (LGPL). Template-Engine auf der Basis von OpenOffice
  • OWNER (BSD). Mapt Properties auf Methoden von Interfaces mithilfe von Annotationen
  • JodConverter (LGPL). Office-Formate über OpenOffice konvertieren (etwa Word in PDF)
  • [ini4j] (Apache). Windows INI-Dateien lesen
  • 7-Zip-JBinding (LGPL). JNI-Java wrapper für 7Zip und verarbeitet so cab, bzip2, iso, ...
  • MessagePack (Apache). Schnelle auch plattformneutrale Serialisierung, alternativ Google Protocol Buffers (BSD) Weiters Serialisierungssystem
  • Apache Avro (Apache). Schnelles Serialisierungs-System
  • Gson (Apache). Java-Objekt nach JSON-Serialisierer
  • JSefa (Apache). Serialisiert Beans in die Formate CSV, XML und Flatfile
  • Super CSV (Apache). Mappt CSV-Dokumente auf Java-Beans

JVM Skript-/Programmiersprachen

  • Scala
  • JRuby
  • Groovy (Apache). Bekannte Skriptsprach auf der JVM mit Java-ähnlicher Syntax
  • doppio (proprietär). Komplette JVM in Typescript, also JavaScript. Siehe auch Demo
  • Typescript 4J (Lizenz unspezifiziert). Konvertiert Typescript-Programme in JavaScript-Programme, letztes Update schon etwas her

Betriebssystem-Integration / Installer

Sonstiges / Freeware / Tools

  • Pegdown Doclet (GPL 3). Markdown in Javadoc-Kommentaren statt HTML nutzen, inklusive PlantUML und Syntax Highlighting mit highlight.js.

  • BCEL (Apache), ASM (BSD), Javassist (MPL und LGPL). Generieren von Bytecode zur Laufzeit
  • cglib. Nutzt generierten Bytecode für Proxies und Weiteres
  • Quartz (BSD-ähnlich). Job scheduling system
  • ANTLR (BSD). Parser Generator. Alternative: JavaCC
  • JBoss Rules (Apache). Rule-Engine, ehemals Drools
  • rxtx (LGPL). Anbinden der seriellen/parallelen Schnittstelle unter Linux/MaxOS X und Windows
  • Jad 1.5.8e. Ein Java Decompiler. Nicht quelloffen und schon lange nicht mehr gepflegt. Ein visuelles Frontend ist etwa FrontEnd Plus. (Jad ist hier integriert.)
  • LimSee2 (Proprietär) Ein SMIL 2.0 Authoring-Tool
  • OVal (EPL) und JaValid (EPL). Validieren von Geschäftssobjekten
  • ICU4J (ICU Licence). Immer mit dem aktuellsten Unicode-Standard und allen Ländern der Welt Zeichen/-folgen parsen, formatieren, Zeitberechnungen durchführen. Aktueller als das JDK.