Scripting in Java 6
Gregor Ottmann | April 28, 2006 on 7:25 am | In Know-How | No CommentsJava 5 hat sich noch nicht vollständig etabliert, Generics wirken auf mich immer noch erregend, Annotations bleiben noch eine Weile aufregend für mich - und schon steht Java 6 vor der Tür. Klar, so einen richtig krassen Innovationsschub wie die letzte Release wird es nicht geben, aber das heißt nicht, dass nichts in dieser Version mich vor Begeisterung innerlich glühen lässt. No, Senor, so ist das ganz sicher nicht.
In Java 6 wird nämlich die JSR-223 unterstützt, bei der es um die Einbindung von Scriptsprachen in Java geht. Ja, genau - endlich Programmschnipsel in Spring als Attribute hinterlegen und dann im Hauptprogramm ausführen lassen. Ohne Zusatzbibliotheken. Wenn das nicht affenfein ist, weiß ich auch nicht mehr, wie ich bei der werten Leserschaft Begeisterung wecken soll.
Für alle, die jetzt ein leicht nervöses Zucken im Augenlid verspüren, habe ich einen netten Artikel über die Script-Integration im neuen Java anzubieten, der definitiv Lust auf mehr macht. Jetzt muss Sun das neue JDK nur noch freigeben, dann dauert es ja erfahrungsgemäß höchstens noch so 5-10 Jahre, bis man es wirklich auf Kundenservern vorraussetzen darf…
Debugbare Java-Bibliotheken
Gregor Ottmann | April 27, 2006 on 10:16 am | In Know-How | No CommentsDie Fehlersuche ist das Salz in der Entwicklersuppe, allerdings gibt es hier Situationen, in der die Suppe als kräftig versalzen gelten muss. Java-Entwickler, die schonmal die Java-Runtime debuggen mussten, weil irgendwelche Exceptions aus der AWT-Eventqueue geflogen kamen, wissen, was ich meine… Selbstverständlich unterstelle ich der Firma Sun keine Boshaftigkeit, weil sie keine Debugversion der Laufzeitumgebung ausliefert. Nein, ich gehe nur davon aus, dass der Java-Hersteller den Entwicklern eine echte Herausforderung bieten will, die zur Scheidung von Spreu und Weizen dient. Und eventuell zur Scheidung von Coder und Ehefrau, wenn besagter Coder mal wieder nächtelang debugt, statt seinen ehelichen Pflichten nachzukommen.
Nicht in allen, doch in den meisten Fällen kann die Anleitung zur Erstellung eines debuggingfähigen rt.jar helfen, die ich von OBlume zugespielt bekommen habe. Zwar werden hier nicht alle Klassen der Umgebung in den gewünschten Zustand versetzt, aber doch immerhin die, mit denen man meistens zu tun hat. Wenn das nicht reicht, bleibt als Lösung selbstverständlich noch der Strick oder zumindest der Berufswechsel.
Styling für den File-Upload
Gregor Ottmann | April 27, 2006 on 10:11 am | In Know-How | No CommentsWir schreiben das Jahr 2006. Alle Input-Felder wurden erfolgreich von kaskadierenden Stilblättern erobert. Alle Input-Felder? Nein, ein kleines gallisches Eingabelelement widersetzt sich erfolgreich den imperialen Bemühungen um optische Gleichschaltung: Das Upload-Element für Dateien.
Widerstand ist allerdings zwecklos, wenn die hackenden Horden sich einem Problem nähern, und so wurde mittlerweile auch das Upload-Element überrannt. Das Ergebnis der Bemühungen, eine Kombination aus Script und CSS für das Styling von Upload-Elementen, sorgt jetzt für hübsche Formulare, auch wenn Uploads drin sind. Sehr schön, ich danke LErler für diesen Link.
Geklumpte Daten mit MySQL
Gregor Ottmann | April 25, 2006 on 1:29 pm | In Datenbanken, Know-How | No CommentsEs ist schön, wenn man Daten in einer Datenbank hat, und deutlich weniger schön, wenn sie plötzlich nicht mehr da sind. Der Codierer an sich mag selten damit konfrontiert werden, aber die meisten Admins können sehr interessante Geschichten darüber erzählen, wie spektakulär der Tod einer Festplatte oder gar der eines ganzen Servers sein kann. Ähnlich spektakulär ist übrigens die Verzweiflung des Applikationsinhabers, der in so einem Fall seine Daten retten will - zumindest dann, wenn es kein Backup gab. Von den interessanten Reaktionen der Anwender, die die Anwendung mehr oder weniger lange nicht erreichen können, mag ich gar nicht im Detail berichten, aber ich werfe mal nur ein Wort in den Raum: “spektakulär”.
Nicht jeder schätzt allerdings spannende Events dieser Art, und so gehe ich mal davon aus, dass die beiden folgenden Links zumindest bei denen auf reges Interesse stoßen dürften, die schon mal ein paar Nachtschichten zur Datenrettung geschoben haben. Ich hätte da nämlich ein HowTo für die Einrichtung eines MySQL-Clusters unter Debian Linux sowie einen Artikel über fortgeschrittene Techniken zur MySQL-Replikation anzubieten. OK, selbstverständlich ist das nur was für Weicheier, da echte Männer bekanntlich keine Redundanz brauchen, aber ich zähle mich in dieser Sache ausnahmsweise mal bereitwillig zu jenen, die eher etwas zarter strukturiert sind.
Handyspiele mit Java entwickeln
Gregor Ottmann | April 25, 2006 on 1:21 pm | In Know-How | No CommentsWenn man richtig hart Geld verdienen will, gibt es nur wenige Ansätze: Klingeltöne, pornographisches Material und Handyspiele beispielsweise. Bei den Klingeltönen hat man allerdings das Problem, dass man eine Vertriebsstruktur braucht und bei den bunten Bildchen muss man sich gut überlegen, ob man eine derartige Einnahmequelle mit dem angestrebten Image der eigenen Firma vereinbaren kann. Bleiben Handyspiele als potenzielle Goldgrube, aber wie bastelt man sowas?
Gerade mit Java ist sowas eigentlich gar nicht so schwer, und in dem Einsteigerartikel zur Java-Spieleprogrammierung für Mobilgeräte, den ich heute gefunden habe, bekommt man einen ganz guten Ersteindruck, der dann natürlich mit Fleiß und Weiterbildung befeuert werden muss, wenn man ernsthafte finanzielle Vorteile haben will. Da das allerdings bei praktisch jeder halbwegs legalen Geldquelle so ist, sollte dieser Umstand nicht allzusehr enttäuschen.
Contentspeicherung in Jack, dem Hasen
Gregor Ottmann | April 20, 2006 on 7:16 am | In Tools | No CommentsCMS sind wirklich toll, verwalten sie doch für uns den ganzen Content, den wir so zu verwalten haben. Dumm ist’s nur, wenn man sich dafür entscheidet, den alten Verwalter zu feuern und einen neuen einzustellen - die Übergabe der Inhalte kann in so einem Fall manchmal ernsthaft in Stress ausarten. Nur, weil jedes Tool irgendwas exportieren oder importieren kann, heißt das noch lange nicht, dass jedes andere Tool mit den Exportformaten etwas anfangen kann. Wer schon mal versucht hat, aus meinen handschriftlichen Notizen zu irgendeinem Thema schlau zu werden, kann sich die Lage in etwa vorstellen.
Aus diesem Grund wurde von Sun unter maßgeblicher Beteiligung der Firma Day ein Standard für die Contentspeicherung namens “JSR-170” entwickelt, der eine Struktur für Content-Repositories beschreibt - bis hin zu den XML-Formaten, in denen Daten exportiert und wieder importiert werden können. Ab heute darf gewechselt werden, zumindest von konformem CMS zu konformem CMS. Von denen gibt es zwar noch nicht so arg viele, aber man sollte nie die Macht eines Buzzwords unterschätzen… Die Kunden werden es früher oder später verlangen, und dann wird es schon unterstützt werden. Irgendwann.
Für diejenigen unter uns, die sich mit der Ablage von Content beschäftigen (müssen), gibt es erfreulicherweise eine gute Alternative zur Eigenimplementierung des Standards, nämlich das vollständig JSR-170-konforme Content-Repository “Jackrabbit” der Apache-Jungs. Die Software liegt mittlerweile in der Version 1.0 vor, was ein gewisses Maß an Vertrauen rechtfertigen sollte. Abgesehen davon dient es als Referenzimplementierung für die JSR-170-Kompatibilitätstests von Sun, so dass man auch davon ausgehen kann, dass die Spezifikation wirklich korrekt umgesetzt wurde. Was könnte man mehr wollen, außer vielleicht Leute, die den ganzen Content tatsächlich produzieren?
Ich danke MBuesch jedenfalls für den Hinweis auf das Projekt und beginne damit, darüber nachzudenken, wie man dieses Tool als Backend für unseren Portalserver “Sitebase” benutzen könnte.
Verglichenes XML mit XMLUnit
Gregor Ottmann | April 18, 2006 on 11:36 am | In Tools | No CommentsUnit-Tests für XML-basierte Software können innerhalb kürzester Zeit zum Ergrauen von Programmiererhaaren führen. Wenn man sich mit derlei Quälereien beschäftigt, merkt man nämlich recht schnell, dass es gar nicht so einfach ist, den tatsächlichen Output eines Programms mit dem, was man so erwartet hat, zu vergleichen - mal stimmt das Encoding nicht, mal führen irgendwelche Leerzeilen dazu, dass der Vergleich fehlschlägt, und wenn man statt eines leeren Elementpaares nur ein einzelnes selbstschließendes Element vorfindet, fängt man endgültig an, “String.equals()” von ganzem Herzen zu hassen.
OBlume hat beim Auftreten dieses Problems aus dem Testbereich etwas recherchiert und die Java-Bibliothek “XMLUnit” für Vergleiche von XML-Dokumenten gefunden, die so manches Vergleichproblem vergleichsweise einfach löst. OK, das Tool wird scheinbar nicht mehr richtig gepflegt (der letzte Release war 2003), aber solange es nur tut, was es soll, spielt das wohl keine allzugroße Rolle. Ich werde jedenfalls ganz schnell meine selbstgestrickten Vergleichsalgorithmen nach /dev/null verschieben und diese lästigen Aufgaben lieber an XMLUnit delegieren - die Ersparnis beim Einkauf von Haarfärbemittel dürfte den Migrationsaufwand locker rechtfertigen.
Lesen mit Foxit statt Acrobat
Gregor Ottmann | April 18, 2006 on 11:30 am | In Tools | No CommentsPDF-Dokumente begegnen dem geneigten IT-User hinreichend oft, und so gehört der Acrobat Reader normalerweise zu den Programmen, auf die man schlichtweg nicht verzichten kann. Dem ist tendenziell nichts entgegenzusetzen, wenn man die ganzen Features tatsächlich benutzt - wenn man aber einfach nur PDFs anzeigen will und sonst nicht viel mit dem Viewer machen will, bekommt man leicht den Eindruck, dass die verwendete Software möglicherweise ganz leicht überdimensioniert sein könnte.
Wenn man keine Lust auf den leicht behäbigen Start der Standardapplikation hat, sollte man sich einmal den Foxit-PDF-Reader als Alternative zum Adobe-Standardprodukt ansehen. Das Gerät ist klein, startet schneller als man klicken kann und macht auch sonst einen recht guten Eindruck. Ich kann jedenfalls behaupten, dass mir dieses von PRogalinski empfohlene Programm recht gut gefällt und lege allen PDF-Konsumenten mit Hang zu schneller Software die Evaluierung sehr nahe.
JUnit 4 ist da - und es mag Java 5
Gregor Ottmann | April 13, 2006 on 7:41 am | In Know-How, Tools | No CommentsIrgendwie ist es unbemerkt an mir vorbeigegangen, dass mittlerweile die vierte Inkarnation des Java-Testframeworks “JUnit” verfügbar ist - ich möchte an dieser Stelle ein leicht nöliges “mir sage ja niemand was” einwerfen. Mittlerweile habe aber sogar ich mitbekommen, dass es da etwas gibt, und es scheint ziemlich interessant zu sein.
Wie man dem Einführungsartikel zu JUnit 4 für ungeduldige Leser entnehmen kann, bietet die neue Version durchaus ein paar schicke Features, insbesondere die Benutzung von Annotations zu Auszeichnung von Testmethoden und die Möglichkeit, Testklassen von eigenen Basisklassen abzuleiten. Zusammen mit “static imports” für die assert-Methoden wurde also so ziemlich alles benutzt, was die neue Sprachversion an praktischen Erweiterungen für die Testbereitstellung hergibt.
Besonders nützlich finde ich es übrigens, dass man für die Testmethoden Timeouts und erwartete Exceptions angeben kann. Die Überprüfung, ob irgendwas schlichtweg zu lange dauert, war mit JUnit 3 wohl eine der zurecht am meisten gefürchteten Anforderungen überhaupt - und über die Nerverei mit den Try-Fail-Catch-Ignore-Konstrukten für Exceptions, die ausgelöst werden müssen, muss ich wohl auch kein weiteres Wort verlieren.
Testen im Hintergrund
Gregor Ottmann | April 13, 2006 on 7:21 am | In Eclipse, Know-How | No CommentsUnit-Tests sind toll, wie ich bereits erwähnte - nur erfordert es doch ein gerüttelt Maß an Disziplin, vernünftige Tests nicht nur zu erstellen und zu pflegen, sondern sie auch noch richtig zu benutzen. Auch der optimalste Unit-Test bringt nämlich nix, wenn man ihn nie ausführt, beispielsweise weil die Testsuite für ein größeres Projekt für die Ausführung länger braucht als man “nebenbei” Zeit übrig hat.
Wenn die Zeit für Testläufe das Problem sein sollte, könnte das Eclipse-Plugin für fortlaufende Testausführung im Hintergrund, von dem mir OBlume berichtet hat, eventuell die Lösung sein.OK, man muss sich natürlich von seinem liebgewonnenen SETI-Client trennen, wenn man die benötigten CPU-Zyklen freimachen will - dafür kann man den Aliens aber wenigstens gut getestete Software verkaufen, falls sie tatsächlich mal vorbeikommen. Man muss im Leben halt Prioritäten setzen.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
:RSS2-Feed