Bracket-Balancing in Ruby

Ich kann mir nicht helfen, nach zwei Jahren Ruby sieht Java manchmal nur noch umständlich aus. Gerade bei kleinen, in sich geschlossenen Programmen sollte man die Sprache mit Bedacht wählen. Wie aufwendig kann es sein herauszufinden, ob die verschiedenen Klammerarten in einem String ausbalanciert sind? Diese Frage stellte sich auch Code Corner und lieferte diese Lösung […]

Ubuntu: Java-Standardversion festlegen

Ein kürzlich installiertes Paket hatte das Java JDK 7 als Abhängigkeit. Netterweise hat es dies gleich als Standard eingestellt, so dass meine Java-6-Projekte nun nicht mehr richtig wollten. Statt alle Projekte umzustellen war es einfacher, den Standard im System wieder zurückzudrehen: sudo update-alternatives –config java

Compiler-Sicherheit für Wicket: Bindgen und Wicket-ID-Bindings-Generator

Eine zentrale Schwachstelle von Apache Wicket ist die fehlende Sicherheit zur Übersetzungszeit. Viele Dinge werden als Strings angegeben, so dass simple Tippfehler erst zur Laufzeit und somit schlimmstenfalls erst beim Kunden auffallen. Betroffen sind vor allem drei Bereiche: PropertyModels, in denen Objektattribute als Strings notiert werden: new PropertyModel<String>(person, „name“); Wicket-ID-Referenzen, die Komponenten mit ihrem Template […]

Nighthacking auf Youtube

Eine kleine Empfehlung für Software-Entwickler: Der Youtube-Kanal Java hat viele sogenannter Nighthacking-Videos, in denen professionelle Programmierer frei und locker über für sie interessante Themen erzählen und direkt in Code gießen. Es wirkt nicht aufgesetzt und oft funktioniert nicht alles auf Anhieb. Eine Mischung aus charmant und lehrreich, die ich sehr unterhaltsam finde. Ein Beispiel: Venkat Subramaniam […]

Alles schon da: Vielseitige Runtime-Exceptions in Java

Ich kann es nicht mehr sehen: Try-Catch-Throw, Try-Catch-Throw. Gecheckte Exceptions sind so gut wie tot, helfen wir bei der schnellen Beerdigung. Java bietet von Haus aus ein kleines aber feines Portfolio an Runtime-Exceptions. Diese decken fast alle Fälle des täglichen Bedarfs ab und belästigen den Aufrufer nicht mit möglichen Fehlern, die er ohnehin nicht ordentlich […]

Mikro-Webframework Spark

Für Node und Co. sieht man sie überall, aber auch für Java gibt nette Minimal-Frameworks, wenn es um eine kleine Webanwendung geht. Spark ist einer der Vertreter, über den ich gerade gestolpert bin. Nicht ewig mit Umherkonfigurieren, keine neue Template-Sprache lernen, kein stundenlanges API-Lesen. Wenn der Großteil der Webapp ohnehin aus Javascript besteht, ist so […]

Dateien relativ zur aktuellen Klasse adressieren

Eine der Sachen, die ich mir nie merken kann: Wie adressiere ich eine Datei (z.B. Properties), die neben der zugehörigen Klasse im Paket liegt? Die Meta-Klasse der Klasse enthält den gesuchten Pfad: final File file = new File( MyClass.class.getResource( „myfile“ ).getPath() ); Textdatei in String lesen Will man eine solche Datei lesen und in einen […]

Binding mit Google Guice

Die Projektseite von Google Guice und ihr Wiki empfinde ich als selten hilfreich. Besser macht sich da das zugehörige Javadoc, dass meine Fragen meist direkter zu beantworten wusste. Beispiel Binding-Möglichkeiten Implementierung an Interface binden Üblicherweise bindet man ein Interface an seine Implementierung: bind(Map.class).to(ArrayMap.class);

Java: Nicht-Null- oder Default-Wert

Ein typisch-nerviges Java-Szenario ist das ewige Nullgeprüfe. Oft will man den Wert aus einem Parameter oder aber eine Alternative nutzen, wenn der Parameter null ist. Klassisches Beispiel: Ist ein String null, gib einen leeren String aus, wenn nicht, gib den String selbst aus. Eine einfache Lösung dafür bietet beispielsweise Apache Commons in der Funktionssammlung ObjectUtils.

Echtzeit-Semantikprüfung für Java

Fast schon unscheinbar kommt es daher, bahnbrechend könnte die Idee sein: Das Eclipse-Plugin JUnitLoop prüft in Echtzeit, welche Unittests von gerade gemachten Änderungen betroffen sind und führt diese automatisch aus. Der Entwickler bekommt mit dem Speichern eine Rückmeldung, ob und wo seine Änderungen zu Problemen geführt haben. Das Tool ist in etwas so einfach zu bedienen, […]