<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8767105296951940359</id><updated>2011-12-12T13:51:50.812Z</updated><category term='jax08'/><category term='KML'/><category term='continuous integration'/><category term='heiko seeberger'/><category term='OpenSSO'/><category term='einführung'/><category term='spatial web'/><category term='gadgets'/><category term='stefan roock'/><category term='iteration 0'/><category term='Frank Mantek'/><category term='Network links'/><category term='testable'/><category term='glassfish'/><category term='maven'/><category term='chris dibona'/><category term='conference'/><category term='Joachim'/><category term='hamburg'/><category term='scrum master'/><category term='igoogle'/><category term='3d Maus'/><category term='application server'/><category term='grails'/><category term='agilität'/><category term='erfahrungsbericht'/><category term='dynamic kml'/><category term='osgi'/><category term='agile'/><category term='website navigation'/><category term='spring'/><category term='bcberlin3'/><category term='ci'/><category term='performance'/><category term='socio-semantic web'/><category term='eclipse'/><category term='eberhard wolff'/><category term='stephan uhrenbacher'/><category term='product owner'/><category term='Comet'/><category term='web 3.0'/><category term='fazit'/><category term='Steffen Meschkat'/><category term='tycho'/><category term='java EE 6'/><category term='Gears'/><category term='jax'/><category term='randnotizen'/><category term='GDD07de'/><category term='java EE'/><category term='geotagging'/><category term='workshop'/><category term='kollaboration'/><category term='google maps'/><category term='java'/><category term='atoolo.com'/><category term='talk'/><category term='REST'/><category term='security'/><category term='semantic web'/><category term='gadets'/><category term='tutorial'/><category term='GDD07'/><category term='hudson'/><category term='web services'/><category term='bernd schiffer'/><category term='werkverträge'/><category term='karl krainer'/><category term='SOAP'/><category term='agiles projektmanagement'/><category term='Douwe Osinga'/><category term='rcp'/><category term='visual thinking'/><category term='ui'/><category term='developer day'/><category term='scrum'/><category term='Earth'/><category term='build'/><category term='eröffnung'/><category term='groovy'/><category term='GData'/><category term='agile day'/><category term='qype.de'/><category term='mobile web'/><category term='future of java'/><category term='vizthink'/><category term='agiles controlling'/><category term='wrap up'/><category term='maps'/><category term='jughh'/><category term='pde'/><category term='maplets'/><category term='google'/><category term='berlin'/><category term='build mangement'/><title type='text'>visualMind</title><subtitle type='html'>Ich sehe die Welt in Farben!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-5981822717598408479</id><published>2010-06-25T06:26:00.006+01:00</published><updated>2010-07-05T10:43:27.849+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tycho'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>OSGi-Bundles bauen mit Tycho</title><content type='html'>Hallo,&lt;br /&gt;&lt;br /&gt;ich habe mit Hilfe des Tutorials von Mattias Holmqvist (&lt;a href="http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi-bundles/"&gt;Teil 1&lt;/a&gt;, &lt;a href="http://mattiasholmqvist.se/2010/03/building-with-tycho-part-2-rcp-applications/"&gt;Teil 2&lt;/a&gt; und &lt;a href="http://mattiasholmqvist.se/2010/06/building-with-tycho-part-3-testing-code-coverage-and-easier-development-using-target-definitions/"&gt;Teil 3&lt;/a&gt;) unser Projekt vom Headless PDE-Build bzw. BND-Build umgestellt auf Tycho.&lt;br /&gt;&lt;br /&gt;Zunächst einmal: Es geht erstaunlich einfach. Das Tutorial ist unglaublich präzise. Und tycho funktioniert schon in der Version 0.8 sehr gut, die gerade die aktuelle ist (0.10-SNAPSHOT wollte ich nicht nehmen).&lt;br /&gt;&lt;br /&gt;Aber natürlich gab es auch noch ein paar Probleme, die kein noch so gutes Tutorial aus der Welt schaffen kann. Ich liste die einfach mal hier auf, damit andere bei ähnlichen Problemen eine Hilfe bekommen:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Source- und Target-Versionen für den Code&lt;/h3&gt;&lt;br /&gt;Wir verwenden für unseren Source Java Version 6-Features, insbesondere @Override-Annotationen auch für Methoden, die Interface-Methoden überschreiben. Das resultiert dann in einem Fehler "must override a superclass method".&lt;br /&gt;&lt;br /&gt;Das wollte ich zunächst mit einer Plugin-Konfiguration in der parent-pom lösen, hier hat aber Tycho in der Version 0.8 noch ein Problem.&lt;br /&gt;&lt;br /&gt;Aber das osgi-compile-Plugin verwendet aber die gleichen Properties zur Konfiguration wie das "normale" compile-Plugin, ich konnte also einfach die Properties &lt;code&gt;maven.compiler.source=6&lt;/code&gt; und &lt;code&gt;maven.compiler.target=6&lt;/code&gt; in der Parent-POM setzen.&lt;br /&gt;&lt;br /&gt;In zukünftigen Versionen wird Tycho diese Information aus dem Manifest ziehen.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;eclipse-application&lt;/h3&gt;&lt;br /&gt;Wir hatten bisher die .product-Datei in einem ganz normalen Bundle zusammen mit ein paar Java-Klassen, den entsprechenden Ressourcen etc. Tycho baut ein eclipse-application-Bundle aber nicht als Bundle, so dass es ich einfach genau so gemacht habe, wie Mattias Holmqvist es als sein Standard-Vorgehen beschreibt: Ich habe ein eigenes Plugin in der Eclipse IDE angelegt, das nur die foo.bar.product-Datei enthält. Dieses muss noch nicht einmal als PDE-Projekt angelegt sein. Noch schnell eine POM für dieses Projekt geschrieben (wie beschrieben in Teil 2) und in die Parent-POM eingetragen.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Verschachtelte Projekte&lt;/h3&gt;&lt;br /&gt;Tycho arbeitet im Moment nur mit P2-Repositories, nicht aber mit dem Maven-Repository. Es ist also nicht möglich, die verschiedenen Layer einer Applikation aufeinander aufbauend in separaten Builds zu bauen. Also muss die Parent-POM wirklich alle Module auf einmal bauen.&lt;br /&gt;&lt;br /&gt;Soweit dazu, aber selbst mit diesen kleinen Problemchen hatte ich mit tycho meine Eclipse-Applikation schneller gebaut als mit dem PDE-Build oder mit dem BND-Plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-5981822717598408479?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/5981822717598408479/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2010/06/osgi-bundles-bauen-mit-tycho.html#comment-form' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5981822717598408479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5981822717598408479'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2010/06/osgi-bundles-bauen-mit-tycho.html' title='OSGi-Bundles bauen mit Tycho'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-2021357407246286400</id><published>2009-07-13T07:42:00.011+01:00</published><updated>2010-06-25T06:57:53.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ci'/><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='pde'/><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>OSGi-Bundles bauen mit Eclipse und Maven</title><content type='html'>&lt;div style="border:1px solid #4e93aa;background-color:#a0c7d3;padding:0px 10px 10px 10px"&gt;&lt;br /&gt;Neu: Ich habe jetzt mal &lt;a href="http://tycho.sonatype.org/"&gt;Tycho&lt;/a&gt; ausprobiert, damit ist alles besser :)&lt;br /&gt;&lt;br /&gt;Allerdings mache ich dafür kein neues Tutorial, das von Mattias Holmqvist (&lt;a href="http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi-bundles/"&gt;Teil 1&lt;/a&gt;, &lt;a href="http://mattiasholmqvist.se/2010/03/building-with-tycho-part-2-rcp-applications/"&gt;Teil 2&lt;/a&gt; und &lt;a href="http://mattiasholmqvist.se/2010/06/building-with-tycho-part-3-testing-code-coverage-and-easier-development-using-target-definitions/"&gt;Teil 3&lt;/a&gt;) ist schon ziemlich perfekt. Meine Erfahrungen damit habe ich unter &lt;a href="http://vizmind.blogspot.com/2010/06/osgi-bundles-bauen-mit-tycho.html"&gt;OSGi-Bundles bauen mit Tycho&lt;/a&gt; beschrieben.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Alter Post (Vorsicht, mir hat's Groß- und Kleinschreibung zerlegt und das Aufräumen lohnt aus oben beschreibenem Grund nicht mehr) :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OSGi-Bundles und Eclipse Plugins zu bauen war bisher immer sehr umständlich und fehleranfällig. Das bringt mich ja zu der Haltung, dass ich OSGi eher vermeiden würde. Insbesondere bringt es ja in der Regel auch keinen Business-Value. Anderes Thema, ich bin nun mal durch das Umfeld gezwungen, Plugins für die Eclipse Rich Client Platform zu bauen.&lt;br /&gt;&lt;br /&gt;Meine Randbedingungen sind Folgende: Ich möchte in Eclipse entwickeln und dort auch alle Möglichkeiten der PDE nutzen. Andererseits ist es für mich keine Option, fertige Bundles durch einen Entwickler aus seiner IDE exportieren zu lassen. Ich nutze nämlich sowieso ein automatisches Build-System (schließlich bin ich nicht alleine auf der Welt, sondern kooperiere mit anderen, zum Teil verteilt sitzenden Kollegen), um Continuous Builds und Nightly Builds zu machen (siehe mein letzter Post). Dort möchte ich die Bundles über Maven bauen. Bisher haben wir das hier in der Firma über den automatisierten PDE-Build gemacht, der Prozess ist aber höchst umständlich und fehleranfällig.&lt;br /&gt;&lt;br /&gt;Mit dem &lt;a href="http://www.aqute.biz/Code/Bnd"&gt;bnd-Tool&lt;/a&gt; und dem &lt;a href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html"&gt;maven-bundle-plugin&lt;/a&gt; aus dem &lt;a href="http://felix.apache.org/"&gt;Apache Felix&lt;/a&gt;-Projekt gibt es jetzt aber eine spannende und benutzbare Option. Spannend deswegen, weil bnd einen völlig neuen Weg geht - es basiert nämlich nicht (nur) auf Deklarationen, sondern analysiert den compilierten Code, um Abhängigkeiten zu entdecken und in die MANIFEST.MF einzutragen.&lt;br /&gt;&lt;br /&gt;Jetzt zur Lösung: Da ich nicht nur ein Bundle verwende, habe ich eine "common-pom.xml" als gemeinsame Parent-POM meiner Bundle-Projekte.&lt;br /&gt;&lt;br /&gt;Dort verwende ich folgenden Eintrag unter Plugins:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;org.apache.felix&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-bundle-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;extensions&amp;gt;true&amp;lt;/extensions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;manifestlocation&amp;gt;META-INF&amp;lt;/manifestlocation&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;instructions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bundle-symbolicname&amp;gt;${pom.groupId}.${pom.artifactId};singleton:=true&amp;lt;/bundle-symbolicname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bundle-activator&amp;gt;${bundle.activator}&amp;lt;/bundle-activator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;embed-dependency&amp;gt;*;scope=compile|runtime;type=!pom,inline=false&amp;lt;/embed-dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;embed-transitive&amp;gt;true&amp;lt;/embed-transitive&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;embed-directory&amp;gt;lib&amp;lt;/embed-directory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;import-package&amp;gt;${bundle.import-packages}*;resolution:=optional&amp;lt;/import-package&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/instructions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Die notwendigen Properties habe ich in der Parent-POM wie folgt definiert:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;bundle.activator&amp;gt;${pom.groupId}.${pom.artifactId}.internal.Activator&amp;lt;/bundle.activator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;bundle.import-packages&amp;gt;&amp;lt;/bundle.import-packages&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Für das Zusammenspiel mit Eclipse als IDE sorgen dabei einige Einträge: Zunächst verwende ich als manifestLocation natürlich den "default"-Pfad von Eclipse (META-INF) und nicht den maven-default unter target.&lt;br /&gt;&lt;br /&gt;Zum anderen verwende ich ein "Embed-Directory" (lib), in das ich per maven-dependency-plugin alle notwendigen Abhängigkeiten (d.h. 3rd-Party-Libraries, die ich nicht zu OSGi-Bundles konvertiere) kopiere. Der entsprechende Abschnitt der Parent-POM sieht wie folgt aus:&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;profiles&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;profile&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;eclipse&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-clean-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;clean-dependencies-eclipse&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;phase&amp;gt;process-resources&amp;lt;/phase&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goal&amp;gt;clean&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filesets&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;fileset&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;directory&amp;gt;${basedir}/lib&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;includes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;include&amp;gt;**/*&amp;lt;/include&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/includes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/fileset&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filesets&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;maven-dependency-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;execution&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;copy-dependencies-eclipse&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;phase&amp;gt;process-resources&amp;lt;/phase&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goals&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;goal&amp;gt;copy-dependencies&amp;lt;/goal&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/goals&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputdirectory&amp;gt;${basedir}/lib&amp;lt;/outputdirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;includescope&amp;gt;compile&amp;lt;/includescope&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;includescope&amp;gt;runtime&amp;lt;/includescope&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;excludetypes&amp;gt;pom&amp;lt;/excludetypes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/profile&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;lt;/profiles&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Für ein konkretes Bundle sind jetzt "nur noch" relativ wenige Schritte notwendig:&lt;br /&gt;&lt;br /&gt;Natürlich muss das Projekt die Parent-POM entsprechend referenzieren (ich mache das bei mir per relative-path wie folgt):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;parent&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;groupid&amp;gt;de.vizmind&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;artifactid&amp;gt;common&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;relativepath&amp;gt;../de.vizmind.common/pom.xml&lt;br /&gt;&amp;lt;/parent&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Als Packaging muss man bundle verwenden:&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;bundle&amp;lt;/packaging&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Jetzt kann man ganz wie gewohnt seine Dependencies eintragen, wobei die Compile und Runtime-Dependencies wie oben gesagt in den lib-Ordner kopiert werden und so für den PDE-Mechanismus von Eclipse verwendbar sind - dieser hat nämlich so seine Probleme mit den "Maven Dependencies" des m2eclipse-Plugins.&lt;br /&gt;&lt;br /&gt;Abhängigkeiten zu anderen Bundles markiert man einfach mit dem Scope "provided", diese werden dann herangezogen, um die "import-packages" zu bestimmen, aber nicht mit in das Bundle kopiert.&lt;br /&gt;&lt;br /&gt;Jetzt muss man gegebenenfalls noch die Properties aus der Parent-POM "überdefinieren", z.B. wenn man keinen Activator definiert hat (der default wird unter &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;${pom.groupId}.${pom.artifactId}.internal.Activator &lt;/span&gt;&lt;/span&gt;erwartet).&lt;br /&gt;&lt;br /&gt;Wenn man Abhängigkeiten definieren muss, die sich nicht aus den class-Dateien ergeben, so ist das manuell über das Property "bundle.import-packages" zu tun. Da dieses Property einfach vor die automatisch bestimmten gehängt wird, muss man es (noch) mit einem Komma beenden, sofern es nicht leer ist. (Ein weiterer Punkt für Verbesserungen). In unserem Beispiel hier verwenden wir in einem Bundle spring und referenzieren in der context.xml einen PropertyPlaceholderConfigurer. Der Import für diese Klasse kann natürlich nicht automatisch aus .class-Dateien bestimmt werden, also muss er manuell hinzugefügt werden. (Ein weiterer Punkt für Verbesserungen - Automatische Analyse von Spring-Dateien).&lt;br /&gt;&lt;br /&gt;Zusammen sieht das dann wie folgt aus:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;bundle.activator&amp;gt;&amp;lt;/bundle.activator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;bundle.import-packages&amp;gt;org.springframework.beans.factory.config,&amp;lt;/bundle.import-packages&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Close with "," if you have a non-empty list  --&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Jetzt ist mein Projekt fertig. Die Verwendung eines Profils (in der Parent-POM, siehe oben) sorgt dafür, dass ich mit folgendem Maven-Kommando ein Eclipse-Projekt anlegen kann, ohne dem eigentlichen Build später in die Quere zu kommen.&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;mvn eclipse:clean eclipse:m2eclipse process-resources compiler:compile bundle:manifest -Declipse.pde=true -Peclipse&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Das Kommando ist noch etwas umständlich, evtl. mache ich später hier noch etwas "Feinarbeit". Für jetzt funktioniert es erst mal.&lt;br /&gt;&lt;br /&gt;Das Projekt kann nun in Eclipse importiert werden. Einziger Wermutstropfen: Aktuell wird die .classpath-Datei noch nicht so aufgebaut, dass die embedded 3rd-Party-Libraries auch referenziert werden. Die muss man noch einmal "von Hand" in den Build-Path aufnehmen.&lt;br /&gt;&lt;br /&gt;Damit ist der Weg frei, das Bundle in der Eclipse IDE zu verwenden und zu entwickeln.&lt;br /&gt;&lt;br /&gt;Mit&lt;br /&gt;&lt;blockquote style="font-family:courier new;font-size:85%;color: rgb(102, 102, 102);"&gt;&lt;br /&gt;mvn package&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;kann man nun das Bundle auch bauen, so dass auch dem automatisierten Build nichts mehr im Wege steht.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ciao&lt;br /&gt;&lt;br /&gt;Chris&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-2021357407246286400?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/2021357407246286400/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2009/07/osgi-bundles-bauen-mit-eclipse-und.html#comment-form' title='7 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2021357407246286400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2021357407246286400'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2009/07/osgi-bundles-bauen-mit-eclipse-und.html' title='OSGi-Bundles bauen mit Eclipse und Maven'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-6530814132002238157</id><published>2009-05-11T19:13:00.002Z</published><updated>2009-05-11T19:16:42.945Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Video vom Vortrag</title><content type='html'>Den Hudson-Vortrag hab ich gleich nochmal gehalten - beim &lt;a href="http://users.informatik.haw-hamburg.de/%7Esarstedt/stalk.htm"&gt;Arbeitskreis Objekttechnologie Norddeutschland&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Diesmal gibt's auch ein &lt;a href="http://www.loroma.com/loroma/movie.faces?movie=16400#Hudson-1241523741795"&gt;Video&lt;/a&gt; davon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-6530814132002238157?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/6530814132002238157/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2009/05/video-vom-vortrag.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6530814132002238157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6530814132002238157'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2009/05/video-vom-vortrag.html' title='Video vom Vortrag'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-2132574930297853078</id><published>2009-03-18T23:16:00.004Z</published><updated>2009-03-18T23:25:20.100Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='pde'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='build mangement'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='hudson'/><category scheme='http://www.blogger.com/atom/ns#' term='jughh'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous integration'/><title type='text'>Vortrag bei der JUGHH: Continous Integration mit Hudson</title><content type='html'>&lt;div style="width: 425px; text-align: left;" id="__ss_1165425"&gt;Hallo!&lt;br /&gt;&lt;br /&gt;Gestern habe ich einen Vortrag bei der Java User Group Hamburg über Continuous Integration mit Hudson gehalten. Die Folien dazu gibt's unten.&lt;br /&gt;&lt;br /&gt;Wie üblich haben sich neben und nach dem Vortrag interessante Diskussionen ergeben, die im wesentlichen in zwei Richtungen gehen:&lt;br /&gt;&lt;br /&gt;Zum einen ist der Build von Eclipse-Applikationen ein echter Schwachpunkt, für den jeder Lösungen sucht bzw. ähnliche Workarounds findet. Ein wirklich schwerwiegendes Problem dabei ist, dass man kaum verwertbare Dokumentation dazu findet. Ich werde versuchen, das in einem meiner nächsten Posts zu beheben und unseren Eclipse-PDE-Build-Prozess zu beschreiben. Die Einbindung in Hudson ist dabei Gott sei Dank nicht das Problem.&lt;br /&gt;&lt;br /&gt;Zum anderen stellte sich einmal mehr heraus, dass auch das Bauen von Software immer wieder neue und interessante Facetten hat. Hudson kann ja mit mehreren Build-Prozessoren umgehen. Welche Build-Schritte kann man eigentlich parallelisieren? Welche müssen in jedem Fall erst nach einer Menge anderer Teil-Schritte bearbeitet werden. Wie synchronisiert man diese Builds. Wie testet man? Auch das sind Themen, auf die ich jetzt (noch) keine Antwort habe. Demnächst mehr.&lt;br /&gt;&lt;br /&gt;Gute Nacht!&lt;br /&gt;&lt;br /&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/cb.betz/continuous-integration-mit-hudson-1165425?type=presentation" title="Continuous Integration mit Hudson"&gt;Continuous Integration mit Hudson&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=praesentationhudsonjughh-090318174553-phpapp01&amp;amp;stripped_title=continuous-integration-mit-hudson-1165425"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=praesentationhudsonjughh-090318174553-phpapp01&amp;amp;stripped_title=continuous-integration-mit-hudson-1165425" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/cb.betz"&gt;cb.betz&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-2132574930297853078?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/2132574930297853078/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2009/03/vortrag-bei-der-jughh-continous.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2132574930297853078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2132574930297853078'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2009/03/vortrag-bei-der-jughh-continous.html' title='Vortrag bei der JUGHH: Continous Integration mit Hudson'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8247466207135979302</id><published>2009-01-13T16:45:00.005Z</published><updated>2009-01-13T21:15:57.886Z</updated><title type='text'>Neues Jahr, neues Glück</title><content type='html'>So - neuer Vorsatz... eigentlich hab ich's ja nicht so mit Vorsätzen, aber dieses Jahr ist gut dafür. Unser Nachwuchs kommt und ich hab mir überlegt, dass es endlich Zeit ist, web2.0ig zu werden. Also nicht passiv, sondern aktiv. Selbst bloggen, twittern, flickrn und so weiter, was das Zeug hält. Was Nachwuchs und Web 2.0 miteinander zu tun haben? Erst mal gar nix. Außer dass ich natürlich drüber nachdenke, was mir wichtig ist und was ich gern mache. Und das werde ich hier mit allen teilen, die's interessiert.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also kurz über mich - ich bin ja eigentlich schon Web 2.0. Viel im Internet unterwegs und schon eher das, was sich so gemeinhin Early Adopter nennt. Immer eher technisch, aber auch mit einem starken Bezug zum Nutzen, zu User und Usage Experience bis hin zum Marketing. Den Fokus auf Benutzbarkeit habe ich schon in meiner Promotion gehabt. Da ging es darum, wie man eLearning-Systeme durch Fachexperten mit einer möglichst geringen Einstiegshürde erstellen kann und wie diese dann nach und nach so wachsen, dass sie "intelligent" auf die Lerner reagieren können. Ich habe schon Expertensysteme entwickelt, Musikportale im Internet gebaut und auch größere Web-Systeme für Banken. Nicht gerade Web 2.0 - aber für die konservative Branche schon recht fortschrittlich. Manches davon habe ich in meiner eigenen Firma gemacht, manches bei einem der größten deutschen Interactive-Dienstleister.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seit etwas über einem Jahr bin ich jetzt in einer ganz anderen Branche. Ich baue Software zur Kommunikationsanalyse in einer alteingesessen Hamburger Firma. Zum Thema Visuelle Analyse werde ich hier sicher noch das ein oder andere schreiben.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8247466207135979302?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8247466207135979302/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2009/01/neues-jahr-neues-glck.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8247466207135979302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8247466207135979302'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2009/01/neues-jahr-neues-glck.html' title='Neues Jahr, neues Glück'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1669105983624281156</id><published>2008-10-18T08:07:00.001Z</published><updated>2008-10-18T08:08:37.566Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bcberlin3'/><title type='text'>session building</title><content type='html'>hey, spannend. Es ist total egal, wie viele Leute sich für ein Thema interessieren. Die Themen werden immer in den Schedule gepinnt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1669105983624281156?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1669105983624281156/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/session-building.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1669105983624281156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1669105983624281156'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/session-building.html' title='session building'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1559875345521927301</id><published>2008-10-18T07:58:00.002Z</published><updated>2008-10-18T08:03:18.379Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bcberlin3'/><title type='text'>barcamp...</title><content type='html'>make wine tasting visible, accessible places, tomocos, theatre 2.0, &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Die Themen sind recht unterschiedlich und bei weitem nicht soooo technisch, wie die ursprünglich angekündigten Themen. Fragt sich, ob nur die Nerds ihre Themen schon vorher präsentieren?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1559875345521927301?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1559875345521927301/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/barcamp.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1559875345521927301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1559875345521927301'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/barcamp.html' title='barcamp...'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-3707529725365094996</id><published>2008-10-14T12:04:00.002Z</published><updated>2008-10-14T12:06:33.739Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='website navigation'/><title type='text'>Website Navigation</title><content type='html'>Interessant, sollte man mal ausprobieren: Eine Website ohne eigene (hierarchische) Navigation, weil Benutzer die sowieso nicht benutzen. Stattdessen "teleportieren" sich die Benutzer mit Googles Hilfe von einer Website zur nächsten.&lt;br /&gt;&lt;br /&gt;Das würde völlig neue Wege der Visualisierung erlauben. Raus mit diesem ganzen Overhead zur Navigation. Stattdessen würde vielleicht eine Customized Search Sinn machen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-3707529725365094996?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/3707529725365094996/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/website-navigation.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3707529725365094996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3707529725365094996'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/website-navigation.html' title='Website Navigation'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-6162790577703950181</id><published>2008-10-14T11:41:00.005Z</published><updated>2008-10-14T12:04:21.241Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='socio-semantic web'/><title type='text'>Die richtige Frage</title><content type='html'>Interessant: Hier, in der Session von Moritz Stefaner, werden Visualisierung nicht als Tool zur Überprüfung von Hypothesen, sondern als Tools zur Generierung von Hypothesen gesehen. Ich habe oft den Eindruck - gerade auch im Vergleich mit Manuel Lima - dass solche Fragestellungen auf dieser VizThink-Konferenz oft noch nicht beantwortet werden. Eigentlich noch nicht einmal gestellt werden. Ich erinnere nur an die Session gestern (und den Post dazu): Dabei kam aus dem Auditorium die Frage, wie man Visualisierungen für unterschiedliche Stakeholder produzieren kann und wie man vor allem entscheiden kann, welche Visualisierung für welche Stakeholder passend ist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-6162790577703950181?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/6162790577703950181/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/die-richtige-frage.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6162790577703950181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6162790577703950181'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/die-richtige-frage.html' title='Die richtige Frage'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-5872705867017016130</id><published>2008-10-14T11:36:00.002Z</published><updated>2008-10-14T11:41:29.558Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='visual thinking'/><title type='text'>Marketing-Maschine</title><content type='html'>Die Marketing-Maschine auf der VizThink schlägt voll zu - selten habe ich eine Veranstaltun erlebt, in der Sessions so unverholen zum Marketing missbraucht werden oder von den Teilnehmern als solches wahrgenommen werden.&lt;br /&gt;&lt;br /&gt;Egal, ob es die Aufforderung ist, das "Was ist die visual thinking Industrie"-Poster zu vervollständigen oder die Pro-/Con-Liste für visuelle Kooperationssoftware (natürlich mit der visuellen Kooperationssoftware) zu erstellen - natürlich lernt man dabei was.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-5872705867017016130?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/5872705867017016130/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/marketing-maschine.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5872705867017016130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5872705867017016130'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/marketing-maschine.html' title='Marketing-Maschine'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8603688339233083087</id><published>2008-10-13T14:31:00.003Z</published><updated>2008-10-13T14:40:50.918Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='visual thinking'/><title type='text'>Visual Thinking or Visual Explaining</title><content type='html'>Aus meiner ersten Session heute morgen habe ich ja die Frage mitgenommen, ob es einen Unterschied zwischen visual thinking und visual explaining gibt. Denn die Werkzeuge sind ja durchaus unterschiedliche - von Mind Mapping und ähnlichen brainstorming Techniken über mehrere Stufen hin zu dem Ergebnis, der Infographik, die den Kern der Nachricht transportiert. Dabei sind auch die Ziele durchaus unterschiedlich.&lt;br /&gt;&lt;br /&gt;In den verschiedenen Sessions kommt es daher auch immer zu der Diskussion um Expertise-Modellen, d.h. die Schritte zwischen Daten und Wissen, Lernen und Lehren oder wie auch immer man die Skala aufspannt.&lt;br /&gt;&lt;br /&gt;Auch für meine Arbeit - die Analyse und das Kommunizieren der Ergebnisse - ist diese Unterscheidung wichtig und sollte in der Software noch wesentlich stärker berücksichtigt werden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8603688339233083087?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8603688339233083087/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/visual-thinking-or-visual-explaining.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8603688339233083087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8603688339233083087'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/visual-thinking-or-visual-explaining.html' title='Visual Thinking or Visual Explaining'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-350785745123141337</id><published>2008-10-13T14:29:00.000Z</published><updated>2008-10-13T14:30:28.819Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='visual thinking'/><title type='text'>Mini-Erkenntniss</title><content type='html'>Beim Mittagessen hab ich erfahren, dass es Leute gibt, die davon leben, bei Workshops live die Diskussionen in Flipchart-Bilder zu fassen. Eigentlich kam ich darauf, weil eines der Flipcharts aus einem Workshop wirklich herausstechend besser aussah als die anderen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-350785745123141337?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/350785745123141337/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/mini-erkenntniss.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/350785745123141337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/350785745123141337'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/mini-erkenntniss.html' title='Mini-Erkenntniss'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1380360440439572269</id><published>2008-10-13T14:05:00.005Z</published><updated>2008-10-13T14:29:47.968Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vizthink'/><category scheme='http://www.blogger.com/atom/ns#' term='visual thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><title type='text'>InfoViz'08 in Berlin</title><content type='html'>Moin,&lt;br /&gt;&lt;br /&gt;heute bin ich auf der VizThink '08 Europe in Berlin. Worum geht's? "It's about spending lots of money on a poster a six-year old could draw". Nein, natürlich nicht - aber das ist das Vorurteil, mit dem diese noch relativ junge "Industrie" häufig konfrontiert wird.&lt;br /&gt;&lt;br /&gt;Warum bin ich hier? Ganz einfach - Software ist meistens visuell. Das User Interface wird in der Regel visuell wahrgenommen, die Informationen visuell präsentiert und das sind meistens mehr als man nach der 5 +/- 2 - Regel im Arbeitsspeicher des Hirns halten kann.&lt;br /&gt;&lt;br /&gt;Interessanterweise ist die Konferenz gar nicht so "visuell" wie man vielleicht vorher hätte vermuten können, sondern zum Teil auch sehr physisch aktiv: Es wird auch gerne Text auf Post-Its an die Wand geklebt. Aber eben Text. Ist das jetzt visuell? Weil's hinterher an der Wand klebt?&lt;br /&gt;&lt;br /&gt;Die Mischung aus Designern, Software-Entwicklern, Consultants und zwischen den verschiedensten fachlichen Disziplinen hier ist ziemlich groß im Vergleich zu anderen Sachen, die man sonst so hört oder sieht. Deswegen ergeben sich auch in den kleinen Gesprächen am Rande der Konferenz sehr interessante Gespräche.&lt;br /&gt;&lt;br /&gt;Dass visual thinking noch relativ jung ist und es eben nicht immer fest gefertigte Antworten gibt, sieht man auch daran, dass stärker als bei anderen Konferenzen die Fragen und Diskussionsbeiträge sehr interessante Einsichten bringen.&lt;br /&gt;&lt;br /&gt;Ich bin gespannt, was noch an Einsichten kommt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1380360440439572269?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1380360440439572269/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/10/infoviz08-in-berlin.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1380360440439572269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1380360440439572269'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/10/infoviz08-in-berlin.html' title='InfoViz&apos;08 in Berlin'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8982999271960070067</id><published>2008-04-22T15:00:00.002Z</published><updated>2008-04-22T13:21:38.974Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java EE'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSSO'/><category scheme='http://www.blogger.com/atom/ns#' term='Comet'/><category scheme='http://www.blogger.com/atom/ns#' term='glassfish'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='application server'/><title type='text'>jax08: Advanced GlassFish</title><content type='html'>So, das ist jetzt hoffentlich spannender und die ersten paar Minuten kann ich doch ganz bestimmt auf der CD-Rom noch checken. Auf jeden Fall habe ich gerade den Talk gewechselt und lass mich mal zum GlassFish informieren.&lt;br /&gt;&lt;br /&gt;Ein interessanter Link ist &lt;a href="https://visualvm.dev.java.net/"&gt;VisualVM&lt;/a&gt;, ein Monitoring Tool aktuell in Beta 2.&lt;br /&gt;&lt;br /&gt;GlassFish unterstützt Single Sign On (SSO) für alle Web Applikationen bzw. mit &lt;a href="https://opensso.dev.java.net/"&gt;OpenSSO&lt;/a&gt; gibt es auch ein CrossServer bzw. CrossDomain SSO. Interessant ist, dass OpenSSO auch heterogene Umgebungen abdeckt, indem man Adapter in die jeweiligen Umgebungen deployt. Jetzt gibt's einige Beispiele dafür, wie man mit OpenSSO in verschiedenen Setups nutzt. Jetzt gerade gibt's hier das Beispiel für die Nutzung in WebServices. Da SSO ja ein immer wiederkehrendes Thema ist.&lt;br /&gt;&lt;br /&gt;Weg vom SSO-Thema, hin zu einem neuen Hype: Scripting. Man merkt schon, Daniel Adelhardt hat so gewisse Vorbehalte: "muss man zugestehen" und "Quick, Dirty &amp;amp; Good Enough Architekturen" - ehrlich, das was hier offensichtlich als "Enterprise Architekturen" firmiert ist halt nicht pragmatisch. Nicht in dynamischen Sprachen und nicht in Java.&lt;br /&gt;&lt;br /&gt;Immerhin, Sun hat das erkannt und setzt auf JRuby. Jython ist auch dazugekommen. Jetzt fehlt nur noch offizieller Support für Groovy. Und Daniel Adelhardt gibt das Statement, dass Groovy in Netbeans und in GlassFish unterstützt wird. Ich persönlich bin ja überzeugt davon, dass dynamische Sprachen - hier unterscheide ich für mich ja von "Skriptsprachen" - auch im Enterprise Umfeld wesentliche Benefits bringen können.&lt;br /&gt;&lt;br /&gt;Dass es Sinn macht, AppServer und "Skriptsprachen" zu kombinieren, stellt auch Daniel Adelhardt dar, sei es aus Security Gründen, aus Gründen der Betriebs-Infrastruktur und des entsprechenden KnowHows.&lt;br /&gt;&lt;br /&gt;Schön ist die Unterstützung von PHP über das &lt;a href="http://www.caucho.com/resin-3.0/quercus/index.xtp"&gt;Quercus&lt;/a&gt; Servlet. Das gefällt mir. Auch für JRuby gibt es Bundle, das sich direkt in den GlassFish 2 installieren lässt. Von GlassFish 3 gibt es eine Mini-Version (geht quasi zurück auf die Keynote), die dann auch quasi "nur" den Ruby-Server bereitstellt.&lt;br /&gt;&lt;br /&gt;Was passiert mit Groovy bzw. Grails? Interessanterweise wird das in Deutschland gemacht und ist aktuell &lt;a href="http://wiki.glassfish.java.net/Wiki.jsp?page=GroovyGrailsPlanning"&gt;in Arbeit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nächstes Thema: Rich Application Clients: Load Balancing und Failover for IIOP(s). Man kann da den Client mit dem ear bundlen und der Glassfish generiert dann automatisch ein JNLP File. Scheint aber alles nicht so einfach zu sein. Das ganze gibt's zum Nachlesen auf den Slides. Und hah - für Firewall/Loadbalancing-Szenarien gibt's 'ne Lösung.&lt;br /&gt;&lt;br /&gt;Comet ist eine Lösung, um einen Push vom Server auf den Client auszulösen. Muss man sich mal genauer ansehen. Auf jeden Fall unterstützt der GlassFish Comet und man muss einfach im http-listener das Property "cometSupport" auf "true" setzen. Im Server-Log sollte dann so was stehen wie "Enabling Grizzly ARP Comet support". Die Basis für Comet im GlassFish ist die NIO, die ein non-blocking handling erlaubt. Im Service einfach den CometHandler implementieren und den CometHandler beim Request anhängen. Der Code ging auf zwei Slides und der Mechanismus ist ziemlich interessant.&lt;br /&gt;&lt;br /&gt;Mein Fazit zu dieser Session: Ja, das mit OpenSSO hat nicht wirklich zwingend was mit GlassFish zu tun, aber dennoch war der Talk sehr interessant, hat eine weite Thematik behandelt und war absolut empfehlenswert. Gut, das Thema Comet hatten wir so auch schon mal, ohne zu wissen, dass es Comet gibt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8982999271960070067?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8982999271960070067/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax08-advanced-glassfish.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8982999271960070067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8982999271960070067'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax08-advanced-glassfish.html' title='jax08: Advanced GlassFish'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8467904530240613840</id><published>2008-04-22T14:30:00.000Z</published><updated>2008-04-22T13:18:10.686Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ui'/><category scheme='http://www.blogger.com/atom/ns#' term='testable'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><category scheme='http://www.blogger.com/atom/ns#' term='heiko seeberger'/><title type='text'>jax08: Presenter First for RCP applications using Spring OSGi</title><content type='html'>Wow, drei Buzzwords auf einmal im Titel, wenn ich dann auch noch testable dazunehme... also abwarten, ob das Buzzword-Bingo wird oder interessant. In diesem  Zeitslot ist die Konkurrenz groß, ich habe auf Glassfish, Sprachtrends und Pragmatic Architecture verzichtet.&lt;br /&gt;&lt;br /&gt;Natürlich wollen wir möglichst einfach, agil, testbar auch unseren Eclipse RCP UI-Code entwickeln. Also los. Kurze Einführung ins Beispiel, Test Cases für das Beispiel. Schade, da macht Heiko Seeberger schon zuerst die Tests, doch dann macht er (auf seinen Folien) wieder den "Fehler", sich nicht von den Tests leiten zu lassen. Er macht erst mal ein "so macht man's nicht"-Beispiel und hackt das Beispiel komplett in einem Composite. Naja, kein Wunder, dass sich das nicht testen lässt. Weiter. Nächster Punkt.&lt;br /&gt;&lt;br /&gt;Ich denke, dass ich hier falsch bin - und mir den Vortrag lieber auf CD-Rom ansehe. Mal sehen, ich geh mal weiter in den nächsten Vortrag, wo es sich vielleicht nicht so leicht nachlesen lässt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8467904530240613840?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8467904530240613840/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax08-presenter-first-for-rcp.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8467904530240613840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8467904530240613840'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax08-presenter-first-for-rcp.html' title='jax08: Presenter First for RCP applications using Spring OSGi'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-7250746485503646851</id><published>2008-04-22T12:30:00.000Z</published><updated>2008-04-22T10:43:05.739Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bernd schiffer'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='stefan roock'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Grails - der Gral der Webentwicklung</title><content type='html'>Mann, oh mann! Zweimal schon wollte ich mir diesen Talk in Hamburg schon anhören - in der XP-User Group und an der HAW. Hat beide Male nicht geklappt, also muss es hier endlich gehen. Ich komme ja aus der Ecke Web-Entwicklung und das Thema wird mich bestimmt auch nicht ganz loslassen, auch wenn ich im Moment eher Service-orientiert und Eclipse RCP-lastig unterwegs bin. Vielleicht gibt's ja auch neue Ideen für ein RCP-Grail, denn convention over configuration hat sich dort auch noch nicht durchgesetzt. Hinzu kommt, dass dies die meiner Meinung nach "schwächste" Session-Runde ist (hier hatte ich nur vier Talks zur Auswahl) und wir uns kollegentechnisch etwas aufgeteilt haben und wir so nichts relevantes verpassen. Hoffentlich.&lt;br /&gt;&lt;br /&gt;Hey, cool. Endlich hat sich's mal gelohnt, dass mein Notebook so 'nen schwachen Akku hat: Dadurch wollte ich mir einen Platz mit Steckdose sichern, war früher da und muss jetzt wenigstens weder stehen noch am Boden sitzen. Grails ist ein Thema, das brennt.&lt;br /&gt;&lt;br /&gt;Der Vortragsstil - zumindest der Einstieg - ist schon mal klasse. Ich persönlich stehe ja auf diese Art von Vorträgen. Anhand von "Praxisbeispielen" beleuchten die beiden Web-Frameworks: Es ist mehr eine Pannenshow in Bildern aus allen möglichen Bereichen, mit Übertragung auf die Web-Frameworks. Die Folien danach sind eher klassisch, aber gut, es soll ja auch nicht nur cool sein, sondern auch informativ.&lt;br /&gt;&lt;br /&gt;Spring, Hibernate und Sitemesh sind die Grundlagen von Grails, Groovy ist nur der Zuckerguß auf diesen Grundlagen. Und da der Zuckerguß dünn ist, wird die Applikation auch nicht dick, soll heißen langsam durch die doch vergleichsweise geringe Performance. Neben diesen Grundlagen stecken in Grails noch andere Libraries für Ajax, Batch, Sicherheit und Tests. Eigentlich sind es die alten Bekannten aus der Welt der Webentwicklung.&lt;br /&gt;&lt;br /&gt;Jetzt kommt ein Crash-Kurs Groovy, den gebe ich hier mal nicht weiter. Für Java-Entwickler ist der Einstieg ja suuper-leicht, aber wie immer dauert es natürlich eine Weile, bis man wirklich in der Denke der Sprache angekommen ist. Ich reite noch mal drauf rum - wer LISP kann, ... naja, lassen wir das. Worauf auch Stefan Roock nochmal hinweist: Groovy und Java integrieren sich nahtlos, man kann von Java-Klassen auf Groovy-Klassen zugreifen und umgekehrt.&lt;br /&gt;&lt;br /&gt;Jetzt zu Grails: Zunächst mal die Persistenz: Domain-Objects werden automatisch gemappt. Ich muss also keine Hibernate-Konfiguration, keine JPA-Annotationen oder sonst etwas machen, es geht sofort los. Wobei man zugeben muss, dann man es hier halt nicht über Annotationen oder sonst etwas machen muss, sondern über die Konvention, dass es in einem Package domain liegt und dass man die Felder hasMany oder belongsTo benutzt, die jeweils eine Map bekommen. Constraints werden beispielsweise über eine Closure definiert, die eine DSL enthält. Spannendes Konzept. Stefan Roock weist noch darauf hin, dass man sich leichter tut, wenn man es erst mal so hinnimmt und nicht versucht, es erst mal zu verstehen und dann zu machen. Stimmt wohl, das Konzept ist einfach zu benutzen. Wie die Abbildung auf die Datenbank-Constraints passiert muss man eigentlich gar nicht wissen. Aber es zeigt schön die Groovy-Denke.&lt;br /&gt;&lt;br /&gt;Der DynamicFinder ist total interessant, da er wundervoll die Dynamik der Sprache zeigt: Adresse.findAllByPostleitzahlAndGueltigBis(21502, null). Ein MOP (Metaobject Protocol) hat echte Vorteile! Die Zwischenfrage nach der IDE-Unterstützung ist natürlich interessant: IDEA hat die beste Unterstützung, Eclipse und Netbeans ziehen da nach.&lt;br /&gt;&lt;br /&gt;GroovyServerPages setzen voll auf Sitemesh und entsprechende Taglibs. Das kann man in Java natürlich so auch selbst machen, aber Grails bringt das halt schon alles mit.&lt;br /&gt;&lt;br /&gt;Wir haben Model und View, die Controller verbinden das. Dabei werden Controller in einem eigenen Package und über das Suffix Controller identifiziert. Interessanterweise werden die einzelnen Aktionen nicht als Methoden realisiert, sondern als Closures, die in Feldern gespeichert werden.&lt;br /&gt;&lt;br /&gt;Jetzt geht's schon ins Eingemachte: AJAX ist eingebaut (Prototype / Script.acoluo.us, Yahoo! UI als Plugin, Dojo als Plugin). TagLibs lassen sich einfach selbst bauen: Wieder per Konvention in den Ordner taglib die eigene TagLib reinwerfen und schon ist die Taglib fertig. Stefan Roock weist darauf hin, dass man durch die Einfachheit in Grails-Projekten eigene Taglibs viel häufiger einsetzt als in Java-Projekten. Glaube ich sofort.&lt;br /&gt;&lt;br /&gt;Testen ist in Grails direkt eingebunden. Es generiert Skelette für Domain-Klassen und Controller, integriert die Ausführung von Tests in die bereitgestellten Skripte etc. Noch ist das ziemlich langsam, weil die VM, das Framework und der Webserver immer mal wieder hoch- und runtergefahren wird.&lt;br /&gt;&lt;br /&gt;Jetzt kommt Stefan Roock schon zu RESTful Services mit Grails, sehr interessant, aber doch durchaus vielleicht schon fast zu tief. Die Zuhörer schwitzen zum Teil schon.&lt;br /&gt;&lt;br /&gt;Aber, es ist fast geschafft. Jetzt geht's (nach der unvermeidlichen Werbeeinblendung) zur Live-Demo. Also Console auf, TextMate auf und los geht's. Bernd Schiffer baut sich erst mal eine neue Grails-Applikation. Beziehungsweise er lässt sich eine neue Applikation bauen, und zwar vom entsprechenden Grails-Skript.&lt;br /&gt;Die Domain-Klasse wird wieder per Skript erzeugt. Erst mal ist das nicht spannend, aber Plugins für Grails können sich hier einklinken und so wird beispielsweise zu der Domain-Klasse auch eine Test-Klasse erzeugt.&lt;br /&gt;&lt;br /&gt;Jetzt kann man die Applikation starten (dazu fährt intern ein Jetty hoch). Noch passiert nicht viel - die Applikation fährt hoch, aber es ist nur die Grails-Standard-Seite zu sehen. Also - Server läuft weiter - macht Bernd Schiffer sich einen entsprechenden Controller. Den sieht man jetzt schon auf der Einstiegsseite. Fehlt noch ein View, aber die entsprechenden Ordner sind auch schon angelegt. Also flugs eine gsp-Seite angelegt.&lt;br /&gt;&lt;br /&gt;Bisher alles ohne Server-Neustart zu sehen.&lt;br /&gt;&lt;br /&gt;In der Klasse BootStrap gibt's eine init (und eine destroy)-Methode, dort kommt noch ein bisschen Init-Code hin (Domänen-Objekt erzeugen), Server stoppen und starten (sonst wird die BootStrap-init-Methode nicht ausgeführt). Und schon sieht man was.&lt;br /&gt;&lt;br /&gt;Jetzt geht's weiter über das Einfügen von Links, mehr Code im Controller etc. Damit sind wir durch. Die Fragen gehen im Rauschen unter, über DataSources kann die zugrundeliegende Datenbank auswählen, Refactorings sind noch nicht wirklich gut unterstützt, es gibt verschiedene Möglichkeiten, (Java) Legacy-Code zu integrieren. Mit DB-Migrate kann man die Migration von Datenbank-Schemata durchführen.&lt;br /&gt;&lt;br /&gt;Noch mein Fazit: Der Talk war eine gute Einführung mit einer schönen Mischung aus theoretischer Einsicht und einem praktischen Teil. Groovy ist auf jeden Fall einen Blick wert. Wann kommt jetzt das Buch?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-7250746485503646851?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/7250746485503646851/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/grails-der-gral-der-webentwicklung.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7250746485503646851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7250746485503646851'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/grails-der-gral-der-webentwicklung.html' title='Grails - der Gral der Webentwicklung'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8005448283705698814</id><published>2008-04-22T09:24:00.003Z</published><updated>2008-04-22T09:27:37.661Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='randnotizen'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>Randnotiz Treffer</title><content type='html'>Gerade auf der JAX-Website gelesen, dass es "Beste Gelegenheiten für Networking &amp;amp; Erfahrungsaustausch!" gibt. Stimmt, bin gerade kurz nach seinem Vortrag in Stefan Zörner reingelaufen. Mal sehen, was mein Kollege nachher über Zörners Talk erzählt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8005448283705698814?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8005448283705698814/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/randnotiz-treffer.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8005448283705698814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8005448283705698814'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/randnotiz-treffer.html' title='Randnotiz Treffer'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-3513748093620270202</id><published>2008-04-22T08:11:00.002Z</published><updated>2008-04-22T09:09:52.174Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='eberhard wolff'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>Spring: Vom Framework zum Ökosystem</title><content type='html'>Ich habe mich für die Session "Spring: Vom Framework zum Ökosystem entschieden". Damit hat Eberhard Wolff gewonnen vor Rod Johnson mit seiner Q&amp;amp;A-Session zur Keynote und ein paar anderen interessanten Sessions. Hoffentlich wird's so interessant wie ich mir das gerade erhoffe. Natürlich stellt sich gerade in dieser Session die Frage, ob Spring mit allem nicht mittlerweile zu groß wird und damit in die Falle tappt, in der Java EE jetzt schon steckt.&lt;br /&gt;&lt;br /&gt;Wow, erst mal schmeißt Wolff viiiiele Blasen an die Wand: Die ganzen Spring-Teilprojekte. Eine der Blasen ist Spring Batch. Spring Batch ist die Unterstützung von Batch-Jobs für Java, und dass Batch Jobs in vielen Projekten  wichtig sind. Typische Probleme von Batches (ich denke mal, die Unterstützung dafür kommt gleich) sind Wiederaufsetzen nach einem Fehler, Parallelisierung und die Optimierung von Datenbank-Operationen.&lt;br /&gt;&lt;br /&gt;[...] (Anmerkung: Hier redet Eberhard Wolff ziemlich detailliert über Spring Batch)  Und weiter, und mehr, und noch mehr Batch Details. Ja, ich weiß was ein Batch ist und wie man so was bauen würde. Die Details von Spring Batch kann ich mir anschauen, jetzt wo ich weiß, dass es das gibt. Ich fange gerade an, in meinen Unterlagen zu blättern und nach Alternativen zu suchen. Das ist nicht der Vortrag des Titels, sondern irgendwas anderes. Das ganze geht mir persönlich viel zu tief in Spring Batches, ein deutlich flacherer Überblick hätte mir hier definitiv gereicht. Mehr, unterschiedlicher. Was gibt es noch an Blasen.&lt;br /&gt;&lt;br /&gt;Endlich geht's weiter zum nächsten Bubble: Spring Integration. Das löst typische EAI-Probleme, also Messages, Routing, Splitting, Transformation etc. Das Framework basiert auf einem Pipes &amp;amp; Filters Pattern und ist Event-driven. Das heißt, dass sich das Framework um das Message-Listening kümmert und dann die Service-Aufrufe regelt. Beispielsweise übernimmt das Spring Integration Framework das Thread-handling. Super, das ist jetzt mal auf dem korrekten Niveau. Jetzt nur nicht zu sehr abgleiten ins Detail. Wir gehen jetzt mal in den Code, es könnte schon zu detailliert werden. Jaaa, es wird zu detailliert. Gut, es interessiert mich auch, ich raschle nicht, aber es ist eigentlich zu detailliert. Ich tackere das jetzt nicht mit, sondern verweise einfach mal auf die entsprechenden Slides. Ich hoffe mal, dass ich die CD-ROM mit den Slides nachträglich bekomme. Kommt das Ding per Post oder muss man es holen? Worauf ich hier noch hinweisen möchte: Spring Integration hat eine klassische Java-API, man kann aber auch sehr gut und einfach mit Annotations arbeiten.&lt;br /&gt;&lt;br /&gt;Spring Web Services ist das nächste Bubble, das Eberhard Wolff vorstellt. Interoperabilität ist das Ziel von Web Services und Contract First ist das Mittel zum Zweck. Wenn man schon mal WebServices hat, dann kann man mehr machen als nur request-response und man möchte ggf. auch direkt auf das XML durchgreifen können.&lt;br /&gt;&lt;br /&gt;ContractFirst ist gesetzt, wie soll man sonst Interoperabilität gewährleisten. Eine WSDL von Hand schreiben macht keinen Spaß. Umgekehrt ist der Weg der Generierung der WSDL aus Java auch suboptimal - es ist contract last, die Java Klassen entsprechen nicht den WSDL/XSD-Möglichkeiten, man bindet sich ggf. an die einzelnen WebService-Stacks. Selbst schon erlebt - WebServices sind per se erst mal nicht wirklich interoperabel zwischen verschiedenen Stacks und Sprachen. Jetzt kommen wir wieder zu dem Punkt, dass die WSDL eigentlich nicht en bloc von Hand geschrieben werden sollte, sondern aus verschiedenen Artefakten zusammengeneriert werden sollte.&lt;br /&gt;&lt;br /&gt;Spring verwendet ein XML Schema zur Definition der Datenbeschreibung und der Methoden. Die Komplexität des SOAP Stacks (Endpoints, Ports und so weiter und so fort) kann man dann an anderer Stelle machen.&lt;br /&gt;&lt;br /&gt;Für das Mapping von Objekten auf XML und umgekehrt kann man die vorhandenen Techniken nehmen - JAXB 1 und 2, Castor, XMLBeans, JiBX, XStream oder was auch immer. Oder man mappt nicht, sondern geht direkt auf die XML-Struktur runter, beispielsweise mit JDOM oder SAX. Die dritte Alternative geht über Annotationen und XPath. Das sieht interessant aus.&lt;br /&gt;&lt;br /&gt;In 1.5 ("was wir jetzt gerade shippen") gibt es neu auch JMS und Email Transport.&lt;br /&gt;&lt;br /&gt;Weitere Bubbles werden noch nicht mal kurz vorgestellt, da es z.T. noch eigene Talks dafür gibt.&lt;br /&gt;&lt;br /&gt;Spring Enterprise bundled verschiedene Dinge zusammen: Zum Beispiel das Advanced Pack for Oracle, die bestimmte Misfeatures des Oracle RAC "ausbügelt". Es gehört auch die SpringSource Tool Suite dazu und die SpringSource Application Management Suite.&lt;br /&gt;&lt;br /&gt;Ok, wir haben gesehen, dass Spring mittlerweile auch ein ganzer Zoo von Frameworks ist, aber diese einzelnen Frameworks sind wesentlich loser aneinander gekoppelt als dies bei JEE der Fall ist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-3513748093620270202?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/3513748093620270202/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/spring-vom-framework-zum-kosystem.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3513748093620270202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3513748093620270202'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/spring-vom-framework-zum-kosystem.html' title='Spring: Vom Framework zum Ökosystem'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-2668339218849863818</id><published>2008-04-22T07:13:00.004Z</published><updated>2008-04-22T08:05:37.417Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java EE 6'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='future of java'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>Future of Java</title><content type='html'>In der Keynote erzählt Rod Johnson was über die Zukunft von Enterprise Java. In seiner typisch amerikanischen Art führt er erst mal aus, dass Java nicht mehr sexy ist: "No one will date a Java developer". Ruby sei doch so viel sexier für Web development. Ist natürlich nicht so, sonst stände Johnson ja nicht hier, sondern würde Ruby machen. Also, noch viel amerikanischer: Wir ziehen erst mal Statistiken raus - indeed.com job trends gibt ja die nötigen Daten ohne große Arbeit. Also der Vergleich mit Ruby, mit dot.net, alles in bunten Bildern. Fazit: Damit Java-Entwickler weiter gedated werden, muss sich Java ändern. Mal schauen, was Johnson als six plus two predictions präsentiert.&lt;br /&gt;&lt;br /&gt;Aber zuerst mal zu den Faktoren, die Änderungen notwendig machen: Zuerst mal ist da die "productivity challenge" - dass man mit Ruby on Rails schneller ist in der Entwicklung von bestimmten Web-Applikationen ist als mit Java hat sich nun schon rumgesprochen. Der Punkt daran ist, dass die Java community an den "low hanging fruits" vorbeispringt. Warum also immer Rakentenphysik, wenn's auch einfach geht. Si!&lt;br /&gt;&lt;br /&gt;Der zweite Grund für notwendige Änderungen ist einfach das Alter von Java EE. Java ist einfach nicht mehr schlank, weil sich mittlerweile eine Menge "baggage" angesammelt hat. Gut, ich hätte zwar "garbage" genommen, aber der Effekt ist der gleiche: Man muss das System wieder aufräumen, den Frühjahrsputz machen. Johnson sieht in Java EE 6 genau den Versuch, die Java Plattform auf Vordermann zu bringen. Die beiden Idees hinter Java EE 6 sind Extensibility und Profiles (steht auch im JSR-316). Die Grundlage für die Extensibility ist die Erkenntnis, das man nicht alles in die Plattform stecken muss, sondern dass die Plattform wirklich, ja was, eine Plattform für andere Frameworks sein sollte. Immerhin, die Erkenntnis ist für die Java EE Plattform wirklich neu. Klingt aber gut, denn mir geht das, beispielsweise mit den Appservern als Ergebnis von Java EE, oft so, dass ich viele der angebotenen Dienste nicht brauche. Andere auch nicht, und das ist wohl der Grund, warum der Tomcat als "App-Server light" so beliebt ist. Sorry, ich bin abgeschweift.&lt;br /&gt;&lt;br /&gt;Johnson ist mittlerweile schon bei den Profiles. Es wird erst mal drei davon geben und sie sind Ausprägungen der Plattform. Die einfachste Variante "Profile A" (ich denke mal, dass sich der Name noch ändern wird) ist im wesentlichen der Tomcat: Servlets, JSPs, EL und JSTL und solche Sachen. Wichtig sind dabei Änderungen in der Sichtweise: Die Extensibility schlägt wieder zu und so muss man z.B. nicht immer alles von Hand in die web.xml eintragen. Stattdessen wird es eine API dafür geben, so dass Frameworks einfacher auf der Java EE (light) Plattform aufsetzen können.&lt;br /&gt;&lt;br /&gt;Profile B ist Profile A plus persistence und zwei Komponenten-Modelle (mit Fragezeichen). Eventuell wird es ein EJB 3.1 light geben, was auch immer das sein wird. Das zweite wird evtl. ein Web Beans Modell sein (JSR-299). Profile C wird ziemlich genau das sein, was wir jetzt schon als Java EE haben. Rod Johnson hat jetzt schon auf den Folien stehen, dass das volle Java EE wenig Relevanz hat.&lt;br /&gt;&lt;br /&gt;Für Sun ist das natürlich eine gute Strategie: Mit dieser Strategie kann sich Java vielleicht noch ein paar Jahre unten gegen Ruby und oben gegen Dot.Net verteidigen. Ob es für Entwickler wirklich einen echten Effekt zeigt, wird sich noch zeigen: WebLogic, WebSphere und JBoss werden natürlich ihre Produktstrategie ein Stück weit unabhängig von Sun überdenken. Die Tendenzen dort gehen ja eher dahin, immer mehr in die Produkte zu packen - und sei es nur als Marketing Fake. Aber das ist ein anderes Thema. Rod Johnson kommt zu ähnlichen Schlüssen auf seiner nächsten Folie. Interessant, die nächste Statistik kommt auch (siehe oben) - Tomcat ist die am häufigsten eingesetzte Plattform für Enterprise Java. Was Sun hier also als Strategie fährt ist einfach ihre Anpassung an die Realität. An die Realität, die wir hier im Auditorium schon alle leben.&lt;br /&gt;&lt;br /&gt;Jetzt zu den lange angekündigten Predictions:&lt;br /&gt;"Real competition will return to the application server market", jaja, Tomcat kann sich dann auch den Java EE-Stempel aufkleben und damit hat man einen weiteren Marktteilnehmer. Und neben Tomcat noch viele andere. Damit gibt es eben eine niedriger Markteintrittsschwelle. Ok, im wesentlichen hatte ich den Punkt ja oben auch schon, denn der Punkt ist doch, dass die vollen Java EE Appserver Funktionalität realisieren, die nur die wenigsten nutzen. Geht mir im übrigen auch so - im letzten Projekt hatten wir einen WebLogic, benutzt davon haben wir die Servlet Engine für die WebServices und JMS. Das hätten wir auch mit dem Tomcat machen können.&lt;br /&gt;&lt;br /&gt;Prediction 2: "Tomorrow's application server will be lightweight and modular". Die JBoss-Leute schreien jetzt "haben wir schon, haben wir schon". Richtig. Und alle anderen werden laut Johnson auf OSGi als technische Basis setzen.&lt;br /&gt;&lt;br /&gt;Prediction 3: "Tommorow's application server will not merely implement JCP specifications". Komisch - das tun sie doch heute schon nicht. Und wenn, dann pushen sie ihre originären Sachen als neue Standard-Vorschläge. Aber Johnson führt das noch ein bisschen aus: Es wird nicht nur JCP standards geben, sondern z.B. auch die von der OSGi Allience. Viel interessanter ist der Umkehrschluss, in dem Rod Johnson ausführt, dass der JCP nicht immer das Rad neu erfinden muss. Wer braucht commons logging, wenn es schon log4j gibt. Wer braucht ein neues EJB-Konzept, wenn es Spring gibt. JSR 277, wenn es OSGi gibt. Ob sich diese Einstellung endlich durchsetzen kann? Ich bin kein Fan davon, dass es nur (Gedanken-) Monopole gibt und wer eine bessere Idee hat, der sollte sie auch in Code umsetzen. Aber oft ist es eben keine bessere Idee, manchmal noch nicht mal eine andere. Eben nur eine andere Organisation - das not invented here Phänonomen macht auch vor dem JCP nicht halt. Damit kommt auch die extended prediction: the JCP will run on open source.&lt;br /&gt;&lt;br /&gt;Prediction 4: The market will address the gap between Tomcat and WebLogic/WebSphere. Das stimmt, denn das stimmt ja auch jetzt schon. Nur dass sich zum Teil jeder seine eigene Lösung strickt. Man kann auch einen Tomcat so produktiv einsetzen wie den WebLogic.&lt;br /&gt;&lt;br /&gt;Prediction 5: The gap between application servers and ESBs will be bridget. Naja, das ist noch ein langer Weg. Es ist zum Beispiel immer noch ein weiter Weg dahin, dass meine Plattform entscheidet, ob es jetzt aus Lastgründen einen lokal deployten Service nutzt oder den gleichen Service auf einer anderen Maschine. Aber solche Features wären für mich ein echter Fortschritt auch für den SOA-Gedanken. Und auf den SOA-Gedanken kommt Rod Johnson auch gerade, klar, der liegt bei dem Thema ja nahe und das Buzzword trägt immer noch.&lt;br /&gt;&lt;br /&gt;Prediction 6: The Black knight will be defeated. Oder anders ausgedrückt: EJB ist dying. Jaja, das ist keine Prediction, das ist eine Beobachtung. Wer macht schon EJB, wenn er stattdessen Spring machen kann. Interessante Statistik wieder - in den USA sieht man das mit EJB offensichtlich (noch) etwas anders. Aber - die erste witzige Statistik - die Kurven für die Entwicklung von Java EE und Cobol gleichen sich wie ein Ei dem anderen. Beides Legacy-Techniken.&lt;br /&gt;&lt;br /&gt;In der Conclusion gesteht Johnson ein, dass Java EE 6 die Relevanz von Java EE erhöht, aber dass Java nicht mehr die Zukunft bestimmen wird.&lt;br /&gt;&lt;br /&gt;Auf zur nächsten Session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-2668339218849863818?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/2668339218849863818/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/future-of-java.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2668339218849863818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/2668339218849863818'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/future-of-java.html' title='Future of Java'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-3258022133789272710</id><published>2008-04-22T06:55:00.003Z</published><updated>2008-04-22T07:13:33.081Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='eröffnung'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>JAX Eröffnung</title><content type='html'>Tag 1 der JAX 08. Gestern war ich ja schon auf Tag 0, dem Agile Day vor der JAX. Sebastien Meyen -Chefredakteur bei S&amp;amp;S Media, dem Host der JAX - sagt es gerade, es waren ca. 400 Leute da. Jetzt erzählt er erst mal was über den aktuellen Kontext - welche Themen sind interessant (Architekturen, Agilität, Techniken), in welchem Marktumfeld sind wir hier alle unterwegs: Java EE, EJB 3, Alternative Stacks, Vom Web 2.0 zum Enterprise 2.0 und dynamische Sprachen und Scripting.&lt;br /&gt;&lt;br /&gt;Sebastian Meyen geht gerade bei den dynamischen Sprachen vor allem auf Groovy ein. Ich persönlich finde das ja sehr nett, denn ich halte - auf der Java Plattform, die ja sehr gelungen ist - Groovy für die bessere Wahl als beispielsweise JRuby. Gut, aber das ist vermutlich der nächste Glaubenskrieg. Zusammengesetzt sieht Meyen folgenden Stack: Unten Java EE &amp;amp; Co., darüber eine "dynamischer" Layer von dynamischen Sprachen oder Rule Engines und darüber noch eine weitere Schicht von domain-specific languages.&lt;br /&gt;&lt;br /&gt;Für das Eclipse Forum gibt's noch den Hinweis auf die Opening Session, in der auch der Weg zu Eclipse 4.0 dargestellt wird. Vielleicht sollte ich da noch hingehen? Ich kann mich doch nicht zerreißen.&lt;br /&gt;&lt;br /&gt;Hey, interessante Frage von der Bühne: Wer war eigentlich letztes Jahr schon auf der JAX? Ich würde mal schätzen, dass sich so ungefähr ein Fünftel meldet. Und wer war vor zwei Jahren schon da? Überraschung: Die gleichen Leute. Mal sehen, ob ich nächstes Jahr eine von den beiden Fragen mit ja beantworten kann...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gäääähn, jetzt werden die ganzen "großen und wichtigen Namen" genannt. Lesen kann ich selbst, steht doch alles im Programm. Schade, bis gerade war die Eröffnung doch ganz nett gemacht. Naja, gehört halt dazu...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-3258022133789272710?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/3258022133789272710/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax-erffnung.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3258022133789272710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3258022133789272710'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/jax-erffnung.html' title='JAX Eröffnung'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-6212066330288863849</id><published>2008-04-21T15:04:00.003Z</published><updated>2008-04-21T15:08:54.175Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agiles projektmanagement'/><category scheme='http://www.blogger.com/atom/ns#' term='werkverträge'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='iteration 0'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>Agiles Projektmanagement bei Werkverträgen</title><content type='html'>Ok, es hat etwas gedauert, bis Dirk Sohn in Fahrt kam. Erst hat er sich mühevoll auf einen Life of Brian Witz hingearbeitet ("Ein Schuh"), der Vortrag drohte schon zäh zu werden. Aber kaum hatte er den Schuh umständlich erklärt fiel alle Zurückhaltung von ihm ab und er drehte richtig auf. Dieser Vortrag war definitiv der Höhepunkt. Humoristisch, aber auch inhaltlich.&lt;br /&gt;&lt;br /&gt;Das Destillat der Projekterfahrungen, ich sage nur "bottom-up controlling" oder "ein Wiki ist es nicht", war ebenso informativ wie Dirk Sohns Ansichten zur Iteration 0, die - ich habe das auch schon erlebt - mitunter dogmatisch diskutiert wird.&lt;br /&gt;&lt;br /&gt;Schön, dass Dirk Sohn am Ende seines Vortrags sogar noch auf die zu Beginn versprochenen Werkverträge kam. Aber eigentlich war das nur die Abrundung des Vortrags.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-6212066330288863849?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/6212066330288863849/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/agiles-projektmanagement-bei.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6212066330288863849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/6212066330288863849'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/agiles-projektmanagement-bei.html' title='Agiles Projektmanagement bei Werkverträgen'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1690566538308900941</id><published>2008-04-21T14:55:00.003Z</published><updated>2008-04-21T15:03:58.503Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile day'/><category scheme='http://www.blogger.com/atom/ns#' term='product owner'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum master'/><category scheme='http://www.blogger.com/atom/ns#' term='erfahrungsbericht'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Product Owner - eine Herausforderung</title><content type='html'>Das ganze Plenum voller Leute geschätzte zwei bis dreihundert und auf die Frage, ob jemand schon Product Owner ist oder noch werden will meldet sich kein einziger. Vielleicht geht es ja allen so wie mir... die Rolle "in Reinform" wird so wohl wirklich selten gelebt.&lt;br /&gt;&lt;br /&gt;Aber immerhin - der Talk ist ein echtes Highlight. Urban Ernst beleuchtet seine Erfahrungen als Product Owner eines 20-Entwickler-Projekts. (Zwischendurch ist mir der Saft ausgegangen - also genauer meinem Notebook - so dass es kein Live-Blogging gibt.)&lt;br /&gt;&lt;br /&gt;Ganz nebenbei räumt Urban Ernst noch mit einigen Lebenslügen agiler Entwicklung und insbesondere von Scrum auf: Projektteams organisieren sich nicht einfach so von selbst. Jaja, schon klar - das hat so auch nie jemand gesagt. Aber es ist gut, wenn zur Abwechslung mal wieder jemand darauf hinweist, wieviel Arbeit das in der Realität ist.&lt;br /&gt;&lt;br /&gt;Ein reichliches Learning war die Sprint Goal Presentation und die Story Abnahmen, in denen der Product Owner die aktive Rolle übernimmt. Und auch ganz wichtig: Der Prozess läuft wesentlich runder, wenn Product Owner und Scrum Master das gleiche Verständnis vom Prozess haben und so in die gleiche Richtung ziehen.&lt;br /&gt;&lt;br /&gt;Ich setze noch einen drauf: Es ist essentiell, dass alle im Projekt den gleichen Prozess leben. Nicht mit der gleichen Intensität, klar. Aber über kurz oder lang macht es das Team mürbe, wenn es verschiedene Vorstellungen des Prozesses gibt. Also noch mal: Schon die Vorstellung des Prozesses. Denn sonst wird das nie ein Prozess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1690566538308900941?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1690566538308900941/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/product-owner-eine-herausforderung.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1690566538308900941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1690566538308900941'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/product-owner-eine-herausforderung.html' title='Product Owner - eine Herausforderung'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-5111285302193183384</id><published>2008-04-21T09:52:00.005Z</published><updated>2008-04-21T14:55:23.128Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile day'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='kollaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='jax08'/><title type='text'>Kollaboration in IT-Projekten</title><content type='html'>Dr. Georg Molter und Torben Knerr reden jetzt über Team Kollaboration in Java Projekten, stellen Herausforderungen und Anforderungen vor und zeigen dann Kollaborationswerkzeuge auf drei Leveln: Level 1 als Zusammenstellung von Open Source Tools, Level 2 als spezielle Kollaborationstools und Level 3 als in die IDE integrierte Kollaborationsplattformen.&lt;br /&gt;&lt;br /&gt;Die Probleme räumlich verteilter Kollaboration sind ja hinlänglich bekannt - nicht nur aus der Softwareentwicklung. Die drei "bedeutsamen" von Molter und Knerr lassen sich eigentlich zusammendampfen auf "schlechte Kommunikation". Das führt dann beispielsweise zu unterschiedlichen Auffassungen der Requirements, zu intransparenter Planung und schwierigem Monitoring. Weitere Implikationen sind die verfügbaren Kommunikationsmittel (Telefon, Chat, Filesharing, Video-Conferencing) etc. inklusive der Performance dieser Kommunikationsmittel.&lt;br /&gt;&lt;br /&gt;Voraussetzungen für den Erfolg einer räumlich verteilten kollaborativen Entwicklung sind eine einheitliche Begriffswelt, Prozesse und Tools (z.B. zur Versionsverwaltung, Verwaltung der Testfälle, etc.), ein gemeinsames Verständnis von den Work Items und den Requirements und die Unterstützung durch geeignete Tools zur Kollaboration. Viele "Disziplinen" sind (durch Tools) zu erfüllen, um eine gute Kollaborationsumgebung zu bieten.&lt;br /&gt;&lt;br /&gt;Molter und Knerr schnappen sich nun einige der Tools und checken einfach mal durch, in wie weit diese die Disziplinen erfüllen. Die beruhigende Aussage vorweg: In der Java-Welt sind wir gar nicht so schlecht unterwegs. Ich erwarte mal, dass die Tools auf den unterschiedlichen Levels unterschiedlich gut geeignet sind. Die einzelnen Tools möchte ich hier jetzt nicht weitergeben, das war vor allem eine Slide Show mit Screenshots.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Der Talk war leider genau das - eine Slide Show von Screenshots mit einigen Allgemeinplätzen über Kollaboration im Allgemeinen. Ich hoffe auf den Nachmittag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-5111285302193183384?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/5111285302193183384/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/kollaboration-in-it-projekten.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5111285302193183384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5111285302193183384'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/kollaboration-in-it-projekten.html' title='Kollaboration in IT-Projekten'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-7951464187051123652</id><published>2008-04-21T08:51:00.003Z</published><updated>2008-04-21T09:28:59.336Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='agilität'/><category scheme='http://www.blogger.com/atom/ns#' term='einführung'/><title type='text'>Einführung von agilen Prozessen</title><content type='html'>"Wie wird man agil?" ist die Frage, an der sich Jutta Eckstein in ihrem Talk entlanghangelt. Interessante Frage, weil die Einführung doch immer wieder ein schwieriger Prozess ist. Im übrigen: Veränderung ist immer ein schwieriger Prozess, warum sollte die Veränderung zu einem agilen Vorgehen also leichter gehen. Nach der "klassischen" Unterscheidung in bottom-up und top-down (heißt hier "guerilla tactics" und "command and control", aber die Begriffe sind mir persönlich zu kriegerisch) konstatiert Jutta Eckstein, dass idealerweise alle am gleichen Strang ziehen - Managment, Kunde, Entwickler... Naja, wann passiert das in der Realität schon? In meiner jedenfalls nicht. Aber genau darum geht es ja Jutta Eckstein. Wie führt man agiles Vorgehen trotzdem erfolgreich ein?&lt;br /&gt;&lt;br /&gt;Folgende Punkte sind demnach wichtig:&lt;br /&gt;In einer Reihe von Retrospektiven sammelt man zuerst mal die Erfahrungen vergangener Projekte oder des aktuellen Projekts. Das Statement von Jutta Eckstein ist, dass als Ergebnis dieser Reflexion über das eigene Vorgehen und das gewünschte Vorgehen in der Regel etwas agiles hervorgeht.&lt;br /&gt;&lt;br /&gt;Readiness / Enabling Workshops schaffen - meistens mit den Entscheidern, weniger mit den Entwicklern - das Verständnis und legen den Grundstein für das weitere Vorgehen. Wichtige Fragen dabei sind "Was machen wir schon?", "Was ist einfach umzusetzen?", "Was ist wirklich schwierig?" und "Was ist unmöglich?". Klar, raus kommt die Entscheidung, ob man überhaupt agil vorgehen kann und was man gegebenfalls noch zu tun hat.&lt;br /&gt;&lt;br /&gt;Wenn man die Entscheidung hat, dann kann man loslegen. Hier kommt der Consultant durch - verkaufen, verkaufen, verkaufen. Mindestens hier kann man Schulungen verkaufen. Was sollte man aber zum loslegen machen? Training und Coaching sollte hier einfach die ersten Schritte begleiten, also einfach mal die ersten Iterationen planen etc. Gleichzeitig braucht man einen, wie Jutta Eckstein das ausdrückt, "Passionate change agent", also jemand, der mit Leidenschaft für die Einführung der Agilität einsteht. Ich fühle mich angesprochen.&lt;br /&gt;&lt;br /&gt;Leider geht Jutta Eckstein nicht (direkt) darauf ein, wie man das Team dazu bringt, im Verlauf des Prozesses immer mehr Verantwortung von sich aus zu übernehmen. Sie sagt nur, dass der Erfolg der Einführung von drei Rollen entscheident abhängt: Dem project lead, dem passionate change agent und dem technical leader.&lt;br /&gt;&lt;br /&gt;Um dauerhaften Erfolg zu haben, muss man den Spagat zwischen "Anfängern" auf der einen Seite und "Agilen" auf der anderen Seite schaffen. Geht nur mit Rezept für die Anfänger, auch wenn das der Agilität eigentlich widerspricht. Natürlich sind immer wiederkehrende Retrospektiven hilfreich, um die eigenen Erfahrungen zur reflektieren und den Prozess an die eigenen Bedürfnisse anzupassen. Wirklich hilfreich ist es natürlich, wenn der Leidenschaftliche im Laufe des Projekts auf die anderen Teammitglieder abfärbt.&lt;br /&gt;&lt;br /&gt;Damit sind wir durch den Talk durch. Wenn ich jetzt mal eine Retrospektive mache, dann hoffe ich mal, dass das nur die erste Iteration im Projekt "Agile Day" war, denn bisher kamen für mich keine brandneuen Erkenntnisse durch. An den wirklichen Knackpunkten hat sich Jutta Eckstein - natürlich auch durch die Kürze der Zeit gebremst - ausgeschwiegen. Für mich sind die Knackpunkte auf diesem Feld nämlich die Unterstützung des agilen Prozesses durch die Entwickler auf der einen Seite (der Veränderungsprozess ist in der Regel doch extrem von einzelnen Personen abhängig) und durch die übrigen an einem Projekt beteiligten andererseits. Insbesondere Vertrieb, Mitarbeiter-Plaung und Controlling sehe ich da als interessante Faktoren: Der Vertieb meint, agiles Vorgehen schlechter verkaufen zu können als ein Festpreisprojekt. Für die Mitarbeitereinsatzplaung ist es nötig, nicht nur genaue "Schätzungen" abzugeben - die natürlich keiner als Schätzungen anerkennt, aber das ist ein anderes Thema - die Mitarbeiter machen ja in der Regel nicht nur dieses eine (agile) Projekt, sondern auch noch andere Projekte, und so weiter und so fort.&lt;br /&gt;Das Controlling kann naturgemäß mit Agilität nur sehr schwer umgehen - wie soll man beispielsweise den Fertigstellungsgrad bei etwas messen, das einfach per Definition nie fertig ist, sondern sich ständig in einem Prozess der Änderung befindet.&lt;br /&gt;&lt;br /&gt;Ich hoffe, der Tag erhellt noch ein paar von diesen Fragen. Die Titel klingen ja interessant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-7951464187051123652?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/7951464187051123652/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/einfhrung-von-agilen-prozessen.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7951464187051123652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7951464187051123652'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/einfhrung-von-agilen-prozessen.html' title='Einführung von agilen Prozessen'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1892173997295140104</id><published>2008-04-21T08:46:00.002Z</published><updated>2008-04-21T08:50:56.563Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='jax'/><category scheme='http://www.blogger.com/atom/ns#' term='agiles controlling'/><title type='text'>Neues von der JAX 08</title><content type='html'>So, es gibt mal wieder was neues in meinem Blog: Ich bin gerade auf der JAX, genauer auf dem Agile Day. Auf der Zugfahrt habe ich gerade noch den Tonabnehmer von Frank Westphal zum Thema gehört und dabei auch einige interessante Aspekte zu dem mittlerweile doch relativ "alten" Thema Agilität gehört, die sich auch mit meinem Erfahrungshorizont decken: Eine interessante Frage ist beispielsweise, wie man Agilität in das gesamte Unternehmen trägt, wie man agile Software-Entwicklung beispielsweise mit einem bestehenden Controlling integriert. Agiles Controlling, gibt's das? Mal sehen, was zu solchen Themen auf der JAX passiert.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1892173997295140104?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1892173997295140104/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2008/04/neues-von-der-jax-08.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1892173997295140104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1892173997295140104'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2008/04/neues-von-der-jax-08.html' title='Neues von der JAX 08'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1249664510236775600</id><published>2007-09-30T17:39:00.000Z</published><updated>2007-10-02T14:25:25.744Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='geotagging'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile web'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial web'/><category scheme='http://www.blogger.com/atom/ns#' term='web 3.0'/><title type='text'>web 3.0 ... kurzer Gedenkenstrom</title><content type='html'>Nach dem Web 1.0 (mehr oder weniger statische Internetseiten) und dem Web 2.0 ("das Mitmachnetz") wird es Zeit für das Web 3.0, zumindest für die ersten Vorboten. Ich stelle einfach mal zusammen, was sich da so an Ideen findet.&lt;br /&gt;&lt;br /&gt;Zunächst ist da das räumliche Web (spatial web). Mit Google Earth, Maps, aber auch mit rein virtuellen Räumen wie Second Life, World of Warcraft finden sich hier schon einige Systeme, die einen Vorgeschmack darauf bieten, was die Zukunft im Web - und außerhalb des Webs -  bieten wird: Die Vermengung virtueller und realer Räume. Wir leben im "First Life" und sind daran gebunden, dass bestimmte Dinge an bestimmten Orten stattfinden: Wohnen, Arbeiten, Urlaub. Gerade bei der Urlaubsplanung ist Google Earth für viele schon ein echtes Werkzeug geworden. Und dann taggt man einfach seiner &lt;a href="http://entwickler.de/zonen/portale/psecom,id,101,online,1091,p,0.html"&gt;Bilder mit Geodaten&lt;/a&gt; (aufgenommen mit dem GPS-Empfänger) und schon kann man nachverfolgen, was wo war. Genauso kann man auch alles andere geotaggen - damit finden sich auch schon neben Google &lt;a href="http://earthmine.com/"&gt;weitere Firmen&lt;/a&gt;, die Karten mit Bildmaterial und Tags verheiraten wollen.&lt;br /&gt;&lt;br /&gt;Second Life war sicher zuerst ein Hype und ist jetzt mehr oder weniger uninteressant geworden, die Idee wird aber das räumliche Web beeinflussen: In 2D im Netz zu surfen ist mehr oder weniger unbefriedigend: Wir leben in einer dreidimensionalen Welt. Online-Shops werden in Zukunft die Waren dreidimensional präsentieren (manche faken das ja schon mit Quicktime VR), auf der letzten CeBIT gabe es 3D-Fernseher zu sehen - zusammen mit IPTV und Overlay-Ads eine tolle Vermarktungsquelle: Einfach den laufenden Film an der Stelle anhalten, wo der Hauptdarsteller diese tollen Klamotten anhat, draufklicken und direkt in den Shop kommen. Dort die Klamotten auf das eigene 3D-Modell ziehen... naja, das ist dann vielleicht Web 5.0 - oder so.&lt;br /&gt;&lt;br /&gt;Der zweite Kandidat für's Web 3.0 ist das mobile Web. Immer schon verkündet glaube ich daran, dass der mobilen Kommunikation und insbesondere dem mobilen Webzugang die Zukunft gehört. Gerade zusammen mit dem räumlichen Web kann man sich so toll wirklich nützliche Anwendungen überlegen: Wo ist das nächste gute Restaurant: natürlich nach Web 2.0-Maßstäben von Nutzern empfohlen. Das interessiert mich selten dann, wenn ich wirklich am Rechner sitze. Die Kneipen und Restaurants in meiner Nähe kenne ich. Nein, meistens interessiert mich das, wenn ich unterwegs bin. Also schnell auf meiner PSP per öffentlichem W-Lan auf &lt;a href="http://www.qype.com/"&gt;qype&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Für mich als alten KIler (KI = Künstliche Intelligenz) ist die dritte Zukunftslinie natürlich die spannenste: das semantische Netz. Dabei werden Web-Inhalte nicht einfach nur "konsumierbar" für Menschen produziert, sondern so, dass der Rechner auch etwas damit anfangen kann. Genauer: Ein sogenannter Inferenzmechanismus. Ok, zu tief für hier und jetzt, ein Beispiel muss her. &lt;a href="http://www.freebase.com/"&gt;Freebase&lt;/a&gt; baut auf der Basis von Wikipedia-Artikeln ein semantisches Wiki auf: Zu Städten steht da nicht nur jeweils ein netter Artikel. Jeder Artikel ist potentiell auch mit einem oder mehreren Typen zugeordnet (die man natürlich frei anlegen darf). Städte sind beispielsweise von folgenden Typen: Location (klar, Städte liegen irgendwo auf der Welt, siehe oben), City (Städte haben ganz besondere Eigenschaften, z.B. eine Einwohnerzahl zu einem bestimmten Zeitpunkt), gegebenenfalls noch ein paar mehr.&lt;br /&gt;Eine Stadt liegt in einem Staat - und jetzt wird es interessant. Wo bei Wikipedia die Links alle gleich sind, da sind die Links bei Freebase auch typisiert. Es gibt also einen Linktyp "is contained" (ist enthalten). Eine Stadt ist enthalten in einem Staat. Eine Staat wiederum ist über den gleichen Linktyp enthalten in einem Staatenbund. Und Linktypen können wieder Eigenschaften haben. Zum Beispiel können sie transitiv sein. Hamburg ist beispielsweise in Deutschland, Deutschland in der EU. Also (!) liegt Hamburg auch in der EU. Und genau das ist der Clou. Kein Mensch muss das in irgendeinem Artikel explizit angeben, trotzdem kann man die Information direkt aus Freebase herausbekommen. Mit einer Anfrage bekommt man so beispielsweise alle Millionenstädte in Europa.&lt;br /&gt;&lt;br /&gt;Ganz so einfach ist es leider nicht - die Anfragesprache ist eine Wissenschaft für sich. Klar, es geht. Aber schön wäre doch, wenn man irgendwie eine natürlichsprachliche Anfrage in diese komische Syntax automatisch überführen könnte. Das ist jetzt aber wieder Web 4.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1249664510236775600?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1249664510236775600/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/09/web-30-kurzer-gedenkenstrom.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1249664510236775600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1249664510236775600'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/09/web-30-kurzer-gedenkenstrom.html' title='web 3.0 ... kurzer Gedenkenstrom'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-434028462631468520</id><published>2007-05-31T18:36:00.000Z</published><updated>2007-05-31T18:54:39.036Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='fazit'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Google Developer Day (Hamburg) - mein Fazit</title><content type='html'>So, der Tag ist rum, die Sessions sind gelaufen, ich habe die neuen Building Blocks (Schlagwort des Tages) gesehen. Es ist Zeit für mein Fazit - und das ist sehr positiv.&lt;br /&gt;&lt;br /&gt;Die Location ist gut - ohne Zweifel. Dann die nächste positive Überraschung: Die Organisation ist fantastisch, das WiFi funktioniert einfach, es geht mit Essen los. Und auch das Essen ist sehr gut. Dann gleich die erste negative Überraschung. Die Übertragung der Keynotes aus London hätte man sich einfach sparen können: Die Qualität des Videostreams ist nun mal nicht erste Sahne, die Inhalte sind kaum besser. Hatte ich ja schon geschrieben.&lt;br /&gt;&lt;br /&gt;Der Rest des Tages ist eitel Sonnenschein: Die Referenten sind gut, kompetent, witzig. Die Sessions und Workshops hätten, das habe ich mehrfach gehört, anspruchsvoller sein können. Aber ich weiß, dass es eeeecht schwierig ist, das richtige Niveau zu finden. Und ich glaube, dass es schon wirklich gut geklappt hat.&lt;br /&gt;&lt;br /&gt;Über die einzelnen Sessions hatte ich schon gebloggt. Das möchte ich hier nicht noch mal tun. Insgesamt fand ich sie alle von Inhalt und Form sehr unterschiedlich und sehr gut.&lt;br /&gt;&lt;br /&gt;Zum Ende noch mal - das Essen war gut (keine Ahnung, ob das Filet vom Mittag oder die Spieße vom Abend besser waren, aber für mich als Schleckermaul war die Creme brulee der Hit).&lt;br /&gt;&lt;br /&gt;Also, auf ein Neues. Ich freue mich schon auf den nächsten Google Developer Day. Dann sehen wir uns hier wieder unter dem Tag GDD08.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-434028462631468520?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/434028462631468520/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day-hamburg-mein.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/434028462631468520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/434028462631468520'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day-hamburg-mein.html' title='Google Developer Day (Hamburg) - mein Fazit'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-7003589521338794166</id><published>2007-05-31T16:30:00.000Z</published><updated>2007-05-31T16:35:32.353Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='wrap up'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Wrap up</title><content type='html'>Beim Wrap-up hat Andreas Gebhard über Deepa Mehta geredet. Ok, Semantische Netze sind nicht neu, aber wenn er bei Google reden darf, dann muss es ja cool sein. Gedacht, getan: Gegoogelt nach DeepaMehta, gefunden (www.deepamehta.de), ausprobiert und angeschmiert: "The DeepaMehta server at www.deepamehta.de:7557 isn't running" :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-7003589521338794166?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/7003589521338794166/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/wrap-up.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7003589521338794166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/7003589521338794166'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/wrap-up.html' title='Wrap up'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-3623604464180915393</id><published>2007-05-31T16:18:00.000Z</published><updated>2007-05-31T16:20:39.363Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><category scheme='http://www.blogger.com/atom/ns#' term='google maps'/><category scheme='http://www.blogger.com/atom/ns#' term='3d Maus'/><title type='text'>argh...</title><content type='html'>Doch die falsche Session gewählt. Im Maps Workshop gab's - ich glaube für erfolgreiche Implementierungen - eine 3D Maus. 3D Maus ! Cool. Groovy. Und ich war nicht dabei.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-3623604464180915393?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/3623604464180915393/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/argh.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3623604464180915393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/3623604464180915393'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/argh.html' title='argh...'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8964730839628365718</id><published>2007-05-31T16:06:00.000Z</published><updated>2007-05-31T16:11:23.979Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='KML'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='Network links'/><category scheme='http://www.blogger.com/atom/ns#' term='Earth'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic kml'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Earth, KML und firstlife.com</title><content type='html'>Gerade bei Joachim in der Earth- und KML-Session gewesen. War sehr interessant, allerdings war ich etwas zu spät und deswegen schon wieder steckdosenlos. Deswegen nicht live, sondern hinterher gebloggt: Was man mit KML, Maps und Earth so machen kann ist schon jetzt beeindruckend. Wenn man mal in die Zukunft blicken mag - Earth ist ja so alt noch nicht - gibt es schon noch einige Punkte. Network Links, also die Möglichkeit, Geodaten dynamisch nachzuladen, sind jetzt der Anfang. Meine Frage nach Dynamic-KML, also KML mit JavaScript, das im Browser (aka Earth) ausgeführt wird, führt naturgegebenermaßen nicht zu einer befriedigenden Antwort. Joachims veröffentlichte Meinung dazu ist, dass Earth eher schlanker werden soll und eher in den Browser integriert wird als dass es mit noch mehr Funktionalität angereichert wird.&lt;br /&gt;&lt;br /&gt;So, jetzt werden hier um mich herum schon die Stuhlreihen abgebaut, damit die Party gleich steigen kann.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8964730839628365718?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8964730839628365718/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/earth-kml-und-firstlifecom.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8964730839628365718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8964730839628365718'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/earth-kml-und-firstlifecom.html' title='Earth, KML und firstlife.com'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-5656605839636929887</id><published>2007-05-31T14:25:00.000Z</published><updated>2007-05-31T18:55:33.516Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='Frank Mantek'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><category scheme='http://www.blogger.com/atom/ns#' term='GData'/><title type='text'>Peeks aus der GData Session</title><content type='html'>Frank Mantek redet hier über GData - die Google API zum Zugriff auf diverse Services, z.B. Calendar, Blogger, Picasaweb etc. Nach dem Überblick über das optimistic locking per Versionierung und Authentication. Es gibt diverse Client Libraries - in Java mit Support von Google, in Ruby und - dadahh - LISP ist es eine contributed lib, also von irgendwem. Aber es gibt sie.&lt;br /&gt;&lt;br /&gt;Ok, jetzt redet Frank gerade über die verschiedenen Zielsysteme. Kommt mir gerade eine Geschäftsidee? Hm, nein, nicht hier und nicht jetzt - und wenn, dann blogge ich das hier nicht ;) Ansonsten sind die Übersichten eher öde. Aber gut, was will man auch über eine API alleine sagen? Das hat Frank schon ganz am Anfang der Session gesagt.&lt;br /&gt;&lt;br /&gt;Aus der Liste der Beispiele ragt der "Phixr Online Photo Editor" raus. Muss ich mal ausprobieren. Schön zu sehen, dass Google mit REST gute Erfahrung gemacht hat und dafür das Atom-Protokoll in der dort vorgesehenen Weise erweitert hat. Der klare Vorteil von REST ist - wer hät's gedacht - die Einfachheit. SOAP ist - gerade in der vollen Ausbaustufe - die ideale Möglichkeit, sich in den Fuß zu schießen. Kleiner Exkurs: Unser über https (Client Zertifikat, Server Zertifikat) und WebService Security gesicherter Service hat jedenfalls ordentlich weh getan. Spaß ist was anderes.&lt;br /&gt;&lt;br /&gt;Schön zu sehen ist die Folie "Care for your Developers": Protocol Centric &amp; Language Agnostic; Open your Code; Give Fair Warnings of Changes; Meet your Developers. Stimmt. Das letzte macht Google ja heute und das machen sie gut.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-5656605839636929887?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/5656605839636929887/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/peeks-aus-der-gdata-session.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5656605839636929887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5656605839636929887'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/peeks-aus-der-gdata-session.html' title='Peeks aus der GData Session'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-5227211133788264475</id><published>2007-05-31T13:12:00.001Z</published><updated>2007-06-01T11:51:34.946Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='igoogle'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='gadets'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='Douwe Osinga'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Von Maplets zu Gadgets</title><content type='html'>Again... Nachdem ich gerade schon von Maplets gehört habe, höre ich mir jetzt Douwe Osinga an, der über Gadgets redet.&lt;br /&gt;&lt;br /&gt;Erst mal: Was sind Gadgets - naja, kleine html/script-Snipplets, die man auf seiner eigenen Homepage, auf iGoogle, im Dashboard, in der Sidebar oder eben irgendwo laufen lassen kann. Sogar im IBM WebSphere Portal ;) Ob Stephan Uhrenbacher das Qype Gadget schon am Start hat? Ich sehe jedenfalls nur die Qype*Vibes hier.&lt;br /&gt;&lt;br /&gt;Ein Gadget kann man mit User Preferences (auch hidden) konfigurieren. Dabei gibt es allerlei vorgefertigte Elemente (checkboxes, lists) etc. Dazu kommt dann noch der html- und script-Block im Content und mit beidem zusammen kann man auf dem &lt;a href="http://www.google.com/apis/gadgets/gs.html"&gt;Gadget Scratchpad&lt;/a&gt; in kürzester Zeit sein erstes Gadget bauen. Douwe geht schnell durch so ein paar Sachen durch, die man in seinem Gadget gerne haben möchte: Maps, Google Analytics, Remote Content (z.B. RSS/Atom feeds).&lt;br /&gt;&lt;br /&gt;Das ganze ist nicht so hands-on wie die Google Maps API Session von Steffen Meschkat gerade eben, aber auch ganz interessant. Oder vielleicht zu hands-on: Wenn das scratchpad erst mal voll mit JavaScript-Code ist, dann ist das doch ein bisschen viel auf einmal. Aber immerhin: Douwe macht das launig.&lt;br /&gt;&lt;br /&gt;Schön ist der Hinweis, dass es in Europa wohl nicht so wichtig ist, die Bedeutung von Internationalisierung zu betonen. Amerika, kannst Du uns hören? Hm, wohl nicht... ;) Auf jeden Fall: Es gibt message bundles, in denen man die Texte ablegen kann. Kennen wir ja aus Java. Hier ist es halt in XML.&lt;br /&gt;&lt;br /&gt;Gadgets können auch states speichern. Dazu kann man ein Preference-Item als "hidden" markieren und darin den Zustand speichern. Gadgets können auch externe Ressourcen cachen - die werden dann einfach auf die Google-Server repliziert.&lt;br /&gt;&lt;br /&gt;Die Punkte: "Add to Google Button", "Promote your Gadget" etc. überspringen wir mal. Top Gadget Authros findet man jedenfalls unter http://www.google.com/ig/authors. Der Preis für das beste Gadget (hier auf dem Developer Day) ausgelobt ist ein Mittagessen mit Douwe. Hm. Will ich das? Douwe selbst preist an, dass man es für sich selbst machen sollte, "because it's cool".&lt;br /&gt;&lt;br /&gt;Mal sehen, wann ich mein erstes Gadget schreibe. Wenn, dann mach ich das wohl zuerst mal, weil ich's für mein Dashboard mag. Ups, gerade noch was nettes gesehen, als ich einen Link für diesen Eintrag gesucht habe: Der &lt;a href="http://editor.googlemashups.com/"&gt;Google Mashup Editor&lt;/a&gt;. Muss ich nachher mal einen Blick drauf werfen oder sehen, wen ich dazu ausquetschen kann.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-5227211133788264475?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/5227211133788264475/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/von-maplets-zu-gadgets.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5227211133788264475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/5227211133788264475'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/von-maplets-zu-gadgets.html' title='Von Maplets zu Gadgets'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-1024996854151793474</id><published>2007-05-31T12:21:00.000Z</published><updated>2007-05-31T14:56:52.742Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='maps'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='Steffen Meschkat'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='maplets'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Google Maps API</title><content type='html'>Jetzt bin ich in der Google Maps API Session. Steffen Meschkat erzählt uns hier was über die alten und neuen Features in Maps. Zu den neuen gehören u.a. AdSense für Maps.&lt;br /&gt;&lt;br /&gt;Schick, die Slides sind in HTML (gut gemacht), dadurch kann Steffen direkt Maps-Element vorführen. Noch ist es einfach, er fängt mit einem "Hello World!" an, indem er in erst mal (gaaanz kurz) zeigt, wie er einen Text in eine Bubble steckt.&lt;br /&gt;&lt;br /&gt;Schön: Er geht gleich auf essentielle Fragen ein, die sich direkt an diesem einfachen Beispiel stellen: Wie kann ich einen (von vielen) Markern nach vorne holen? Antwort: Gar nicht. Der Marker ist eigentlich nur ein Punkt. Der Marker steht eigentlich senkrecht auf der Karte, in der 2.5-D Darstellung werden nördlichere durch südlichere Marker überdeckt.&lt;br /&gt;&lt;br /&gt;Schick auch die Folie mit dem integrierten Editor: Steffen hat sich eine kleine JavaScript-Konsole in die Map geklebt, mit der er hier direkt in der Session Beispiele laufen lassen kann.&lt;br /&gt;&lt;br /&gt;Und wieder was gelernt: Es gibt "Implementierungs-Artefakte". Hier "draggable". Erst macht man einen Marker "draggable: true", danach muss man ihn noch mit "enableDragging()" wirklich drag&amp;drop-bar machen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Weiter zu ascynchronous continuation: hier gibt man bei einer Serveranfrage die Funktion mit, die die Antwort verarbeitet. Der Grund dafür: JavaScript läuft im Browser in einem einzigen Thread - warten auf die Antwort ist also nicht drin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hach, wie mag ich es, LISP zu können. Funktionen hin- und herzuschubsen ist doch das normalste der Welt ;)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Witziger Einwurf am Rande: KML ist von Computer-Grafikern. Klar, Koordinaten sind x, y. Maps ist von Geographen, in der API sind Koordinaten also latitude, longitude. Schön, dass beides irgendwie verständlich ist, zusammen aber irgendwie gemurkst wirkt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hach, nochmal. Ich mag LISP - jetzt erklärt Steffen hier erst mal Closures. Gähn ;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Spannend: Jetzt erklärt Steffen gerade, wie die Maps Entwickler die Sicherheitsmechanismen von JavaScript "ausgehebelt" haben. Ich fass mal kurz zusammen: Es wird ein JSNOP script aufgerufen, das selbst ein callback enthält.&lt;br /&gt;&lt;br /&gt;Auch spannend: Peformance. Erstens läuft die Browser UI und das javascript in einem einzigen Thread. Zweitens sind DOM Operationen langsam.&lt;br /&gt;&lt;br /&gt;Aus Performance-Gründen werden über den GMarkerManager nur die Marker wirklich in den DOM-Tree eingefügt, die auch (in dem Ausschnitt, in dem Zoom-Level) zu sehen sind.&lt;br /&gt;Man sollte außerdem lange Sequenzen in Blöcke unterteilen, weil ... ups, hier bricht die Erklärung einfach ab. Schade.&lt;br /&gt;&lt;br /&gt;Über die DrivinDirectionsAPI kann man sich, beispielsweise in einer seperaten Pane innerhalb des Maps-divs, Routeninformationen anzeigen lassen.&lt;br /&gt;&lt;br /&gt;Und weiter im Text. Maplets sind die Basis für weitere Mesh-ups. Zur Zeit liegt das auf http://maps.google.com/preview. Zusammengeworfen werden da die Google Gadgets API  (iframe mit html und javascript, remote data Zugriff, Speicherung von Benutzer-Präfs) und Google Maps API (overlays, event-listener).&lt;br /&gt;&lt;br /&gt;Jetzt läuft uns leider die Zeit davon, wir gehen trotzdem noch mal schnell in den Code, d.h. in das XML-File, in dem das Maplet definiert wird. In den Modul-Präfss gibt es in &lt;ModulePrefs&gt; den Inhalt &lt;Require feature="sharedmap"/&gt;. Im &lt;Content&gt; steht dann der html und script-Content, der im Maplet-iframe landet. Sieht eigentlich einfach aus. Mal sehen, ob sich das in der realen Welt auch so darstellt. Interessant ist auch das Herstellen von Sicherheit einerseits (Verhinderung von Cross-Side-Scripting, XSS) und das Umgehen von Sicherheitsmechanismen andererseits (Kommunikation zwischen Script-Teilen von maps.google.com und gmodules.com).&lt;br /&gt;&lt;br /&gt;Damit genug von hier, auf zur nächsten Session. Aber festzuhalten: Gute Session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-1024996854151793474?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/1024996854151793474/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-maps-api.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1024996854151793474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/1024996854151793474'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-maps-api.html' title='Google Maps API'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-4932468040152862419</id><published>2007-05-31T11:52:00.000Z</published><updated>2007-05-31T11:54:58.641Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='Gears'/><category scheme='http://www.blogger.com/atom/ns#' term='Joachim'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Wrap up der Keynote in 7 Minuten ;)</title><content type='html'>Ha, nicht aufgepasst, stattdessen gebloggt etc. und - richtig gemacht: Joachim gibt gerade die&lt;br /&gt; Zusammenfassung der Londoner Keynotes - verdichtet, besser, mit anderen Schwerpunkten, z.B. deutlich mehr Gears. Schön.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-4932468040152862419?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/4932468040152862419/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/wrap-up-der-keynote-in-7-minuten.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/4932468040152862419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/4932468040152862419'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/wrap-up-der-keynote-in-7-minuten.html' title='Wrap up der Keynote in 7 Minuten ;)'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-4170782993699128798</id><published>2007-05-31T11:29:00.000Z</published><updated>2007-05-31T11:41:17.756Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='stephan uhrenbacher'/><category scheme='http://www.blogger.com/atom/ns#' term='karl krainer'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='atoolo.com'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><category scheme='http://www.blogger.com/atom/ns#' term='chris dibona'/><category scheme='http://www.blogger.com/atom/ns#' term='qype.de'/><title type='text'>Nachricht von der Keynote</title><content type='html'>Hier bin ich - beim Google Developer Day. Nach dem leckeren Essen ("Essen ist wichtig bei Google", Karl Krainer) hatte ich schon die ersten netten Kontakte - mit den Jungs von &lt;a href="http://www.atoolo.com/public/"&gt;atoolo.com&lt;/a&gt; oder mit Patrick und Joachim von Google.&lt;br /&gt;&lt;br /&gt;Jetzt sitze ich hier zwischen den beiden einzigen Frauen im Auditorium der Keynote (eine davon ist meine Frau :) ). Die deutsche Keynote war schon sehr nett und kann es fast mit dem Essen aufnehmen. Stephan Uhrenbacher stellt seine Company &lt;a href="http://www.qype.com/de"&gt;Qype&lt;/a&gt; vor - Early Adaptor von Maps. Die Vorstellung der Speaker von heute ist noch ganz kurzweilig, danach hat die Veranstaltung schon den ersten Tiefpunkt... Chris DiBona erzählt sehr langweilig in eher schlechter Videoübertragung öde Dinge über diverse Entwicklungen bei Google. Das ganze gleicht einem Rundumschlag durch den Buzzword-Dschungle mit diversen Plattitüden dazwischen.&lt;br /&gt;&lt;br /&gt;Überhaupt ist die Übertragung aus London nicht soooo faszinierend. Vielleicht schnacke ich doch ein bisschen mit meinen Nachbarinnen und freue mich auf die Live-Sessions nachher.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-4170782993699128798?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/4170782993699128798/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day_31.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/4170782993699128798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/4170782993699128798'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day_31.html' title='Nachricht von der Keynote'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8767105296951940359.post-8322138963462990509</id><published>2007-05-25T18:25:00.000Z</published><updated>2007-05-31T14:57:31.578Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDD07de'/><category scheme='http://www.blogger.com/atom/ns#' term='developer day'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='GDD07'/><title type='text'>Google Developer Day</title><content type='html'>Moin, moin!&lt;br /&gt;&lt;br /&gt;Nächste Woche ist Google Developer Day in Hamburg - und ich bin dabei. Man darf gespannt sein.&lt;br /&gt;&lt;br /&gt;Meine persönlichen Favoriten sind ja die Gadget-Themen. Mal sehen, wann ich mein erstes eigenes Gadget schreibe. Bisher war ich ja auf mehr auf Web-Applikationen aus. Generell ist das glaube ich auch einfach eine gute Gelegenheit, neue (nette, interessante) Leute kennen zu lernen und auch alte Bekannte wieder zu sehen.&lt;br /&gt;&lt;br /&gt;Noch bleiben viele Fragen offen: Wer hält die Talks? Kann man in der Kürze der Zeit wirklich tiefschürfendes erfahren? Gibt's Sofas für die Teepause? Wer hat gesagt, dass es immer Kaffepause heißen muss?&lt;br /&gt;&lt;br /&gt;Lookin' forward :)&lt;br /&gt;&lt;br /&gt;Chris&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8767105296951940359-8322138963462990509?l=vizmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vizmind.blogspot.com/feeds/8322138963462990509/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8322138963462990509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8767105296951940359/posts/default/8322138963462990509'/><link rel='alternate' type='text/html' href='http://vizmind.blogspot.com/2007/05/google-developer-day.html' title='Google Developer Day'/><author><name>Chris</name><uri>http://www.blogger.com/profile/16791293203819264490</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_yS862QCa5Lo/SW0Isci9QbI/AAAAAAAABrM/qnnjgG5bA8Q/S220/profile_image.jpg'/></author><thr:total>0</thr:total></entry></feed>
