Feb 03

Mein favorisiertes Web-Framework Grails hat die Major Version 2 erreicht. Bei der Fülle an neuen Funktionen ist die 2 vor dem Punkt mehr als gerechtfertigt. Einen guten Überblick, über das was sich geändert hat, bietet der Artikel “Das ist neu in Grails 2.0” von Dierk König.

Für mich war schon die neue interaktive Grails Console mit TAB- Vervollständigung, farbiger, einzeiliger Ausgabe und formatierten Fehlerausgaben das Upgrade wert. Sie ist vor allem bei der Befehlsausführung sehr viel schneller, da dafür keine eigene JVM gestartet werden muss.
Als Testkandidat musste meine Beispiel Grails Anwendung grum (sourcecode auf Google Code) herhalten. Doch so einfach wie ein upgrade von einer Minor Version auf eine andere war es nicht.

Als erstes sollte man die upgrade Hinweise verinnerlichen, denn ein einfaches grails upgrade führte bei mir erst einmal zu einem inkonsistentem Projekt in meiner Entwicklungsumgebung (SpringSource Tool Suite).

Schuld ist man meistens selbst. Doch wo liegen nun die Fallstricke?

Dependency Management

Ein Thema, was ich bis jetzt vollständig ignoriert hatte, war das Dependency Management. In den vorherigen Grails Versionen lagen alle benötigten Bibliotheken (wie der JDBC Treiber) im lib Verzeichnis. Sauberer ist es natürlich die Abhängigkeiten zu deklarieren. Bei Grails macht man dies in der BuildConfig Klasse.

conf/BuildConfig.groovy

dependencies {
   // specify dependencies here under either 
   //'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
 
   runtime 'mysql:mysql-connector-java:5.1.16'
   build "displaytag:displaytag:1.2"
   runtime "displaytag:displaytag-export-poi:1.2"
   runtime "displaytag:itext:1.3"
   runtime "displaytag:poi:3.2"
}

Danach sollte man in der IDE die Abhängigkeiten über Grails Tools -> Refresh Dependencies aktualisieren. Reicht dies nicht aus (wie bei mir) hilft es das Dependency Management zu stoppen und zu starten.

  • Grails Tools -> Disable Dependency Management
  • Grails Tools -> Enable Dependency Management

Alternativ kann man in der Grails Konsole folgende Befehle absetzen:

grails> clean
grails> war

Plugins

Dabei kam es bei mir zu Kompilierungs Problemen im Zusammenhang mit den automatisch installierten Plugins jquery und resources, was ich nur durch eine Neuinstallation der Plugins beheben konnte

grails> uninstall-plugin <plugin-name>
grails> install-plugin <plugin-name>

TagLibs

Und wo man schon mal beim Aufräumen ist. Das Tag createLinkTo ist depracted und sollte durch das Tag resources ersetzt werden. An dieser Stelle sollte man auch auf folgenden upgrade Hinweis achten:

If you install Resources (or it is installed automatically), tags like <g:javascript> won’t write anything to the page until you add the <r:layoutResources/> tags to your layout.

Content Negotiation

Ein Punkt warum ich Grails so mag ist, das sich damit sehr leicht REST APIs umsetzen lassen. Hier hat sich in der Version 2.0 auch etwas geändert. Die Content Negotiation richtet sich jetzt nicht mehr nach dem akzeptierten Format des Responses, sondern nach dem Content-Type des Requests.
Dafür muss man im Code withFormat durch request.withFormat ersetzen. Testen kann man diese Änderung mit curl. Z.B. mit:

curl --header Content-Type:text/xml http://localhost:8080/grum/contactData/list

Fazit:
Das Upgrade lohnt sich, auch wenn es mit etwas mehr Arbeit verbunden ist, als sonst.

Links:
grum – Grails 2.0 Beispiel Applikation

geschrieben von gklinkmann \\ tags: ,

Dec 10

Ich behaupte mal jeder Programmierer war im Laufe seiner Tätigkeit schon mal auf den Seiten von stackoverflow.com um Hilfe zu bekommen oder selbige zu leisten.

Worauf ich erst kürzlich gestoßen bin, ist die auf dieser Seite geführte Liste von frei verfügbaren Programmierbüchern. Die Bücher sind nach Programmiersprachen von A (wie ASP.NET MVC) bis W (wie Websphere – dieser Application Server ist wahrscheinlich komplexer als so manche Programmiersprache) geordnet.

Soweit ich es überblicken konnte sind alle Bücher auf Englisch und so möchte ich an dieser Stelle noch 2 deutsche “OpenBooks” erwähnen, die mir bei meiner Arbeit geholfen haben:

Java ist auch eine Insel
Das wohl bekannteste deutsche OpenBook für die Programmiersprache Java
Professionelle Softwareentwicklung mit PHP 5
Auch in PHP kommt man nicht mehr an der Objektorientierung vorbei. Dieses Buch ist ein guter Einstieg.

Welche deutschsprachigen und frei verfügbaren Programmierbücher haben Euch weitergeholfen?

geschrieben von gklinkmann \\ tags: , ,

Nov 26

Müsste ich den Preis für die beste Keynote des Jahres vergeben, würde ich den Preis an Christian Heilmann verleihen. Sein Vortrag war für mich eines der Highlights der diesjährigen Jax (Konferenz für Java, Architektur, Cloud & Agile).

HTML5 – das Web und der Browser als Plattform from JAX TV on Vimeo.

An dieser Stelle sei auch auf die vielen anderen sehr interessanten Vorträge verwiesen, die zum Teil auf dem JAX TV Channel von Vimeo veröffentlicht wurden

geschrieben von gklinkmann \\ tags: ,

Nov 23

Die Bash begleitet mich als DevOp (um mal eines der neuen Buzz Words zu bemühen) schon sehr lange. Doch man lernt nie aus. Dieses kleine Snippet entfernt vom Prozedurnamen, der in $0 enthalten ist, den Pfadbestandteil.

#!/bin/bash
ME=${0##*/}
 
# Ausgabe mit Pfadangabe
echo $0
# und ohne
echo $ME
# Aufruf
/var/run/whatever.sh 
 
# Ausgabe
/var/run/whatever.sh
whatever.sh

Danke Andi

geschrieben von gklinkmann \\ tags:

Nov 21

Java ist das Cobol des 21. Jahrhunderts.

Tim Pritlove in mobilemacs Folge 76

geschrieben von gklinkmann \\ tags: