In den letzten Tagen hatte ich Gelegenheit mich mit der neuen Version von Spring Security auseinanderzusetzen. Hintergrund war für mich, dass jetzt endlich der ACL Teil in den Standard gewandert ist. Die Beschränkung des Zugriffes auf einzelne Instanzen einer Klasse ist für mich in jedem zweiten Projekt eigentlich alltäglich. Die Beschränkung des Zugriffs auf einzelne Methoden oder Klassen, war für mich in JEE nie ausreichend, weswegen ich die Sicherheit bisher immer selbst implementieren musste. Spring ACL in Zusammenhang mit Annotation scheint jetzt endlich das zu bringen, was ich mir schon von J2EE erhofft hatte. Allerdings ist die Dokumentation von dem ganzen noch sehr dürftig, man kommt also nicht herum sich den Beispielquellcode runterzuladen oder muss in den Original Sourcen suchen.

In den letzten Tage hatte ich mal Gelegenheit mich in ein Expertensystem einzuarbeiten. Expertensysteme als Teile der künstlichen Intelligenz sind ein Thema, das ich immer wieder in einigen Artikeln gefunden habe, das aber nach wie vor nicht so richtig im “main stream” angekommen ist.

Ein Kunde wollte einen Konfigurator bauen, der es ermöglicht nur sinnvolle Produktvarianten zu bauen (also Beispielsweise nicht ein DVD und eine BlueRay Laufwerk für einen Schacht auszuwählen) aber trotzdem sehr viele Varianten zulässt. Mein erster Versuch arbeitete mit Ein- und Ausschlusslisten,  ich musste aber schnell feststellen dass das weder eine brauchbare Performance lieferte, noch hinreichend alle Anforderungen abdecket.

Also informierte ich mich über Expertensystem und bin dabei auf jBPM und JBoss Drools gestoßen, spannender weise kommen die beiden verbreitestesn Systeme im OpenSource Bereich beide von JBoss, Konkurrenz belebt das Geschäft. Alle Systeme arbeiten mit Regeln und Fakten. Die Regeln können dabei in einer bestimmten Regelsprache abgebildet werden (müssen also nicht direkt Programmiert werden), die Fakten können entweder als Ausgangsbasis in das System hinein gegeben werden oder entstehen als Konsequenzen aus Regeln. Mit Hilfe solcher Systeme kann man dann ohne Programmieraufwand und mit relativ wenig Code komplexe Probleme abbilden. Es existieren verschiedene Algorithmen mit unterschiedlichen Vor- und Nachteilen, die in der Einführung recht gut erklärt werden.  Das reicht von komplexen Preisregeln bis hin zur Lösung von Sudoko Rätseln.

Noch bin ich in der Evaluierung, aber ein paar Erkenntnisse kristallieren sich schon heraus:

  • JBoss Drools scheint ausgereift und für den Produktiven Einsatz geeignet zu sein
  • Expertenwissen lässt sich mit Hilfe von Regeln unabhängig von der Programmierung zur Verfügung stellen
  • das Erstellen der Regeln erfordert neben einer Einarbeitung in die Syntax eine gerade für nicht Techniker eher ungewöhnliche Denkweise
  • auch bei einer Wissenbasis mit einigen hundert Fakten und einige Dutzend Regeln scheint das System performant zu arbeiten

Obwohl Sun mit der Entwicklung von JSF versucht hat die Vielfalt der Webframeworks (Struts, Webwork, Spring MVC um nur ein paar zu nennen) etwas einzudämmen und einen allgemeinverbindlichen Standard zu setzen, scheint die Konsolidierung in diesem Markt auszubleiben. Vor kurzem hatte Google nun das Google Web Toolkit (GWT) in der Version 2.0 herausgebracht, für mich mal ein Grund mir das ganze auf seine Praxistauglichkeit hin anzusehen.

Auf den Ersten Blick muss ich ganz einfach sagen, gab es den “WOW” Effekt:

  • Die Installation ist kinderleicht, es wird nur ein JAR benötigt sowie ein Browser Plugin was dieser aber selbständig nachläd. Für Eclipse (nach wie vor meine primary IDE) gibt es auch gleich ein Plugin und ich hatte in 15 Minuten mein “Hello World” am laufen.
  • Das Konzept ist wirklich innovativ, man schreib Java Code aber mit Hilfe eines Java -> JavaScript Compiler wird sämtlicher Client Code in JavaScript realisiert. Man muss sich um die konkrete Erzeugung des JavaScript Codes aber überhaupt nicht kümmern, macht alles der Compiler.
  • Dadurch dass fast sämtliche Logik Client seitig läuft kommt ein “Rich Client Gefühl” auf, der Benutzer bekommt sofort Reaktionen zu sehen, die Oberfläche fühlt sich wie eine native Anwendung an.
  • Es gibt hervorraagende Ergänzungsbibliotheken man kann sehr einfach Widgets erzeugen, fühlt sich fast an wie das Programmieren einer Swing Anwendung.
  • Auch Roundtrips zum Server kann man machen, dazu muss man dann RPC Calls implementieren auch dafür liefert Google gleich die Anleitung mit, es ist aber nicht ganz trivial.

Dann habe ich versucht, ein konkretes Projekt zu übertragen, da kam dann allerdings doch die Ernüchterung:

  • Das Projekt hat ein “Accordion” Layout bei dem es aber auch möglich sein muss mehrere Bereiche gleichzeitg zu öffnen. Der Standard Container vom GWT unterstützt das nicht. Da das ganze ne “Closed Box” ist erst mal Feierabend.
  • Nächster Versuch war das ganze mit der Erweiterung “Smart GWT” zu realisieren.  Dort gibt es sehr viele erstklassige Widgets, Problem hier: Ich benötige in den einzelnen Bereichen Radio Buttons. Die aus dem Standard GWT laufen immer auf einem Fehler, die aus dem “Smart GWT” kann man nicht disabeln.
  • Ich werde bei Zeiten noch mal “EXT GWT” prüfen

Mein erstes Zwischenfazit steht aber schon fest:

Wenn man Webanwendungen realisieren möchte die sich wie “Rich Clients” anfühlen ist GWT eine gute Wahl. Die Anfangsladezeit ist zwar höher, dafür ist aber danach alles rasend fix. Man muss sich aber darüber im klaren sein, dass man den Komfort mit einer Reduzierung der Flexibilität erkauft. Man muss die Benutzeroberfläche (mehr oder weniger) mit Hilfe der vorhandenen Widgets realisieren. Ähnliche wie bei JSF gibt man die konkrete Kontrolle über die Webseite (das HTML) aus der Hand. Gerade für “normale” Webseiten ist das denke ich nicht akzeptabel, für Web “Anwendungen” aber sehr wohl.

GWT kann also das Portfolio für Webanwendungen durchaus bereichern, als alleinige Technologie reicht es dagegen nicht aus.

Seit 4 Wochen bin ich jetzt Besitzer (und auch Benutzer!) meines Google Mail Accounts. Nachdem ich wegen des Thema Datenschutz lange gezögert hatte, meine persönlichen Mails zu google zu schicken, muss ich sagen ich bin alles in allem sehr zufrieden. Gut für gewisse Dinge habe ich immer noch eine andere Email Adresse, aber im Alltag hat googlemail gegenüber meinem bisherigen Account ganz klare Vorteile:

  • das Webinterface ist nicht schön, aber leistungsfähig und performant (!)
  • die IMAP Synchronisation klappt wunderbar
  • die Zustellzeiten sind sehr gut, Verzögerungen gibts es so gut wie gar nicht
  • es gibt ein excellents Handling von Bildern
  • es ist kostenlos
  • die Filter (sowohl sortierung als auch Spam) Arbeiten zuverlässig im web

Eigentlich schade dass es im deutschsprachigen Raum meines Wissens nach keinen Mail Provider gibt, der eine ähnlich leistungsfähige Lösung hinbekommt, nicht mal etwas kostenpflichtiges.

In den letzten Wochen habe ich mein erstes Projekt mit Spring 3.0 realisiert. Damit bin ich zum ersten Mal auch im Produktiven Einsatz mit dem neuen Annotation getriebenen MVC Controller in Berührung gekommen.

Nach den ersten Wochen muss ich trotz große anfänglicher Skepsis (viel Magic) sagen, dass ganze ist gut. Man bekommt trotz fehlender Klassenhierachien (oder gerade wegen?) sehr gut lesbaren Code. Viele Dinge sind einfacher, es reicht oft das “was” zu sagen, dass “wie” erledigt das Framework.

Der Umstellungsaufwand meines Altprojektes hielt sich dabei sogar in grenzen (1-2 Tage) und es stehen jetzt viele neue Möglichkeiten offen.

Ein großer Nachteil der Verwendung von Ajax zum aktualisieren einer Webseite ist, dass der Benutzer nicht sieht ob der Browser noch Daten lädt. Um das zu umgehen verwendet ich eigentlich immer animierte GIFs damit der Benutzer ein (Pseudo) Visuelles Feedback bekommt.

Heute habe ich diesen schönen Loading Images Generator gefunden, der mit meine Grafiken gleich genauso erstellt wie ich sie benötige, ohne dass ich überhaupt ein Programm benutzen muss.

In Projekten wo mir die Datenbankstrukturen extern vorgegeben werden, bin ich von der Verwendung von Hibernate ziemlich weg gekommen.  Statt desssen leistet mir seit einiges Zeit iBatis sehr gute Dienste.

Da man ziemlich straight forward SQL Statements angegeben kann hat man das ganze sehr schnell am laufen, besonders spannend wird es aber, wenn man das Framework benutzt um auch dynamische Statements aufzubauen. Hier kann es einem viele Fallunterscheidung abnehmen und man kann mit einem Statement gleich sehr viele Fälle erschlagen.

Kommt mir irgendwie bekannt vor:

The Art of Programming

Quelle: http://geekandpoke.typepad.com/geekandpoke/2009/09/the-art-of-programming.html

Ich bin ja schon seit einiger Zeit ein Fan von jQuery und entdecke doch immer mal wieder was neues.

Aus Windows Anwendungen kennt man ja, dass man bei einem Klick (oder Doppelklick) den Wert im Eingabefeld selektieren kann. Mit jQuery geht das auch einfach im Web.

Und zur Krönung: Man kann sogar gleich prüfen ob sich ein Wert geändert hat:

$("input").dblclick(function() {
  // wert nur selektieren wenn er sich geändert hat
  if(this.value == this.defaultValue)  {
   this.select();
  }
 }
);

Quelle:
http://webdevel.blogspot.com/2008/02/jquery-quick-tip-select-text-on-focus.html

Nachdem ich lange mit Hilfe von Redbooks und Google versucht habe einen Einstieg in die Benutzung der wsadmin Console für WebSphere Application Server gesucht habe, bin ich heute auf einen wirklich hilfreiche Seite der IBM gestoßen.

Auf Developerworks gibt es jede Menge Beispielskripte zur Fernwartung, Starten und Stoppen von Anwendungen und dem Automatischen Deployment, sowohl für JACL als auch für JYTHON.

Nächste Einträge »