Donnerstag, 14. Oktober 2010

Hibernate 3.6 mit performanterem Envers und ohne Java 1.4

Gestern gab es das zweite, große Hibernate-Release in diesem Jahr: Hibernate 3.6. So kurz nach Hibernate 3.5, das vor allem die JPA 2.0-Kompatibilität brachte, bringt die neue Version nicht sehr viele neue Features mit, sondern hat vor allem dringend notwendige interne Änderungen und Re-Implementierungen erfahren:
  • Java 1.4 wird nicht mehr unterstützt, Voraussetzung ist nun also Java 5.0 und neuer.
  • Das interne Typsystem wurde überarbeitet. Vor allem Implementierungen benutzerdefinierter Mapping-Typen müssen nun vermutlich angepasst werden.
  • Wer XML-Mappings verwendet, sollte die DTDs von http://hibernate.sourceforge.net/ auf http://www.hibernate.org/dtd umstellen.
  • Und schließlich enthält das mitgelieferte Envers eine neue Audit-Strategie, ValidityAuditStrategy. Damit kann nun nicht nur der Anfangszeitpunkt einer Revision gespeichert werden, sondern auch der Endzeitpunkt. Während das Speichern dadurch etwas mehr Zeit und eine zusätzliche Spalte in der Datenbank-Tabelle benötigt, wird das Lesen historischer Daten deutlich performanter.

Donnerstag, 7. Oktober 2010

Scala-Roadmap, -Literatur u.a.

Es tut sich was im Scala-Universum. Laut Roadmap soll noch in diesem Monat Version 2.8.1 veröffentlicht werden. Zeitlich sieht es gut aus, denn die Version liegt bereits als zweiter Release Candidate vor. Mit diesem kleinen Update werden hauptsächlich Fehler beseitigt, die sich durch die starken internen Änderungen beim Sprung auf Version 2.8 eingeschlichten hatten.

Das nächste größere Update wird Scala 2.9 sein, das für Anfang kommenden Jahres geplant ist. Darin sollen vor allem parallele Kollektionen enthalten sein.

Um Firmen bei der Einführung von Scala und bei der Migration von älteren Scala-Versionen zu unterstützen, hat Martin Odersky, der Erfinder der Sprache, vor kurzem Scala Solutions gegründet. Ein guter und notwendiger Schritt, damit Scala im kommerziellen Umfeld die Akzeptanz findet, die diese Sprache verdient! (Scala-Workshops kann man natürlich auch anderswo buchen ;-)

Und noch ein bisschen Werbung in eigener Sache: Der Galileo-Verlag hat heute mein Buch "Scala. Der Schnelleinstieg für Entwickler." angekündigt, das im kommenden Jahr erscheinen wird. Bis zur Veröffentlichung bleibt noch genug zu tun, aber es macht Spaß, nach über fünf Jahren mal wieder ein Buch entstehen zu sehen :-)

Dienstag, 28. September 2010

Eclipse 3.6 und @SuppressWarnings("unchecked")

Eclipse 3.6 ist schon seit einiger Zeit auf dem Markt, aber die ganzen neuen kleinen Features entdeckt man oft erst nach und nach.

Ergänzend zu einem früheren Posting habe ich gerade gesehen, dass die "Quick Fix"-Funktion bei einer "Type safety"-Warnung nun nach Möglichkeit anbietet, die passende Annotation direkt an die Variablendeklaration zu schreiben (und nicht nur über die gesamte Methode):

Nett!

Samstag, 31. Juli 2010

Ant Filter-Copy-Task und Zeichenkodierung

Ein Eintrag aus der Rubrik "kleiner Fehler, große Wirkung": Resource-Properties-Dateien wurden für eine Web-Anwendung mit einem Ant-Skript aus den Projektordnern in die passenden Ordner der Web-Applikation umkopiert. Bei manchen Properties-Dateien wurden die darin enthaltenen Umlaute im Browser manchmal (je nach Applikations-Server und je nach Rechner, auf dem die Web-Anwendung gebaut wurde) falsch dargestellt.

Ursache des Problems war ein copy-Task, der die Datei nicht 1:1 umkopiert, sondern mit einem filterset bestimmte Token ersetzt hat. Je nach Systemeinstellung kamen dann in der Web-Anwendung Umlaute (bzw. allgemein Sonderzeichen) an, die im Browser korrekt angezeigt werden konnten – oder eben nicht.

Die Lösung des Problems ist, bei Filter-Copy-Tasks die Kodierung explizit anzugeben, damit nicht die System-Default-Kodierung verwendet wird (die Doku erwähnt dies am Ende des Dokuments). Bei Properties-Dateien ist ISO-Latin-1 (ISO-8859-1) meist eine erste, gute Wahl (sofern die gesamte Web-Anwendung nicht auf UTF ausgelegt ist):
<copy
todir="${webapp}/WEB-INF/classes"
file="${src}/MyResources.properties"
encoding="ISO-8859-1"
overwrite="true">

<filterset>
<filter token="COMPILETIME" value="${DSTAMP}-${TSTAMP}"/>
</filterset>

</copy>
Entstanden ist der Bug wohl durch Copy&Paste, wobei aus einem fileset – ohne Filterung und damit ohne die Notwendigkeit, eine Zeichenkodierung anzugeben – ein filterset wurde.

Mittwoch, 14. Juli 2010

Scala 2.8 und Lift 2.0

Knapp ein dreiviertel Jahr nach der letzten offiziellen Version 2.7.7 ist es heute endlich soweit: Scala 2.8 wurde veröffentlicht! Neben zahlreichen Bugfixes gibt es viele Neuerungen:
  • leichtgewichtigere, performantere Aktoren
  • Unterstützung für Continuations
  • verbesserte XML-Bibliothek
  • Überarbeitete Kollektions-Bibliothek und Array-Implementation
  • Benannte und Default-Argumente
  • Package-Objekte
  • bessere Unterstützung für (verschachtelte) Java-Annotationen
  • deutlich verbesserte Scala-Interpreter-Shell (REPL), u.a. mit Tab-Eingabevervollständigung
  • u.a.
Die Werkzeuge Sbaz und Scaladoc liegen in Version 2 vor, der Decompiler Scalap wurde an aktuelle Sprachkonstrukte angepasst. Die Scala IDE für Eclipse wurde intensiv überarbeitet, wodurch sie nun u.a. besser in die Java-Werkzeuge von Eclipse eingebunden ist.


Bereits vor zwei Wochen wurde das Scala-Web-Framework Lift 2.0 veröffentlicht. Neben der bisher schon sehr guten Ajax- und Comet-Unterstützung gibt es u.a. folgende Neuerungen:

Zum Schluss ein bisschen Werbung in eigener Sache: Wer mehr über Scala erfahren möchte, darf gerne an meinem nächsten Scala-Workshop teilnehmen, der Ende November in Köln stattfindet!

One more thing...

Dienstag, 15. Juni 2010

NetBeans 6.9 inkl. JavaFX Composer

Heute hat Oracle/Sun NetBeans 6.9 fertig gestellt und veröffentlicht. Eines der wichtigsten neuen Merkmale dürfte der nun standardmäßig integrierte JavaFX Composer sein, mit dem sich Formulare und Grafiken für JavaFX 1.3 visuell erstellen lassen:

Mal abwarten, wie sich der GUI-Editor in der Praxis bewährt. Aber die ersten Versuche sehen recht vielversprechend aus.

Im Bereich "Java EE" ist die Unterstützung für den JSR-299 (CDI) sowie für Spring 3.0 erwähnenswert. Außerdem ist der Application Server GlassFish in der Version 3.0.1 integriert.

Montag, 31. Mai 2010

JavaFX 1.3

Nur der Vollständigkeit halber... Bereits Ende letzten Monats hat Oracle/Sun JavaFX 1.3 veröffentlicht. Die wichtigsten Neuerungen sind
  • neue Controls (u.a. endlich eine ChoiceBox)
  • neue, brauchbare Layouts
  • bessere CSS-Unterstützung
  • bessere Performance und weniger Speicherverbrauch.
Beschreibungen und Zusammenfassungen der Änderungen und Neuerungen finden sich u.a. hier, hier und hier.

Wichtiger für die Akzeptanz von JavaFX ist m.E. aber, dass mit der Beta-Version von NetBeans 6.9 der JavaFX Composer mitgeliefert wird, mit dem Benutzeroberflächen (GUIs) – sowohl Masken als auch Grafiken – visuell zusammengestellt werden können.

Die Migration bestehender Java FX 1.2-Anwendungen auf die neue Version ist hier beschrieben.