<?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>javathreads.de &#187; Java</title>
	<atom:link href="http://javathreads.de/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://javathreads.de</link>
	<description>Blog rund um Java und Web Entwicklung</description>
	<lastBuildDate>Wed, 02 Nov 2011 10:37:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pr&#228;sentation &#8220;JSR-299 (CDI), Weld &amp; the Future of Seam&#8221; von Dan Allen</title>
		<link>http://javathreads.de/2011/10/praesentation-jsr-299-cdi-weld-the-future-of-seam-von-dan-allen/</link>
		<comments>http://javathreads.de/2011/10/praesentation-jsr-299-cdi-weld-the-future-of-seam-von-dan-allen/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 09:36:59 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[JSR 299]]></category>
		<category><![CDATA[Seam]]></category>
		<category><![CDATA[Seam 3]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2641</guid>
		<description><![CDATA[Im Pr&#228;sentation &#252;ber die Themen &#8220;JSR-299 (CDI), Weld &#038; the Future of Seam&#8221; die zwar bereits gut ein Jahr alt aber immer noch sehr informativ:






]]></description>
			<content:encoded><![CDATA[<p>Im Pr&#228;sentation &#252;ber die Themen &#8220;JSR-299 (CDI), Weld &#038; the Future of Seam&#8221; die zwar bereits gut ein Jahr alt aber immer noch sehr informativ:</p>
<div style="text-align:center">
<div style="width:595px;height:497px" id="__ss_5255858">
<iframe src="http://www.slideshare.net/slideshow/embed_code/5255858?rel=0" width="595" height="497" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"></div>
</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2011/10/praesentation-jsr-299-cdi-weld-the-future-of-seam-von-dan-allen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: Mit Java EE 6 unter Eclipse Helios und mit Maven Unterst&#252;tzung starten</title>
		<link>http://javathreads.de/2011/05/tutorial-mit-java-ee-6-unter-eclipse-helios-und-mit-maven-unterstuetzung-starten/</link>
		<comments>http://javathreads.de/2011/05/tutorial-mit-java-ee-6-unter-eclipse-helios-und-mit-maven-unterstuetzung-starten/#comments</comments>
		<pubDate>Fri, 13 May 2011 21:47:07 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java EE 6]]></category>
		<category><![CDATA[JBoss Tools]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2557</guid>
		<description><![CDATA[Ziel des Tutorials
Am Ende dieses Tutorials ist ein deploytes Java EE 6 Projekt mit JSF 2, CDI, EJB 3.1 und JPA 2 auf dem JBoss 6 vorhanden und aufrufbar. Dabei wird die Eclipse WTP Untest&#252;tzung funktionieren, der JBoss direkt aus Eclipse heraus gestartet und Maven als Build Tool verwendet werden.



Kleine Anmerkung vorab: Nicht von der [...]]]></description>
			<content:encoded><![CDATA[<h3>Ziel des Tutorials</h3>
<p>Am Ende dieses Tutorials ist ein deploytes Java EE 6 Projekt mit JSF 2, CDI, EJB 3.1 und JPA 2 auf dem JBoss 6 vorhanden und aufrufbar. Dabei wird die Eclipse WTP Untest&#252;tzung funktionieren, der JBoss direkt aus Eclipse heraus gestartet und Maven als Build Tool verwendet werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseWTPHotDeploymentBrowser.jpg" alt="" title="Eclipse WTP Hot Deployment - Browser" width="630" height="233" class="alignnone size-full wp-image-2768" />
</div>
<p>Kleine Anmerkung vorab: Nicht von der L&#228;nge des Tutorials abschrecken lassen &#8211; es sind eigentlich nur sehr viele Bilder. Kennt man die Technologien und Tools dauert das Erstellen dieses Projekts nur wenige Minuten.</p>
<p>Aufbau des Tutorials:</p>
<ul class="gliederung">
<li>
<a href="#SoftwareUndTools">Herunterladen der notwendigen Software und Tools</a></p>
<ul class="subGliederung">
<li><a href="#SoftwareUndToolsEclipse">Eclipse herunterladen<a/></li>
<li><a href="#SoftwareUndToolsJBoss">JBoss AS herunterladen</a></li>
<li><a href="#SoftwareUndToolsMaven">Maven herunterladen</a></li>
</ul>
</li>
<li><a href="#EclipseKonfigurieren">Eclipse konfigurieren</a>
<ul class="subGliederung">
<li><a href="#EclipseKonfigurierenJBossTools">JBoss Tools</a></li>
<li><a href="#EclipseKonfigurierenJBossServerRuntime">JBoss 6 AS Server Runtime</a></li>
<li><a href="#EclipseKonfigurierenMaven">Maven</a></li>
<li><a href="#EclipseKonfigurierenMavenExtrasWTP">Maven Extras &#8211; WTP </a></li>
</ul>
<li><a href="#JavaEE6Project">Java EE 6 Projekt erstellen</a>
<ul class="subGliederung">
<li><a href="#JavaEE6ProjectMaven">Projekt mit Maven generieren</a></li>
<li><a href="#JavaEE6ProjectEclipseJSF">JSF Capabilities hinzuf&#252;gen</a></li>
<li><a href="#JavaEE6ProjectEclipseCDI">CDI Support hinzuf&#252;gen</a></li>
<li><a href="#JavaEE6ProjectProjektDeployen">Projekt auf den JBoss deployen</a></li>
</ul>
</li>
<li><a href="#WieGehtEsWeiter">Wie geht es weiter?</a></li>
</ul>
<h3><a name="SoftwareUndTools" class="noLink">Herunterladen und Installieren aller ben&#246;tigten Software und Tools</a></h3>
<h4><a name="SoftwareUndToolsEclipse" class="noLink">Eclipse Helios f&#252;r Java EE Entwicklung herunterladen</a></h4>
<p>Als erstes wird Eclipse in der Java EE Entwickler Version von <a href="http://www.eclipse.org/downloads" title="Eclipse Helios f&#252;r die Java EE Entwicklung">eclipse.org</a> heruntergeladen.</p>
<div class="singleImgDiv">
<a href="http://www.eclipse.org/downloads" title="Eclipse Helios f&#252;r die Java EE Entwicklung"><img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseHeliosJeeDownload.png" alt="" title="Eclipse Helios f&#252;r die Java EE Entwicklung" width="630" height="143" class="borderGray alignnone size-full wp-image-2566" /></a>
</div>
<p>Das heruntergeladene Archiv am Ort deiner Wahl entpacken &#8211; z.B. einfach im Laufwerk C.</p>
<h4><a name="SoftwareUndToolsJBoss" class="noLink">JBoss AS 6</a></h4>
<p>In diesem Tutorial wird der JBoss 6 Final als Application Server verwendet denn dieser implementiert die <a href="http://javathreads.de/2010/01/java-ee-6-web-profile-technologien">Java EE Web Profile</a> Spezifikation. Der JBoss AS kann unter <a href="http://www.jboss.org/jbossas/downloads.html" title="JBoss Application Server 6 Final">jboss.org</a> heruntergeladen werden.</p>
<div class="singleImgDiv">
<a href="http://www.jboss.org/jbossas/downloads.html" title="JBoss Application Server 6 Final"><br />
<img src="http://javathreads.de/data/uploads/2011/05/1105_JBossAs6Download.png" alt="" title="JBoss Application Server 6 Final" width="630" height="129" class="borderGray alignnone size-full wp-image-2569" /><br />
</a>
</div>
<p>Nach dem Herunterladen das Archiv auch wieder am Ort deiner Wahl entpacken &#8211; kann z.B. auch wieder das Laufwerk C: sein.</p>
<h4><a name="SoftwareUndToolsMaven" class="noLink">Maven 3</a></h4>
<p>Um den Projektstart zu vereinfachen und alle Abh&#228;ngigkeiten automatisch zu beziehen wird Maven 3 verwendet. Sp&#228;ter wird auch das Grundger&#252;st unseres ersten Java EE Hello World Projekts mit Maven generiert. Somit muss Maven 3 &#8220;installiert&#8221; werden. Maven kann von <a href="http://maven.apache.org">http://maven.apache.org</a> heruntergeladen werden:</p>
<div class="singleImgDiv">
<a href="http://maven.apache.org/download.html"><img src="http://javathreads.de/data/uploads/2011/05/1105_Maven303Download.png" alt="" title="Maven 3.0.3" width="630" class="alignnone size-full wp-image-2622" /></a>
</div>
<p>Maven muss auch wieder an einem Ort deiner Wahl entpackt und anschlie&#223;end das <code>maven/bin</code> Verzeichnis im Pfad (Umgebungsvariable <code>PATH</code>) angegeben werden damit der Befehl <code>mvn</code> in der Kommandozeile gefunden wird.<br />
<br/>Installationsanleitung f&#252;r Linux (Ubunutu 11.04) <span id="mavenAnleitungLinuxDivLink" class="link" onclick="javascript:showMavenLinuxInstall()">anzeigen</span>.</p>
<div id="mavenAnleitungLinuxDiv" style="display:none">
Weil Maven 3 bisher noch nicht im Package Repository vorhanden ist muss es von Hand installiert werden.<br />
Herunterladen und entpacken der letzten Version:</p>
<div class="codebox">
$ cd /home/&lt;myusername&gt;<br />
$ wget http://ftp.heanet.ie/mirrors/www.apache.org/dist//maven/binaries/apache-maven-3.0.3-bin.tar.gz<br />
$ tar -xzvf apache-maven-3.0.3-bin.tar.gz
</div>
<p>Nach <code>/usr/local</code> kopieren:</p>
<div class="codebox">
$ sudo mkdir /usr/local/apache-maven<br />
$ sudo cp -R apache-maven-3.0.3 /usr/local/apache-maven/
</div>
<p>Anschlie&#223;end muss dieser Maven Ordner noch mit in die Pfad-Umgebungsvariable aufgenommen werden. In diesem Schritt werden gleich noch weitere ben&#246;tigte Umgebungsvariablen definiert:</p>
<div class="codebox" style="margin-top: 5px;">
$ sudo vi /etc/environment
</div>
<p>Neue Umgebungsvariablen hinzuf&#252;gen:</p>
<div class="codebox">
JAVA_HOME=/usr/lib/jvm/java-6-sun<br />
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3<br />
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.3<br />
M2=/usr/local/apache-maven/apache-maven-3.0.3/bin
</div>
<p>Und die Variable PATH noch um folgenden Pfad erweitern:</p>
<div class="codebox">
/usr/local/apache-maven/apache-maven-3.0.3/bin
</div>
<p>Sieht bei mir anschlie&#223;end so aus:</p>
<div class="codebox">
PATH=&#8221;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/apache-maven/apache-maven-3.0.3/bin&#8221;
</div>
<p>Nach einem erneuten Login in der Konsole pr&#252;fen ob Maven l&#228;uft:</p>
<div class="codebox">
markus@Lap:~$ mvn -version<br />
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)<br />
Maven home: /usr/local/apache-maven/apache-maven-3.0.3<br />
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.<br />
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre<br />
Default locale: de_DE, platform encoding: UTF-8<br />
OS name: &#8220;linux&#8221;, version: &#8220;2.6.38-8-generic&#8221;, arch: &#8220;i386&#8243;, family: &#8220;unix&#8221;
</div>
</div>
<h3><a name="EclipseKonfigurieren" class="noLink">Eclipse konfigurieren</a></h3>
<p>Zuvor wurde bereits die  die aktuelle  Eclipse Helios (3.6) Java EE IDE heruntergeladen sowie entpackt und diese sollte sp&#228;testens jetzt gestartet werden. Beim ersten Start von Eclipse wir gefragt wo man seinen Workspace hinlegen m&#246;chte. Wieder einfach einen Ort deiner Wahl angeben und das H&#228;ckchen bei &#8220;nicht noch einmal fragen&#8221; setzen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseHeliosJeeAbout.jpg" alt="" title="Eclipse Helios f&#252;r Java EE Entwickler" width="562" height="182" class="alignnone size-full wp-image-2715" />
</div>
<p>F&#252;r das Java EE Projekt mit Maven Unterst&#252;tzung werden zum einen die <a href="http://www.jboss.org/tools">JBoss Tools</a> und zum anderen das <a href="http://m2eclipse.sonatype.org/">Maven2Eclipse</a> Plugin ben&#246;tigt. Dabei spielen die JBoss Tools bei der Entwicklung von Java EE Projekten unter Eclipse generell eine sehr wichtige Rollen denn sie decken die meisten Themen wie z.B. JSF 2.0, CDI oder JPA sehr gut ab.</p>
<h4><a name="EclipseKonfigurierenJBossTools" class="noLink">JBoss Tools Eclipse Plugin</h3>
</h4>
<p>Die aktuelle Version 3.2 der JBoss Tools gibt es dabei noch gar nicht so lange denn sie wurde erst Mitte Februar Final. Die JBoss Tools werden am einfachsten &#252;ber die offizielle Update Seite installiert: <a href="http://download.jboss.org/jbosstools/updates/stable/helios/">http://download.jboss.org/jbosstools/updates/stable/helios/</a><br />
Dazu in Eclipse im &#8220;Hauptmen&#252;->Help->Install New Software&#8230;&#8221; klicken. Im aufkommenden Dialog den Button &#8220;Add&#8221; klicken um die Update Seite hinzuzuf&#252;gen:</p>
<div class="singleImgDiv">
<a href="http://javathreads.de/data/uploads/2011/05/1105_EclipseAddRepository.png"><img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseAddRepository.png" alt="" title="JBoss Tools Update Seite hinzuf&#252;gen" width="630" height="405" class="alignnone size-full wp-image-2586" /></a>
</div>
<p>Diesen Dialog mit dem Button &#8220;Add&#8221; beenden und anschlie&#223;end wird man erst einmal durch den Schriftzug &#8220;Pending&#8230;&#8221; sehen, dass das Repository geladen wird. Das kann unter Umst&#228;nden eine ganze Weile dauern:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossToolsAddRepPending.png" alt="" title="JBoss Tools Update Seite - Repository wird geladen" width="630" height="159" class="borderGray alignnone size-full wp-image-2588" />
</div>
<p>Sobald das Repository geladen wurde ist eine Liste mit allen m&#246;glichen Gruppen zu sehen. Die bisher bekanntesten Tools wie z.B. die JBoss AS Tools, Seam Tools oder Hibernate Tools befinden sich in der Gruppe &#8220;Web und Java EE Development&#8221;. Man k&#246;nnte jetzt alles durchgehen und nur die ben&#246;tigten Tools selektieren aber der Einfachheit halber selektiere ich &#8220;All JBoss Tools 3.2.0&#8243;:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossToolsAddRepList.png" alt="" title="JBoss Tools Update Seite - Tools Liste" width="630" height="361" class="alignnone size-full wp-image-2589" />
</div>
<p>Anschlie&#223;end den Button &#8220;Next&#8221; klicken. Jetzt werden die Abh&#228;ngigkeiten gepr&#252;ft und das dauert auch wieder eine kleine Ewigkeit.<br />
Sobald die Pr&#252;fung fertig ist sieht man noch einmal die Liste aller Tools die installiert werden sollen. In der Liste taucht sicherlich das ein oder andere Tool auf welches nicht wirklich ben&#246;tigt wird aber es schadet auch nicht. Den Dialog mit &#8220;Next&#8221; beenden.<br />
Auf dem letzten Dialog die Lizensvereinbarungen akzeptieren und den Button &#8220;Finish&#8221; klicken. Anschlie&#223;end beginnt die Installation der JBoss Tools:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossToolsInstalling-.jpg" alt="" title="Eclipse JBoss Tools - Installation" width="613" height="151" class="alignnone size-full wp-image-2728" />
</div>
<p>Die Installation verlangt einen Eclipse Neustart.</p>
<h4><a name="EclipseKonfigurierenJBossServerRuntime" class="noLink">JBoss Server Runtime konfigurieren</a></h4>
<p>Das sp&#228;tere Projekt soll direkt von Eclipse heraus in den JBoss Server deployt werden. Dazu muss der JBoss als Server Runtime Environment in Eclipse konfiguriert werden. Um das zu tun die Eclipse Eigenschaften aufrufen &#8220;Hauptmen&#252;->Window->Preferences&#8221; und die Optionen mit dem Wort &#8220;Server&#8221; filtern. Unter dem Punkt &#8220;Runtime Environments&#8221; wird der JBoss Server als Runtime hinzugef&#252;gt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/EclipseJBossServerRuntimeEnvironment.png" alt="" title="Eclipse Preferences - JBoss als Server Runtime konfigurieren" width="630" height="286" class="alignnone size-full wp-image-2606" />
</div>
<p>Den Button &#8220;Add&#8221; klicken und im n&#228;chsten Dialog unter &#8220;JBoss Community&#8221; den &#8220;JBoss 6.0 Runtime&#8221; auszuw&#228;hlen. Der Einfachheit halber direkt die Checkbox &#8220;Create a new local server&#8221; selektieren &#8211; das erspart die anschlie&#223;ende Konfiguration einer Server Instanz:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/EclipseJBoss6AndLocalServer.png" alt="" title="Eclipse JBoss 6 Runtime und Local Server" width="613" height="313" class="alignnone size-full wp-image-2607" />
</div>
<p>Mit dem Button &#8220;Next&#8221; in den letzten Dialog wechseln und dort das Verzeichnis ausw&#228;hlen indem der JBoss entpackt wurde (z.B. <code>C:\jboss-6.0.0</code>). Als JRE muss das in Eclipse konfigurierte JDK ausgew&#228;hlt werden. Unter Configuration default ausw&#228;hlen. Den Wizzard mit dem Button &#8220;Finish&#8221; beenden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossToolsRuntimeConfig1.jpg" alt="" title="Eclipse JBoss Runtime Konfiguration" width="613" height="341" class="alignnone size-full wp-image-2750" />
</div>
<p>Nun ist die konfigurierte Server Runtime aufgelistet und kann verwendet werden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossRuntime.jpg" alt="" title="Eclipse JBoss Runtime" width="630" height="247" class="alignnone size-full wp-image-2736" />
</div>
<p>In dem Server-Panel ist auch die lokale Instanz zu sehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/EclipseJBossRuntime.png" alt="" title="Eclipse JBoss Runtime Lokale Instanz" width="630" height="109" class="alignnone size-full wp-image-2608" />
</div>
<p>Als letzte Konfiguration der eingebetteten JBoss Server Instanz wird jetzt noch das Deployment-Verzeichnis ge&#228;ndert. Per default wird die deployte Anwendung im lokalen Workspace in einen versteckten Ordner deployt. Ich mag es lieber wenn meine Anwendung auch mit direkt in den JBoss deploy Ordner deployt wird und dann auch dort zu finden ist.<br />
Um das Deployment-Verzeichnis zu &#228;ndern mit einem Doppelklick auf die JBoss Server Instanz die Konfiguration &#246;ffnen. Anschlie&#223;end am unterem Ende des Fensters auf den Tab &#8220;Deployment&#8221; klicken. Auf der Deployment Seite nun die Einstellung &#8220;Use JBoss deploy folder&#8221; selektieren und die Einstellungen speichern:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossDeployFolder.jpg" alt="" title="Eclipse JBoss Settings Deployment-Verzeichnis" width="630" height="282" class="alignnone size-full wp-image-2826" />
</div>
<p>Nun kann der Server endlich durch klick auf den gr&#252;nen Pfeil gestartet werden &#8211; er sollte ohne Probleme hochfahren. In der Console sollte am Ende die Startdauer zu sehen sein:</p>
<div class="codebox">
22:03:02,852 INFO  [AbstractServer] Starting: JBossAS [6.0.0.Final "Neo"]<br />
&#8230;<br />
22:03:31,850 INFO  [org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS [6.0.0.Final "Neo"] Started in 28s:994ms
</div>
<p>Im Browser l&#228;sst sich der JBoss auch bereits aufrufen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossEmptyStartedBrowser.jpg" alt="" title="JBoss Tools Server Runtime gestartet" width="630" height="232" class="alignnone size-full wp-image-2674" />
</div>
<p>Wunderbar &#8211; der Server l&#228;uft =).</p>
<h4><a name="EclipseKonfigurierenMaven" class="noLink">Maven Unterst&#252;tzung in Eclipse</a></h4>
<p>Um Maven direkt aus Eclipse heraus verwenden zu k&#246;nnen ben&#246;tigt man das <a href="http://m2eclipse.sonatype.org/">m2eclipse Plugin von Sonatype</a>. Die Plugin Installation wird wieder &#252;ber das &#8220;Hauptmen&#252;->Help->Install New Software&#8230;&#8221; gestartet. In meiner Helios Version war die Update URL f&#252;r das m2eclipse Plugin bereits konfiguriert. Ansonsten einfach folgende Update URL hinzuf&#252;gen: <a href="http://m2eclipse.sonatype.org/sites/m2e">http://m2eclipse.sonatype.org/sites/m2e</a><br />
Ist dieses Update URL selektiert wird das Repository geladen. In diesem Fall ist nur ein Plugin selektierbar und das muss nat&#252;rlich selektiert werden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseMavenM2Eclipse.png" alt="" title="Eclipse Maven - m2eclipse Plugin installieren" width="630" height="359" class="alignnone size-full wp-image-2593" />
</div>
<p>Den Dialog mit &#8220;Next&#8221; weiterf&#252;hren.<br />
Anschlie&#223;end kommen wieder die Installationsdetails und die Lizensbedingungen. Den Wizzard mit &#8220;Finish&#8221; beenden und abwarten bis man aufgefordert wird Eclipse neu zu starten.<br />
Es kann sein, dass nach dem Neustart das Maven Plugin meldet, dass Eclipse mit einem JDK gestartet werden muss:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1104_EclipseMavenJDK.jpg" alt="" title="Eclipse Maven JDK Hinweis" width="602" height="192" class="alignnone size-full wp-image-2829" />
</div>
<p>In diesem Fall die Datei <code>eclipse.ini</code> &#246;ffnen (liegt direkt neben der Datei <code>eclipse.exe</code>) und unter dem Ausdruck <code>openFile</code> und oberhalb von <code>-vmargs</code> den Verweis auf die JDK angeben:</p>
<div class="codebox">
openFile<br />
-vm<br />
C:\Java\JDK\1.6\bin\javaw.exe<br />
-vmargs
</div>
<p>Mehr zu der Datei <code>eclipse.ini</code> findest du auch im <a href="http://wiki.eclipse.org/Eclipse.ini">Eclipse Wiki</a>.</p>
<p>Nach dem Neustart kann in den Eclipse Preferences (Hauptmen&#252;->Window->Preferences) die Maven Einstellungen konfigurieren. Darunter auch welches Maven verwendet werden soll. Das Plugin bringt eine Embedded-Version mit. In Eclipse reicht diese embedded Version eigentlich aus. Es empfiehlt sich aber die eigene Installation zu verwenden, so dass man auf der Kommandozeile die gleiche Maven Version verwendet wie in Eclipse. Dazu in &#8220;Maven->Installations&#8221; mit dem Button Add die eigene Installation hinzuf&#252;gen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/EclipseMavenPreferences.png" alt="" title="Eclipse Maven - Preferences" width="630" class="alignnone size-full wp-image-2595" />
</div>
<p>Nachdem das Maven Plugin installiert wurde und man evtl. die Maven Installation angepasst hat dauert es einen Moment bis Maven seinen Index aktualisiert hat. Sofern das Maven Index Update noch l&#228;uft sieht man dies in dem Progress Panel:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseMavenIndexUpdate.png" alt="" title="Eclipse Maven - Index Update" width="630" height="203" class="alignnone size-full wp-image-2598" />
</div>
<h4><a name="EclipseKonfigurierenMavenExtrasWTP" class="noLink">Maven Extras &#8211; m2eclipse-extras</a></h4>
<p>Es fehlt noch das Maven Integration for Eclipse WTP Plugin um mit Maven mit dem Eclipse Web Tools Project zu verbinden. Dazu noch einmal im Hauptmen&#252; &#8220;Help->Install New Software..2 klicken und die Update URL ausw&#228;hlen oder hinzuf&#252;gen: <a href="http://m2eclipse.sonatype.org/sites/m2e-extras">http://m2eclipse.sonatype.org/sites/m2e-extras</a></p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseMavenM2eclipseExtras.png" alt="" title="Eclipse Plugin m2eclipse-extras" width="630" height="374" class="alignnone size-full wp-image-2619" />
</div>
<p>Anschlie&#223;end den Wizzard wieder wie gewohnt durchgehen und das Plugin installieren.</p>
<h3><a name="JavaEE6Project" class="noLink">Das erste Java EE 6 Projekt</a></h3>
<p>Nun ist Eclipse konfiguriert und vorbereitet &#8211; es ist Zeit f&#252;r das erste Java EE 6 Projekt mit Eclipse WTP und Maven Unterst&#252;tzung.</p>
<h4><a name="JavaEE6ProjectMaven" class="noLink">Projekt mit Maven generieren</a></h4>
<p>Um ein neues Projekt anzulegen im Hauptmen&#252; &#8220;File->New->Other&#8221; klicken und im ge&#246;ffneten Startfenster des Wizzards &#8220;Maven Project&#8221; ausw&#228;hlen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/EclipseProjectWizzardNewMaven.png" alt="" title="Eclipse Neues Maven Project" width="613" height="328" class="alignnone size-full wp-image-2614" />
</div>
<p>Mit den Button &#8220;Next&#8221; weiter. Im zweiten Dialog &#8220;Select Project Name and Location&#8221; die Voreinstellung &#8220;Use default Workspace Location&#8221; selektiert lassen und Button &#8220;Next&#8221; klicken.<br />
Im folgenden Dialog &#8220;Select an Archetype&#8221; nach &#8220;knappsack&#8221; filtern und <code>ee6-sandbox-archetype</code> ausw&#228;hlen. Falls dieser Archetype nicht verf&#252;gbar ist kann es sein, dass der Maven Index Update noch nicht vollst&#228;ndig durchlaufen ist &#8211; in diesem Fall sieht man in Eclipse unten rechts im Progress View, dass ein Prozess l&#228;uft und es hilft nur warten..<br />
Die &#8220;knappsack&#8221; Archetypes wurden von <a href="http://www.andygibson.net/blog/projects/knappsack/">Andy Gipson</a> erstellt und erm&#246;glichen einen sehr einfachen Start in das Projekt.<br />
Wer ein Beispielprojekt mit einem vollst&#228;ndigem CRUD Beispiel haben m&#246;chte sollte das Archetype <code>jee6-sandbox-demo-archetype</code> verwenden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseProjectWizzardArchetype.png" alt="" title="New Project - Maven Archetype jee6-sandbox-archetype" width="630" class="alignnone size-full wp-image-2625" />
</div>
<p>Nach dem Selektieren des Archetypes den Dialog mit &#8220;Next&#8221; verlassen.</p>
<p>Auf der n&#228;chsten Seite m&#252;ssen jetzt die Archetype Parameter gesetzt werden. Das ist zum Einen die Group Id und zum Anderen die Artifact Id. In die Group id kommt der &#252;bergeordnete Name der Package Struktur und als Artifact Id wird der Projektname gew&#228;hlt:</p>
<div class="singleImgDiv"><img src="http://javathreads.de/data/uploads/2011/05/1105_MavenProjectArchetypeParameters.png" alt="" title="Neues Maven Projekt - Archetype Parameter" width="630" class="alignnone size-full wp-image-2629" />
</div>
<p>Mit dem Button &#8220;Finish&#8221; den Wizzard beenden. Das Projekt wird nun generiert und das kann einen Moment dauern:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_MavenProjectGenerate.png" alt="" title="Neues Maven Projekt wird generiert" width="630" height="176" class="alignnone size-full wp-image-2617" />
</div>
<p>Nun ist das Projekt erstellt und man kann sich die  Java, xhtml und Konfigurationsdateien ansehen die durch den gew&#228;hlten Maven Archetype generiert wurden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseGeneratedProject.geaendert.jpg" alt="" title="Generiertes Java EE 6 Eclipse Projekt" width="630" height="447" class="alignnone size-full wp-image-2677" />
</div>
<p>Diese generierten Java und xhtml Dateien sollen den Einstieg in JSF 2, CDI und JPA 2 vereinfachen.</p>
<h4>Konfiguration in web.xml auf Servlet 3.0 umstellen</h4>
<p>Der ausgew&#228;hlte Maven Archetype hat in der <code>web.xml</code> als Servlet Spezifikationsversion 2.5 konfiguriert aber wir wollen 3.0 verwenden. Deswegen die <code>web.xml</code> Datei &#246;ffen: ALT-Shift-R -> <code>web.xml</code> oder im Verzeichnis <code>src/main/webapp/WEB-INF</code>. In dieser Datei steht auch schon als Kommentar der Hinweis, dass man f&#252;r den JBoss Servlet Version 3 verwenden soll. Dazu die Zeile 10 l&#246;schen und die oberen Zeilen mit version=&#8221;3.0&#8243; verwenden. Mein <code>web-app</code> Element sieht wie folgt aus:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1104_MavenProjectWebXml.jpg" alt="" title="Maven Projekt web.xml auf Servlet 3.0 konfigurieren" width="630" height="165" class="borderGray alignnone size-full wp-image-2655" />
</div>
<h4><a name="JavaEE6ProjectEclipseJSF" class="noLink">JSF Capabilities dem Projekt hinzuf&#252;gen</a></h4>
<p>&#214;ffnet man eine .xhtml Seite so &#246;ffnet sich der Visuell Editor von den JBoss Tools. Allerdings erscheint eine Fehlermeldung, dass die JSF Capabilities / JSF Unterst&#252;tzung f&#252;r dieses Projekt noch nicht konfiguriert ist:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseProjectJSFCapabilitiesError.jpg" alt="" title="Eclipse JSF Fehlermeldung Capability / JSF Unterst&#252;tzung nicht konfiguriert" width="630" height="378" class="borderGray alignnone size-full wp-image-2653" />
</div>
<p>Entweder in dieser Fehlermeldung direkt auf den Button &#8220;Add JSF Capabilities&#8221; klicken oder mit der rechten Maustaste auf das Projekt und aus dem Kontextmen&#252; &#8220;Configure->Add JSF Capabilities&#8221; klicken. In beiden Varienten &#246;ffnet sich ein Wizzard mit dem ersten Dialog &#8220;Project Location&#8221;. Der vorgegebene Pfad f&#252;r die <code>web.xml</code> Datei sollte eigentlich stimmen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJsfCapabilitesProjectLocation1.jpg" alt="" title="Eclipse Add JSF Capabilities Wizzard - Project Location" width="630" height="190" class="alignnone size-full wp-image-2654" />
</div>
<p>Mit den Button &#8220;Next&#8221; auf den n&#228;chsten Dialog &#8220;Project Folders&#8221; wechseln. Die vorgegebenen Pfade sollten auch hier stimmen. Die Checkbox &#8220;Add Libraries&#8221; darf nicht selektiert werden denn sonst kommt es sp&#228;ter zu Fehlern.<br />
Als Servlet Version muss 3.0, wie zuvor bereits in der <code>web.xml</code> abge&#228;ndert, ausgew&#228;hlt werden.<br />
Der Haken bei der Checkbox f&#252;r &#8220;Target Server&#8221; bewirkt, dass dieses Projekt direkt dem konfigurierten JBoss hinzugef&#252;gt und mit deployt wird:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseProjectJSFCapabilitiesProjectFolders.jpg" alt="" title="Eclipse Projekt JSF Capabilities - Project Folders" width="630" height="569" class="alignnone size-full wp-image-2755" />
</div>
<p>Den Wizzard mit dem Button &#8220;Finish&#8221; beenden. Man wird anschlie&#223;end gefragt ob man in die Web Developer Perspektive wechseln m&#246;chte. Je nach Geschmack kann man sich die Web Developer Perspektive anschauen und verwenden oder wieder in die Java EE Perspektive wechseln.</p>
<p>Nun sollten sich alle <code>.xhtml</code> Seiten ohne Warnung im Visual Editor &#246;ffnen lassen und auch Autocomplete f&#252;r JSF Tags m&#246;glich sein:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossToolsVisualEditorAutocomplete.jpg" alt="" title="Eclipse JBoss Tools Visual Editor Autocomplete" width="630" height="204" class="alignnone size-full wp-image-2691" />
</div>
<h4><a name="JavaEE6ProjectEclipseCDI" class="noLink">CDI (Context and Dependency Injection) Unterst&#252;tzung dem Projekt hinzuf&#252;gen</a></h4>
<p>Als letztes m&#252;ssen noch die CDI Unterst&#252;tzung konfiguriert werden. Man merkt es daran, dass in der <code>.xhtml</code> Seite noch kein Autocomplete f&#252;r die EL (Expression Language) zul&#228;sst. Wenn man z.B. in der <code>home.xhtml</code> den Cursor in die Expression <code>#{demoCourseList}</code> in Zeile 11 setzt und <code>F3</code> dr&#252;ckt sollte die entsprechende Producer Methode der CDI Bean springen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_CDICapabilitiesNaXhtml.jpg" alt="" title="Eclipse Projekt CDI Capabilites nicht konfigurieren" width="630" height="146" class="alignnone size-full wp-image-2696" />
</div>
<p>Die CDI Unterst&#252;tzung wird genauso hinzugef&#252;gt wie die JSF Capabilites im Abschnitt zuvor. Im Kontextmen&#252; des Projektes (rechte Maustaste auf den obersten Knoten des Projekts) Configure->Add CDI (Context and Dependency Injection) support.. klicken. Im ge&#246;ffneten CDI Preferences Dialog die Checkbox selektiert lassen und den Button &#8220;Apply&#8221; dr&#252;cken. Anschlie&#223;end den Preferences Dialog mit dem Button &#8220;OK&#8221; wieder verlassen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseCDISupportPreferences.jpg" alt="" title="Eclipse CDI Unterst&#252;tzung Preferences" width="630" height="221" class="alignnone size-full wp-image-2698" />
</div>
<p>Nun den gleichen Versuch wie vorher schon in der <code>home.xhtml</code> machen und mit dem Cursor auf die Expression <code>#{demoCourseList}</code> in Zeile 11 setzen und <code>F3</code> dr&#252;cken. Nun &#246;ffnet sich der Java Editor genau an der richtigen Methode mit dem dazugeh&#246;rigem CDI Producer:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1104_CDISupportXhtmlElF3.jpg" alt="" title="Eclipse CDI Support - Producer Methode" width="630" height="148" class="alignnone size-full wp-image-2699" />
</div>
<p>Au&#223;erdem funktioniert nun auch Autocomplete direkt in der <code>.xhtml</code> Seite in einer Expression:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1104_CDISupportXhtmlElAutocomplete.jpg" alt="" title="Eclipse CDI Support - EL Autocomplete" width="630" height="181" class="alignnone size-full wp-image-2700" />
</div>
<h4><a name="JavaEE6ProjectProjektDeployen" class="noLink">Projekt auf den JBoss deployen</a></h4>
<p>Jetzt kommt der erste Test ob das generierte Projekt sich auch deployen und im Browser anzeigen l&#228;sst. Dazu im Server Panel &#252;berpr&#252;fen ob das Projekt dem Server hinzugef&#252;gt wurde &#8211; dazu einfach den JBoss aufklappen und vergewissern ob das <code>jee6project</code> zu sehen ist. Falls nicht muss das Projekt noch hinzugef&#252;gt werden: &#8220;rechte Maustaste auf JBoss 6.0 Runtime Server->Add and Remove&#8230;&#8221;. Anschlie&#223;end den Server starten:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJBossStarting.jpg" alt="" title="JBoss Runtime starten" width="630" height="117" class="alignnone size-full wp-image-2747" />
</div>
<p>In der Console erscheinen dann irgendwann die folgenden Zeilen:</p>
<div class="codebox">
23:08:27,957 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] deploy, ctxPath=/jee6project<br />
23:08:28,090 INFO  [javax.enterprise.resource.webcontainer.jsf.config] Mojarra 2.0.3 ( b05) f&#252;r Kontext &#8216;/jee6project&#8217; wird initialisiert.
</div>
<p>Nun die deployte Anwendung im Browser unter <a href="http://localhost:8080/jee6project">http://localhost:8080/jee6project</a> aufrufen:</p>
<div class="codebox">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseJavaEEMavenProjectDeployt.jpg" alt="" title="Java EE 6 Projekt deployt und aufrufbar" width="630" height="407" class="alignnone size-full wp-image-2758" />
</div>
<p>Die Seite die dargestellt wird stammt aus dem gew&#228;hlten Knappsack Maven Archetype und soll die ersten Schritte in Java EE 6 bzw. in CDI vereinfachen.<br />
Um zu pr&#252;fen ob die WTP Unterst&#252;tzung funktioniert kann man das Hot Deployment ausprobieren. Hot Deployment funktioniert auf alle Web Resourcen wie z.B. <code>.xhmtl</code>, <code>.css</code> oder Bilddateien.<br />
Um das zu testen einfach die <code>home.xhtml</code> &#246;ffnen und einen Text eingeben:</p>
<div class="codebox">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseWTPHotDeploymentXhtml.jpg" alt="" title="Eclipse WTP Hot Deployment - Editor" width="630" height="206" class="alignnone size-full wp-image-2764" />
</div>
<p>Nach dem speichern die Seite im Browser aktualisieren und der Text sollte direkt angezeigt werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2011/05/1105_EclipseWTPHotDeploymentBrowser.jpg" alt="" title="Eclipse WTP Hot Deployment - Browser" width="630" height="233" class="alignnone size-full wp-image-2768" />
</div>
<p>Prinzipiell ist das Tutorial an dieser Stelle zu Ende &#8211; der JBoss l&#228;uft und das Java EE 6 Projekt ist deployt. Es lohnt sich als n&#228;chstes den Code durchzusehen und zu ver&#228;ndern. Im folgenden Abschnitt wird noch kurz auf ein paar Dinge im Source Code rund um CDI eingegangen.</p>
<h3><a name="WieGehtEsWeiter" class="noLink">Wie geht es weiter?</a></h3>
<p>An diesem Punkt angekommen solltest du ein laufendes Java EE 6 Projekt im Web Profile auf dem JBoss Application Server haben. Nun kannst du dich mit Eclipse, Maven oder Java EE 6 weiter besch&#228;ftigen.<br />
Hast du mit Java EE 6 noch &#252;berhaupt keine Erfahrungen solltest du dir dieses Projekt genauer ansehen und dich mit den bereits verwendeten Annotationen und Aufbau vertraut machen.</p>
<p>Viel Spa&#223; beim ausprobieren =).</p>
<p><script type="text/javascript">
function showMavenLinuxInstall() {
document.getElementById('mavenAnleitungLinuxDiv').style.display = 'block';
document.getElementById('mavenAnleitungLinuxDivLink').style.display = 'none';
}
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2011/05/tutorial-mit-java-ee-6-unter-eclipse-helios-und-mit-maven-unterstuetzung-starten/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Adam Bien mit JEE 6 am Dienstag bei JUG Darmstadt</title>
		<link>http://javathreads.de/2010/08/adam-bien-mit-jee-6-am-dienstag-bei-jug-darmstadt/</link>
		<comments>http://javathreads.de/2010/08/adam-bien-mit-jee-6-am-dienstag-bei-jug-darmstadt/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 08:10:15 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE 6]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[JUG]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2470</guid>
		<description><![CDATA[Wer Lust hat Adam Bien einmal zu sehen bzw. zu sehen wie und was er mit Java EE 6 macht der sollte am kommenden Dienstag zur Java User Group Darmstadt kommen. Ich werde jedenfalls da sein =).




Mehr dazu auch auf der JUG DA Google Groups Seite.
]]></description>
			<content:encoded><![CDATA[<p>Wer Lust hat Adam Bien einmal zu sehen bzw. zu sehen wie und was er mit Java EE 6 macht der sollte am kommenden Dienstag zur <a href="http://groups.google.com/group/jug-da">Java User Group Darmstadt</a> kommen. Ich werde jedenfalls da sein =).</p>
<div style="singelImgDiv">
<a href="http://groups.google.com/group/jug-da"><img src="http://javathreads.de/data/uploads/2010/08/JUGDaFlyerJEE6.jpg" alt="" title="JUG Darmstadt - Adam Bien Java EE 6" width="600" height="849" class="alignnone size-full wp-image-2471" /></a>
</div>
<p>
Mehr dazu auch auf der <a href="http://groups.google.com/group/jug-da">JUG DA Google Groups</a> Seite.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/08/adam-bien-mit-jee-6-am-dienstag-bei-jug-darmstadt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java 4-ever Trailer</title>
		<link>http://javathreads.de/2010/06/java-4-ever-trailer/</link>
		<comments>http://javathreads.de/2010/06/java-4-ever-trailer/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 06:02:43 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Film]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2463</guid>
		<description><![CDATA[Java kommt nun auch in Hollywood gut raus, wie der Trailer Java 4-ever und der Starbesetzung mit  mit Scala Johansson, Eddie Larrison, William Windows, Mona Lisa Harddrive und Lenny Linux zeigt:



Ein wirklich sehr gut gemachtes St&#252;ck Film.
(vielen Dank an Christian Nicoll f&#252;r den Hinweis!)
]]></description>
			<content:encoded><![CDATA[<p>Java kommt nun auch in Hollywood gut raus, wie der Trailer Java 4-ever und der Starbesetzung mit  mit Scala Johansson, Eddie Larrison, William Windows, Mona Lisa Harddrive und Lenny Linux zeigt:</p>
<div style="text-align:center">
<iframe src="http://player.vimeo.com/video/12956509?byline=0&amp;portrait=0" width="601" height="338" frameborder="0"></iframe>
</div>
<p>Ein wirklich sehr gut gemachtes St&#252;ck Film.</p>
<p>(vielen Dank an Christian Nicoll f&#252;r den Hinweis!)</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/06/java-4-ever-trailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit JAXB einfach von XML Daten zu Java Objekten</title>
		<link>http://javathreads.de/2010/04/mit-jaxb-einfach-von-xml-daten-zu-java-objekten/</link>
		<comments>http://javathreads.de/2010/04/mit-jaxb-einfach-von-xml-daten-zu-java-objekten/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 04:00:38 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JAXB]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XML Schema]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2354</guid>
		<description><![CDATA[Eine Variante mit XML in Java zu arbeiten ist die Java Architecture for XML Binding, besser bekannt unter JAXB. Mit JAXB kann man sehr einfach Java Objekte als XML Datei speichern (marshal) und umgekehrt eine XML Datei wieder in ein Java Objekt laden (unmarshal). So kann man z.B. Daten sehr einfach austauschen oder persistieren. Implementiert [...]]]></description>
			<content:encoded><![CDATA[<p>Eine Variante mit XML in Java zu arbeiten ist die <a href="http://java.sun.com/developer/technicalArticles/WebServices/jaxb">Java Architecture for XML Binding,</a> besser bekannt unter JAXB. Mit JAXB kann man sehr einfach Java Objekte als XML Datei speichern (marshal) und umgekehrt eine XML Datei wieder in ein Java Objekt laden (unmarshal). So kann man z.B. Daten sehr einfach austauschen oder persistieren. Implementiert man einen Webservice mit JAX-WS (Java API for XML &#8211; Web Services) werden z.B. die Daten die ausgetauscht werden mit JAX-B Annotationen versehen und via XML ausgetauscht. Das Umwandeln des Java Objekts zu XML und wieder zur&#252;ck &#252;bernimmt dabei JAXB.</p>
<div class="singleImgDiv">
<a href="http://java.sun.com/developer/technicalArticles/WebServices/jaxb/"><img src="http://javathreads.de/data/uploads/2010/03/jaxbMarshallUnmarshall.gif" alt="" title="Java Architecture for XML Binding (JAXB)" width="450" height="300" class="alignnone size-full wp-image-2368" /></a>
</div>
<div class="subHeadline">Anwendungsfall: XML Daten zu Java Objekten</div>
<p>In meinem Anwendungsfall habe ich eine Online Schnittstelle die mir die Ergebnisse zu Spieltagen der Bundesliga als XML liefert. Ziel ist es diese Informationen so einfach wie m&#246;glich in meine Java Anwendung zu bekommen. Mit Hilfe von JAXB sollen diese XML Informationen zu Java Objekten umgewandelt werden, so dass man damit einfach weiterarbeiten kann. Dieser Vorgang wird unmarshal genannt und erzeugt eine Objekt Struktur die den Inhalt und den Aufbau der XML Datei repr&#228;sentiert. </p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2010/03/jaxbXmlSchemaObjects.gif" alt="" title="JAXB - unmarshal" width="450" height="168" class="alignnone size-full wp-image-2369" />
</div>
<p>Die erzeugte Objektstruktur ist aber kein DOM basierter Baum, wie manchmal angenommen wird, sondern ein normale Java Objekte, die wieder Referenzen auf weitere Java Objekte haben.</p>
<p>Die XML die ich geliefert bekomme und zu Java Objekten mit JAXB unmarshallen m&#246;chte sieht wie folgt aus:</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; ">
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">game</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">28</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">nummer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nummer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">beginn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2010-03-26 20:30:00</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">beginn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mannschaft_heim</span><span style="color: #0000FF; ">&gt;</span><span style="color: #0000FF; ">&lt;![CDATA[</span><span style="color: #808080; ">VfL Bochum</span><span style="color: #0000FF; ">]]&gt;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mannschaft_heim</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mannschaft_gast</span><span style="color: #0000FF; ">&gt;</span><span style="color: #0000FF; ">&lt;![CDATA[</span><span style="color: #808080; ">Eintracht Frankfurt</span><span style="color: #0000FF; ">]]&gt;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mannschaft_gast</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_heim_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tore_heim_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_gast_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tore_gast_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_heim_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tore_heim_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_gast_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tore_gast_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">game</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">game</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">28</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">nummer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">nummer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">beginn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2010-03-27 15:30:00</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">beginn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mannschaft_heim</span><span style="color: #0000FF; ">&gt;</span><span style="color: #0000FF; ">&lt;![CDATA[</span><span style="color: #808080; ">Bayern M&#252;nchen</span><span style="color: #0000FF; ">]]&gt;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mannschaft_heim</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mannschaft_gast</span><span style="color: #0000FF; ">&gt;</span><span style="color: #0000FF; ">&lt;![CDATA[</span><span style="color: #808080; ">VfB Stuttgart</span><span style="color: #0000FF; ">]]&gt;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mannschaft_gast</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_heim_halbzeit</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tore_heim_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_gast_halbzeit</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tore_gast_halbzeit</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_heim_ergebnis</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tore_heim_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tore_gast_ergebnis</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tore_gast_ergebnis</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">game</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    ...
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">spieltag</span><span style="color: #0000FF; ">&gt;</span></pre>
</div>
<p>Um mit JAXB von der XML Datei zu Java Objekten zu gelangen ben&#246;tigt man die Beschreibung des Mappings mit JAXB Annotationen in Java Klassen. Da in diesem Fall die XML Datei vorliegt ist der einfachste Weg sich die Klassen mit den Annotationen generieren zu lassen. Dazu ben&#246;tigt man das XML Schema zu zu der XML Datei.</p>
<div class="subHeadline">XML Schema aus einer XML Datei generieren lassen</div>
<p>In meinem Fall habe noch kein Schema f&#252;r diese XML Struktur. Eines jetzt von Hand zu erstellen w&#228;re m&#246;glich aber sehr aufwendig. An dieser Stelle kommt das kleine Java Tool Namens <a href="http://www.thaiopensource.com/relaxng/trang.html">Trang</a> ins Spiel.</p>
<div class="singleImgDiv">
<a href="http://www.thaiopensource.com/relaxng/trang.html"><img src="http://javathreads.de/data/uploads/2010/03/Trang.jpg" alt="" title="Trang - Multi-format schema converter" width="551" height="88" class="alignnone size-full wp-image-2360" /></a>
</div>
<p>Dazu die letzte Version aus 2008 herunterladen (<a href="http://jing-trang.googlecode.com/files/trang-20081028.zip">Direktlink</a>) und an einem Ort der Wahl entpacken. Anschlie&#223;end die XML Datei der Einfachheit halber auch mit in diese Ordner kopieren und darauf achten, dass sie mit UTF-8 enkodiert ist. Um das Schema zu  erzeugen einfach das trang.jar mit zwei Parametern aufrufen:</p>
<div class="codebox">
D:\projects\trang-20081028>java -jar trang.jar spieltag.xml spieltag.xsd
</div>
<p>Das von Trang generierte Schema sieht bei mir wie folgt aus:</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; ">
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:schema </span><span style="color: #FF0000; ">xmlns:xs</span><span style="color: #0000FF; ">=&quot;http://www.w3.org/2001/XMLSchema&quot;</span><span style="color: #FF0000; "> elementFormDefault</span><span style="color: #0000FF; ">=&quot;qualified&quot;</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;spieltag&quot;</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:complexType </span><span style="color: #FF0000; ">mixed</span><span style="color: #0000FF; ">=&quot;true&quot;</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
      </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:sequence</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">minOccurs</span><span style="color: #0000FF; ">=&quot;0&quot;</span><span style="color: #FF0000; "> maxOccurs</span><span style="color: #0000FF; ">=&quot;unbounded&quot;</span><span style="color: #FF0000; "> ref</span><span style="color: #0000FF; ">=&quot;game&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
      </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:sequence</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:complexType</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:element</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;game&quot;</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:complexType</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
      </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:sequence</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;spieltag&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;nummer&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;beginn&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;mannschaft_heim&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;mannschaft_gast&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;tore_heim_halbzeit&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;tore_gast_halbzeit&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;tore_heim_ergebnis&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">ref</span><span style="color: #0000FF; ">=&quot;tore_gast_ergebnis&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
      </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:sequence</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:complexType</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:element</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;nummer&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:integer&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;beginn&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;mannschaft_heim&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;mannschaft_gast&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;tore_heim_halbzeit&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;tore_gast_halbzeit&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;tore_heim_ergebnis&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xs:element </span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">=&quot;tore_gast_ergebnis&quot;</span><span style="color: #FF0000; "> type</span><span style="color: #0000FF; ">=&quot;xs:string&quot;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xs:schema</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
</span></pre>
</div>
<div class="subHeadline">Java Klassen mit JAXB Annotationen aus XML Schema generieren</div>
<p>Das JDK liefert einen Binding Compiler f&#252;r JAXB mit dem Namen XJC mit aus der im <code>/bin</code> Verzeichnis unterhalb der Java Runtime zu finden ist. Damit kann man aus einem XML Schema die entsprechenden Java Klassen generieren lassen, aus denen dann beim sp&#228;teren unmarshal Prozess die Java Objekte erstellt werden.</p>
<p>Der Aufruf des Binding Compiler verwendet in diesem Beispiel zwei Parameter. Der Paramter <code>d</code> definiert das Verzeichnis in dem die Klassen gespeichert werden sollen, bei mir das Verzeichnis <code>src</code> relativ zum aktuellen Verzeichnis, und der Paramter <code>p</code> definiert das Java Package in dem die Klassen liegen sollen. Als letztes wird das XML Schema angegeben aus dem die Java Klassen generiert werden sollen:</p>
<div class="codebox">
D:\projects\TipResultParser\xml>xjc -d src -p de.javathreads.jaxb spieltag.xsd
</div>
<p>F&#252;r die obige XML Datei wurden drei Klassen generiert:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2010/03/XJCKlassen3.jpg" alt="" title="JAXB Binding Compiler XJC - generierte Klassen" width="500" height="178" class="alignnone size-full wp-image-2382" />
</div>
<p>Im folgenden der interessante Teil aus der klasse <code>Game</code> mit JAXB Annotationen:</p>
<div class="codebox">
<pre style="margin:0;padding:0"><span style="color:#646464">@XmlAccessorType</span>(XmlAccessType.FIELD)
<span style="color:#646464">@XmlType(name</span> = <span style="color:#2A00FF;">""</span>, propOrder = {
    <span style="color:#2A00FF;">"spieltag"</span>,
    <span style="color:#2A00FF;">"nummer"</span>,
    <span style="color:#2A00FF;">"beginn"</span>,
    <span style="color:#2A00FF;">"mannschaftHeim"</span>,
    <span style="color:#2A00FF;">"mannschaftGast"</span>,
    <span style="color:#2A00FF;">"toreHeimHalbzeit"</span>,
    <span style="color:#2A00FF;">"toreGastHalbzeit"</span>,
    <span style="color:#2A00FF;">"toreHeimErgebnis"</span>,
    <span style="color:#2A00FF;">"toreGastErgebnis"</span>
})
<span style="color:#646464">@XmlRootElement(name</span> = <span style="color:#2A00FF;">"game"</span>)
<span style="color:#7F0074;"><b>public</b></span>&#160;<span style="color:#7F0074;"><b>class</b></span>&#160;Game {

    <span style="color:#646464">@XmlElement(required</span> = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;Spieltag spieltag;
    <span style="color:#646464">@XmlElement(required</span> = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;BigInteger nummer;
    <span style="color:#646464">@XmlElement(required</span> = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String beginn;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"mannschaft_heim"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String mannschaftHeim;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"mannschaft_gast"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String mannschaftGast;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"tore_heim_halbzeit"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String toreHeimHalbzeit;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"tore_gast_halbzeit"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String toreGastHalbzeit;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"tore_heim_ergebnis"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String toreHeimErgebnis;
    <span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">"tore_gast_ergebnis"</span>, required = true)
    <span style="color:#7F0074;"><b>protected</b></span>&#160;String toreGastErgebnis;

    <span style="color:#3F7F5F">// Getter und Setter</span>
}</pre>
</div>
<p>Man kann an diesem Beispiel sehr sch&#246;n das Mapping zwischen XML Element und Attribut mit der Annotation <code>@XmlElement</code> sehen:</p>
<div class="codebox">
<span style="color:#646464">@XmlElement(name</span> = <span style="color:#2A00FF;">&#8220;mannschaft_heim&#8221;</span>, required = true)
</div>
<p>Es gibt noch weitaus komplizierte JAXB Konfigurationen von daher empfiehlt es sich eigentlich immer sich die fehlende Gegenseite, wie in diesem Beispiel die Java Klassen, generieren zu lassen. Auch der andere Weg, das marshalling von Java Objektb&#228;umen zu einer XML Datei, l&#228;sst sich sehr einfach generieren.</p>
<div class="subHeadline">JAXB unmarshal durchf&#252;hren und mit Java Objekten arbeiten</div>
<p>Nun kommt der wichtigste Teil des Tutorials, n&#228;mlich die eigentliche Anwendung von JAXB. Die XML Datei soll als Java Objektstruktur zur Verf&#252;gung stehen, so dass die Daten einfach weiterverarbeitet werden k&#246;nnen. Dieser Weg wird, wie am Anfang beschrieben, unmarshal genannt. Bis zum Java Objekt sind es an dieser Stelle nur noch drei Zeilen:</p>
<ul>
<li>JAXBContext Objekt erstellen, welches einem Zugriff auf die JAXB API erm&#246;glicht. Dabei wird als Parameter ein oder mehrere Packages zu den generierten Klassen mit den JAXB Annotationen ben&#246;tigt: <code>JAXBContext jc = JAXBContext.newInstance("de.javathreads.jaxb");</code></li>
<li>Unmarshaller Objekt vom JAXBContext erstellen: <code>Unmarshaller unmarshaller = jc.createUnmarshaller();</code></li>
<li>Die <code>unmarshal()</code> Methode aus dem Unmarshaller Objekt aufrufem um den unmarshalling Prozess zu starten. Als Parameter wird dabei die zu parsende XML Datei erwartet und als R&#252;ckgabewert erh&#228;lt man das entsprechende Objekt f&#252;r das Root Element der XML Datei. In meinem Beispiel ist das die Klasse <code>Spieltag</code>, welche vom Unmarshaller zur&#252;ckgegeben wird: <code>Spieltag sp = (Spieltag) unmarshaller.unmarshal(new File("D:\\projects\\TipResultParser\\xml\\spieltag.xml"));</code></li>
</ul>
<p>Jetzt kann man direkt mit der Objektrepr&#228;sentation der XML Datei auf Java Ebene arbeiten. Noch einmal der Hinweis, dass es sich bei diesen Objekten nicht um ein DOM basierten Baum handelt sondern um reine Content-Objekte, welche den Inhalt und die Struktur der XML Datei wiedergeben.</p>
<p>Als letztes noch mal der komplette Code an einem St&#252;ck f&#252;r die bessere &#220;bersicht:</p>
<div class="codebox">
<pre style="margin:0;padding:0"><span style="color:#7F0074;"><b>package</b></span> de.javathreads.jaxb;

<span style="color:#7F0074;"><b>import</b></span> java.io.File;

<span style="color:#7F0074;"><b>import</b></span> javax.xml.bind.JAXBContext;
<span style="color:#7F0074;"><b>import</b></span> javax.xml.bind.Unmarshaller;

<span style="color:#7F0074;"><b>public</b></span> <span style="color:#7F0074;"><b>class</b></span> Main {

  <span style="color:#7F0074;"><b>public</b></span> <span style="color:#7F0074;"><b>static</b></span> <span style="color:#7F0074;"><b>void</b></span> main(String[] args) <span style="color:#7F0074;"><b>throws</b></span> Exception {
    <span style="color:#3F7F5F">// Package</span>
    JAXBContext jc = JAXBContext.newInstance(<span style="color:#2A00FF;">"de.javathreads.jaxb"</span>);
    Unmarshaller unmarshaller = jc.createUnmarshaller();

    Spieltag sp = (Spieltag) unmarshaller.unmarshal(<span style="color:#7F0074;"><b>new</b></span> File(<span style="color:#2A00FF;">"D:\\projects\\TipResultParser\\xml\\spieltag.xml"</span>));

    <span style="color:#7F0074;"><b>for</b></span> (<span style="color:#7F0074;"><b>int</b></span> i = 0; i < sp.getContent().size(); i++) {
      <span style="color:#7F0074;"><b>if</b></span> (sp.getContent().get(i) <span style="color:#7F0074;"><b>instanceof</b></span> Game) {
        Game g = (Game) sp.getContent().get(i);
        System.out.println(<span style="color:#2A00FF;">"Spiel: "</span> + g.getNummer());
      }
    }
  }
}</pre>
</div>
<p>Ausgabe auf der Konsole:</p>
<div class="codebox">
Spiel: 1<br />
Spiel: 2<br />
&#8230;
</div>
<p>Hinweis zu dem Code bez&#252;glich der Pr&#252;fung mit <code>instanceof Game</code>. Die XML Schnittstelle liefert den Inhalt formatiert und somit mit Sonderzeichen wie &#8220;\t&#8221; und &#8220;\n&#8221; zur&#252;ck, so dass diese Zeichen als Content direkt hinter dem XML Tag beim unmarshal Prozess erkannt wurden. Die Liste, die mir <code>sp.getContent()</code> zur&#252;ckliefert, enth&#228;lt abwechselnd den String &#8220;\t\t\n&#8221; und ein <code>Game</code> Objekt. Das ist aber nicht die Regel und ich muss mal schauen ob ich dieses Verhalten nicht noch irgendwie abstellen kann.</p>
<p>Die Grafiken wurden aus dem offiziellen Sun Artikel &#8220;<a href="http://java.sun.com/developer/technicalArticles/WebServices/jaxb/">Java Architecture for XML Binding (JAXB)</a>&#8221; entnommen. Dort findet man auch eine ausf&#252;hrliche Anleitung f&#252;r den marhall Vorgang, wenn man Java Objekte zu einer XML Datei marshallen m&#246;chte.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/04/mit-jaxb-einfach-von-xml-daten-zu-java-objekten/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Kostenloses Buch f&#252;r die Android Entwicklung</title>
		<link>http://javathreads.de/2010/03/kostenloses-buch-fuer-die-android-entwicklung/</link>
		<comments>http://javathreads.de/2010/03/kostenloses-buch-fuer-die-android-entwicklung/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 05:37:56 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Buch]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2346</guid>
		<description><![CDATA[Ein kleiner Hinweis f&#252;r alle die mal einen kleinen Einblick in die Android Entwicklung erhalten m&#246;chten ist das kostenlose Buch &#8220;Android &#8211; Grundlagen und Programmierung&#8221; (DPunkt Verlag) von Arno Becker und Marcus Pant als PDF.



Als kleinen Haken k&#246;nnte man evtl. sehen, dass die Beispiele in dem Buch sich allesamt auf das Android SDK 1.1 beziehen. [...]]]></description>
			<content:encoded><![CDATA[<p>Ein kleiner Hinweis f&#252;r alle die mal einen kleinen Einblick in die Android Entwicklung erhalten m&#246;chten ist das kostenlose Buch &#8220;<a href="http://dpunkt.de/buecher/3436.html">Android &#8211; Grundlagen und Programmierung</a>&#8221; (DPunkt Verlag) von Arno Becker und Marcus Pant als PDF.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2010/03/DPunktBuchAndroid.jpg" alt="DPunkt Buch Android - Grundlagen und Programmierung" title="DPunkt Buch Android - Grundlagen und Programmierung" width="600" height="462" class="alignnone size-full wp-image-2347" />
</div>
<p>Als kleinen Haken k&#246;nnte man evtl. sehen, dass die Beispiele in dem Buch sich allesamt auf das Android SDK 1.1 beziehen. Auf der <a href="http://www.androidbuch.de/">Webseite der Autoren</a> sind die Beispiele f&#252;r das Android SDK 1.5 aktualisiert vorhanden.</p>
<p>Die neue Auflage des Buches mit dem Titel &#8220;Android 2&#8243; erscheint im Mai 2010 und basiert dann auf dem aktuellen SDK 2.1. Somit ist diese kostenlose Herausgabe des Buches als PDF Version ein geschickte Werbung.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/03/kostenloses-buch-fuer-die-android-entwicklung/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JavaFX ist offizielle Rich Client Technologie der Olympischen Winterspiele 2010</title>
		<link>http://javathreads.de/2010/02/javafx-ist-offizielle-rich-client-technologie-der-olympischen-winterspiele-2010/</link>
		<comments>http://javathreads.de/2010/02/javafx-ist-offizielle-rich-client-technologie-der-olympischen-winterspiele-2010/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 21:53:03 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Refcard]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Spickzettel]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2309</guid>
		<description><![CDATA[Ein interessanter Marketing-Schachzug in Sachen Rich Client Technologien ist Sun Oracle mit JavaFX im Bezug auf die aktuell laufenden Olympischen Winterspiele gelungen denn sie weisen sich als die offiziell verwendete Rich Client Technologie f&#252;r die vancouver2010.com Webseite aus. Man findet sogar ein Werbevideo auf der eigens eingerichteten Unterseite auf javafx.com/wintergames:



Auf den ersten Blick der offiziellen [...]]]></description>
			<content:encoded><![CDATA[<p>Ein interessanter Marketing-Schachzug in Sachen Rich Client Technologien ist <del>Sun</del> Oracle mit <a href="http://www.javafx.com">JavaFX</a> im Bezug auf die aktuell laufenden <a href="http://www.vancouver2010.com">Olympischen Winterspiele</a> gelungen denn sie weisen sich als die offiziell verwendete Rich Client Technologie f&#252;r die <a href="http://www.vancouver2010.com/">vancouver2010.com</a> Webseite aus. Man findet sogar ein Werbevideo auf der eigens eingerichteten Unterseite auf <a href="http://www.javafx.com/wintergames/">javafx.com/wintergames</a>:</p>
<div class="singleImgDiv">
<a href="http://www.javafx.com/wintergames/"><img src="http://javathreads.de/data/uploads/2010/02/JavaFxOlympia.jpg" alt="JavaFX offizielle Rich Client Technologie f&#252;r Olympische Winterspiele" title="JavaFX offizielle Rich Client Technologie f&#252;r Olympische Winterspiele" width="630" height="294" class="alignnone size-full wp-image-2311" /></a>
</div>
<p>Auf den ersten Blick der offiziellen Winterspiele Webseite sieht man JavaFX nicht. Erst in der <a href="http://www.vancouver2010.com/olympic-medals/geo-view/">Medaillen&#252;bersicht in dem Unterpunkt Geo View</a> wird JavaFX verwendet. Die Applikation hei&#223;t &#8220;Medal Wheel&#8221; und in Ihrem Story Board (<a href="http://www.javafx.com/wintergames/javafx_technology_vanoc.pdf">PDF Direktlink</a>) hei&#223;t es wie folgt:</p>
<blockquote><p>
The applications built for the Vancouver 2010 Winter Games combine the power of Java™ technology with the innovative data visualization and exploration capabilities of the JavaFX platform.
</p></blockquote>
<p>Schaut man sich die Medal Wheel Anwendung an so sieht man direkt im Einstieg grafisch hervorgehoben die Verteilung der Medaillen:</p>
<div class="singleImgDiv">
<a href="http://www.vancouver2010.com/olympic-medals/geo-view"><img src="http://javathreads.de/data/uploads/2010/02/JavaFxOlympiaMedalOverview.jpg" alt="JavaFX - Olympische Winterspiele 2010 - Medaillen&#252;bersicht nach L&#228;ndern" title="JavaFX - Olympische Winterspiele 2010 - Medaillen&#252;bersicht nach L&#228;ndern" width="630" height="484" class="alignnone size-full wp-image-2318" /></a>
</div>
<p>Klickt man anschlie&#223;end auf ein Land erh&#228;lt man noch weitere Information in einem Informationsrad:</p>
<div class="singleImgDiv">
<a href="http://www.vancouver2010.com/olympic-medals/geo-view"><img src="http://javathreads.de/data/uploads/2010/02/JavaFxOlympiaTeamWheel2.jpg" alt="JavaFX - Olympische Winterspiele 2010 - Landinformationen&quot; title=&quot;JavaFX - Olympische Winterspiele 2010 - Landinformationen" title="JavaFX - Olympische Winterspiele 2010 - Landinformationen&quot; title=&quot;JavaFX - Olympische Winterspiele 2010 - Landinformationen" width="630" height="348" class="alignnone size-full wp-image-2325" /></a>
</div>
<p>Auch hier kann man noch einen Schritt tiefer und zus&#228;tzliche Informationen zu den verschiedenen &#8220;Nachbarn&#8221; des Landes erfahren:</p>
<div class="singleImgDiv">
<a href="http://www.vancouver2010.com/olympic-medals/geo-view"><img src="http://javathreads.de/data/uploads/2010/02/JavaFxOlympiaInformationWheel.jpg" alt="JavaFX - Olympische Winterspiele 2010 - Landesnachbarn" title="JavaFX - Olympische Winterspiele 2010 - Landesnachbarn" width="630" height="333" class="alignnone size-full wp-image-2320" /></a>
</div>
<p>Neben der aktuellen Medaillenverteilung kann man auch alle historischen Ergebnisse studieren und grafisch auf sich wirken lassen.</p>
<p>Des Weiteren wird auch noch von einem Results Ticker Widget f&#252;r den Desktop berichtet, allerdings habe ich dieses bis jetzt nicht finden k&#246;nnen.</p>
<p>Oracle hat daf&#252;r auch extra eine <a href="http://www.oracle.com/us/corporate/press/049166">Pressemitteilung</a> ver&#246;ffentlicht. Und wem das auch nicht genug ist der sollte sich zudem noch die <a href="http://www.javafx.com/wintergames/javafx_technology_vanoc.pdf">Success Story als PDF herunterladen</a> und durchlesen.</p>
<p>Zum Abschluss noch ein kurzes Wort zu <a href="http://javafx.com/">JavaFX</a>. JavaFX k&#246;nnte man als Sun&#8217;s Antwort auf <a href="http://www.adobe.com/de/products/flex/">Adobe Flex</a> oder <a href="http://silverlight.net/">Microsoft Silverlight</a> sehen und positioniert sich im Sektor der Rich Client Plattformen. Dabei beschr&#228;nkt sich die Darstellung von JavaFX Applikationen nicht nur auf Browser sondern soll auf allen Endger&#228;ten, vor allem mobilen, direkt verf&#252;gbar sein. F&#252;r den Interessierten an dieser Stelle noch der Hinweis auf die <a href="http://refcardz.dzone.com/refcardz/getting-started-javafx">DZone Refcardz mit der JavaFX Ausgabe</a>:</p>
<div class="singleImgDiv">
<a href="http://refcardz.dzone.com/refcardz/getting-started-javafx"><img src="http://javathreads.de/data/uploads/2010/02/DZoneRefcardJavaFX.jpg" alt="DZone Refcardz - JavaFX" title="DZone Refcardz - JavaFX" width="630" height="241" class="alignnone size-full wp-image-2321" /></a>
</div>
<p>Insgesamt kann man wohl sagen, dass es mit dieser <a href="http://www.vancouver2010.com/olympic-medals/geo-view/">Medal Wheel Anwendung</a> ein gro&#223;er Marketing-Coup gelungen ist. So erwartet man mehrere Millionen Zugriffe auf der Webseite und man darf gespannt sein wie das Fazit, falls eins gezogen wird, ausf&#228;llt.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/02/javafx-ist-offizielle-rich-client-technologie-der-olympischen-winterspiele-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java EE 6 &#8211; Web Profile Technologien</title>
		<link>http://javathreads.de/2010/01/java-ee-6-web-profile-technologien/</link>
		<comments>http://javathreads.de/2010/01/java-ee-6-web-profile-technologien/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 05:00:13 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[JEE 6]]></category>
		<category><![CDATA[JSR]]></category>
		<category><![CDATA[Spezifikation]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2218</guid>
		<description><![CDATA[Die Java EE 6 Spezifikation, welche unter dem JSR 316 l&#228;uft, hat Ende des letzten Jahres die finale Abstimmung hinter sich gebracht und bestanden. Auch die Kommentare, z.B. von Apache die dagegen gestimmt haben, sind mal ganz interessant durchzulesen aber hier erst einmal der Abstimmungs Screenshot:



F&#252;r mich pers&#246;nlich finde ich besonders interessant, dass es eine [...]]]></description>
			<content:encoded><![CDATA[<p>Die <a href="http://jcp.org/aboutJava/communityprocess/pfd/jsr316/index.html">Java EE 6 Spezifikation</a>, welche unter dem <a href="http://jcp.org/aboutJava/communityprocess/pfd/jsr316/index.html">JSR 316</a> l&#228;uft, hat Ende des letzten Jahres die finale Abstimmung hinter sich gebracht und bestanden. Auch die Kommentare, z.B. von Apache die dagegen gestimmt haben, sind mal ganz interessant durchzulesen aber hier erst einmal der Abstimmungs Screenshot:</p>
<div class="singleImgDiv">
<a href="http://jcp.org/en/jsr/results?id=5025"><img src="http://javathreads.de/data/uploads/2010/01/JavaEE6SpecificationFinalApprovalBallot.jpg" alt="Java EE 6 Specification Final Approval Ballot" title="Java EE 6 Specification Final Approval Ballot" width="600" height="289" class="alignnone size-full wp-image-2241" /></a>
</div>
<p>F&#252;r mich pers&#246;nlich finde ich besonders interessant, dass es eine eigene <a href="http://jcp.org/aboutJava/communityprocess/pfd/jsr316/index.html">Java EE Web Profile Spezifikation</a> gibt. Und diese beinhaltet eine ganze Menge an interessanten JSRs:</p>
<ul>
<li>Servlet 3.0 (<a href="http://jcp.org/en/jsr/detail?id=315">JSR 315</a>)</li>
<li>JavaServer Pages (JSP) 2.2 (<a href="http://jcp.org/en/jsr/summary?id=245">JSR 245</a>)</li>
<li>Expression Language (EL) 2.2 (<a href="http://jcp.org/en/jsr/summary?id=2455">JSR 245</a>)</li>
<li>Debugging Support for Other Languages 1.0 (<a href="http://jcp.org/en/jsr/summary?id=45">JSR 45</a>)</li>
<li>Standard Tag Library for JavaServer Pages (JSTL) 1.2 (<a href="http://jcp.org/en/jsr/summary?id=52">JSR 52</a>)</li>
<li>JavaServer Faces (JSF) 2.0 (<a href="http://jcp.org/en/jsr/summary?id=314">JSR 314</a>)</li>
<li>Common Annotations for Java Platform 1.1 (<a href="http://jcp.org/en/jsr/summary?id=250">JSR 250</a>)</li>
<li>Enterprise JavaBeans (EJB) 3.1 Lite (<a href="http://jcp.org/en/jsr/summary?id=318">JSR 318</a>)</li>
<li>Java Transaction API (JTA) 1.1 (<a href="http://jcp.org/en/jsr/summary?id=907">JSR 907</a>)</li>
<li>Java Persistence API (JPA) 2.0 (<a href="http://jcp.org/en/jsr/summary?id=317">JSR 317</a>)</li>
<li>Bean Validation 1.0 (<a href="http://jcp.org/en/jsr/summary?id=303">JSR 303</a>)</li>
<li>Managed Beans 1.0 (<a href="http://jcp.org/en/jsr/summary?id=316">JSR 316</a>)</li>
<li>Interceptors 1.1 (<a href="http://jcp.org/en/jsr/summary?id=318">JSR 318</a>)</li>
<li>Contexts and Dependency Injection for Java EE platform 1.0 (<a href="http://jcp.org/en/jsr/summary?id=299">JSR 299</a>)</li>
<li>Dependency Injection for Java 1.0  (<a href="http://jcp.org/en/jsr/summary?id=330">JSR 330</a>)</li>
</ul>
<p>Folgende sch&#246;ne Grafik habe ich noch in einer Pr&#228;sentation gefunden, welche die Entwicklung der Java EE Spezifikationen in der Vergangenheit und Heute anschaulich darstellt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2010/01/JavaEEPastPresent.jpg" alt="Java EE Past and Present" title="Java EE Past and Present" width="600" height="356" class="alignnone size-full wp-image-2244" />
</div>
<p>Die Pr&#228;sentation hat die &#220;berschrift &#8220;<a href="http://www.slideshare.net/indicthreads/java-ee-6-paving-the-path-for-the-future">Java EE 6 : Paving The Path For The Future</a>&#8221; und beinhaltet Informationen &#252;ber die Technologien die in Java EE 6 stecken:</p>
<div style="text-align:center">
<object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=indicthreads-java-javaee6-glassfishv3-091214063805-phpapp02&#038;rel=0&#038;stripped_title=java-ee-6-paving-the-path-for-the-future" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=indicthreads-java-javaee6-glassfishv3-091214063805-phpapp02&#038;rel=0&#038;stripped_title=java-ee-6-paving-the-path-for-the-future" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
</div>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/01/java-ee-6-web-profile-technologien/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Contexts and Dependency Injection for the Java EE Platform Spickzettel</title>
		<link>http://javathreads.de/2010/01/contexts-and-dependency-injection-for-the-java-ee-platform-spickzettel/</link>
		<comments>http://javathreads.de/2010/01/contexts-and-dependency-injection-for-the-java-ee-platform-spickzettel/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 05:00:46 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[JSR]]></category>
		<category><![CDATA[JSR 299]]></category>
		<category><![CDATA[Refcardz]]></category>
		<category><![CDATA[Spickzettel]]></category>
		<category><![CDATA[Weld]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2262</guid>
		<description><![CDATA[Endlich mal wieder eine, aus meiner Sicht, wirklich n&#252;tzliche DZone Refcard (Spickzettel) mit der &#220;berschrift Contexts and Dependency Injection for the Java EE Platform, was auch unter dem JSR 299 bekannt ist und in Java EE 6 mit einflie&#223;t. Konkret behandelt es die Context and Dependency Injection (CDI) Implementierung von JBoss mit dem Namen Weld.



Wie [...]]]></description>
			<content:encoded><![CDATA[<p>Endlich mal wieder eine, aus meiner Sicht, wirklich n&#252;tzliche DZone Refcard (Spickzettel) mit der &#220;berschrift <a href="http://refcardz.dzone.com/refcardz/contexts-and-depencency?oid=hom16925">Contexts and Dependency Injection for the Java EE Platform</a>, was auch unter dem <a href="http://jcp.org/en/jsr/detail?id=299">JSR 299</a> bekannt ist und in Java EE 6 mit einflie&#223;t. Konkret behandelt es die Context and Dependency Injection (CDI) Implementierung von JBoss mit dem Namen <a href="http://seamframework.org/Weld">Weld</a>.</p>
<div class="singleImgDiv">
<a href="http://refcardz.dzone.com/refcardz/contexts-and-depencency?oid=hom16925"><img src="http://javathreads.de/data/uploads/2010/01/DZoneRefcardzCDIWeld.jpg" alt="DZone Refcardz - Contexts and Dependency Injection for the Java EE Platform" title="DZone Refcardz - Contexts and Dependency Injection for the Java EE Platform" width="600" height="597" class="alignnone size-full wp-image-2263" /></a>
</div>
<p>Wie immer bei den DZone Refcardz gilt, dass man sich registrieren muss um das PDF herunterladen zu k&#246;nnen oder eben einfach direkt <a href="http://refcardz.dzone.com/refcardz/contexts-and-depencency?oid=hom16925">online ansehen</a>. Alternativ hier einfach ein Kommentar hinterlassen oder mich kontaktieren und ich schicke es auch direkt zu.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/01/contexts-and-dependency-injection-for-the-java-ee-platform-spickzettel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pr&#228;sentation: Dive Into Java &#8211; A Roadmap to Effective Java Programming</title>
		<link>http://javathreads.de/2009/08/praesentation-dive-into-java-a-roadmap-to-effective-java-programming/</link>
		<comments>http://javathreads.de/2009/08/praesentation-dive-into-java-a-roadmap-to-effective-java-programming/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 10:30:58 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Präsentation]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1942</guid>
		<description><![CDATA[M&#246;chte man mit Java starten fragt man sich wohl in erster Linie wie genau man das anstellen und auf was man im speziellen achten soll. Aber auch die Frage wie es nach dem Hello World weitergeht steht oft im Raum. Genau dazu hat Tomas Varaneckas eine kleine aber sehr interessante Pr&#228;sentation mit dem Titel &#8220;Dive [...]]]></description>
			<content:encoded><![CDATA[<p>M&#246;chte man mit Java starten fragt man sich wohl in erster Linie wie genau man das anstellen und auf was man im speziellen achten soll. Aber auch die Frage wie es nach dem Hello World weitergeht steht oft im Raum. Genau dazu hat <a href="http://paranoid-engineering.blogspot.com">Tomas Varaneckas</a> eine kleine aber sehr interessante Pr&#228;sentation mit dem Titel &#8220;<a href="http://paranoid-engineering.blogspot.com/2009/01/dive-into-java.html">Dive Into Java &#8211; A Roadmap to Effective Java Programming</a>&#8221; erstellt.</p>
<p>Er stellt klar heraus, dass nicht nur die Syntax der Sprache das Erlernen einer Sprache beinhaltet. So hat diese Folie einen zentrale Aussage:</p>
<div class="singleImgDiv">
<a href="http://paranoid-engineering.blogspot.com/2009/01/dive-into-java.html"><img src="http://javathreads.de/data/uploads/2009/08/DiveIntoJava.jpg" alt="Dive Into Java Pr&#228;sentation" title="Dive Into Java Pr&#228;sentation" width="600" height="427" class="alignnone size-full wp-image-1943" /></a>
</div>
<p>Aber auch die Frage ab wann ich die Sprache wirklich kann, welche IDE oder wie es weitergehen soll wird beantwortet. All das wird kurz in der folgenden Pr&#228;sentation angerissen:</p>
<div style="text-align:center">
<img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNTAxNjkwMjg4OTQmcHQ9MTI1MDE2OTAzMzI2MiZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89ZTcyMmE4MDllZjVmNDc*ZmJmOTBiZTZiNmNhY2E2MjEmb2Y9MA==.gif" /><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dive-into-java-simplified-1232446026998878-3&#038;stripped_title=dive-into-java-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dive-into-java-simplified-1232446026998878-3&#038;stripped_title=dive-into-java-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
</div>
<p>Der aufmerksame Leser konnte in der Pr&#228;sentation &#252;brigens erkennen, dass der Autor nichts von Oracle im Bezug auf Java h&#228;lt ;). Selbst habe ich z.B. die ADF Faces noch nicht ausprobiert aber ich bin auch sehr skeptisch was der Ansatz Java direkt in der DB zu verwenden von Oracle bringt. Von daher Oracle ruhig erst einmal ignorieren &#8211; my two cents.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/08/praesentation-dive-into-java-a-roadmap-to-effective-java-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

