Ich bin Christian Ullenboom und Autor der Bücher ›Java ist auch eine Insel: Programmieren lernen mit dem Standardwerk für Java-Entwickler.‹ und ›Java SE 9-Standard-Bibliothek: Das Handbuch für Entwickler. Die zweite Insel, aktuell zu Java 9‹. In diesem Blog schreibe ich über aktuelle Java-Entwicklungen, Neuerungen in der Insel, Updates bei Java Open-Source-Bibliotheken, Best-Practices, Fortschritte bei den IDEs und neue Eclipse-Plugins. Seit 1997 schule ich als Java-Tutor Java-Themen und Sun (R.I.P.) ernannte mich 2005 zum ›Java-Champion‹.
JGroups falls mal irgendwann Multicast nötig ist.
http://www.jgroups.org/
Darauf aufbauend Infinispan als verteilter Key-Value Speicher.
http://www.jboss.org/infinispan
Der Abschnitt über Kommandozeilen-Parser sollte etwas aktualisiert werden!
Da es bedauerlicherweise keinen in der Standard-Library gibt, ist man hier mit einem sehr großen Haufen Bibliotheken konfrontiert, was die Auswahl recht schwer macht.
Und TE-Code () mag aus historischen Gründen ganz interessant sein, aber das letzte Release ist von 2005! Da haben die Leute grade erst begonnen, mit Generics warm zu werden … und seit wann gelten BSD-like Lizenzen eigentlich als proprietär?
Wenigstens eine moderne Bibliothek wäre hier schön; nach längerer Suche favorisiere ich inzwischen JewelCli. Da schreibt man ein ganz normales Interface (mit Methoden wie
int getCount();
), reichert es eventuell noch mit ein paar Annotationen für-h/--help
an (kurzer/langer Optionsname, Standard-Wert etc.), und dann baut JewelCLI via Reflection-Magie aus der CLI-Eingabe eine Instanz dieser Klasse, die man dann bequem auswerten kann (if(o.getCount()>10) print("…")
). Ich finde, dass diese Lösung so elegant wie bequem ist :).Ah, ich sehe gerade, dass args4j nach dem selben Prinzip arbeitet – Prima! Trotzdem, Auswahl ist schön :), und aus Gründen, an die ich mich momentan nicht mehr erinnern kann, fand ich seinerzeit JewelCli trotzdem schöner. Jedem Topf sein Deckelchen!
Performance/Monitoring:
– Eclipse MAT (Memory Analyzer)
Testen / Integration / Codeanalyse / Build-Management
– Mockito – Mock-Objekte beim Testen (Alternativen: JMock oder EasyMock)
– Selenium (Apache license, seleniumhq.org) – automatisierte Browsertests
– Ant-contrib (Apache license, ant-contrib.sf.net) – sehr nützliche Erweiterungen für Ant
– Maven Repositories sollten auch hier aufgezählt werden: Artifactory, Nexus, Archiva
– „Orangevolt Ant Tasks“ würde ich eher unter „Betriebssystem-Integration/Installer“ einordnen.
Projektplanung & Bugtracking:
– Mantis (GPL, PHP)
– Redmine (GPL, Rails)
Dateisystem / Netzwerk / IO-Bibliotheken / Datenformate
– jsch (BSD style, http://www.jcraft.com/jsch) – Java Secure Channel, SSH-Implementation
Sonstige:
– Lucene (Apache license, lucene.apache.org) – Volltextsuche
– icu4j (site.icu-project.org) – I18n library „International components for Unicode“
– kaptcha (Apache license, code.google.com/p/kaptcha) – Captcha-Bibliothek
– OpenCSV (Apache license, opencsv.sf.net) – einfachere Alternative zu SuperCSV
– … und auch die beste Bibliothek von allen darf hier nicht fehlen: Google Annotations Gallery (Apache license, https://code.google.com/p/gag/#Quick_Users_Guide)
Apache Jakarta ist übrigens veraltet, die Projekte wurden umbenannt. (jakarta.apache.org: „2011/12/21 – Jakarta has been retired.“)