Non invasive GWT and Spring integration (reloaded)

New project layout
New project layout

Here is my overdue update to my Non invasive GWT and Spring integration blog post from early 2008. Since then we have had the GWT 1.6 and GWT 1.7 releases:

One of the biggest changes to GWT 1.6 is a new project structure. The old output format has been replaced by the standard Java web app "expanded war" format, and the actual directory name does default to "/war". Note that the war directory is not only for compiler output; it is also intended to contain handwritten static resources that you want to be included in your webapp alongside GWT modules (that is, things you'd want to version control).

As a matter of fact, now we finally can (must) manage the web.xml file ourselves:

Projects with server-side code (GWT RPC) must configure a web.xml file at /war/WEB-INF/web.xml. This web.xml file must define and publish any servlets associated with the web application.

This is a little pain for really much gain, and that's why I am writing this post after all... Continue reading Non invasive GWT and Spring integration (reloaded)

GWT, eclipse, i18n, and UTF-8 properties

GWT does a great job reading UTF-8 encoded property files:

Both Constants and Messages use traditional Java properties files, with one notable difference: properties files used with GWT should be encoded as UTF-8 and may contain Unicode characters directly, avoiding the need for native2ascii.

This is nice, but there is a tiny little problem when using eclipse: the default encoding for java property files is ISO-8859-1.

This setting can be changed in the eclipse preferences:

Bild 1

Or you can change the encoding of a single file with “EDIT -> Set Encoding”…

Mit Javascript geht alles, und noch ein bisschen mehr als man denkt…

Erstmal ein kleine Begriffsklärung:


Autosuggestion ist der Prozess, durch den eine Person ihr Unterbewusstsein trainiert, an etwas zu glauben. Dies wird erreicht durch Selbsthypnose oder wiederholte Selbst-Affirmationen, und kann als eine Form von selbst-induzierter “Gehirnwäsche” angesehen werden. Die Wirksamkeit der autosuggestiven Gedankenformeln kann durch mentale Visualisierungen des erwünschten Ziels erhöht werden. Der Erfolg der Autosuggestion wird umso wahrscheinlicher, je konsistenter und länger (bzw. öfter) sie angewendet wird.


Und jetzt ein Blick in den Heise Newsticker von gestern:

JavaScript-Bibliothek der BBC wird Open Source

(…) Weiterhin gibt es Widgets für Autosuggestion, scrollbare Listen, einen Texteditor, Informationsleisten, Schieberegler-Controls, sortierbare Elemente und einen Terminkalender. (…)


Aus den Kommentaren zu dem Newsticker habe ich auch noch das hier erfahren:

“Widget übersetzt leo auf deutsch übrigens mit Dingsbums.”


Ach ja, und ich wollte mir das schon immer mal irgendwo aufschreiben. Die Java übliche CamelCase-Schreibweise wird auf deutsch Binnenmajuskel genannt.


HTTP Live Streaming

The Iphone OS 3.0 announcements included a new capability: to watch HTTP Live Streaming. Well, I know that there are streaming protocols and streaming servers, and I know that there is something like progressive download that allows us to start watching a movie while it is beeing downloaded.

trasnsport_streamBut what is HTTP Live Streaming? I finally found a nice article goung through the media streaming history (well, for some of us it is lived history…). I picked some facts that I found noteworthy:

  • HTTP Live Streaming actually does stream content in real time
  • RTSP streaming failes when it hits against the first firewall, HTTP tunnelling adds too much overhead
  • The technology behind HTTP Live Streaming was submitted to the IETF as a draft standard (on track to become an RFC)
  • It looks like Microsofts “Smooth Streaming”, but is not bound to Microsofts Expression Encoder, Microsoft Internet Information Server with a Smooth Streaming extension, and does not require Microsoft’s Silverlight 2 on the client…
  • It is simple: the content is encoded into an MPEG transport stream and chopped into 10s fragments
  • It is not an continuous stream, the client asks for fragments as they are needed
  • It does not require any special server (any webserver can deliver the fragments)