JAX 07: die Jax webzweinullt total!

Es wurde Abend, es wurde morgen, der zweite Tag. Das Orga-Team der JAX leistet wieder mal ganze Arbeit, es klappt einfach alles! Von allen jaxxen – meine erste war noch seinerzeit in Mörfelden – ist dies (bislang) die beste, und das obwohl erst Dienstag Mittag ist!

Einzig und allein eine kleine Erkältung und einen verspannten Nacken hab ich davongetragen – andererseits ist es ja auch gut das die Klimaanlage so gut funktioniert.

Das Orga-Team fährt die Web2.0-Schiene fast in Perfektion: Mitbloggen, ein eigener JAX-Blog, Flickr-Group… nur die Übertragung in YouTube fehlt noch.

JSF Bibliotheken manipulieren (@ JAX 07)

  • Bekannt: Apache MyFaces, Sun RI
  • Aufsätze: Apache Shale, Seam, Ajax4JSF (Interaktion zwischen Ajax und JSF), Facelets
  • Komponenten-Bibliotheken: Apache MyFaces Tomahawk / Trinidad / Tobago, ICEFaces, Rich Faces, etc…

Rederklassen und Komponenten sind austauschbar!

  • Renderer implementieren Konvertierungen, De- und Encoding…
  • In der „faces-config.xml“ kann der Renderer ausgewechselt werden
  • Komponenten enthalten Eigenschaften, aber auch selbst En- / Decoding, Validierung und Konvertierung

Auch Kernklassen sind austauschbar. Zum Beispiel der Navigation Handler, State Manager, View Handler, Variable Resolver etc…

Java Persistence API Basics (@ JAX 07)

  • Standard für Persistenz in Java; Teil von EJB 3.0 (JSR220); RI = Toplink Essentials (Glassfish)
  • Vereinfachung von EJB 2.0
  • Java5 Annotations (und XML…)
  • ORM-Frameworks: Eclipse Link (Oracle Toplink), Hibernate (JBoss), OpenJPA & Cayenne (Apache)

Annotationen:

  • @Entity für Class, @Generated für Felder
  • @Temporal, @OneToOne für eigene Felder und Beziehungen

Spring Framework:

  • Apache 2.0 License
  • Als eine Art „Abhilfe“ für Java EE (J2EE) -> Einfach!
  • Sehr mächtiges Tool (AOP, Transactionsm DI, JDBC), Anbindung an verschiedenFrameworks (JSF, Struts, EJB, Hibernate, AspectJ…)
  • Direkter Support vorhanden für Hbernate, OpenJPA, Toplink
  • Integration in JSF: JSF View -> JSF Bean (View Controller) -> Service -> DAO/Repository

Anbindung:

  • Deklaration eines EntityManager via konkreter Implementierung einer Bean
  • Dann: TransactionManager deklarieren, direkte Übergabe an EntityManagerFactory-Bean

Links:

Facelets – Basics (@ JAX 07)

Intro:

  • Einsatz möglich in JSF 1.2. In JSF 2.0 wird voraussichtlich ein Templating-Ansatz von Haus aus vorhanden sein.
  • Verschiedene Komponenten können zusammengefasst als neue Komponente definiert werden, was wesentich schneller funktionieren kann als eine eigenen neue Komponente zu schreiben.
  • Nur Doc-Type „xhtml:transitional“ möglich

Konfiguration:

  • in web.xml oder über Wildcard (siehe Doku)

Templating:

  • Template-Datei wird angelegt, z.B. „/myTemplate.xhtml“
  • Aufbau wie JSP-Seite mit HTML-Tags undeinigen Sonderfeldern für die Faclets-Steuerung
  • Tag: „<ui:insert>
  • Neue Seiten werden einfach als xhtml-Content angelegt und via faces gerendert. Dabei wird sich, wie in der Content-Datei via Tag „<ui:comosition>“ angegeben, auf das (Master-) Template bezogen.

Komponenten verbinden / neue Komponenten:

  • Definition von neuen Komponenten auf Basis der herkömmlichen Komponenten, z.B., „verkleben“ von „h:outputLabel“ und „h:inpuText“.
  • xhtml-Datei beschreibt die neue Komponente (im Ordner „WEB-INF“)
  • Angabe weiterer Eigenschaften in Definitionsdatei möglich
  • Definition einer Taglib für die neue Komponente, z.B. jax.taglib.xml.
  • In der Taglib: Angabe des Namespaces, Tagname, Sourcefile etc
  • Die Taglib wird anschliessend noch in der web.xml registriert
  • Komponente kann nun durch Einbinden des Namespaces via „xmlns:“ in den Content-Files genutzt werden

JAX 07: (JSF-Ajax) Maven für alle

Maven für alle!Die Jax lässt sich mal wieder sehr gut an. Nach 2 Jahren Abstinenz tut es gut, unter 1600 Entwicklern (ok, heute, am Montag, sind wohl nur ca 600 hier) zu sein und sich als Teil einer großen Bewegung zu sehen.

Die erste Installations-Session ist gerade durch. Knapp 80 Teilnehmer der JSF – Ajax – Session haben mal fix einen Grundkurs in Maven bekommen und Ihre Notebookplatten mit knapp 500mb an Session-Files zugepflastert. Nun steigt die Spannung was wir mit den Files machen…

und jetzt alle gemeinsam: mvn clean jetty:run

Ubuntu 7.04

Ubuntu ist ab sofort in der Version 7.04 aka „Feisty Fawn“ verfügbar. Da ich ohnehin gerade einen Testserver für meine Entwicklungsarbeit aufsetze, habe ich mir die Serverversion gezogen. Die sieht sehr gut aus! SuSE – bisher mein am meisten gnutztes Linux – hat somit bei mir leider wieder einige Punkte verloren…

Mozilla Thunderbird 2.0

Mozilla hat heute seinen Standalone-Emailclient „Thunderbird“ in der Version 2.0 heruasgebracht. Neu hinzugekommen sind unter anderem einige neue Features zur besseren Organisation der EMails und ein verbessertes Popup bei neuen Nachrichten. Bei der Einrichtung neuer Konten ist nun die Einstellung für einen Gmail-Account vorkonfiguriert.

Google Developer Day in Hamburg

Google veranstaltet erstmals einen Developer Day. In verscheidenen Städten – verteilt rund um den ganzen Globus – können sich Entwicker und Interessierte über die Toolkits von Google informieren. Doch der Erfahrungsaustausch soll in beide Richtungen stattfinden: auch das Google Team möchte gern wissen, was wir Entwickler eigentlich suchen, nutzen und benötigen.

Für alle, die nicht an der Veranstaltung teilnehmen können, wird ein entsprechender Live-Stream via YouTube ausgestrahlt. Oder Ihr schaut einfach hier rein, denn ich bin mit von der Partie 🙂

Bean Scopes

Bean Scopes (in Reihenfolge der Lebensdauer):

  • NONE: das Objekt wird bei jedem Zugriff neu angelegt
  • REQUEST: das Objek wird beim Start des Request Lifecycles angelegt und wieder entfernt, wenn der Cycle durchlaufen ist
  • FLASH: Ein State des Tomahawk-Projektes. Objekt wird auf Anweisung in den Komponentenbaum mit aufgenommen und bleibt bis zum nächsten Request erhalten. Bleib also auf der „gleichen“ Seite und noch genau bis zur nächsten Seite erhalten. Field muss mit „t:saveState“ in den Flash-Fokus gehoben werden.
  • DIALOG: Verschiedene Komponentenbibliotheken implemetieren eine Variante, die Objekte zwischen 2 definierten Punkten leben lassen. U.a. erfüllen Trinidad und Shale diese Technik. Bsp: „s:conversationStart“ / „s:conversationEnd“
  • SESSION: Statis bleiben genau während der (per Coockie) gespeicherten Session erhalten. Dies ist allerdings extrem speicherineffizient.
  • APPLICATION: Zentrale Settings, Basisdaten, für alle Benutzer identisch