Sie befinden sich hier: Home » Wissenstransfer » Java » Open-Source
Java-Open-Source Projekte
Diese Sammlung von Links listet in meinen Augen 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 Bibliotheken, sondern auch Software-Pakete wie Datenbanken oder Build-Tools.
Whenever possible, steal code. [Tom Duff, Bell Labs]
- IDEs / UML-Tools
- XML / HTML / XML-Binding
- Web / Tag-Libs / Web Frameworks
- Java EE / Container / Applikations-Server
- Performance
- Datenbank / DB-Browser / Persistenz
- GUI / Reports / Grafik
- Build-Management
- Testen / Integration / Projektplanung und -managing / Bug-Tracking / Wiki
- Dateisystem / Netzwerk / IO-Bibliotheken / Datenformate
- Betriebssystem-Integration / Installer
- Sonstiges
In Klammern steht hinter dem Projekt die Lizenzform. Zusätzliche Swing-Komponenten stehen auf einer Sonderseite.
Software Entwicklungsumgebung (IDEs) / UML-Tools
- Eclipse (Eclipse Public License (EPL). Wichtige Entwicklungsumgebung Eine eigene Unterseite listet feine Plugins auf
- NetBeans IDE (Sun Public License). Schöner GUI-Builder mit Matisse
- XDoclet (BSD). Code-Generierung, etwa für EJBs Home-/Reme-Interface oder auch für Hiberante Mapping Dateien
- ArgoUML (BSD). UML-Tool. Bisher kein Plugin für Eclipse, wobei eine externe Gruppe daran arbeitet
XML / HTML / XML-Binding / Web-Services
- Xerces Java Parser (Apache). Neben Sun's Crimson ein schneller Parser
- XOM (LGPL). Ein XML-Objekt-Modell von Elliotte Rusty Harold
- JDOM (Apache). XML-Objekt-Modell. Eine Alternative ist noch dom4j (BSD)
- Streaming API for XML (StAX) und Woodstox sind Pull Parser. 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 Jakarta Commons zum Einlesen von XML-Konfig-Dateien (Tutorial)
- 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). Einführung
- PowerML (proprietär). Liest die binären PPT-Dateien ein und bildet sie als XML-Dokumente ab
- Castor (Exolab License, wie BSD). XML-Binding. Ich bevorzuge im Allgemeinen JAXB 2
- 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 JavaBeans auf JavaBeans
Web / Tag-Libs / Web Frameworks
- Apache Jakarta Tomcat (Apache). (Ehemalige) Referenzimplementierung für Servlets/JSP. Der 6er macht JSP 2.1 und Servlet 2.5
- 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
- Jakarta Taglibs Project (Apache). TagLib etwa für Request, Response, JMS, ...
- Display tag library (Artistic). Tabellen aufbereiten
- PortletBridge Portlet (Apache). Beliebige Webseiteinhalte als Portlet einbinden
- OSCache (Apache kompatibel). Caching von JSP-Content, Servlet Response oder beliebigen anderen Objekten
- Struts (Apache). MVC-Konzept für's Web
- Cocoon (Apache). XML-Inhalte über XSLT transformieren
- Turbine (Apache). MVC-Framework
- Tapestry (Apache). Komponentenorientieres Web-Framework
- WebWork (Apache). Application Framework
- MyFaces (Apache). Implementierung der JavaServer Faces Spezifikation
- Wicket (Apache). An Swing erinnerndes Komponenten-orientiertes Web-Framework
- Google Web Toolkit/GWT (Apache). Interessante Erweiterungen sind MyGWT und GWT-Ext.
Java EE / Container / Applikations-Server
- Glassfish (CDDL). Referenzimplementierung von Sun für Java EE 5
- JBoss (LGPL). Freier Java EE-Stack, der die Java EE 1.4-Spezifikation + EJB 3 umsetzt. JBoss 5 ist im Beta-Stadium
- 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 J2EE 1.5 und Java EE 5 Server von Apache
- 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
- Eclipse TPTP
- JMeter (Apache). Lasttests nicht nur für HTTP, auch für JDBC, SOAP, ...
- P6Spy (Apache-ähnlich). Abfangen, Loggen und Modifizieren von JDBC-Anweisungen
- Ehcache (Apache). Caching Framework. Wird zum Beispiel in Hibernate eingesetzt
- Profiler4j (Apache). Alleinstehender Profiler. Schicke Oberfläche
- JETM - Java Execution Time Measurement Library (BSD). Laufzeitmessungen
Datenbank / DB-Browser / Persistenz
- Derby (Apache). Als JavaDB im JDK 6. Leistungsfähige Datenbank
- hsqldb (proprietär). RDBMS-Implementierung in Java, besondern 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
- Xindice (Apache). Native XML-Datenbank
- SQuirreL (LGPL). SQL Client
- ozone (LGPL). Objekt-Datenbank
- Hibernate (LGPL). Beliebter OR-Mapper und Basis von JBoss für seine Persistenzschicht. Implementierung von JPA. Siehe auch Why ORM Tools are Not Recommended, Data Access Object (DAO) versus Object Relational Mapping (ORM) und ORM and the misleading DAO pattern.
- OpenJPA (Apache). JPA-Implementierung, die auch BEAs KODO zurückgeht
- Prevayler. Persistenz durch Serialialsierung
GUI / Reports / Grafik
- JGoodies Looks (BSD). Korrigiert Unschönheiten unter Windows XP Swing Look and Feel. Besser als winlaf.
- 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
- JasperReport (LGPL). Report-Tool wie Crystal Reports. Minianleitung
- iReport. Visueller Designer für JasperReport
- DataVision (GPL). Auch ein Reporting Tool
- iText (MPL und LGPL). Generieren von PDF (Kurzbeschreibung). Dazu ist ist die Druck-Komponente aus den UJAC praktisch: hier beschreibt man das Dokument in XML.
- 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
- Abeille Forms Designer (LGPL). Designer für das JGoodies FormLayout
- jhighlight (LGPL). Bibliothek zur Farbhervorhebung von Java, HTML, XHTML, XML und LZX mit dem Ausgabeformat XHTML
- JDesktop Integration Components, JDIC (LGPL). Unter anderem: Browser von Windows/Unix plattformneutral aufrufen. Kurzbeschreibung. Auch JDICplus project (WIN32 only)
- Spin (LGPL). Threading-Framework. Webseite stellt das dem Swing-Worker gegenüber
- Java VLC Bindings (GPL). Nutzt die Video-Encoder von VideoLan
- XML-Gui Abbildungen: Thinlet (GLPL), SwiXml (Apache-ähnlich) Kurs per EMail, gui4j (GLPL).
- Jazzy: The Java Open Source Spell Checker (LGPL). Rechtschreibkorrektur
- Ekit (LGPL). Editor-Komponente
- JGoodies Validation Framework (BSD). Validierung für Swing
- MyDoggy (Creative Commons). Docking Framework
- SwingLabs Wiki. Verweise auf SwingLab-Projekte und Kommendes
- Substance Java Look And Feel (BSD). LaF, was auch neue Komponenten integriert
- Anregungen zu <synth/> bei IBM und unter http://synth.l2fprod.com/
- Layout-Manager RiverLayout (LGPL). Zeichenfolgen beschreiben das Layout
Testen / Integration / 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
- HTTPUnit (Eigene Lizenz). Testen von Web-Applikationen. Tutorial
- DbUnit. JUnit-Erweiterung zum Testen von Datenbankzuständen
- Cactus (LGPL). Testen von Server-seitigen Komponenten (Servlets, EJBs, Tag Libs, Filters, ...)
- TestNG (Apache). Populäre Alternative zu JUnit
- FindBugs (LGPL). Automatisches Finden von Bugs. Auch als Eclipse-Plugin
- Juble (GPL). Mogelt Fehler in den Quellcode ein
- Lint4j (Proprietär). Auffinden von Unregelmäßigkeiten
- Hammurapi (GPL). Automatische Code-Reviews
- HTTPTracer (Apache). HTTP-Proxy
- Cobertura (GPL). Code-Coverage auf der Basis von jcoverage.
- Ant (Apache). Das Standard-Buildtool
- Maven (Apache). Projekt-Management
- CruiseControl. Überwachen/Automatisieren vom Build
- 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
- Subversion (Proprietär aber wie Apache), Open Source Versionsverwaltung. Nicht Java, aber wichtig
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 polulä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 / Datenformate
- Jakarta Commons/Net (Apache). Java-Pakete für Internet-Protokolle FTP, NNTP, SMTP, POP3, Telnet, TFTP, Finger
- JNotify (LGPL). Achtet auf Veränderungen im Dateisystem
- 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
- TrueZIP Library (Apache). Behandelt ZIP-Archive wie ein Dateisystem
- POI (Apache). Zugriff auf MS Datei-Formate. Excelling in Excel with Java
- Java Excel API (LGPL). Alternative zu POI für Excel-Tabellen
- Apache FTP Server (Apache). Neu im Incubator
- Apache MINA (Apache). Netzwerk-Framework
- Capivara (GPL). Synchronisations-Software
- JGCalAPI (Apache). Einfacher Wrapper für die Google Calendaring GData API
- JOOReports (LGPL). Template-Engine auf der Basis von OpenOffice
- JodConverter (LGPL). Office-Formate über OpenOffice konvertieren (etwa Word in PDF)
- OpenXML4J (BSD). API für OpenOffice-Dokumente
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 (Proprietär). 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
- Log4j (Apache). Logging. (Doku)
- Parsen von Kommandozeilen mit Apache CLI, arg4j (MIT), TE-CODE (proprietär)
- Velocity (Apache). Kein Web-Framework, aber oft genutzte Template-Engine für Web-Anwendungen
- EventBus (Apache). Eine Art JMS für den lokalen Fall
- 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! Ein visuelles Frontend ist etwa FrontEnd Plus. (Jad ist hier integriert.)
- LimSee2 (Proprietär) Ein SMIL 2.0 Authoring-Tool
- JavaBean Aspect (LGPL). Setzt PropertyChangeListener über Annotationen automatisch an eine Bean
- JSefa (Apache). Serialisiert Beans in die Formate CSV, XML und Flatfile