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]
- IDEs / UML-Tools
- Allgemeine Bibliotheken
- XML / JSON / HTML
- Web / Tag-Libs / Web Frameworks
- Java EE / Container / Applikations-Server
- Performance / Monitoring
- Datenbank / DB-Browser / Persistenz
- GUI / Reports / Grafik
- GWT / GAE/J
- Testen / Integration / Codeanalyse / Build-Management
- Projektplanung / Bug-Tracking / Wiki
- Dateisystem / Netzwerk / IO-Bibliotheken
- Datenformate
- JVM Skript-/Programmiersprachen
- Betriebssystem-Integration / Installer
- Sonstiges
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
- Eclipse (Eclipse Public License (EPL). Wichtige Entwicklungsumgebung, Eine eigene Unterseite listet feine Plugins auf
- NetBeans IDE (Sun Public License). Praktisch alles in einer IDE. Und schöner (Swing-GUI-Builder)
- IntelliJ IDEA Community Edition (Apache 2). Quelloffene Version von IntelliJ IDEA
Allgemeine Bibliotheken
- Google Guava (Apache). Neue Datenstrukturen, Event-Bus
- Apache Commons (Apache). Breit aufgestellte Utility-Bibliothek
- Glazed Lists (LGPL und MPL). Beobachtbare Listen, auch filter-/transformierbar, ähnlich wie es JavaFX bietet. Unterstützt Swing und SWT.
- Alphanum Algorithm (LGPL). Comparator für Strings mit einem Mix aus Buchstaben und Ziffern.
- Log4j (Apache). Logging, Update mit Log4j 2
- Logback Project (EPL/LGPL). Schickt sich an Nachfolger von log4j zu sein
- Simple Logging Facade for Java (SLF4J) (MIT). Logging-Fassade
- Parsen von Kommandozeilen mit Apache CLI, arg4j (MIT)
- Freemarker (Apache). Template-Engine, auch für Web-Anwendungen. Velocity (ebefalls Apache) fällt in den Updates zurück.
- Mustache (Apache). Sehr performantes Mustache-Templating-System für Java
- libphonenumber (Apache). Parsen und Formatieren von Telefonnummern überall auf der Welt. Bibliothek auch für andere Sprachen. Wird bei Google eingesetzt.
XML / JSON / HTML / Web-Services
- JDOM (Apache). XML-Objekt-Modell
- dom4j (BSD), XML-Objekt-Modell
- Jaxen (Apache). XPath Engine, die übergreifend zu W3C-DOM, JDOM und dom4j arbeitet
- XStream (BSD). Serialisierung auf XML-Dokumente 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
- Apache Tomcat (Apache). Servlets/JSP
- Jetty (Apache). Weiterer Servlet-Container. Ausgezeichnet für den embedded-Betrieb und Web-Services
- JavaServer Faces Referenzimplementierung/JSF RI (CDDL). Ich bin kein großer Fan von der Alternative MyFaces
- Cewolf (LGPL). Charts über JFreeChart aufbauen
- Display tag library (Artistic). Tabellen aufbereiten
- PortletBridge Portlet (Apache). Beliebige Webseiteinhalte als Portlet einbinden
- Turbine (Apache). MVC-Framework, nicht mehr aktiv weiterentwickelt
- Tapestry (Apache). Komponentenorientiertes Web-Framework
- MyFaces (Apache). Implementierung der JavaServer Faces Spezifikation
- Wicket (Apache). An Swing erinnerndes Komponenten-orientiertes Web-Framework
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..
- 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
- JBoss Rules (Apache). Rule-Engine, ehemals Drools
Performance / Monitoring
- JMeter (Apache). Lasttests nicht nur für HTTP, auch für JDBC, SOAP, ...
- VisualVM (GLP2)
- P6Spy (Apache-ähnlich). Abfangen, Loggen und Modifizieren von JDBC-Anweisungen
- Ehcache (Apache). Caching Framework. Wird zum Beispiel in Hibernate eingesetzt
- JETM - Java Execution Time Measurement Library (BSD). Laufzeitmessungen
- Jolokia (Apache). JMX-HTTP Bridge, die JSON nutzt
- Metrics (Apache). Metriken erfassen und über Reporters (JMX, Console, …) melden
- jmh (GPL v2). Verlässliche Benchmarks, siehe auch JMH Samples
- Caliper (Apache 2). Java-Microbenchmarks-Bibliothek von Google, weniger perfekte Ergebnisse als jmh, doch mit Visualisierung
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
- Weitere Swing-Komponenten
- Weitere JavaFX-Komponenten
- iText (MPL und LGPL). Generieren von PDF (iText in Action Beispiele).
- JasperReport (LGPL). Report-Tool wie Crystal Reports. Minianleitung
- iReport Designer. Visueller Designer für JasperReport
- JGoodies Looks (BSD). Korrigiert Unschönheiten unter Windows XP Swing Look and Feel.
- Look And Feels gibt es ja eine ganze Menge. http://www.javootoo.com/ listet die bekannten auf
- wraplf (Apache). Antialiasing für Swing-Komponenten
- Batik (Apache). Einlesen, Verarbeiten und Anzeige von SVG-Grafiken
- DataVision (GPL). Auch ein Reporting Tool
- gef (BSD). Weiteres Java Graph Editing Framework (hat nichts mit Eclipses GEF zu tun)
- BrowserLauncher2 (LGPL). Starten eines externen Browsers. Wenn man die Java 6 Desktop-API nicht nutzen kann
- Spin (LGPL). Threading-Framework. Webseite stellt das dem Swing-Worker gegenüber
- XML-Gui Abbildungen: Thinlet (GLPL), SwiXml (Apache-ähnlich), gui4j (GLPL).
- Jazzy: The Java Open Source Spell Checker (LGPL). "The Java Open Source Spell Checker", also Rechtschreibkorrektur
- LanguageTool Style and Grammar mit LanguageTool Java API. Grammatik- und Rechtschreibprüfung
- MyDoggy (Creative Commons). Docking Framework
- Substance Java Look And Feel (BSD). LaF, was auch neue Komponenten integriert
- Layout-Manager RiverLayout (LGPL). Zeichenfolgen beschreiben das Layout
- JEuclid (Apache). Konvertiert MathML in verschiedene Grafikformate oder zeigt sie in Swing an
- Image Loader Framework (Apache). Eine API für alle Bildformate und ein Image-Converter
GWT / Google App Engine für Java
- Google Web Toolkit (GWT) (Apache).
- gwt-bootstrap (Apache). Bringt Twitters Bootstrap-Bibliothek nach GWT
- Editable ListBox (GWT)
- mgwt (Apache). Definiert einheitliche UI-Komponenten und Animationen für mobile Endgeräte
- gwt-phonegap (Apache). A GWT Wrapper für die Phonegap JS Library
- Interessante Erweiterungen sind SmartGwt und Sencha GXT (ehemals Ext GWT)
- Vaadin (Apache). Web-Framework, nutzt GWT für das Frontend
- Editable Label (Apache)
- GWT und OpenID
- Objectify (MIT). Fassade für den Datastore
- Collide (Apache). Collaborative IDE hat einige interessante Komponenten
- gwt-jet (Apache). Erzeugt aus Sammlungen von JavaBeans automatisch GWT-Tabellen und schreibt Änderungen zurück, siehe Showcase
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
- 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
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.
- 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)
- 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
- ODF Toolkit. 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
- JACOB - Java COM Bridge (LGPL). Aufrufen von COM-Komponenten. Somit ist zum Beispiel eine Steuerung von MS-Office möglich. Groovy kann das über Scriptom nutzen
- com4j (MIT). COM-Objekte von Windows über typisierte Java-Schnittstellen nutzen
- Java Service Wrapper (Alle). Java-Programme als Windows-Services oder Unix Daemon ausführen
- JNA - Java Native Access (LGPL). Einfach OS-Libs (.dll, .so) ansprechen
- Launch4j (GPL). Bauen von ausführbaren Daten unter Windows, Linux/Solaris und Mac OS X. Mit GUI-Tool (Bild) oder auch über Ant-Task
- NSIS/Nullsoft Scriptable Install System (gemischt). Erzeugt Windows-Installer/Deinstaller
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
- 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.)
- Krakatau. Java Assembler, Disassembler, Decompiler
- jadx. Dex to Java decompiler
- 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.
Beliebte Open-Source Lizenzen
Frischcode
- Freecode (ehemals freshmeat.net)
- SourceForge.net
- java.net Java-Projekte
- merobase
- Google Code Hosting