J and I and Me
2006-06-29
  Java Starter Magazin
Neu erschienen ist das Java Starter Magazin mit zwei Beiträgen von mir. Zum einen ein Schnelleinsteig in die Web-Entwicklung mit Equinox. Dieses Paket umfasst Spring und einige andere Software-Pakete, mit denen man das übliche Herunterladen, Installieren usw. deutlich vereinfachen kann. Außerdem gibt es einen Artikel darüber, welche Informationsquellen ich nutze, um auf dem aktuellen Stand zu bleiben. Schön, dass auch im zehnten Jahr der Technologie immer noch Publikationen speziell für Anfänger erscheinen!
 
Bookmark and Share
2006-06-25
  Google Werbung...


Wenn man meinen Namen bei Google eingibt, gibt es eine Überraschung: Mittlerweile gibt es für meinem Namen auch einen gesponsorten Link bei Google. Ist aber nur eine Möglichkeit, mein Buch bei einem bestimmten Versand zu kaufen. Schon irgendwie lustig...
 
Bookmark and Share
2006-06-23
  Vista Screenshot

Hier der Vista Screenshot. Wenn man versucht, ernsthafte Arbeit mit Vista zu machen, werden auch wieder Probleme deutlich. Windows Sharing bei Mac OS X mit Vista habe ich nicht hinbekommen, Zugriff auf FTP-Server, der passwortgeschützt ist, auch nicht. Also "pures" FTP, um Sachen zu übertragen. Hm. TIF anzeigen geht, aber als Bildschirm-Hintergrund nicht. Man kann es auch nicht in ein JPG verwandeln, was bei Mac OS X mit der Vorschau geht. Gut, ich bleibe also bei Mac OS X, vielleicht bin ich aber auch unfähig.

Ansonsten sieht man PowerPoint mit den neuen Menüs. Oben (Home, Einfügen usw) kann man ein Menü auswählen und in der Leiste drunter sind dann die Funktionen. Wie gesagt: Ich finde es recht übersichtlich. Oh, und rechts am Rand natürlich die Gadgets: Eine Bilder-Show, ein RSS Reader mit meinem Blog, ein CPU-Meter und der Mülleimer.
 
Bookmark and Share
  Interface21 auf dem Java Forum Stuttgart
Am 6.7. wird Interface21 auf dem Java Forum Stuttgart mit einem Stand vertreten sein. Daher werde ich auch dort vor Ort sein. Wer sich also zu Spring, AspectJ oder Enterprise Java im allgemeinen informieren möchte, möge sich eingeladen fühlen. Bis dahin!
 
Bookmark and Share
2006-06-22
  Spring 2.0 RC 1 draußen
Spring 2.0 RC 1 ist draußen. Dieses Release implementiert alle Features, die in Spring 2.0 vorhanden sein werden und wird als Basis für neue Entwicklungen empfohlen. Also: Runterladen!
 
Bookmark and Share
2006-06-21
  Windows Vista / Office 2007: Eindrücke

Vorab: Das sind nur lose EIndrücke, kein Test oder so und ich bin auch eindeutig eher auf der Mac-Welt zuhause.

Ich habe mir also Vista und darauf die Office 2007 beta installiert. Erstmal spannend, dass es überhaupt geht, denn die Office beta war eigentlich für XP, wenn ich mich recht entsinne. Ansonsten hat Vista einige Neuerungen. Die augenfälligste: Man wird um Erlaubnis gefragt, wenn ein Prozess irgendwelche Einstellungen am System modifizieren will. Die GUI macht keinen schlechten und der Explorer ist besser geworden. Man kann jetzt auch bei einem beliebigen Verzeichnis in der Titelleiste klicken und ein anderes Verzeichnis aus dieser Ebene wählen, was ich recht praktisch finde. Neu auch die Gadgets, die links am Bildschirm sind und z.B. ein RSS-Feed enthalten oder eine Uhr. Erstaunlicherweise bin ich eher dazu gewillt, die zu benutzen, als das Dashboard unter Mac OS X, wobei ich auch wegen den 12" Powerbooks wenig Platz habe, während Vista auf 19" und 1280x1024 läuft. Und die Optik von Vista ist natürlich anders. Viele Kleinigkeiten sind besser: Das Start-Menü organisiert sich selbst, die Unterverzeichnisse im Start-Menü werden besser angezeigt usw.

Office 2007 ist tatsächlich anders. Meiner Ansicht nach eher besser, weil man Aufgabenzentriert arbeiten kann. Es gibt nur noch eine Art Tool-Leiste, die aber mit Tabs ausgestattet ist und dann verschiedene zusammenhänge Funktionen enthält. Diese Änderung ist sehr erstaunlich, da sie das Benutzungskonzept komplett ändert. Damit muss man wirklich umlernen, wenn man Office 2007 nutzen will, was bedeutet, dass es in Firmen wahrscheinlich eher längerfristig eingeführt wird.

Ingesamt keine Überraschungen zumindest an der Oberfläche. Und trotz der Verbesserungen fühle ich mich unter Mac OS X immer noch wohler - vielleicht auch, weil ich weiß, dass ein Unix drunter ist. Interessant sind eher die Stories drum rum: Microsoft hat Vista deutlich verzögert und bei Office 2007 ändert sich eben das Benutzungskonzept total. Damit hat Microsoft beim Kernprodukt Office ein echtes Risiko, da die Leute sich nur umgewöhnen werden, wenn es viel besser ist und dann auch nur zögerlich. Ich denke, Microsoft spürt gerade da eine Menge Druck. Schauen wir mal, wie es weitergeht...

 
Bookmark and Share
2006-06-19
  Windows Vista auf einem virtuellen PC...

Wer sich die Beta von Windows Vista installieren will, wird wohl kaum damit sein altes Betriebssystem überbügeln wollen. Nun gibt es unter Windows bekanntermaßen Virtual PC als Virutalisierungslösung. Kommt direkt von dem großen Software-Konzern aus Redmond. Also: Windows Vista in Virtual PC installiert. Ergebnis: Installation dauert eine Nacht (und zwar das Kopieren der Dateien). Die Performance ist anschließend so, dass man damit nicht arbeiten will.

Also: Nächster Versuch mit VMWare Player. Ergebnis: VGA Grafik mit lustigen 4 Farben und dadurch einer ziemlich lustigen GUI, die man nicht wirklich benutzen will. Nächster Versuch: Diesmal VMWare Workstation. Virtuellen PC angelegt, Windows Vista als Betriebssystem ausgewählt, VMWare Tools installiert - funktioniert. Und zwar durchaus mit benutzbarer Geschwindigkeit.

Gibt es einen Grund, warum Vista auf der hauseigenen Virtualisierung nicht vernünftig läuft? Na ja, wahrscheinlich kann ich nur wieder den großen Plan nicht richtig erkennen.

 
Bookmark and Share
2006-06-18
  Spring One: Fazit

Die Spring One war mit Sicherheit eine sehr interessant Konferenz. Hervorzuheben ist dabei vor allem, dass die Leute von Interface21 sehr viele interessante Ideen haben und in diesem Kontext eine Menge interessanter Projekte existieren. Dies geht über die "bekannten" Sachen wie Spring, Acegi, Spring Web Flow und Spring Web Services hinaus und man kann sich sicher sein, dass auch in Zukunft hier noch viele interessante Sachen passieren. Es geht bei weitem nicht nur um Spring, sondern um gute Konzepte für Software-Entwicklung allgemein. Und wir stellen immer noch eine Menge interessanter Leute ein, wie zum Beispiel Ramnivas Laddad oder Costin Leau. Es ist auch sehr bemerkenswert, dass wir beispielsweise als Technologie-Lieferant für BEA fungieren oder bei solchen extremen Projekten wie jenem vom Voca mitspielen. Technologisch ist sicher "Spring & JPA" eine wichtige Sache und gleichzeitig wagte die Konferenz mit dem Fokus auf Domain Driven Design den Blick über den reinen Technik-Tellerand.

Also: Es ist und bleibt spannend und ich denke, dass wir Enterprise Java oder sogar Software-Entwicklung im allgemein deutlich weiterbringen können!

 
Bookmark and Share
  Spring One: Spring at the core of Web Logic

In dieser Session stellen Michael Chen von BEA und Rod Johnson vor, wie die Integration von Spring in Web Logic und vor allem auch die Implementierung von EJB 3 auf der Basis von Spring. Michael Chen began damit, dass er die Motivation von BEA für diesen Schritt vorstellte. Dabei hatte er auch eine Folie, auf der folgendes Zitat enthalten war: "EJB 3 ist Dependency Injection und AOP von 2003". Er stellten dann dar, dass er gerne Technologien bauen will, die den Leuten wirklich hilft und die sie gerne benutzen, was eben zu der Integration von Spring geführt hat. BEA will auch weiterhin den besten EJB Container anbieten. Dabei soll Weblogic weiterhin die bekannte Stabilität und Quality of Service bieten und auf der anderen Seite soll auf die bekannten WLS-Technologien wie EJB 2, Clustering, Fail Over , Transaktionen und Sicherheit zugegriffen werden können. Auf der anderen Seite soll von Spring die Einfachheit in der Nutzung übernommen werden.

Dependency Injection und AOP in Spring sind eine Obermenge von dem, was EJB 3 anbietet. Daher kann man auf dieser Basis die Features von EJB 3 recht einfach implementieren. Da Spring sehr flexibel ist, kann man die Features auch ohne größere Umstände implementieren.

Besonders interessant war dann, dass EJBs mit WLS auch Spring Beans sind. Daher kann man Spring Beans in EJB injekten und umgekehrt und zwar ohne, dass JNDI irgendwo benötigt würde. Dafür wird eine Datei im EJB-Jar verwendet (/META-INF/spring-ejb-jar.xml). Der Name der Spring-Bean ist dabei der EJB-Name was per default der kurze Klassenname ist.

Auch hier zeigte Rod wieder, dass selbst in den EJB 3 Samples aus der Spezifikation versteckte Probleme sind (z.B. Array-Zugriffe, die ArrayIndexOutOfBounds werden können) und dass die typsicheren Advices von Spring ein echter Vorteil sind, der dieses Problem beseitigt.

Also wird in Zukunft bei BEA WebLogic ohne weiteres ein hybrider Programmieransatz mit Spring und EJB möglich sein, so dass die Grenzen zunehmend verschwimmen. Gleichzeitig können die Features durch Pitchfork auch außerhalb eines EJB-Containers genutzt werden.


 
Bookmark and Share
  Spring One: Steven Schuurmanns Keynote

Wer ist noch nicht weiß: Steven Schuurmann ist der COO von Interface21 und leitet daher die operative Seite der Firma. Er fing an mit dem Thema, dass Enterprise Software Entwicklung langsam erwachsen wird und dass vor allem die Erfolgsrate hochgehen muss. Interface21 hat vor allem gute Produkte, wertvolle Services und gute Leute (das ist sogar zentral), um diese Services zu erbringen.

Die Firma wurde im Juli 2004 gegründet und hat in 2005 ein Wachstum von 300% erzielt. Sie hat mittlerweile ca. 30 Angestellte. Ziel ist es, ein Technologie-Partner mit hoher Qualität zu werden. Dies wird durch Training, Professional Services und Support erreicht. Außerdem werden weitere Programme aufgesetzt werden, so zum Beispiel in Q4/2006 ein Zertifizierungsprogramm.

Ingesamt konnte man deutlich erkennen, dass wir noch recht viele interessante Sachen vor haben und noch einiges bewegen werden. Schauen wir mal, wo die Reise noch hingeht!


 
Bookmark and Share
2006-06-17
  Spring One: Rods Zweite Keynote

Anschließend gab Rod Johnson noch eine Keynote, in der es darum geht, wie man die Vision von Spring und Interface21 umsetzten kann.

Zur Zeit wird an einer Roadmap für die nächsten 18 Monate gearbeitet. Schon jetzt ist Spring deutlich besser als das traditionelle Java EE Modell. Aber es muss weitergehen: Hin zu einem echten objektorientierten Programmiermodell. Middleware muss intelligenter und einfacher werden. Eine wesentliche Triebkraft ist dabei Domain Driven Design.

Die Spring Entwickler-Community bringt viel interessanten Input und Spring bietet auch schon eine sehr mächtige Basis, die man ohne größere Probleme zum Beispiel für die Implementierung des EJB 3 Containers von BEA nutzen kann und man muss dabei nicht das halbe System umschreiben.

Weitere ging es mit dem Thema "Open Source in the Enterprise". Hier räumte Rod mit einigen falschen Vorstellungen auf, die es bezüglich Open Source gibt. Die erste ist, dass Open Source eine Commodiziation ist: Produkte sind erst nur gegen Geld zu bekommen und später gibt es dann Open Source Lösungen, die preiswerter sind. Dies ist offensichtlich nicht der Fall bei AspectJ und bei Spring. Es gibt eben keine anderen Lösungen in diesem Bereich und die Lösungen sind auch von sehr guter Qualität.

Die zweite falsche Wahrnehmung ist, dass Open Source irgendwie auf magische Art und Weise von einer Ansammlung von Entwicklern geschrieben wird. Dies ist natürlich nicht so, auch bei Open Source benötigt man eine Vision und Führung. Interessanterweise sind es auch bei Spring nur einige wenige Leute, denen die Entwicklung im wesentlichen zu verdanken ist. Man benötigt auch eine Organisation, Engagement und Ausdauer. Viele Sachen sind dabei nicht spannend wie zum Beispiel die Features dann später auch bei Kunden zu unterstützen, sie zu warten und zu dokumentieren. Übrigens ist es auch bei anderen Open Source Projekten wie z.B. Linux inzwischen so, dass die Entwicklung im wesentlichen von Firmen finanziert wird.

Eine weitere falsche Wahrnehmung ist, dass Open Source nur aus Spaß geschrieben wird (obwohl zum Beispiel der Titel des Buches von Linux Thorvalds schon in diese Richtung weißt). Zumindest bei Spring ist das ganze jedoch weit mehr als ein Hobby. Inzwischen umfasst Spring 600.000 Zeilen Code, es gibt ein echtes Ökosystem rund um Spring und Integration in verschiedene Enterprise-Produkte wie Application Server oder Datenbanken. Gerade die Integration lässt sich nicht so eben mal zwischendurch testen, weil dazu schon nicht triviale Umgebungen notwendig sind. Das kann man nicht als Nach-Job machen, vor allem, wenn man nebenbei dann noch eine Familie oder Hobbies haben will...

Dann das Thema, dass Open Source nichts kostet. Das ist nicht wirklich richtig, denn die Lizenzkosten sind nur ein Teil der Total Cost of Ownership. Dazu kommt auch Training, Support und Skills, die man aufbauen muss. Allerdings konkurriert Spring hier meiner Ansicht nach oft mit In-House-Entwicklungen, bei denen gerade diese Themen deutlich teuerer werden, da man sie selber leisten muss und nicht am Markt kaufen kann.

Rod unterbrach dann die Keynote für Steven Schuurmann (dem widme ich einen eigenen Post). Am Ende kam er noch auf das Thema zu sprechen, dass durch die Spring-Community auch die Möglichkeit besteht, interessante und gute Leute anzustellen. Dazu gehören natürlich Adrian Colyer, der das Aspect-Projekt leitet und 13 Jahre lang bei IBM im Bereich Middleware gearbeitet hat. Dann noch Costin Leau, der auch schon in Pitchfork deutliche Spuren hinterlassen hat und im Spring Community Forum extrem aktiv ist. Außerdem leitet er das Spring Modules Projekt. Eine weitere Neueinstellung ist Ramnivas Laddad, der "AspectJ in Action" geschrieben hat und außerdem an einem Aspect Refactoring Buch arbeitet.

Ziel von Interface21 ist also, eine kritische Masse an außergewöhnlichen Leuten zu haben und so ein großes ganzes zu erzeugen. Man kann also sicher sein, dass hier noch viele spannende Dinge passieren...

 
Bookmark and Share
2006-06-16
  Spring One: Gregor Hophe Google

Diese Keynote wurde von Gregor Hophe bestritten, der bei Google arbeitet. Sie stand unter dem Motto "Where did all my beautiful code go?". Er berichtete aus seinem Alltag bei Google und ich werde hier einige Gedanken-Fetzen wiedergeben. Eine Metrik, die er benutzt, um Probleme zu finden, ist, dass er scheinbar einfache Fragen stellt und diese dann so lange stellt, bis er eine eindeutige Antwort bekommt. Seiner Meinung nach ist das Problem nicht, dass es nicht die richtigen Werkzeuge gibt. Mittlerweile gibt es eine sehr breite Auswahl, so dass es wohl kaum das Thema sein kann. Das andere Problem ist, dass niemand absichtlich schlechten Code schreibt, sondern das passiert einfach.

Seiner Meinung nach ist es wichtig, die richtigen Modelle für ein Problem zu nutzen und auch die richtige Sprache. Diese sollten vor allem für die Kommunikation verwendet werden und als passende fachliche Abstraktionen. Dabei ist es nicht so wichtig, dass man Roundtrip-Engineering oder andere fortgeschrittene Konzepte unterstützt. Ein wichtiger Maßstab sind für ihn Tests. Er nutzt Fit und die Fit Library. Wenn man die richtigen Abstraktionen hat, kann man die Tests auch einem Anwender vorlegen und von ihm sinnvolles Feedback bekommen.

Die Präsentation ging dann weiter auf das Thema ein, wie man einen Workflow sinnvoll abbilden kann, weil in diesem Bereich zum Beispiel mit OSWorkflow und jBPM mehere Tools zur Verfügung stehen. Weiterhin streifte er die CalendarDate-Klassen von Eric Evans, dem Autor von Domain Driven Design. Durch solche Abstraktionen wird im Code klarer erkennbar, worum es eigentlich geht und schließlich sollen seiner Meinung nach auch die Product Manager den Code verstehen können.

Eine sehr interessante Präsentation, die viele Interessante Sachen erwähnt hat. Wirklich empfehlenswert!

 
Bookmark and Share
  Spring One: JPA / Spring Integration

Rod Johnson selbst sprach dann über die JPA / Spring Integration. Daran kann man die Bedeutung dieses Features für Spring ableiten. Außerdem kam von ihm die Aussage, dass JPA der Fokus für die Unterstützung von O/R Mappern in Spring sein wird. Natürlich bleibt die Unterstützung für die anderen O/R Mapper erhalten, aber neue Entwicklungen finden vor allem auf JPA statt.

Die technischen Details sind dann teilweise etwas - wie soll man sagen - interessant. So muss JPA für die Unterstützung von Lazy Loading Classes nachbearbeiten. Dafür wird normalerweise ein Java Agent verwendet, der dann aber für jede Klasse aufgerufen wird. Dadurch gibt es dann Performance-Issues, was gerade bei Tests ein Problem ist. Mit Spring 2.0 gibt es einen LoadTimeWeaver, der auf ClassLoader-Ebene die Modifikation der Klassen erlaubt. So kann man die Performance verbessern. Dazu muss man allerdings in den Application Server eingreifen und im Moment wird hier Oracle OC4J, BEA WebLogic und Tomcat unterstützt.

Ein weiterer wichtiger Vorteil dieses Vorgehen ist, dass auf diese Art und Weise die Integration von Load Time Weaving aus AspectJ möglich wird. Wenn man einmal die allgemeine ClassLoader-Abstraktion hat, kann man auch gleich solche Sachen bauen und zum Beispiel so auch @Configurable flächendeckend für alle Objekte unterstützen, ohne dabei viel zu konfigurieren. Eine interessante Erweiterung also. Diese Themen werden jedoch in 2.1 erst richtig interessant.

Für die JPA-Unterstützung gibt es in Spring 2.0 einen eigenen XML-Namespace, so dass hier auch gleich die vereinfachte Konfiguration verwendet werden kann. Spring unterstützt die LocalEntityManagerFactoryBean, die den JPA-Ansatz für Java SE unterstützt und so eine recht einfache JPA-Integration bietet.

Alternative ist die ContainerEntityManagerFactoryBean, bei der die Java EE SPI genutzt wird und Spring einen entsprechenden Container "vorspielt". Er kann dann mit Spring konfiguriert werden, die Einstellungen können aus Spring-Ressourcen kommen und es wird die Spring Instrumentation für die Klassen verwendet.

Über den DataSourceExporter kann man auch auf die DataSource zugreifen, die von JPA genutzt wird, so dass man Transaktionen über JDBC und JPA Code aufspannen kann. Eine weitere interessante Möglichkeit, um verschiedenen Persistenz-Technologien zusammen zu nutzen.

Die nächste spannende Sache war, dass man Exception Übersetzung nun automatisch auf der Ebene der Spring Bean haben kann. Vorher musste man ein Template verwenden, um z.B. aus einer SQLException eine DataAccessException zu machen. Bei JPA sind die Exception RuntimeExceptions, so dass man auch ohne Spring kein catch schreiben muss. Mit Spring werden die Exceptions aber in DataAccessExceptions umgewandelt, die bei allen Persistenz-APIs (JDBC, JPA, Hibernate...) genutzt werden. Die findet jetzt implizit statt, indem man die Klasse mit der @Repository Annotation versieht. Diese Annotation zeigt an, dass die Klasse ein DAO implementiert und sie kommt aus den neuen Stereotype-Annotationen, die im Package org.springframework.stereotype liegen. Damit kann man die Klassen aus der Anwendung als entsprechende Implementierung typischer Patterns für Spring-Anwendungen deklariere.

Eine weitere Neuerung ist der AbstractJpaTests. Vor allem gibt es jetzt eine Spring Test-Klasse, die einen kurzen Namen hat. Diese Klasse löst ein subtiles und hässliches Problem: Wenn man einen Test startet, wird der Test die anderen Klassen nachladen und zwar nicht modifiziert. Also muss man die für JPA modifiziern. Das kann man aber nicht, weil die Klassen eben schon geladen worden sind und man Klassen nur einmal laden. Also gibt es einen ShadowingClassLoader, der den Test und alle assoziierten Klassen lädt und dann in einem zweiten Durchgang einen neuen ClassLoader baut, der dann die Klassen tatsächlich lädt. Der TestCase unterstützt auch die ganzen anderen JUnit 4 Features wie @ExspectedException, @Repeat, @Timed und @NotTransacctional.

Ein weiteres Ziel für die Spring JPA Integration ist die Vereinheitlichung der Criteria APIs. Dabei handelt es sich um APIs, mit denen man im Programm selbst eine Objekt-Struktur bauen kann, die dann als Query ausgeführt werden kann. Dazu gibt es das schöne Interface EntityManagerPlus. Hier wird es in Abstimmung mit Herstellern wie Oracle oder BEA sicher noch weitere Features geben, die man vereinheitlichen wird und über diese Schnittstelle anbieten wird.

 
Bookmark and Share
  Spring One: Using JPA

In dieser Session sprachen Mike Keith von Oracle und Patrick Linskey von BEA über JPA. Eine wesentlichen Nachricht von der Spring One ist, dass Spring und JPA der Application Stack der Zukunft sein wird. Daher gibt es auch einen ausführlichen Track zu diesem Thema.


In dieser Session ging es dabei um die Grundlagen. Interessant waren daher eher die Zwischentöne und Nebenbemerkungen. So sagte Patrick, dass die DB Optimierungen noch fehlen, d.h. man hat sich bei JPA noch nicht intensiv um dieses Thema gekümmert. Ein Problem bei JPA ist, dass Updates mit JP QL nicht im Cache landen, so dass es Inkonsistenzen geben kann.

Mit JPA kann man die Persistenz mit Annotation und mit XML definieren. Die Frage ist nun, was man wo nutzen sollte. Patrick gab hier als Tipp, dass man Datenbank-Spezifika wie zum Beispiel den Spalten-Namen im XML definieren sollte, weil sich dieser ändern könnte, man so das Objekt-Modell auch auf einer anderen Datenbank verwenden kann und den manchmal hässlichen SQL-Code aus den Annotationen raushält. Dinge wie @Entity oder @Id sind aus seiner Sicht eher Bestandteile der Klasse, so dass man sie als Annotationen definieren kann. Er glaubt auch, dass man Tools sehen wird, die aus den Annotationen XML generieren, so dass man bei der Entwicklung mit den Annotationen arbeiten kann und später beim Deployment mit XML, um dann langfristig die Wartung zu vereinfachen. Außerdem ist er der Meinung, dass man das Überschreiben der Einstellungen aus den Annotationen mit den Einstellungen aus dem XML-File vermeiden sollte, weil man dann nicht weiß, welche Einstellung von wo kommt. Ich muss hier zustimmen, das Überschreiben von Konfigurationen ist eine wirklich schlechte Idee.

Ingesamt eine ganze gute Übersicht, aber eben eher auf Einsteiger-Niveau.

 
Bookmark and Share
2006-06-15
  Spring One: AJAX, DWR and Spring

Dieser Vortrag kam von meinem Kollegen Bram Smeet aus den Niederlanden. Er sprach über <a href="http://www.directwebremoting.org">DWR</a>, womit man recht leicht AJAX-Systeme bauen kann. Im Prinzip ist bringt DWR AJAX mit RPCs und Java / JavaScript Marshalling. Man kann als von JavaScript aus einen Java-Server aufrufen und dabei werden Java-Objekte transparent in JavaScript übersetzt. Die meisten Browser werden von DWR dirket unterstützt.

Letztendlich hat man dann ein rudimentäres System, um JavaScript und Java aneinander zu binden. Wenn man dann im JavaScript-Code die HTML-Elemente ändert, kann man so recht einfach AJAX-Oberflächen bauen. Es hat allerdings keine direkte Unterstützung für vorgefertigte Komponenten, so dass man die GUI selber zusammenbauen muss.

Unterstützung für Debugging gibt es auch. Und man kann auch mehrere Aufrufe in einem Batch sammeln. Auch ein Push-Modell wird unterstützt, bei dem der Server an den Browser JavaScript-Ausdrücke schickt. Das ganze heißt "Reverse AJAX".

Die Spring-Integration bietet dann die Möglichkeit, Spring Beans über DWR zu exportieren. Dazu gibt es einen passenden Spring 2.0 XML Namespace.

Ingesamt ein interessanter Ansatz und auch mal ganz was anderes. Bram Smeet ist übrigens einer von zwei Committern, was zeigt, dass Interface21 eine Menge interessanter Technologien zu bieten hat.

 
Bookmark and Share
  Spring One: Rod's Keynote Ende : Die Zukunft

Das Ende der Keynote beschätigte sich dann mit der Zukunft von Spring.

Ein wichtiges Thema ist die einfachere Konfiguration. Es soll mehr mit Konventionen, Defaults und Heuristiken gearbeitet werden. So kann man recht leicht vorhersagen, welchen PlatformTransactionManager man haben will, weil dies von der verwendeten Persistenz-Technologie abhängt. Dazu kommt dann die direkte Unterstützung für Enterprise Application Patterns, möglicherweise mit einem Maven 2 Generator und den dort verwendeten Archetypes.

Aus Rods Sicht ist ein wichtiges Thema die bessere Unterstützung für den Betrieb. Dazu kann man den ApplicationContext zum Beispiel über JMX managebar machen, Profiling und Tuning einbauen und ein weiteres wichtiges Thema ist sicher die Partitionierung der Anwendung mit Hilfe von OSGi, den man ja auch auf dem Spring Day auf der JAX sehen konnte. Dazu kommen dann Sachen wie dynamische Konfiguration und Warm-/Klatstarts.

Das Fazit: Es geht um Innovation, die einen Unterschied macht, also wirklich einen Wert bringt und nicht nur einfach Innovation um der Innovation willen ist. Da Spring ein POJO-Programmiermodell hat, kann man recht leicht Innovationen liefern, ohne dass etwas dadurch zerstört und so bietet auch Spring 2.0 Innovationen, ohne dass alter Code gebrochen wird.

 
Bookmark and Share
  Spring One: Rod's Keynote - Adrian's Teil

Dann übernahm Adrian Colyer, Chief Scientist bei Interface21 und AspectJ Project Lead. Es ging dann erstmal um Java EE 5. EJB 3 bezeichnete er als rudimentäre Implementation eines Interception und Dependency Injection Systems, das fast die Mächtigkeit von Spring 1.0 hat. Neben dem Simplified Model gibt es dann ja in EJB 3 auch das Core Model, in dem sich dann die ganzen unangenehmen Sachen auch EJB 2.1 verstecken....

Die Überschneidung zwischen Spring und Java EE 5 hält er für klein - Java EE 5 ist eine Evolution, aber kein Ersatz für ein Java EE Framework. Außerdem hat es natürlich eine JDK 1.5 Abhängigkeit, die wohl bei dem derzeitigen Stand vieler Produktionssysteme auch ein Problem ist.

Dependency Injection in EJB 3 hat das Problem, dass es auf Annotationen basiert, was für Legacy Code (also alles vor JDK 1.5, was sehr viel ist), natürlich ein Problem ist. Außerdem benutzt es JNDI und es unterstützt auch keine Features wie Konstruktor Dependency Injection.

Interceptors in EJB 3 sind nach seinen Worten ein nicht erprobtes Modell, weil es eben keine Pointcuts hat. Dadurch hat man immer noch Scattering, d.h. ein Aspekt muss man in den Klassen immer noch einweben und man kann ihn nicht so leicht auf einige Klassen limitieren. Das Modell ist dabei nicht nur weniger mächtig, sondern auch komplexer, wie Adrian an einem Beispiel aus der EJB 3 Spezifikation zeigte. Dabei hat Spring vor allem auch typsichere Advices, in denen man dann keine Type Casts mehr machen muss.

Das ganze ist aber keine entweder/oder Entscheidung - immerhin haben wir ja auch einen EJB 3 Container für BEA geschrieben. Es ist nur einfach so, dass Spring in den Bereiche, in denen Spring eine Alternative zu EJB 3 ist, überlegen ist.

 
Bookmark and Share
  Spring One: Rod's Keynote Teil 2

Rod übernahm dann wieder und sprach von weiteren Spring-Anwender: Die Bank of America oder Decare Systems. Außerdem wird Spring - wie vielleicht bekannt - von BEA, Oracle, IBM, ALfresco und Logic Blaze als Basis für eigene Systeme verwendet. Besonders schön das Zitat von Wai Weng, Executive Vice President bei BEA: "Spring hat die Nuss für einfache Enterprise Java Entwicklung geknackt."

Die Zusammenarbeit mit BEA ist ja bekanntermaßen gut und die Basis der Java EE 5.0 von Web Logic ist eben Spring, auf dem dann EJB 3 aufbaut. Gründe: Man kommt schneller zum Ziel, es gibt weniger Risiko und bessere Funktionalität. Das ganze ist als Open Source mit dem Pitchfork-Projekt verfügbar.

Rod zeigte dann Beispiele für Spring 2.0 und die Einfachheit und Mächtigkeit dieses Ansatzes. Interessant war dabei, dass Rod als Vorteil von Spring die Konfiguration von Klassen nannte, die selber nichts von Spring wissen. Die neuen XML-Namespaces sind eine Möglichkeit, Spring die Klassen bekannt zu machen, so dass man sie einfacher konfigurieren kann. Gerade bei AOP ist dies ein deutlicher Vorteil.

Interessant auch die Unterstützung für Script-Sprachen: Man kann einen Spring-Bean mit einer Script-Sprache implementieren und dann Spring regelmäßig nach Updates für das Skript pollen lassen. Dadurch ist in beliebigen Anwendungen ein schnelles Update der Logik möglich. Weiterer Punkt (zu dem ich auch noch was schreibe) ist Spring und die Java Persistence API aus JSR 220.

 
Bookmark and Share
  Spring One: Rod's Keynote Teil 1
Rod sprach dann über Spring und Interface21 (wenig überraschend). Auch hier war wieder die Ausrichtung zu sehen: Die meisten Leute bei Interface21 kommen aus einem Middleware-Hintergrund und nicht von einem Web-Hintergrund.

Dann zeigte er die Bedeutung von Spring: Laut Forrester verwendet eine Mehrheit der von ihnen interviewten Enterprise-Java-Anwender verwendet Spring. Spring ist mittlerweile im Enterprise angekommen und eine wichtige Skill für einen Entwickler.

Dann ging es weiter mit Case Studies. So sagt das europäische Patentamt, dass man mit Spring Dinge, die sonst Jahre dauern, in Monaten implementieren kann. Bekannt is mittlerweile das Beispiel des französischen Online-Steuer-Systems, dass ebenfalls mit Spring implementiert ist.

Dann gab es eine Case Study des IT-Direktors von Voca aus Großbritannien. Voca ist ein der Firmen, die im Hintergrund agieren und man dadurch nicht wirklich kennt, die aber spannende Sache machen. In diesem Falle handelt es sich um eine Firma, die Überweisungen zwischen Banken aber auch gorßen Firmen (derer 50000) macht. Sie macht pro Jahr 5 Mrd. Transaktionen für 4,5 Trillionen € und bewältigt damit 15% des europäischen Volumens. Maximal kommen 72 Millionen Transaktionen pro Tag vor. Dabei gibt es auch viele Validierungen, das ganze ist also nicht gerade trivial.

Sie haben das ganze vorher auf einer Mainframe-Umgebung aufgebaut und wollten schneller werden aber auch mehr Volumen abhandeln können. Dazu haben sie sich auf eine Java-Architektur mit den Markt-Führern committed: Oracle 10g, BEA WLS 8.1 und Sun F25k als Hardware. Am Anfang hatten sie Bedenken wegen Batches mit Java und wegen Open Source. Im Beriech Open Source vor allem wegen Unterstützung und Langlebigkeit - sind die Committer auch längere Zeit verfügbar?

Sie haben dann Spring eingeführt. Dadurch haben deutliche Produktivitätsvorteile ergeben, ohne dass es Performance-Probleme gab. Der aus seiner Sicht sonst zu beobachtende Nachteil, dass man mit vielen Ansätzen Produktivität gegen Performance-Probleme eintauscht, ergibt sich hier also nicht. Weiterer Vorteil ist die bessere Testbarkeit und der gute Support auch durch die Community. Im allgemeinen werden Probleme innerhalb von einem Tag gelöst.

Ergebnis aus seiner Sicht: Auch in seinem Bereich mit extremen Anforderung bezüglich Volumen und Zuverlässigkeit ist Open Source OK und sie arbeiten immer noch mit Marktführern: Bea, Oracle, Sun und eben auch Interface21....
 
Bookmark and Share
  Spring One: Start
Die Spring One ist im Metropolis Kino in Antwerpen. Immerhin 410 Leute sind her gekommen aus 25 verschiedenen Ländern. Die Einleitung machte Stephan Janssen von der Belgischen Java User Group.

Es fing an mit einer Keynote von Rod Johnson. Das wichtigeste vorab: Spring 2.0 kommt in 07/2006 und es gibt zur Konferenz 2.0RC1. Diese Version wird für die Entwicklung empfohlen und ist vollständig in Bezug auf die Features.
 
Bookmark and Share
2006-06-14
  Spring One!
Morgen bin ich dann auf der Spring One, die Interface21 zusammen mit der Belgischen Java User Group veranstaltet. Ich selber spreche über Spring and Patterns. Ich hoffe, dass ich auch zum Bloggen komme, also stay tuned!
 
Bookmark and Share
  Migration und die grüne Wiese
Behauptung: Migration ist eine der wesentlichen Herausforderungen bei der Software-Entwicklung. Es gibt eigentlich keine grüne Wiese mehr. Oft soll ein System ein anderes ablösen. Fast immer müssen Systeme mit anderen interagieren, so dass man zumindest auf Ebene der Gesamt-IT eigentlich eine Migration hat - die Projekte werden aber nur selten so betrieben. Aber die wichtige Frage ist gerade, an welcher Stelle in der Gesamt-IT man einen neue Sache aufbauen kann und wie man dies möglichst risikolos / risikoarm macht.

In gewisser Weise will man Stabilität, weil es risikoarm ist, auf der anderen Seite Änderung, um Sachen besser zu machen. Das ist auf anderen Ebenen wie z.B. der Organisation auch so. Auch dieses Spannungsfeld kommt eigentlich von dem Migrationscharakter.

Technisch haben wir hier (vielleicht) den heiligen Gral erreicht (oder zumindest fast). Mit Spring ist die Vision umsetzbar, ein reines OO-Modell zu bauen, dass man dann auf verschiedene Technologien laufen lassen kann und so migrationsstabil über Technologien ist. EJB beispielsweise ist da, nun ja, anders. Eine Anwendung von EJB 1.0 auf EJB 2.0 und jetzt auf EJB 3 zu portieren kann - abhängig von der Verwendung - ein komplexes Unterfangen sein, dass vor allem keinen Business-Value generiert. Mit Spring kann man das reine OO-Modell unverändert lassen und vor allem werden auch alte Infrastrukturen unterstützt (alles ab J2SE 1.3 und J2EE 1.3).

Ähnliche Ideen für Technologie-Unabhängigkeit gibt es auch in der MDA und (etwas weniger) in der MDSD Szene. Ob das allerdings wirklich das Ende aller Enterprise-Technologien ist, werden wir sehen. Wenn man als Ziel hat, Mainframe-Anwendungen abzulösen, die Jahrzehnte überdauern sollen, dann wird man eben auch erst in der Zukunft die Probleme sehen...
 
Bookmark and Share
2006-06-06
  Wiederverwendbarkeit



Word weiß, dass es keine Wiederverwendbarkeit geben kann. Es gibt nur Widerverwendbarkeit. Wohl sowas ähnliches wie Widerstand. Damit ist auch dieses Informatik-Problem gelöst. Wider der Verwendbarkeit!
 
Bookmark and Share
2006-06-03
  Europa ist tod
Google Trends zeigt, wo wer wann was sucht.

Interessant sind zum Beispiel:

Spring Framework(leider gibt es hier bestimmt noch mehr Suchbegriffe)

Acegi

Hibernate

JBoss

Java

EJB 3.0

J2EE

AOP

AspectJ


Die Erklärung ist natürlich, dass wir hier in Europa darüber schon alles wissen und danach nicht mehr suchen müssen... ;-)

Zum Abschluß noch ein Ausreißer:

Ruby On Rails


Und:

MDA
 
Bookmark and Share
2006-06-01
  Podcast Feedback...
...und zwar sehenswertes gibt es hier. Mein Spring-Buch ist ja auch voller UML...
 
Bookmark and Share
  Acegi ist draußen
Das Acegi Framework ist jetzt in 1.0 draußen. Es ist meiner Meinung nach eine recht spannende Entwicklung, da es Sicherheit als Aspekt implementiert, so dass man Sicherheit getrennt vom eigentlichen Code betrachten kann. Außerdem ist es außerordentlich flexibel, d.h. man kann viele Systeme integrieren und man kann tatsächlich praktisch jede Art von Sicherheits-Regel implementieren - und zwar getrennt vom eigentlichen Code. Damit ist Acegi für mich ein Beispiel, wie ein gutes Framework aussehen kann und gleichzeitig eine sehr gute Lösung für ein typisches Problem bei Enterprise Anwendungen.
 
Bookmark and Share
J for Java | I for Internet, iMac, iPod and iPad | Me for me

ARCHIVES
Juni 2005 / Juli 2005 / August 2005 / September 2005 / Oktober 2005 / November 2005 / Dezember 2005 / Januar 2006 / Februar 2006 / März 2006 / April 2006 / Mai 2006 / Juni 2006 / Juli 2006 / August 2006 / September 2006 / Oktober 2006 / November 2006 / Dezember 2006 / Januar 2007 / Februar 2007 / März 2007 / April 2007 / Mai 2007 / Juni 2007 / Juli 2007 / August 2007 / September 2007 / Oktober 2007 / November 2007 / Dezember 2007 / Januar 2008 / April 2008 / Mai 2008 / Juni 2008 / August 2008 / September 2008 / November 2008 / Januar 2009 / Februar 2009 / März 2009 / April 2009 / Mai 2009 / Juni 2009 / Juli 2009 / August 2009 / September 2009 / Oktober 2009 / November 2009 / Dezember 2009 / Januar 2010 / Februar 2010 / März 2010 / April 2010 / Mai 2010 / Juli 2010 / August 2010 / Oktober 2010 / Januar 2011 / Februar 2011 / März 2011 / April 2011 / Mai 2011 / Juni 2011 / August 2011 / September 2011 / November 2011 / Februar 2012 / April 2012 / Mai 2012 / April 2013 / Mai 2013 / Juni 2013 / Januar 2015 / Juli 2015 / Februar 2016 /

Links

Twitter
Google +
Slideshare
Prezi
XING
LinkedIn
Das Spring Buch


Feeds

Feedburner


Impressum
Betreiber und Kontakt:
Eberhard Wolff
Leobschützer Strasse 22
13125 Berlin
E-Mail-Adresse: eberhard.wolff@gmail.com

Verantwortlich für journalistisch-redaktionelle Inhalte:
Eberhard Wolff