<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blogisticon &#187; Publikation</title>
	<atom:link href="http://blog.holisticon.de/category/publikation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.holisticon.de</link>
	<description>Das Holisticon-Blog</description>
	<lastBuildDate>Fri, 18 May 2012 08:23:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Freundliche Eindringlinge auf dem Entwicklertag 2012</title>
		<link>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/</link>
		<comments>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/#comments</comments>
		<pubDate>Fri, 18 May 2012 08:23:19 +0000</pubDate>
		<dc:creator>Norman Erck</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[#etka12]]></category>
		<category><![CDATA[Aktoren]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=5523</guid>
		<description><![CDATA[Dieses Jahr wurde ich zum Karlsruher Entwicklertag auf dem Conference Day eingeladen, um den Teilnehmern mit dem Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; eine Einführung in die Context und Dependency Injection im Java-Standard zu geben. Ich habe natürlich nicht nur meinem Vortrag gehalten, sondern mir auch Vorträge von anderen angehört. Begrüßung In der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.holisticon.de/wp-content/uploads/2012/05/ET-schatten_0.png"><img src="http://blog.holisticon.de/wp-content/uploads/2012/05/ET-schatten_0.png" alt="Entwicklertag Logo" width="145" height="43" class="alignleft size-full wp-image-5546 colorbox-5523" /></a>Dieses Jahr wurde ich zum <a href="http://entwicklertag.de/" title="Entwicklertag 2012">Karlsruher Entwicklertag</a> auf dem Conference Day eingeladen, um den Teilnehmern mit dem Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; eine Einführung in die Context und Dependency Injection im Java-Standard zu geben. Ich habe natürlich nicht nur meinem Vortrag gehalten, sondern mir auch Vorträge von anderen angehört.<span id="more-5523"></span></p>
<h3>Begrüßung</h3>
<p>In der Begrüßung vermittelte <a href="http://ka.stadtwiki.net/Margret_Mergen">Margret Mergen</a> (Bürgermeisterin der Stadt Karlsruhe) viele interessante Fakten zu Karlsruhe. Sie bezeichnete die Stadt als das &#8220;Silicon Valley Deutschlands&#8221; und nahm damit Bezug auf die räumliche Nähe der über 3.000 IT Firmen mit über 25.000 ITlern. Ebenfalls interessant war die Tatsache, dass jede vierte Informatiker aus Karlsruhe kommt.  </p>
<h3>Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</h3>
<p>Wie den Teilnehmern des Entwicklertages versprochen, möchte ich an dieser Stelle die Tonspur und die Beispielapplikation zur Verfügung stellen. Da ich bereits darüber gebloggt habe, veröffentliche ich hier nur den Link zu meinem Beitrag <a href="http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/">Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</a>.</p>
<p>Zum Vortrag kann ich nur sagen, dass es Spaß gemacht hat, ihn in den schönen Räumen der <a href="http://www.karlsruhe.ihk.de/">IHK Karlsruhe</a> halten zu dürfen und dass ich auch das Glück einer aktiven Zuhörerschaft mit spannenden Fragen hatte.</p>
<p><a href="http://entwicklertag.de/conference-day/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi" title="Infos &amp; Folien Entwicklertag 2012">Freundliche Eindringinge @ Entwicklertag 2012</a></p>
<h3>Rechtliche Aspekte zu Cloud Computing</h3>
<p>Prof. Dr. Rupert Vogel, Tobias Haar und Dr. Oliver Meyer-van Raay beleuchteten die rechtlichen Aspekte zum Thema Cloud. Nach der Definition des <a href="https://www.bsi.bund.de/DE/Themen/CloudComputing/CloudComputing_node.html" title="BSI: Cloud Computing">Cloud-Begriffs</a>, den Ausprägungen (<a href="http://de.wikipedia.org/wiki/IaaS#Infrastructure_as_a_Service_.28IaaS.29" title="IaaS">IaaS</a>, <a href="http://de.wikipedia.org/wiki/Platform_as_a_Service" title="PaaS">PaaS</a>, <a href="http://de.wikipedia.org/wiki/IaaS#Software_as_a_Service_.28SaaS.29" title="SaaS">SaaS</a>) und der Erkenntnis, dass es sich beim Thema Cloud Computing nicht um einen Rechtsbegriff handelt, wurden alle relevanten Rechtsbereiche erörtert.</p>
<h4>IT-Recht</h4>
<p>Sofern es sich um eine B2B-Beziehung handelt, kann die Rechtswahl selbst übernommen werden, d.h., ich kann mir ein Land aussuchen, gemäß dessen Rechtsprechung ich agieren möchte. Als Tipp wurde genannt, dass immer der Kunde auf Rechtswahl drängen sollte.</p>
<p>Handelt es sich jedoch um eine B2C-Beziehung, muss nach Recht des Verbrauchers verfahren werden, also nach dem Recht, das am günstigsten für den Verbraucher ist. Hier spielt in der Regel das Land, in dem der Verbraucher firmiert, eine Rolle. Ebenfalls interessant dazu ist, dass im Zweifelsfall das Recht des Landes, in dem der Schaden eintritt, gilt.<br />
Zum Thema Vertragsgestaltung wurde erwähnt, dass es sich um Mietverträge nach deutschem Recht handelt, sodass der Vermieter für die Leistung verantwortlich ist. Um auf der sicheren Seite zu sein, müssen Service Level Agreements vereinbart werden. Spannend ist auch das Thema &#8220;Exit Management&#8221;. Wir wird mit Daten verfahren?</p>
<p>Zur Vertragsgestaltung wurde der Tipp gegeben, den Vetrag immer so zu gestalten, dass ein 60jähriger Richter diesen auch verstehen kann. Also nicht &#8220;Leistung 98% verfügbar&#8221;, sondern lieber alles detailliert beschreiben. Was ist denn beispielsweise &#8220;die Leistung&#8221;? Und was heißt &#8220;verfügbar&#8221;?</p>
<p>Ein Blick in das Amazon Web Services Customer Agreement zeigte, dass Amazon den Service einfach mal abschalten kann&#8230;</p>
<h4>Urheberrecht</h4>
<p>Beim Urheberrecht sind in der Regel drei Parteien betroffen. Der Kunde, der Cloud-Anbieter und das Software-Haus. Aufgepasst werden muss vor allem im Bereich des Software-Hauses. Wurde eine Lizenz für die Cloud erworben? Wie sieht es mit der Handhabung von Vervielfältigungen aus? Ist es nicht eine Vermietung, wenn ich die Software in der Cloud zur Verfügung stelle? All dies muss zwischen den Parteien vereinbart werden.</p>
<p>Wie steht es um Software, die ein Angestellter oder ein Freelancer für ein Unternehmen entwickelt hat? Kann diese einfach in die Cloud gehen? Beim Angestellten ist das recht einfach, hier hat der Arbeitgeber Verwertungsrechte. Bei Freelancern ist das ein wenig schwieriger, weil hier unter Umständen eine neue Nutzungsart hinzukommt.</p>
<h4>Datenschutz/-sicherheit</h4>
<p>Hier gilt das Territorialitätsprinzip, also die Rechtsprechung des Landes in dem die Daten verarbeitet werden. Problematisch wird das Ganze natürlich nur bei personenbezogenen Daten. Hier muss eine Anonymisierung stattfinden und optimalerweise auch noch eine Verschlüsselung, damit die Cloud-Anbieter diese Daten nicht im Zugriff haben. Spannend wird es auch beim Thema der Auftragsdatenverarbeitung: hier sollte man sich einen geeigneten Anbieter á la Microsoft oder Salesforce, die den Richtlinien der EU entsprechen, suchen.</p>
<p>Mehr dazu kann in den Vortragsfolien auf der <a href="http://entwicklertag.de/vortraege/rechtliche-aspekte-zu-cloud-computing" title="Rechtliche Aspekte zu Cloud Computing">Webseite des Entwicklertages 2012</a> nachgelesen werden.</p>
<p>In der Fragerunde zum Vortrag wurde noch erwähnt, dass man im rechtlichen Sinne nicht vom Besitz von Daten sprechen kann, sondern nur vom Zugriff.</p>
<p><a href="http://entwicklertag.de/vortraege/rechtliche-aspekte-zu-cloud-computing" title="Rechtliche Aspekte zu Cloud Computing">Rechtliche Aspekte zu Cloud Computing @ Entwicklertag 2012</a></p>
<h3>Software Engineering von Mobile Apps</h3>
<p>Stefan Hellfeld zeigte sehr schön die Entwicklung der mobilen Endgeräte an seiner eigenen Handy-Historie auf. Danach machte er darauf aufmerksam, wer eigentlich aktuell die Software für mobile Endgeräte verkauft: Betriebssystem- und Gerätehersteller. Auch erfunden hat das Ganze nicht Apple mit dem App Store, sondern Nokia mit Symbian schon einige Jahre zuvor.</p>
<h4>Was?</h4>
<p>Was ist das größte Problem, wenn man eine Software in den App Store bringt? Die Konkurrenz! Wie kann man sich, abgesehen vom Preis, von seinen Konkurrenten absetzen? Durch Innovation! Wie diese Innovation vorangeschritten ist, zeigt die Gegenüberstellung einiger Features des Smartphones (GSM, GPRS, Kamera, Bewegungssender) gegenüber verschiedenen Features von Software (Virtuelle Realität, Wecker, Aufzeichnung, MP3-Player). Hier steht es 9:26 für die Software. Herr Hellfeld legte nahe, sich als Entwickler von Mobilen Apps als Integrator zu sehen und so mehrere Hardwarekomponenten für die Lösung eines Problems zu verknüpfen.</p>
<h4>Wie?</h4>
<p>Da wir jetzt wussten, <em>was</em> wir zu programmieren hatten, stellte sich natürlich die Frage nach dem <em>Wie</em>. Hier verglich Herr Hellfeld die mobile Entwicklung für iOS mit der klassischen Software-Entwicklung. Bei letzterer wurden in der Regel Lizenzen für IDEs gekauft und fertig war man, was die Ausgaben im Entwicklungsprozess anging. In der mobilen Entwicklung ist die IDE zwar kostenlos (sofern man einen Mac hat), aber man braucht Lizenzen für die Entwickler, muss auf externen Geräten testen und die Software dann auch noch im App Store zur Abnahme einreichen. </p>
<h4>Zukunft iOS, Android, Windows Phone &amp; JavaME</h4>
<p>Es gibt schon jetzt mehr Smartphones als Handys. Android Apps sind im Schnitt teurer als iOS Apps, und JavaME liegt hinsichtlich des Marktanteils noch 15% hinter iOS und Android. Herr Hellfeld ist der Meinung, dass iOS weiter wachsen wird, Android auch &#8211; und zwar stärker &#8211; und Microsoft wird es zukünftig mit den beiden aufnehmen, da es noch keine richtige Office-Integration auf iOS oder Android gibt und es Windows Phone noch an Tablets fehlt.</p>
<h4>Organisation</h4>
<p>Was wird alles benötigt, um starten zu können? Eine Entwicklungsumgebung und ein SDK, ein Team, wobei sich die optimale Anzahl Mitarbeiter seiner Ansicht nach aus der Wurzel der Projektdauer in Personentagen ermittelt. Ferner benötigt man ein gutes Management, bei dem Enwickler 16 LOC (lines of code) pro Tag schaffen, die direkt in der Software verwendet werden, ein Vorgehensmodell und jede Menge Testgeräte. Es gibt zwar Simulatoren, aber diese ersetzen nicht die Tests auf Endgeräten.</p>
<p>Sicherlich neu in der mobilen Entwicklung ist die Rolle des Kunden, da man hier jetzt mit &#8220;Experten&#8221; redet, die genau wissen, wie eine mobile App auszusehen und wie sie sich anzufühlen hat.</p>
<h4>Nativ, WebApp oder Hybrid?</h4>
<p>Die Abgrenzung der unterschiedlichen App-Typen ist ja mittlerweile in aller Munde. Interessant ist jedoch Herr Hellfelds Abgrenzung im Detail. Native Apps sind bei ihm Apps, die nativ programmiert wurden, bei denen sich jedoch auch alle Daten auf dem Smartphone befinden. Hybrid sind bei ihm einerseits die Lösungen, die via Titanium oder PhoneGap auf beliebig viele Plattformen gebracht werden können, als auch Apps, die nativ implementiert wurden, aber ihre Daten aus dem Internet beziehen.</p>
<p>Als Best-Practice-Beispiele nannte er die Apps von Facebook und N-tv, die beide auf eine hybride Lösung setzen. Die UI-Elemente sind nativ implementiert, da sie flüssig sein müssen; die Informationsdarstellung erfolgt in Webviews.</p>
<p>Als gutes Feature von iOS wurde erwähnt, dass man es geschafft habe, auch Apps elegant abstürzen zu lassen, so dass sich der Nutzer selbst hinterfragt, bevor er davon ausgeht, dass die App fehlerhaft ist.</p>
<p>Spannend war auch ein Vergleich der Effizienz der Entwicklung zwischen iOS (Xcode) und Windows Phone (Visual Studio mit Expression Blend). So bräuchte man in Xcode für die Entwicklung einer Taschenlampen-App 80 Sekunden und in Visual Studio nur 32 Sekunden.</p>
<h4>Zukunft der Apps</h4>
<p>Apps sind in der Zukunft agil, sie passen sich an Anwender, Kontext, Gerät und Informationskanal an, sie sind intelligent, denken mit und treffen banale Entscheidungen, und darüber hinaus bilden sie Menschen auf Informationssystemen ab.<br />
<a href="http://entwicklertag.de/conference-day/software-engineering-von-mobile-apps" title="Software Engineering von Mobile Apps">Software Engineering von Mobile Apps @ Entwicklertag 2012</a></p>
<h3>Entspannte Nebenläufigkeit &#8211; Aktoren in Scala und Java</h3>
<p>Andi Scharfstein und Ben Romberg motivierten Aktoren mit dem <a href="http://en.wikipedia.org/wiki/Northeast_blackout_of_2003" title="Wikipedia Northeast blackout">&#8220;Northeast blackout of 2003&#8243;</a>. Als Ursache wurde eine Race Condition identifiziert. Um Race Conditions zu vermeiden, sollen Aktoren eingesetzt werden. Es muss also, getreu dem Aktoren-Paradigma, Datenfluss nur in gekapselten Systemen agiert werden.</p>
<p>Aktoren haben dabei einen eindeutigen Namen (Adresse), ein Verhalten (Code), einen Zustand (Daten) sowie eine Mailbox. Aktoren können Nachrichten verschicken, den eigenen Zustand bzw. ihr Verhalten ändern und neue Aktoren erstellen. In der Theorie laufen Aktoren parallel zueinander; es gibt keine Aussage zum Nachrichtenverhalten, und somit können Nachrichten theoretisch verloren gehen oder auch ihre Reihenfolge verändern.</p>
<p>In einem Bespiel, in dessen Rahmen Spielstände von Mannschaften verändert wurden (ja, es ist ja bald EM), wurde das <a href="http://akka.io/" title="Akka Framework">Akka-Framework</a> vorgestellt.</p>
<p>Für den Einsatz wurde vorgeschlagen, dass über Nachrichten kommuniziert werden soll und Nachrichten nur als immutable Objekte verwendet werden sollen, um Race Conditions zu vermeiden.</p>
<p>Als Fazit machten die Vortragenden Werbung für den Einsatz von Aktoren, da der Einarbeitungsaufwand gering sei, man nur seine Herangehensweise ändern müsse und so sehr performante nebenläufige Applikationen ohne Race Conditions bauen könne.</p>
<p>Mich haben die Jungs überzeugt und ich werde den nächsten passenden Anwendungsfall mal mit Aktoren umsetzen.</p>
<p><a href="http://entwicklertag.de/vortraege/entspannte-nebenl%C3%A4ufigkeit-aktoren-scala-und-java" title="Entspannte Nebenläufigkeit">Entspannte Nebenläufigkeit &#8211; Aktoren in Scala und Java @ Entwicklertag 2012</a></p>
<h3>Subjektorientorierung</h3>
<p>Albert Fleischmann hat ein neues Modell für den Softwareentwicklungsprozess entwickelt. Eingangs rief er den Zuhörern den deutschen Satzbau im Aktiv mit Subjekt, Prädikat und Objekt ins Gedächtnis (Wer macht was womit?) Im Vergleich dazu skizzierte er unterschiedliche Modelle der Softwareentwicklung (Flussdiagramm, ER-Diagramm, UML etc.), die im nicht ausreichenden Maße Subjekt, Prädikat und Objekt beschreiben. Sein Anliegen war es, Anwender für die Subjektorientierung zu motivieren. Als Fallbeispiel stellte er die Steuerung eines ferngesteuerten Vogels vor, die er später in ein Bespiel zu einem Transportunternehmen verwandelte. Spätestens hier hatte er mich leider komplett abgehängt. Als nach 40 Minuten Motivation innerhalb von fünf Minuten das Modell vorgestellt werden sollte, konnte ich leider nicht mehr das Konzept und den Nutzen der Subjektorientierung verstehen. Falls die Folien online gestellt werden, werde ich auf jeden Fall noch mal hineinschauen.</p>
<p><a href="http://entwicklertag.de/vortraege/subjektorientierung" title="Subjektorientierung">Subjektorientierung @ Entwicklertag 2012 </a></p>
<h3>Fazit</h3>
<p>Für mich eine sehr gelungene Veranstaltung &#8211; von der Organisation über die Referenten bis hin zum Veranstaltungsort. Dafür möchte ich mich bei den Veranstaltern und Referenten herzlich bedanken, und vielleicht bin ich ja nächstes Jahr auch wieder dabei.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Freundliche Eindringlinge auf dem Entwicklertag 2012" data-url="http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/05/freundliche-eindringlinge-auf-dem-entwicklertag-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</title>
		<link>http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/</link>
		<comments>http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 07:51:52 +0000</pubDate>
		<dc:creator>Norman Erck</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[alternatives]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[decorator]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Interceptor-Binding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSR 299]]></category>
		<category><![CDATA[JUGHH]]></category>
		<category><![CDATA[Producer]]></category>
		<category><![CDATA[Qualifier]]></category>
		<category><![CDATA[Scopes]]></category>
		<category><![CDATA[stereotypes]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3752</guid>
		<description><![CDATA[Am 07.12.2011 war die JUGHH bei uns zu Gast, und ich habe im Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Appliaktionen mit CDI&#8221; die Neuerungen von CDI anhand der Beispielapplikation &#8220;Friendly Invaders&#8221; vorgestellt. Für alle, die den Vortrag noch mal Revue passieren lassen wollen, den Termin verpasst haben oder denen einfach alles zu schnell ging, sind im [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.holisticon.de/wp-content/uploads/2011/07/12_right3.png"><img class="alignleft size-full wp-image-2621 colorbox-3752" src="http://blog.holisticon.de/wp-content/uploads/2011/07/12_right3.png" alt="" width="128" height="128" /></a>Am 07.12.2011 war die JUGHH bei uns zu Gast, und ich habe im Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Appliaktionen mit CDI&#8221; die Neuerungen von CDI anhand der Beispielapplikation &#8220;Friendly Invaders&#8221; vorgestellt. Für alle, die den Vortrag noch mal Revue passieren lassen wollen, den Termin verpasst haben oder denen einfach alles zu schnell ging, sind im folgenden die Vortragsfolien, die Beispielapplikation sowie die &#8220;Tonspur&#8221; in Schriftform zu finden.<span id="more-3752"></span></p>
<h2>Vortragsfolien</h2>
<div style="width:425px" id="__ss_10564604"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/hco_ne/freundlich-eindringlinge-moderne-webapplikationen-mit-cdi" title="Freundliche Eindringlinge - Moderne Web-Applikationen mit CDI">Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</a></strong><object id="__sse10564604" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=111207cdi-111212131034-phpapp01&#038;stripped_title=freundlich-eindringlinge-moderne-webapplikationen-mit-cdi&#038;userName=hco_ne" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse10564604" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=111207cdi-111212131034-phpapp01&#038;stripped_title=freundlich-eindringlinge-moderne-webapplikationen-mit-cdi&#038;userName=hco_ne" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object></div>
<h2>Tonspur</h2>
<p>Mit der JSR 299 hat CDI Einzug in den Java EE-Standard gehalten. Doch was ist dieses CDI eigentlich, was bezweckt es, welche Neuerungen bringt es und wie kann ich diese in meiner Java Enterprise-Applikation (EJB-Applikation) nutzen?</p>
<h3>Motivation &#8211; JSR 299</h3>
<p>Dependency Injection (DI) hat schon vor langer Zeit Einzug in Java-Applikationen gefunden. Dabei mussten sich Architekten und Entwickler immer Frameworks wie Spring oder Seam bedienen. Um diesen Umstand aus der Welt zu schaffen, war es Ziel des JSR 299, ein umfassendes DI Framework im Java EE-Standard zu etablieren. Außerdem sollte eine Standardisierung und Vereinfachung des Zusammenspiels zwischen EJB und JSF erreicht werden, d.h., die Geschäftslogik sollte einfacher in die Präsentationsschicht integriert werden können.</p>
<p>Ich nehme an dieser Stelle mal eines vorweg: Beide Ziele hat die JSR 299 Expert Group mit der Spezifikation &#8220;Contexts and Dependency Injection for the Java EE platform&#8221; (CDI) erreicht.</p>
<h3>Neuerungen &#8211; Was bietet CDI?</h3>
<p>Dank CDI wird der Java EE-Standard um folgende Funktionalitäten erweitert:</p>
<ul>
<li>Dependecy Injection-Mechanismus</li>
<li>Deklarative Verknüpfung von Beans</li>
<li>Scope zwischen Request und Session</li>
<li>Entkopplung von Interzeptoren</li>
<li>Dekoratoren</li>
<li>Beanverwaltung zur Laufzeit</li>
</ul>
<h3>Bean-Verständnis &#8211; Beans</h3>
<p>Von einer Bean wird bereits bei JSF, EJB und Spring gesprochen, ohne jedes Mal dasselbe zu bezeichnen. Auch CDI spricht von Beans, und auch in dieser Spezifikation herrscht ein eigenes Verständnis davon, was unter einer Bean verstanden wird.</p>
<p>CDI meint: &#8220;Eine Bean ist ein Objekt, dessen Lebenszyklus vom Container verwaltet wird.&#8221;</p>
<p>Folglich ist jedes dem CDI-Container &#8220;bekannt gemachte&#8221; Objekt eine Bean im Sinne von CDI. Dabei werden zwei Typen von Beans unterschieden:</p>
<ul>
<li>Managed Beans</li>
<li>Session Beans</li>
</ul>
<h4>Managed Beans</h4>
<p>Damit der Lebenszyklus eines Objekts von CDI verwaltet werden kann, muss dieses Objekt einen parameterlosen Konstruktor besitzen oder einen, der mit der Annotation <em>@Inject</em> versehen ist. Erfüllt ein Objekt eines dieser Kriterien, wird sein Lebenszyklus und die mit dem Scope verbundene Abhängigkeit der Bean vom CDI Container verwaltet.</p>
<h4>Session Beans</h4>
<p><em>Session Beans</em> sind streng genommen auch Managed Beans, so dass für sie auch die gleichen Kriterien gelten. Bei Session Beans kommt jedoch hinzu, dass ihr Lebenszyklus vom EJB Container verwaltet wird und sie ein eigenes Statusmanagement- und Nebenläufigkeitsmodell besitzen. Stateless und Singleton Session Beans sind <em>scopeless</em>, es braucht ihnen also kein CDI-spezifischer Scope zugewiesen werden. Stateful Session Beans hingegen muss ein Scope explizit zugewiesen werden.</p>
<p>CDI kann somit sofort mit den <em>scopeless</em> EJBs arbeiten, ohne dass diese angepasst werden müssen.</p>
<h4>Nicht Beans</h4>
<p><em>Nicht Beans</em> im Sinne von CDI sind Message-Driven Beans, Interzeptoren, Servlets, JAX WS Services, JSP Tag Handler und Tag Library Event Listener. Diese müssen aber nicht ganz auf die Funktionalitäten von CDI verzichten und können zumindest Beans injiziert bekommen.</p>
<h3>Konzepte</h3>
<h4>Container, Kontext &amp; Scope</h4>
<p>Container, Kontext und Scope sollten für Entwickler keine vollkommen neuen Begriffe sein, da diese jedoch für das Verständnis von CDI von Bedeutung sind, hier eine kurze Erläuterung.</p>
<p>Bei CDI ist der Container für die Verwaltung des Lebenszyklus der an einen Kontext gebundenen Objekte zuständig. Dieser Kontext beschreibt die Beziehungen der verwalteten Objekte zueinander. Der Scope definiert die Sichtbarkeit bzw. Lebenszeit der von CDI im Container verwalteten Objekte.</p>
<h4>DI</h4>
<p>Dependency Injection ist an sich nichts Neues, aber sie wird mit CDI in den Standard von Java-EE-Applikationen und auch Java-SE-Appliakationen gehoben. Die Annotation <em>@Inject</em> ist für die DI zuständig.</p>
<h4>Typsichere Auflösung</h4>
<p>In CDI findet ein Typesave-Resolution-Algorithmus Anwendung. Wird also eine Bean injiziert, dann wird immer der passende Typ an diese gebunden. Erfolgt keine genauere Spezifizierung durch Qualifier oder Alternativen, wird immer die Default-Implementierung genommen &#8211; folglich eine Bean vom passenden Typ.</p>
<h4>Lose Kopplung</h4>
<p>Eine lose Kopplung wird erreicht, wie üblich bei Web-Applikationen, durch eine Trennung von Client und Server, die neuen unterschiedlichen Scopes (Lebenszyklen) und die Realisierung von Produzenten und Konsumenten, auf die im Praxisteil noch detaillierter eingegangen wird.</p>
<h4>Interceptor-Binding und Dekoratoren</h4>
<p>CDI bietet ein neues Konzept, um Interzeptoren an Beans zu binden und erreicht auch damit eine Entkopplung. Dekoratoren sind eine Umsetzung des Decorator-Patterns und ermöglichen es, Methoden um Geschäftslogik zu erweitern.</p>
<h4>SPI</h4>
<p>SPI stellt für Entwickler eine Schnittstelle zur Verfügung, um leichter eigene Dienste in CDI-Applikationen zu integrieren.</p>
<h3>In der Praxis</h3>
<p>Es gibt mittlerweile mehrere Implementierungen von CDI. In dieser Blogserie wird die Referenzimplementierung <em>Weld </em>von JBoss eingesetzt. Sie stellt Werkzeuge wie DI, Scopes, EL-Namen, Interceptor-Bindings, Dekoratoren und Produzenten zur Verfügung.</p>
<p>Um mit CDI starten zu können, muss in einer Applikation lediglich der CDI Deployment-Deskriptor angelegt werden, die <code>beans.xml</code>. Möchte man seine Applikation als .war-Datei deployen, so muss diese im Verzeichnis WEB-INF liegen. Bei als .jar-Datei zu deployenden Applikationen gehört die <code>beans.xml</code> in das Verzeichnis META-INF. Die unter einem der beiden Verzeichnisse abgelegte <code>beans.xml</code> kann dabei leer sein.</p>
<p>Gut zu wissen ist an dieser Stelle auch, dass sich CDI nicht auf den Einsatz in Java EE-Applikationen beschränkt, sondern auch unter Java SE angewendet werden kann.</p>
<h4>Dependency Injection</h4>
<p>Wie bereits unter dem Punkt Session Beans erwähnt, können <em>scopeless</em> EJBs sofort von CDI genutzt werden. Genau das wird im folgenden Code getan.</p>
<p>Wir haben folgende EJB gegeben:</p>
<pre class="brush: java; title: ; notranslate">@Stateless
public class BlogServiceBean implements BlogService {
 ...
}</pre>
<p>Diese kann jetzt direkt mit der Annotation <em>@Inject </em>in eine Bean injiziert werden.</p>
<pre class="brush: java; title: ; notranslate">
public class InvasionController {
 @Inject
 private BlogService blogService;
 ...
}</pre>
<h4>Qualifier</h4>
<p>Qualifier sind dazu da, bei mehreren Implementierungen eines Typs genau zu definieren, welche konkrete Implementierung von CDI injiziert werden soll. Dazu muss zunächst ein entsprechender Qualifier definiert werden bzw. eine mit <em>@Qualifier</em> annotierte Annotation.</p>
<pre class="brush: java; title: ; notranslate">@Qualifier
@Target({TYPE, METHOD, PARAMETER, FIELD})
@Retention(RUNTIME)
public @interface Holisticon {}
</pre>
<p>Die für Annotationen typischen Meta-Annotationen <em>@Target</em> und <em>@Retention</em> legen fest, was mit der definierten Annotation annotiert werden darf und wann die Auflösung der Annotation erfolgt.</p>
<p>Eine Stateless Session Bean wird mit diesem Qualifier annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Holisticon
@Stateless
public class HolisticonBlogServiceBean
    implements BlogService {
  ...
}
</pre>
<p>Und um auch die gewünschte Bean zu injizieren, wird der genutzte <code>BlogService</code> ebenfalls mit dem Qualifier annotiert.</p>
<pre class="brush: java; title: ; notranslate">
public class InvasionController {
  @Inject @Holisticon
  private BlogService blogService;
  ...
}
</pre>
<p>Würde bei mehreren Implementierungen des <code>BlogServices</code> auf einen Qualifier verzichtet werden, so würde <em>Weld</em> den Start des Containers verweigern und folgende Exception werfen:</p>
<pre>WELD-001409 Ambiguous dependencies for type [BlogService]
with qualifiers [@Default] at injection point ...</pre>
<p>Der in der Exception erwähnte Qualifier <em>@Default</em> wird implizit gesetzt, wenn die Bean nicht explizit einen Qualifier bekommen hat.</p>
<h4>Alternativen</h4>
<p>Mittels Alternativen kann zur Deployment-Zeit festgelegt werden, dass anstatt der eigentlichen Implementierung eines Typs eine alternative Implementierung genutzt wird. Diese Alternative hat den Qualifier <em>@Alternative</em> und muss im CDI Deployment-Deskriptor, der beans.xml, aktiviert werden.</p>
<p>Die alternative Implementierung von <code>BlogService</code> soll ein Mock sein.</p>
<pre class="brush: java; title: ; notranslate">
@Alternative
public class BlogServiceMock implements BlogService{
  ...
}
</pre>
<p>In der beans.xml wird die Alternative wie folgt aktiviert.</p>
<pre class="brush: xml; title: ; notranslate">

    de.holisticon.blog.friendlyInvaders.service.mock.BlogServiceMock
</pre>
<p>Wie das Codebeispiel suggerieren soll, sind diese Alternativen besonders nützlich, wenn es um das Testen einer Applikation geht.</p>
<h4>EL-Namen</h4>
<p>Die einfachste Variante, eine Bean dem CDI-Kontext hinzuzufügen, ist, sie mit <em>@Named</em> zu annotieren. Diese Annotation ermöglicht, dass eine Bean direkt in der Präsentationsschicht, wie z.B. einer JSF-Seite, angesprochen werden kann.</p>
<p>Zunächst wird ein Controller mit <em>@Named</em> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Named
public class InvasionController{
  @Inject @Holisticon
  private BlogService blogService;
  ...
}
</pre>
<p>Ist eine Bean mit <em>@Named</em> annotiert, so ist sie mit ihrem Namen in der EL ansprechbar. Zu beachten ist, dass der Name hierbei immer mit einem kleinen Buchstaben beginnt. Der EL-Name der annotierten Bean ist hier <code>invasionController</code>, wie im folgenden Auszug einer JSF-Seite.</p>
<pre class="brush: xml; title: ; notranslate">

  #{blogArticle.title}
</pre>
<p>Gefällt der automatische EL-Name der Beans nicht, so hat man die Möglichkeit, ihnen auch Namen via Annotation zuzuweisen (z.B. <em>@Named (&#8220;MeinName&#8221;)</em>).</p>
<h4>Scopes</h4>
<p>Auch bei CDI gibt es Scopes, die die Lebenszeit von Objekten und das Verhalten von Objekten zueinander beschreiben. Beans können in CDI mit einem der folgenden Scopes annotiert werden:</p>
<ul>
<li><em>@RequestScoped</em></li>
<li><em>@ConversationScoped</em></li>
<li><em>@SessionScoped</em></li>
<li><em>@ApplicationScoped</em></li>
</ul>
<p>Wird eine Bean mit einem Scope annotiert, so wird sie dem entsprechenden Kontext im CDI-Container zugewiesen.</p>
<pre class="brush: java; title: ; notranslate">
@Named
@SessionScoped
public class InvasionController implements Serializable {
  private static final long serialVersionUID = 1L;
  @Inject @Holisticon
  private BlogService blogService;
  ...
}
</pre>
<p>Dieser Controller wird an den <em>SessionContext</em> gebunden und bleibt für die Lebenszeit der Session erhalten.</p>
<p>An dieser Stelle ist gut zu wissen, dass Beans mit dem Session oder Conversation Scope serialisierbar sein müssen. Implementieren diese Beans nicht die Klasse <code>Serializable</code>, so verweigert CDI den Start und wirft die folgende Exception:</p>
<pre>WELD-000072 Managed bean declaring a passivating scope must be
passivation capable.</pre>
<h5>Conversation Scope</h5>
<p>Der einzig wirklich neue Scope, den CDI bietet, ist der Conversation Scope. Er schließt die Lücke zwischen dem Scope eines Requests und dem Scope einer Session, den Entwickler schon lange vermissten und teilweise durch eigene Implementierungen realisieren mussten. Die Vorteile der Conversation liegen auf der Hand, nutzerspezifische Daten können über mehrere Requests hinweg &#8220;gemerkt&#8221; werden und es bleiben keine alten beziehungsweise nicht mehr benötigten Daten z.B. in der Session, da der Beginn und das Ende einer Conversation explizit gesetzt werden können. Ein weiteres schönes Feature ist, dass in jedem Browser Tab eine eigene Conversation gehalten wird.</p>
<p>In der Praxis ist der Conversation Scope unter anderem für einen Checkout-Prozess sehr nützlich, so auch im Codebeispiel. Dazu wird eine Stateful <code>CheckoutServiceBean</code> mit der Annotation <em>@ConversationScoped</em> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Stateful
@ConversationScoped
public class CheckOutServiceBean {
  @Inject
  private Conversation conversation;
  private KudosCart kudosCart;

  public KudosCart createKudosCart() {
    kudosCart = new KudosCart();
    // if no conversation is &quot;open“
    if (conversation.isTransient())
      conversation.begin();
    return kudosCart;
  }
  public void checkout() {
    kudosCart.getCart().clear();
    conversation.end();
  }
}
</pre>
<p>Um die Conversation über mehrere Requests hinweg leben zu lassen &#8211; in der Spec wird von einer lange laufenden Conversation gesprochen &#8211; injizieren wir uns die Conversation in unsere Bean. Mit diesem Conversation-Objekt kann explizit festgelegt werden, wann eine Conversation beginnt (<code>conversation.begin()</code>) und wann sie endet (<code>conversation.end()</code>). Ob für einen Nutzer bereits eine Conversation &#8220;geöffnet&#8221; wurde, kann mit <code>conversation.isTransient()</code> geprüft werden.</p>
<p>Zu beachten ist, dass die Conversation automatisch nur bei JSF Requests zur Verfügung steht. Agiert man nicht mit JSF Requests (Links, JavaScript etc.), muss eine Conversation ID (<code>cid</code>) als Parameter mitgegeben werden.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;/add.jsp?cid=#{ javax.enterprise.context.conversation.id }&quot;&gt;
 hinzufügen
&lt;/a&gt;
</pre>
<h4>Stereotypen</h4>
<p>Sterotypen können als Annotationen verstanden werden, die mehrere Annotationen bündeln können.</p>
<p>Es kann z.B. ein Stereotyp angelegt werden, der die Annotationen <em>@SessionScoped </em>und <em>@Named</em> bündelt (die Annotationen werden im Folgenden noch erklärt). Ein Stereotyp wird mit der Annotation <em>@Stereotype</em> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Stereotype
@Named
@SessionScoped
@Target(TYPE)
public @interface NSS {}
</pre>
<p>Die mit <em>@NSS </em>annotierte Klasse bekommt also implizit <em>@Named</em> und <em>@SessionScoped</em> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@NSS
public class InvasionController implements Serializable {...}
</pre>
<h4>Events</h4>
<p>Wie auch die Dependency Injection sind Events kein vollkommen neues Konzept für den Java EE Stack. CDI liefert jedoch ein neues Werkzeug, getreu dem Observer Pattern, um Events zu realisieren.</p>
<p>Im Kontext von Events spricht CDI von Producern und Observern. Producer erzeugen Events und Observer &#8220;lauschen&#8221;, ob Events eingetreten sind. Um Producer und Observer zusammenzubringen bzw. für die Observer festzulegen, welche Events für sie von Interesse sind, werden Qualifier genutzt.</p>
<p>Ergo muss im ersten Schritt ein Qualifier angelegt werden.</p>
<pre class="brush: java; title: ; notranslate">
@Qualifier
@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
public @interface Invaded {}
</pre>
<p>Im zweiten Schritt wird der Producer in der Bean angelegt, aus welcher heraus wir Events werfen wollen.</p>
<pre class="brush: java; title: ; notranslate">
@NSS
public class InvasionController implements Serializable{
  ...
  @Inject @Invaded
  private Event blogArticleEvent;
  ...
  public String giveKudos(BlogArticle blogArticle, int amount){
    blogArticleEvent.fire(blogArticle);
    ...
  }
}
</pre>
<p>Im Codebeispiel tritt ein Event ein, wenn durch die Methode <code>giveKudos(blogArticle, amount)</code> dem Autor eines Blogartikels Anerkennung gezeigt wird. Das Event-Objekt wird mit <em>@Invaded</em> annotiert und kann somit mit entspechenden Observern in Beziehung gesetzt werden.</p>
<p>Fehlen also nur noch Observer, die reagieren, wenn ein Event eingetreten ist.<br />
Zum Beispiel könnte beim Eintreten des Events getwittert werden, wer gerade für welchen Blogartikel Anerkennung bekommen hat.</p>
<pre class="brush: java; title: ; notranslate">
@RequestScoped
public class InvasionTweeter{
  public void afterBlogIntrude( @Observes @Invaded BlogArticle blogArticle) {
    ...
  }
}
</pre>
<p>Da nicht jeder Mensch bei Twitter ist und die Autoren sicher gern Bescheid wüssten, sobald sie Anerkennung bekommen, könnte zusätzlich ein Observer Mails an die Autoren versenden.</p>
<pre class="brush: java; title: ; notranslate">
@RequestScoped
public class InvasionMailer{
  public void afterBlogIntrude( @Observes @Invaded BlogArticle blogArticle) {
    ...
  }
}
</pre>
<h5>Observer Pattern</h5>
<p>Die Frage, ob CDI nun getreu dem Observer Pattern agiert, muss mit &#8220;Jein&#8221; beantwortet werden. Nicht nur Producer sind von Observern entkoppelt, sondern auch Observer von Producern. Hinzu kommt, dass Observer Events mit Qualifiern filtern und verzögert aufgerufen werden können, z.B. erst, nachdem eine Transaktion abgeschlossen wurde.</p>
<h4>Interceptor-Bindings</h4>
<p>Ja, auch Interzeptoren sind nichts Neues, aber mit den Interceptor-Bindings wird ein mächtiges Werkzeug für des Binden von Interzeptoren an Methoden zur Verfügung gestellt. Auch hier dienen Annotationen als Bindeglied.</p>
<p>Im ersten Schritt wird eine mit <em>@InterceptorBinding</em> annotierte Annotation angelegt, das Interceptor-Binding <code>LoggerBinding</code>.</p>
<pre class="brush: java; title: ; notranslate">
@InterceptorBinding
@Retention (RUNTIME)
@Target ({METHOD, TYPE})
public @interface LoggerBinding {}
</pre>
<p>Im zweiten Schritt wird ein mit dem Interceptor-Binding annotierter Interzeptor erstellt.</p>
<pre class="brush: java; title: ; notranslate">
@LoggerBinding
@Interceptor
public class LoggingInterceptor implements Serializable {
  private static final long serialVersionUID = 1L;
  @Inject
  private Logger log;

  @AroundInvoke
  public Object onMethodCall(InvocationContext context)
      throwsException {
    ...
  }
}
</pre>
<p>Die anderen zwei Annotationen <em>@Interceptor</em> und <em>@AroundInvoke</em> sollten, wenn schon mal Interzeptoren eingesetzt wurden, bekannt sein. <em>@Interceptor</em> markiert die Klasse als Interzeptor, und mit <em>@AroundInvoke</em> wird die Methode gekennzeichnet, die beim Aufruf einer mit dem Interzeptor verbundenen Methode ausgeführt wird.</p>
<p>Im dritten Schritt müssen wir unseren Interzeptor jetzt an eine Bean heften. Dazu wird das Interceptor-Binding <em>@LoggerBinding</em> an die Methode <code>checkout()</code> der <code>CheckoutServiceBean</code> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Stateful @ConversationScoped public class CheckOutServiceBean {
  ...
  @LoggerBinding public void checkout() {
    conversation.end();
  }
}
</pre>
<p>Interzeptoren müssen konfiguriert werden, damit sie in der Applikation dann auch Anwendung finden. Standardmäßig sind sie deaktiviert. Also muss im letzten Schritt der Interzeptor im CDI Deployment-Deskriptor definiert werden.</p>
<p>Dazu wird die beans.xml um folgende Zeilen erweitert.</p>
<pre class="brush: xml; title: ; notranslate">

    de.holisticon.blog.friendlyInvaders.interceptor.LoggingInterceptor
</pre>
<p>Jetzt ist der Interzeptor aktiviert und jeder Checkout wird geloggt.</p>
<p>Die mit CDI eingeführten Annotationen ermöglichen es, Interzeptoren an Beans zu binden, ohne dass eine Abhängigkeit zwischen der konkreten Bean und einem konkreten Interzeptor entsteht.</p>
<h4>Dekoratoren</h4>
<p>Mit Dekoratoren bietet CDI eine saubere Umsetzung des Decorator Patterns.</p>
<p>Der Dekorator und die zu dekorierende Klasse müssen dabei das gleiche Interface implementieren. Der Dekorator wird mit <em>@Decorator</em> annotiert.</p>
<pre class="brush: java; title: ; notranslate">
@Decorator
public abstract class CheckoutServiceDecorator
    implements CheckoutService, Serializable {
   ...
  @Inject @Delegate
  private CheckoutService checkoutService;

    public void giveKudos( BlogArticle blogArticle, float amount) {
      if (blogArticle.getAuthor().getName().endsWith(&quot; Erck&quot;)){
        logger.info(&quot;No Kudos in the form of money.&quot;);
    }else{
        checkoutService.giveKudos(blogArticle, amount);
    }
  }
}
</pre>
<p>Jeder Dekorator muss ein mit <em>@Delegate</em> annotiertes Objekt besitzen: das Objekt, das dekoriert werden soll. Alle Methoden, die dekoriert, bzw. um Geschäftslogik erweitert werden sollen, werden vom Dekorator implementiert. Im Codebeispiel soll folglich die Methode <code>giveKudos(blogArticle, amount)</code> des <code>CheckoutServiceController</code> dekoriert werden.</p>
<p>Auch Dekoratoren sind Deployment-spezifisch und müssen in der beans.xml aktiviert werden.</p>
<pre class="brush: xml; title: ; notranslate">

    de.holisticon.blog.friendlyInvaders.decorator.CheckoutServiceDecorator
</pre>
<p>Dank des Dekorators bekommt jetzt keiner, der meinen Nachnamen trägt, mehr Anerkennung in Form von Centbeträgen.</p>
<h5>Interzeptoren vs. Dekoratoren</h5>
<p>Da im Artikel ja schon vorgestellt wurde, wie einfach sich Interzeptoren mit den Interceptor-Bindings an Klassen binden lassen, bleibt die Frage offen, wann Interzeptoren und wann Dekoratoren die richtige Wahl sind.</p>
<p>Ein konkreter Interzeptor lässt sich an beliebige Klassen jedes Java-Typs binden und sollte eingesetzt werden, um technische Aspekte wie z.B. Logging zu realisieren.</p>
<p>Ein konkreter Dekorator lässt sich nur an eine Klasse eines konkreten Java-Typs binden, kennt somit die Semantik und sollte eingesetzt werden, um eine Klasse mit Aspekten der Geschäftslogik zu dekorieren.</p>
<h4>Produzenten</h4>
<p>Als letztes Werkzeug sollen die Produzenten vorgestellt werden. Sie sind mit <em>@Produces</em> annotierte Methoden, die immer genau dann aufgerufen werden, wenn eine Instanz eines zu produzierenden Objektes verlangt wird und noch keine entsprechende Instanz erzeugt wurde.</p>
<p>Im Beispielcode wird ein Produzent für den <em>Logger</em> erzeugt. Um diesen Logger von ggf. anderen Loggern zu unterscheiden, wurde zuvor der Qualifier <em>@HcoLogger</em> definiert.</p>
<pre class="brush: java; title: ; notranslate">
public class HcoLoggerFactory {

  @Produces @HcoLogger
  public Logger produceLogger(InjectionPoint injectionPoint){
    return LoggerFactory.getLogger(injectionPoint.getMember()
      .getDeclaringClass().getName());
  }
}
</pre>
<p>Soll im Kontext einer Klasse ein Logger via Dependency Injection injiziert werden und wurde für diesen Kontext noch kein Logger erzeugt, so wird er über die Methode <code>produceLogger(injectionPoint)</code> erzeugt.</p>
<p>Im Codebeispiel ist zu sehen, dass der Logger in Abhängigkeit des Typs der aufrufenden Klasse erzeugt wird. Wird eine Instanz über den Produzenten erzeugt, so hat sie den Scope <em>@Dependent</em>, d.h., die Instanz nimmt den Scope und somit auch den Kontext der Klasse an, in die sie injiziert wurde.</p>
<p>Dass im Hintergrund ein Producer greift, ist im <code>CheckoutServiceDecorator</code> nicht zu sehen.</p>
<pre class="brush: java; title: ; notranslate">
@Decoratorpublic abstract class CheckoutServiceDecorator
    implements CheckoutService, Serializable {
   ...
  @Inject @HcoLogger
  private Logger logger;
  ...
}
</pre>
<h5>Einsatzgebiete</h5>
<p>Produzenten sind genau dann sinnvoll, wenn der Typ der zu produzierenden Klasse zur Laufzeit variiert bzw., wenn die Initialisierung individuell erfolgt.</p>
<h3>Beispielapplikation</h3>
<h4>Friendly Invaders (deutsch: Freundliche Eindringlinge)</h4>
<p>Um natürlich nicht einfach nur staubigen Quellcode zu lesen, sondern das Ganze auch in der Praxis zum Fliegen zu bringen, dient die Beispielapplikation &#8220;<a href="http://blog.holisticon.de/wp-content/uploads/2011/12/friendlyInvaders.zip">Friendly Invaders</a>&#8220;.</p>
<h5>Sinn und Unsinn</h5>
<p>Die Beispielapplikation ermöglicht es Lesern, den Autoren von Blogbeiträgen in einem via RSS angebundenen Blog Anerkennung (Kudos) zu zeigen. Dazu befindet sich unter jedem Blogartikel ein &#8220;Give Kudos&#8221; Button.</p>
<div id="attachment_2396" class="wp-caption alignnone" style="width: 176px"><a href="http://blog.holisticon.de/wp-content/uploads/2011/12/giveKudos.png"><img class="alignnone size-full wp-image-4086 colorbox-3752" src="http://blog.holisticon.de/wp-content/uploads/2011/12/giveKudos.png" alt="" width="166" height="63" /></a><p class="wp-caption-text">&quot;Give Kudos&quot; Button</p></div>
<p>Wurde dieser Button geklickt, wird das Kudos in einen Warenkorb gepackt. Wird auf den Warenkorb, der durch eine Bean im Conversation Scope implementiert wurde, geklickt, so wird ein einstufiger Checkout vollzogen und schließt den Prozess der Anerkennung ab.</p>
<div id="attachment_2397" class="wp-caption alignnone" style="width: 230px"><a href="http://blog.holisticon.de/wp-content/uploads/2011/05/cid.png"><img class="size-full wp-image-2397 colorbox-3752" src="http://blog.holisticon.de/wp-content/uploads/2011/05/cid.png" alt="cid des Conversation Scope als Parameter" width="220" height="60" /></a><p class="wp-caption-text">cid des Conversation Scope als Parameter</p></div>
<p>Observer, Dekorator, Logger und Interzeptor erzeugen Text auf der Console, der ihre Aktivität zweifelsfrei belegen soll.</p>
<pre>[STDOUT] Observer: Tweet: Rolf Dräther: Aus dem Leben einer User Story
[STDOUT] Observer: Mail: Rolf Dräther: Aus dem Leben einer User Story
[de.holisticon.blog.friendlyInvaders.decorator.CheckoutServiceDecorator]
Kudos and Money
[de.holisticon.blog.friendlyInvaders.interceptor.LoggingInterceptor]
checkout: Fri Dec 16 17:27:21 CET 2011</pre>
<h5>Lebensraum</h5>
<p>Um die Applikation auszuführen, empfehle ich den JBoss 6 Application Server. Soll die Anwendung in Eclipse, mit Serveradapter für den JBoss 6 Application Server und API zum Editieren der beans.xml, zum Laufen gebracht werden, so müssen in Eclipse die JBoss Tools 3.2 installiert werden.</p>
<ul>
<li><a href="http://blog.holisticon.de/wp-content/uploads/2011/12/friendlyInvaders.zip">&#8220;Friendly Invaders&#8221; Download</a></li>
<li><a href="http://www.jboss.org/jbossas/downloads" target="_blank">JBoss 6 Application Server</a></li>
<li><a href="http://www.eclipse.org/downloads/" target="_blank">Eclipse (Helios 3.6.1)</a></li>
<li><a href="http://download.jboss.org/jbosstools/updates/stable/helios/" target="_blank">JBoss Tools for Eclipse (3.2)</a></li>
</ul>
<h3>Zusammenfassung</h3>
<p>Innerhalb des Vortrages wurde die Werkzeugkiste von CDI vorgestellt. Alle Werkzeuge erleichtern den Entwicklern von Applikationen die Arbeit erheblich und helfen, die Basics wie <em>Entkopplung</em> und <em>Separation of Concerns</em> umzusetzen.</p>
<p>Das Ziel, ein umfassendes DI Framework im Java EE Standard zu etablieren und eine bessere Verbindung zwischen JSF und EJB bzw. der Präsentationsschicht und Geschäftslogik herzustellen, wurde definitiv erreicht.</p>
<p>Ob CDI mit der Referenzimplementierung Weld in der Praxis in der Lage ist, Frameworks wie Spring oder Seam aus der Welt zu schaffen, wird sich zeigen.</p>
<p>Was ist eure Meinung dazu? Hat CDI das Zeug, Spring oder Seam als DI Frameworks zu verdrängen? Über Kommentare würde ich mich freuen.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI" data-url="http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2012/01/freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Projekte mit Scrum, XP und Kanban im Unternehmen durchführen</title>
		<link>http://blog.holisticon.de/2011/12/agile-projekte-mit-scrum-xp-und-kanban-im-unternehmen-durchfuhren/</link>
		<comments>http://blog.holisticon.de/2011/12/agile-projekte-mit-scrum-xp-und-kanban-im-unternehmen-durchfuhren/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 09:50:25 +0000</pubDate>
		<dc:creator>Holger Koschek</dc:creator>
				<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Erfahrungsbericht]]></category>
		<category><![CDATA[Geschichten]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3220</guid>
		<description><![CDATA[Henning Wolf hat im vergangenen Jahr einige deutschsprachige Agile nach Erfahrungen aus echten Projekten gefragt. Herausgekommen ist ein Buch voller Geschichten über agile Projekte: von kleinen bis zu großen Projekten, von der Entwicklung von Inhouse-Software für Unternehmen bis zur Wartung einer großen Internetseite finden sich alle Projekttypen wieder. Beschrieben werden unter anderem Projekte zu schneller [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-3221 colorbox-3220" src="http://blog.holisticon.de/wp-content/uploads/2011/10/Wolf_AgileProjekte_dpunkt-205x300.jpg" alt="" width="205" height="300" />Henning Wolf hat im vergangenen Jahr einige deutschsprachige Agile nach Erfahrungen aus echten Projekten gefragt. Herausgekommen ist ein Buch voller Geschichten über agile Projekte: von kleinen bis zu großen Projekten, von der Entwicklung von Inhouse-Software für Unternehmen bis zur Wartung einer großen Internetseite finden sich alle Projekttypen wieder. Beschrieben werden unter anderem Projekte zu schneller Auslieferung, zur Qualitätsverbesserung, zur Schaffung von Transparenz in Projekten sowie aus speziellen Bereichen (Portfoliomanagement, Start-ups).<span id="more-3220"></span></p>
<p>Dabei steht die pragmatische Herangehensweise im Vordergrund: Welche Hürden gab es im Projekt, wie wurden diese gemeistert? Welche Fragestellungen tauchen auf, die die klassischen Lehrbücher zur agilen Softwareentwicklung nicht beantworten? Welche Anpassungen waren wann erforderlich?</p>
<p>In meinem Beitrag &#8220;Ein agiles Projekt ist kein Ponyhof&#8221; bekommen die IT-Abteilung und ein Fachbereich eines großen mittelständischen Unternehmens die Chance, auf der grünen Wiese ein neues Anwendungssystem zu errichten. Die externen Architekturberater empfehlen Scrum als agilen Ansatz für das Projektmanagement, und das Unternehmen lässt sich darauf ein. Mit zunehmender Scrum-Erfahrung stellt auch dieses Unternehmen fest, dass ein agiles Projekt kein Selbstgänger ist, sondern harte Arbeit – die sich aber lohnt, wie das Projektergebnis und die Motivation der Mitarbeiter belegen.</p>
<h4>Agile Projekte mit Scrum, XP und Kanban im Unternehmen durchführen</h4>
<address>Henning Wolf (Hrsg.); mit Beiträgen von Markus Andrezak, Alex Bepple, Jutta Eckstein, Sven Günther, Holger Koschek, Andreas Leidig, André Neubauer, Christiane Philipps, Susanne Reppin, Sven Röpstorff, Arne Roock, Stefan Roock, Bernd Schiffer und Henning Wolf</address>
<address> </address>
<address>dpunkt.verlag Heidelberg (Oktober 2011)</address>
<address>ISBN 978-3-89864-752-6</address>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/12/agile-projekte-mit-scrum-xp-und-kanban-im-unternehmen-durchfuhren/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Agile Projekte mit Scrum, XP und Kanban im Unternehmen durchführen" data-url="http://blog.holisticon.de/2011/12/agile-projekte-mit-scrum-xp-und-kanban-im-unternehmen-durchfuhren/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/12/agile-projekte-mit-scrum-xp-und-kanban-im-unternehmen-durchfuhren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUGHH zu Gast: Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI</title>
		<link>http://blog.holisticon.de/2011/12/jug-hh-zu-gast-freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/</link>
		<comments>http://blog.holisticon.de/2011/12/jug-hh-zu-gast-freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 13:39:42 +0000</pubDate>
		<dc:creator>Norman Erck</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[JUGHH]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3739</guid>
		<description><![CDATA[Am kommenden Mittwoch (07.12.2011) ist die Java User Group Hamburg in unseren Räumen zu Gast. Ich werde im Rahmen dieses Treffens den Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; halten. Im Vortrag werden anhand der Web-Applikation &#8220;Friendly Invaders&#8221; alle Konzepte, die CDI mit sich bringt, vorgestellt. Worum geht es? Was bis jetzt nur mit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.holisticon.de/wp-content/uploads/2011/12/JUGHH_100x100.png"><img class="alignleft size-full wp-image-3767 colorbox-3739" src="http://blog.holisticon.de/wp-content/uploads/2011/12/JUGHH_100x100.png" alt="" width="100" height="100" /></a>Am kommenden Mittwoch (07.12.2011) ist die Java User Group Hamburg in unseren Räumen zu Gast. Ich werde im Rahmen dieses Treffens den Vortrag &#8220;Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI&#8221; halten. Im Vortrag werden anhand der Web-Applikation &#8220;Friendly Invaders&#8221; alle Konzepte, die CDI mit sich bringt, vorgestellt.</p>
<h3><span class="Apple-style-span" style="font-weight: bold">Worum geht es?</span></h3>
<p>Was bis jetzt nur mit der Unterstützung von Frameworks wie Spring möglich war, möchte EJB 3.1 nun auch allein können: typsichere Dependency Injection von Managed Beans aller Art, innerhalb von Java-Kontexten, die über einen eigenen Lebenszyklus verfügen. Möglich macht es die &#8220;Contexts and Dependency Injection for Java EE&#8221; (CDI).<br />
Dieser Vortrag stellt die neuen Konzepte und Sprachmittel, die dem Entwickler mit CDI zur Verfügung stehen, an einer durchgängigen Beispielanwendung vor, darunter Dependency Injection, Qualifier, Scores und Contexts, Interzeptoren sowie Dekoratoren, Events und Produzenten.</p>
<h3><span class="Apple-style-span" style="font-weight: bold">Wann und wo?</span></h3>
<p>Mittwoch 07.12.2011, 19.00 Uhr<br />
<a title="Holisticon AG - Google Maps" href="http://maps.google.de/maps/place?cid=7904096413017302147&amp;q=Holisticon+AG+Projektmanagement,+Friedensallee,+Hamburg&amp;hl=de&amp;ie=UTF8&amp;ll=53.561202,9.908059&amp;spn=0.000013,0.000021&amp;t=m&amp;z=16&amp;vpsrc=0" target="_blank"> Holisticon AG<br />
Friedensallee 120<br />
22763 Hamburg</a></p>
<p>Unser Firmensitz befindet sich im Hinterhof.<br />
Ich freue mich auf Euer Kommen und eine spannende Veranstaltung.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/12/jug-hh-zu-gast-freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="JUGHH zu Gast: Freundliche Eindringlinge &#8211; Moderne Web-Applikationen mit CDI" data-url="http://blog.holisticon.de/2011/12/jug-hh-zu-gast-freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/12/jug-hh-zu-gast-freundliche-eindringlinge-moderne-web-applikationen-mit-cdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPM meets Java EE: Automatisierte Leistungsabrechnung bei der HanseMerkur Versicherung</title>
		<link>http://blog.holisticon.de/2011/11/bpm-meets-java-ee-automatisierte-leistungsabrechnung-bei-der-hansemerkur-versicherung/</link>
		<comments>http://blog.holisticon.de/2011/11/bpm-meets-java-ee-automatisierte-leistungsabrechnung-bei-der-hansemerkur-versicherung/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 08:11:35 +0000</pubDate>
		<dc:creator>Holisticon AG</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[BPM/SOA]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[Geschäftsprozesse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Leistungsabrechnung]]></category>
		<category><![CDATA[Prozessmanagement]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Versicherung]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3673</guid>
		<description><![CDATA[BPM meets Java EE: Automatisierte Leistungsabrechnung bei der HanseMerkur Versicherung Jo Ehm und Olaf Fricke JavaSPEKTRUM Ausgabe 6/2011 Ende 2008 startete die HanseMerkur Versicherung eine BPM/SOA-Initiative mit der Vision, die vormals monolithische und systemorientierte Sichtweise der hausinternen Informationstechnik gezielt der Prozess- und Serviceorientierung weichen zu lassen. Im Einzelnen bedeutete dies die Bereitstellung einer entsprechenden Infrastruktur, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left"><strong><a href="http://blog.holisticon.de/wp-content/uploads/2011/11/js_11_062.jpg"><img class="alignleft size-full wp-image-3683 colorbox-3673" src="http://blog.holisticon.de/wp-content/uploads/2011/11/js_11_062.jpg" alt="JavaSPEKTRUM 6/2011" width="154" height="208" /></a>BPM meets Java EE:<br />
Automatisierte Leistungsabrechnung bei der HanseMerkur Versicherung</strong><br />
Jo Ehm und Olaf Fricke<br />
JavaSPEKTRUM Ausgabe 6/2011</p>
<p>Ende 2008 startete die HanseMerkur Versicherung eine BPM/SOA-Initiative mit der Vision, die vormals monolithische und systemorientierte Sichtweise der hausinternen Informationstechnik gezielt der Prozess- und Serviceorientierung weichen zu lassen. Im Einzelnen bedeutete dies die Bereitstellung einer entsprechenden Infrastruktur, die Entwicklung einer Basisarchitektur und darauf aufsetzend Schritt für Schritt eine weitgehende Ablösung der bestehenden Leistungsabrechnungssysteme durch ablauffähige Prozessbeschreibungen, wiederverwendbare Komponenten und Services auf Basis der Java Enterprise Edition.</p>
<p>In ihrem Artikel beleuchten Jo Ehm und Olaf Fricke (HanseMerkur) die technischen Details der Umsetzung von BPM/SOA bei der HanseMerkur Versicherung: das Design und die Entwicklung einer Komponenten- und Servicearchitektur auf der Basis von EJB3 unter JBoss, das dazu entwickelte Framework mit einer ComponentRegistry, die den parallelen Betrieb verschiedener Versionen der gleichen Services, den versionierten Zugriff sowie den Austausch dieser Services zur Laufzeit ermöglicht, die Modellierung, Orchestrierung und Automatisierung der Geschäftsprozesse mit Hilfe der inubit BPM-Suite und die Best Practices im Bereich des Testens &#8211; von UnitTests bis hin zu FIT-Tests für den Fachbereich.</p>
<p>Der komplette Artikel ist online zugänglich im <a title="Archiv JavaSPEKTRUM" href="http://www.sigs-datacom.de/fachzeitschriften/javaspektrum/archiv/artikelansicht.html?tx_mwjournals_pi1%5Bpointer%5D=0&amp;tx_mwjournals_pi1%5Bmode%5D=1&amp;tx_mwjournals_pi1%5BshowUid%5D=7027" target="_blank">Archiv des JavaSPEKTRUMs</a>.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/11/bpm-meets-java-ee-automatisierte-leistungsabrechnung-bei-der-hansemerkur-versicherung/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="BPM meets Java EE: Automatisierte Leistungsabrechnung bei der HanseMerkur Versicherung" data-url="http://blog.holisticon.de/2011/11/bpm-meets-java-ee-automatisierte-leistungsabrechnung-bei-der-hansemerkur-versicherung/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/11/bpm-meets-java-ee-automatisierte-leistungsabrechnung-bei-der-hansemerkur-versicherung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Call for Papers: SEACON 2012</title>
		<link>http://blog.holisticon.de/2011/11/call-papers-seacon-2012/</link>
		<comments>http://blog.holisticon.de/2011/11/call-papers-seacon-2012/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 07:13:22 +0000</pubDate>
		<dc:creator>Holisticon AG</dc:creator>
				<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Call for Papers]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Seacon]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3477</guid>
		<description><![CDATA[Am 4. und 5. Juni 2012 geht die SEACON in die nunmehr vierte Runde &#8211; wie immer mit Holisticon als Ideengeber, Sponsor und Aussteller. Die Mischung aus klassischen Vorträgen und alternativen Formaten wie Open Space, Fishbowl oder Pecha Kucha rund um aktuelle Themen der Softwareentwicklung hat sich bewährt. Auch der in diesem Jahr erstmalig nach [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-3478 colorbox-3477" style="margin-right: 10px;" src="http://blog.holisticon.de/wp-content/uploads/2011/11/SEACON2012-Logo.jpg" alt="" width="248" height="62" />Am 4. und 5. Juni 2012 geht die SEACON in die nunmehr vierte Runde &#8211; wie immer mit Holisticon als Ideengeber, Sponsor und Aussteller.</p>
<p>Die Mischung aus klassischen Vorträgen und alternativen Formaten wie Open Space, Fishbowl oder Pecha Kucha rund um aktuelle Themen der Softwareentwicklung hat sich bewährt. Auch der in diesem Jahr erstmalig nach der SEACON durchgeführte Architekturtag wurde von den Teilnehmern gut angenommen. Deshalb wird es auch im kommenden Jahr wieder einen Architekturtag geben (6. Juni). Um diese drei Tage informativ und abwechslungsreich zu gestalten, suchen die Fachbeiräte von SEACON und Architekturtag praxisrelevante Beiträge. Die Details zum Call for Papers sind auf der <a href="http://www.sigs-datacom.de/seacon2011/aktuelles/call-for-papers-2012.html" target="_blank">SEACON-Website</a> zu finden.<span id="more-3477"></span></p>
<p>Die SEACON steht 2012 unter dem Motto &#8220;Denkzelle oder Lernfabrik: Innovation in kleinen und großen Unternehmen&#8221;. Woran denken die meisten von uns, wenn sie das Wort &#8220;Konzern&#8221; hören? Bürokratie. Hierarchie. Starre Strukturen, die Innovation im Keim ersticken. Diese Innovation findet der landläufigen Meinung nach in kleineren Einheiten statt: Start-ups und Netzwerke von Freiberuflern und Einzelunternehmern. Viele dieser &#8220;jungen Kreativen&#8221; haben früher selbst in Konzernen gearbeitet. Sie sind dann aus diesen Strukturen ausgebrochen, um es selbst zu versuchen – und es dabei vor allem besser zu machen. Und manchmal stellen sie fest, dass viele der &#8220;alten&#8221; Vorgehensweisen, die sie für unnötig oder übertrieben hielten, durchaus sinnvoll sind. Anders herum können die Konzerne von den &#8220;Kleinen&#8221; lernen: etwa, wie man erfolgreich in Netzwerken arbeitet, und wie man die Fähigkeiten und Wünsche des Einzelnen achtet und nutzt. Um diese Lerneffekte soll es auf der SEACON 2012 gehen. Deshalb freuen wir uns auf Vortragende und Teilnehmer aus großen und kleinen Unternehmen. Sie sollen die SEACON als Plattform für den Erfahrungsaustausch nutzen, voneinander und miteinander lernen. Und sollten auch Sie Großunternehmen für verkrustet und langsam halten, dann denken Sie mal an Google und Apple. Vielleicht ist &#8220;groß&#8221; doch gar nicht so übel&#8230;</p>
<p>&nbsp;</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/11/call-papers-seacon-2012/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Call for Papers: SEACON 2012" data-url="http://blog.holisticon.de/2011/11/call-papers-seacon-2012/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/11/call-papers-seacon-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gespart – ein Software­leben lang</title>
		<link>http://blog.holisticon.de/2011/11/gespart-%e2%80%93-ein-software%c2%adleben-lang/</link>
		<comments>http://blog.holisticon.de/2011/11/gespart-%e2%80%93-ein-software%c2%adleben-lang/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 08:19:21 +0000</pubDate>
		<dc:creator>Stefan Heldt</dc:creator>
				<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Kosteneinsparung]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Release Management]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3307</guid>
		<description><![CDATA[Gespart – ein Software­leben lang Entwicklung, Auslieferung und Betrieb von Software durch Automatisierung optimieren Enno Thieleke und Stefan M. Heldt, Business Technology 4.2011 Waschen Sie Ihre Wäsche per Hand? Sicher ist die Investition in eine Waschmaschine nicht sehr interessant. Dennoch muss sie sein, um Ihnen aufwändige Handarbeit zu ersparen und damit Personalkosten zu reduzieren. Ganz [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://it-republik.de/business-technology/bt-magazin-ausgaben/Business-Value-000476.html" target="_blank"><img class="alignleft colorbox-3307" title="Cover Business Technology 4.2011" src="http://it-republik.de/zonen/magazine/ausgaben/pspic/cover_original/64/BTM_4_20114eb79be69da74.png" alt="" width="200" height="283" /></a>Gespart – ein Software­leben lang</strong><br />
Entwicklung, Auslieferung und Betrieb von Software durch Automatisierung optimieren</p>
<p>Enno Thieleke und Stefan M. Heldt, <a href="http://it-republik.de/business-technology/bt-magazin-ausgaben/Business-Value-000476.html" target="_blank">Business Technology 4.2011</a></p>
<p>Waschen Sie Ihre Wäsche per Hand? Sicher ist die Investition in eine Waschmaschine nicht sehr interessant. Dennoch muss sie sein, um Ihnen aufwändige Handarbeit zu ersparen und damit Personalkosten zu reduzieren. Ganz nebenbei hebt es sicher Ihre Stimmung, nur noch die Maschine füllen und starten zu müssen. Ähnlich verhält es sich mit Software Configuration Management, Build Management, Release Management, Qualitätsmetriken und diversen Formen der Testabsicherung. Diese machen es IT-Abteilungen möglich, Software professionell zu entwickeln, auszuliefern und zu betreiben.</p>
<p>Die aufgezählten Aktivitäten werden von den Ausführenden größtenteils als stetig wiederkehrend und wenig kreativ betrachtet. Sie eignen sich damit perfekt, um automatisiert zu werden. Diese Bestrebung wird von den Geldgebern jedoch häufig als reiner Kostenblock interpretiert. Wir zeigen in unserem Beitrag in der aktuellen Ausgabe der Business Technology auf, wie Sie mit der Automatisierung nicht nur Ihre Entwickler glücklich machen, sondern obendrein auch noch Geld sparen. Außerdem legen Sie den Grundstein, um die Qualität Ihres Softwareprodukts konsequent zu messen und zu verbessern. Die Wäsche wird einfach blütenrein.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/11/gespart-%e2%80%93-ein-software%c2%adleben-lang/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Gespart – ein Software­leben lang" data-url="http://blog.holisticon.de/2011/11/gespart-%e2%80%93-ein-software%c2%adleben-lang/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/11/gespart-%e2%80%93-ein-software%c2%adleben-lang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Softwerkskammer Hamburg, die Software Craftsmanship Community</title>
		<link>http://blog.holisticon.de/2011/10/softwerkskammer-hamburg-die-software-craftsmanship-community/</link>
		<comments>http://blog.holisticon.de/2011/10/softwerkskammer-hamburg-die-software-craftsmanship-community/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:57:18 +0000</pubDate>
		<dc:creator>Roland Jülich</dc:creator>
				<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Rundumsichtig]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Hamburg]]></category>
		<category><![CDATA[Software Craftsmanship]]></category>
		<category><![CDATA[Softwerkskammer]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=2985</guid>
		<description><![CDATA[Das erste internationale Software Craftsmanship and Testing Camp in Deutschland, die SoCraTes, liegt nun schon einige Wochen zurück. Am 28.09.2011 ist dazu nun die erste lokale Community in Karlsruhe an den Start gegangen. Während der vergangenen Projekte hatte ich in den Gesprächen mit Kunden und Kollegen bisher stets den Eindruck, dass auch in Hamburg durchaus [...]]]></description>
			<content:encoded><![CDATA[<p>Das erste internationale Software Craftsmanship and Testing Camp in Deutschland, die <a title="SoCraTes" href="http://socrates2011.pbworks.com/w/page/36608238/SoCraTes%202011">SoCraTes</a>, liegt nun schon einige Wochen zurück. Am 28.09.2011 ist dazu nun die erste lokale Community in Karlsruhe an den Start gegangen.</p>
<p>Während der vergangenen Projekte hatte ich in den Gesprächen mit Kunden und Kollegen bisher stets den Eindruck, dass auch in Hamburg durchaus großer Bedarf für ein Forum zum Thema Software Craftsmanship besteht. Deshalb wird es höchste Zeit auch in Hamburg eine solche Community zu gründen, um allen interessierten und engagierten Entwicklern die Möglichkeit zu bieten sich außerhalb des täglichen Arbeitsumfeldes zu Themen wie Agile Developer Skills, Clean Code, TDD, XP, Know-how-Transfer in Entwicklerteams etc. auszutauschen.</p>
<p>Nun steht der Termin, am <strong>25.10.2011</strong> geht&#8217;s endlich los! Zunächst soll dies eine Möglichkeit sein Networking mit anderen agilen Entwicklern und jenen die es werden wollen zu betreiben. Ich werde bei der Gelegenheit auch über die Eindrücke von der SoCraTes als Mutter der Software Craftsmanship Bewegung in Deutschland erzählen. Aber in allererster Linie sind natürlich eure Ansichten und Erfahrungen zum Thema Software Craftsmanship gefragt. Deshalb möchte ich mit Allen Ideen für Themen, Workshops, Coding Dojos oder generell zum Format der Veranstaltung als Hamburger Spin-Off der SoCraTes sammeln. Also bin ich schon sehr gespannt auf das erste Treffen und werde auch an dieser Stelle regelmäßig von den Ergebnissen berichten.</p>
<p>Mehr Infos zum Event gibt es hier: <a href="https://www.xing.com/events/softwerkskammer-hamburg-software-craftsmanship-community-818260">https://www.xing.com/events/softwerkskammer-hamburg-software-craftsmanship-community-818260</a></p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/10/softwerkskammer-hamburg-die-software-craftsmanship-community/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Softwerkskammer Hamburg, die Software Craftsmanship Community" data-url="http://blog.holisticon.de/2011/10/softwerkskammer-hamburg-die-software-craftsmanship-community/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/10/softwerkskammer-hamburg-die-software-craftsmanship-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feuriges Pecha-Kucha-Video von der SEACON 2011</title>
		<link>http://blog.holisticon.de/2011/10/feuriges-pecha-kucha-video-von-der-seacon-2011/</link>
		<comments>http://blog.holisticon.de/2011/10/feuriges-pecha-kucha-video-von-der-seacon-2011/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 08:09:32 +0000</pubDate>
		<dc:creator>Holger Koschek</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Feuerwehr]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Pecha Kucha]]></category>
		<category><![CDATA[Seacon]]></category>
		<category><![CDATA[Werte]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=3020</guid>
		<description><![CDATA[Mein Pecha-Kucha-Vortrag &#8220;Die Feuerwehr: Ein agiles Team?&#8221; von der SEACON 2011 ist bei Vimeo als Videomitschnitt verfügbar. Vielen Dank an Bernd Oestereich, Regisseur, Kameramann und Produzent in Personalunion. In der Softwareentwicklung, insbesondere in agilen Projekten, steht das Team im Mittelpunkt. Der Teambegriff ist durch Werte und Prinzipien wie Eigenverantwortung, Vertrauen und offene Kommunikation geprägt. Auch [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-3022 colorbox-3020" style="margin-right: 20px" src="http://blog.holisticon.de/wp-content/uploads/2011/10/FeuerwehrPechaKuchaVimeo.jpg" alt="" width="191" height="107" />Mein Pecha-Kucha-Vortrag &#8220;Die Feuerwehr: Ein agiles Team?&#8221; von der <a href="http://www.sigs-datacom.de/seacon2011/seacon2011.html" target="_blank">SEACON 2011</a> ist bei Vimeo als <a href="http://vimeo.com/groups/98525/videos/27425102" target="_blank">Videomitschnitt</a> verfügbar. Vielen Dank an Bernd Oestereich, Regisseur, Kameramann und Produzent in Personalunion.</p>
<p>In der Softwareentwicklung, insbesondere in agilen Projekten, steht das Team im Mittelpunkt. Der Teambegriff ist durch Werte und Prinzipien wie Eigenverantwortung, Vertrauen und offene Kommunikation geprägt. Auch in anderen Domänen gibt es Teams – aber gilt dort dasselbe Begriffsverständnis? Wie ist beispielsweise die Besatzung eines Feuerwehrfahrzeugs organisiert, und was kann ein Softwareentwicklungsteam daraus lernen? Dieser Frage geht der Pecha Kucha nach.</p>
<p><a href="http://vimeo.com/groups/98525/videos/27425102" target="_blank">&#8220;Die Feuerwehr: Ein agiles Team?&#8221; (Pecha Kucha, SEACON 2011) auf Vimeo</a></p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/10/feuriges-pecha-kucha-video-von-der-seacon-2011/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Feuriges Pecha-Kucha-Video von der SEACON 2011" data-url="http://blog.holisticon.de/2011/10/feuriges-pecha-kucha-video-von-der-seacon-2011/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/10/feuriges-pecha-kucha-video-von-der-seacon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EJB 3.1 professionell: Expertenwissen aus erster Hand</title>
		<link>http://blog.holisticon.de/2011/10/ejb-3-1-professionell-expertenwissen-aus-erster-hand/</link>
		<comments>http://blog.holisticon.de/2011/10/ejb-3-1-professionell-expertenwissen-aus-erster-hand/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 08:10:05 +0000</pubDate>
		<dc:creator>Roman Schlömmer</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Publikation]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[EJB 3.1]]></category>
		<category><![CDATA[JPA]]></category>

		<guid isPermaLink="false">http://blog.holisticon.de/?p=2990</guid>
		<description><![CDATA[Als Nachfolger zu unserem erfolgreichen Buch &#8220;EJB 3 professionell&#8221; erschien unlängst die zweite, aktualisierte und erweiterte Auflage &#8220;EJB 3.1 professionell &#8211; Grundlagen- und Expertenwissen zu Enterprise Java Beans 3.1&#8243;. Wie schon beim Vorgänger taten sich auch dieses Mal einige unserer Kollegen von Holisticon zusammen, um ihr Wissen und ihre Praxiserfahrung in das Buch einfließen zu [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_2992" class="wp-caption alignright" style="width: 194px"><a href="http://blog.holisticon.de/wp-content/uploads/2011/09/EJB31pro_184x268.jpg"><img class="size-full wp-image-2992 colorbox-2990" src="http://blog.holisticon.de/wp-content/uploads/2011/09/EJB31pro_184x268.jpg" alt="EJB 3.1 professionell" width="184" height="268" /></a><p class="wp-caption-text">EJB 3.1 professionell</p></div>
<p>Als Nachfolger zu unserem erfolgreichen Buch &#8220;EJB 3 professionell&#8221; erschien unlängst die zweite, aktualisierte und erweiterte Auflage &#8220;EJB 3.1 professionell &#8211; Grundlagen- und Expertenwissen zu Enterprise Java Beans 3.1&#8243;.</p>
<p>Wie schon beim Vorgänger taten sich auch dieses Mal einige unserer Kollegen von Holisticon zusammen, um ihr Wissen und ihre Praxiserfahrung in das Buch einfließen zu lassen. Unter ihnen ein Mitglied der EJB 3.1 Expert Group sowie Mitglieder der Expert Groups zu den kommenden Spezifikationen von EJB und CDI. Aber auch (oder gerade?) die vielen wertvollen Anmerkungen der Leser des Vorgängers sind in das Buch eingeflossen &#8211; danke an dieser Stelle noch einmal für die eingegangenen Hinweise.</p>
<p>Über EJB 3.1 hinaus liefern die Autoren fundierten Einblick in die Java Persistence API 2.0 – der Persistenzstandard für die gesamte Java-Plattform (Java SE und EE). Abgerundet wird das Buch durch projektrelevante Themen wie Contexts and Dependency Injection (CDI), Sicherheit und Softwaretest. Das Themenspektrum und viele Praxishinweise sowie Checklisten machen das Buch nicht nur zum Grundlagenwerk, sondern auch zum ständigen Begleiter und Nachschlagewerk im Projekteinsatz.</p>
<p>Weitere Informationen finden Sie auf unserer <a title="Publikation: EJB 3.1 professionell" href="http://www.holisticon.de/cms/EJB31Buch/Startseite">Webseite</a> und auf der <a title="dpunkt.verlag - EJB 3.1 professionell" href="http://www.dpunkt.de/buecher/3130.html" target="_blank">Verlagsseite</a>.</p>
<div style="height:33px; padding-top:2px; padding-bottom:2px; clear:both;" class="zare366"><div style="float:left; width:90px; " class="zare366_google1"> 
				<g:plusone size="medium" href="http://blog.holisticon.de/2011/10/ejb-3-1-professionell-expertenwissen-aus-erster-hand/" ></g:plusone>
			</div><div style="float:left; width:110px; padding-left:10px;" class="zare366_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="EJB 3.1 professionell: Expertenwissen aus erster Hand" data-url="http://blog.holisticon.de/2011/10/ejb-3-1-professionell-expertenwissen-aus-erster-hand/">Tweet</a> 
			</div></div>
		<div style="display:none;"><a href="http://www.news365live.com">news and informations</a>&nbsp;<a href="http://news365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a><a href="http://worldnews365online.com">automotive,business,crime,health,life,politics,science,technology,travel</a></div><div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.holisticon.de/2011/10/ejb-3-1-professionell-expertenwissen-aus-erster-hand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

