<?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; Eclipse</title>
	<atom:link href="http://javathreads.de/tag/eclipse/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>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>JAXenter Umfrage – Welche Java IDE benutzt du?</title>
		<link>http://javathreads.de/2010/01/jaxenter-umfrage-welche-java-ide-benutzt-du/</link>
		<comments>http://javathreads.de/2010/01/jaxenter-umfrage-welche-java-ide-benutzt-du/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 05:00:08 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Umfrage]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=2269</guid>
		<description><![CDATA[Eine ganz interessante QuickVote Umfrage von JAXenter mit dem Titel 2 &#8220;Welche ist Ihre bevorzugte Java IDE?&#8220;. Bei dem Ergebnis ist vor allem erstaunlich bzw. unerwartet, dass NetBeans doch so nah an Eclipse liegt.



In einem Kommentar bei dem Hinweis von Adam Bien auf dieses Quickvote verweist jemand auf die Entwicklung bei Google. Schaut man sich [...]]]></description>
			<content:encoded><![CDATA[<p>Eine ganz interessante QuickVote Umfrage von JAXenter mit dem Titel 2 &#8220;<a href="http://it-republik.de/jaxenter/quickvote/results/1/poll/72">Welche ist Ihre bevorzugte Java IDE?</a>&#8220;. Bei dem Ergebnis ist vor allem erstaunlich bzw. unerwartet, dass <a href="http://netbeans.org/">NetBeans</a> doch so nah an <a href="http://www.eclipse.org/">Eclipse</a> liegt.</p>
<div class="singleImgDiv">
<a href="http://it-republik.de/jaxenter/quickvote/results/1/poll/72"><img src="http://javathreads.de/data/uploads/2010/01/JavaMagazinQuickvoteIDE2.jpg" alt="JAXenter Quickvote- Welche ist Ihre bevorzugte Java IDE?" title="JAXenter Quickvote- Welche ist Ihre bevorzugte Java IDE?" width="525" height="238" class="alignnone size-full wp-image-2272" /></a>
</div>
<p>In einem Kommentar bei dem Hinweis von <a href="http://www.adam-bien.com/roller/abien/entry/netbeans_is_very_poplular_in">Adam Bien</a> auf dieses Quickvote verweist jemand auf die Entwicklung bei Google. Schaut man sich also diese <a href="http://www.google.com/insights/search/#cat=5&#038;q=eclipse%2Cnetbeans&#038;geo=DE&#038;cmpt=q">Entwicklung bei Google</a> innerhalb Deutschlands an so erh&#228;lt man noch einen deutlicheren Vorsprung von Eclipse, der allerdings &#252;ber die letzten Jahre deutlich weniger geworden ist:</p>
<div class="singleImgDiv">
<a href="http://www.google.com/insights/search/#cat=5&#038;q=eclipse%2Cnetbeans&#038;geo=DE&#038;cmpt=q"><img src="http://javathreads.de/data/uploads/2010/01/GoogleInsightsForSearchEclipseNetbeans.jpg" alt="Google Insights for Search - Eclipse NetBeans" title="Google Insights for Search - Eclipse NetBeans" width="600" height="371" class="alignnone size-full wp-image-2275" /></a>
</div>
<p>Die Charts auf Google Insights for Search kann man auch einbetten, was ich doch direkt mal ausprobieren musste:</p>
<div style="text-align:center">
<script type="text/javascript" src="http://www.gmodules.com/ig/ifr?url=http%3A%2F%2Fwww.google.com%2Fig%2Fmodules%2Fgoogle_insightsforsearch_interestovertime_searchterms.xml&amp;up__property=empty&amp;up__search_terms=eclipse%7Cnetbeans&amp;up__location=DE&amp;up__category=5&amp;up__time_range=empty&amp;up__compare_to_category=false&amp;synd=ig&amp;w=600&amp;h=350&amp;lang=de&amp;title=Google+Insights+for+Search&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
</div>
<p>Insgesamt kann man an der Umfrage und dem Chart gut erkennen, dass Eclipse nicht mehr ganz die alleinige Herrschaft hat bzw. sie langsam verliert. Ich hatte vor Jahren mal NetBeans ausprobiert, war damals aber nicht so begeistert und bin deswegen auf Eclipse umgestiegen. Auch in meinen bisherigen Projekten wurde eigentlich ausschlie&#223;lich Eclipse verwendet. Vielleicht sollte man sich aber dennoch mal wieder NetBeans anschauen. Aktuell habe ich davon gelesen, dass die JSF 2 Unterst&#252;tzung darin schon sehr gut sein soll. Ich werde wohl dennoch erst einmal weiterhin ein Unterst&#252;tzer von Eclipse sein =).</p>
<p>(via <a href="http://www.adam-bien.com/roller/abien/entry/netbeans_is_very_poplular_in">Adam Bien</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2010/01/jaxenter-umfrage-welche-java-ide-benutzt-du/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java Trendbarometer Sommer 2009</title>
		<link>http://javathreads.de/2009/07/java-trendbarometer-sommer-2009/</link>
		<comments>http://javathreads.de/2009/07/java-trendbarometer-sommer-2009/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 20:00:29 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Trendbarometer]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1910</guid>
		<description><![CDATA[Das Problem ist, dass zu oft in Projekten herumgewurschtelt wird,
Doku Mangelware und ein Modell oftmals gar nicht oder nur aus der
Anfangsphase vorhanden ist.
Und das wird dann vom Projektleiter stolz als &#8220;agile Entwicklung&#8221;
verkauft.
Der Java Trendbarometer, bzw die Kommentare bei der Erhebung, nennt diese Entwicklung &#8220;Chaos-driven&#8221; und &#8220;pseudeagli&#8221; und hat damit wohl nicht ganz unrecht. Der Java [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Das Problem ist, dass zu oft in Projekten herumgewurschtelt wird,<br />
Doku Mangelware und ein Modell oftmals gar nicht oder nur aus der<br />
Anfangsphase vorhanden ist.</p>
<p>Und das wird dann vom Projektleiter stolz als &#8220;agile Entwicklung&#8221;<br />
verkauft.</p></blockquote>
<p>Der <a href="http://www.expeso.de/java-trendbarometer.html">Java Trendbarometer</a>, bzw die Kommentare bei der Erhebung, nennt diese Entwicklung &#8220;Chaos-driven&#8221; und &#8220;pseudeagli&#8221; und hat damit wohl nicht ganz unrecht. Der Java Trendbarometer wird von der Firma <a href="http://www.expeso.de/java-trendbarometer.html">expeso</a> erhoben und zwei mal j&#228;hrlich ver&#246;ffentlicht und im Juli ist der aktuellste nun ver&#246;ffentlicht worden.</p>
<p>Zur&#252;ck zum agilen Vorgehen. Es wurde nach der typischen vorgehensweise im Entwicklungsprozess gefragt und wie selbstverst&#228;ndlich hat &#8220;agil&#8221; gewonnen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendVorgehenEntwicklunsprozess.png" alt="Java Trendbaromenter - Vorgehen Entwicklunsprozess" title="Java Trendbaromenter - Vorgehen Entwicklunsprozess" width="500" height="252" class="alignnone size-full wp-image-1914" />
</div>
<p>Das Thema der Vorgehensweisen ist auch das am h&#228;ufigsten und wohl konroversesten diskutierte Thema.</p>
<p>Nun aber ein paar interessante Grafiken rund um Java. Die Frage nach der H&#228;ufigkeit der verwendeten Java Versionen zeigt, dass JDK 1.4 doch so langsam immer weniger wird.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendJavaSprache.png" alt="Java Trendbarometer - H&#228;ufigkeit Java Sprache" title="Java Trendbarometer - H&#228;ufigkeit Java Sprache" width="500" height="283" class="alignnone size-full wp-image-1915" />
</div>
<p>In der JavaEE Welt bestimmen allerdings immer noch die Altlasten bzw. die in den letzten Jahren mit J2EE erstellten Enterprise Anwendungen den verwendeten Standard. Hier ist die Migration oder Neuentwicklung deutlich teurer als das Beibehalten der funktionierenden Anwendung.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendJavaEE.png" alt="Java Trendbaromenter - JavaEE" title="Java Trendbaromenter - JavaEE" width="500" height="257" class="alignnone size-full wp-image-1916" />
</div>
<p>Pers&#246;nlich glaube ich allerdings, dass in den n&#228;chsten Jahren die Kurve f&#252;r JEE, gerade mit der JEE 6 Spezifikation, deutlich nach oben gehen wird.</p>
<p>Die Frage nach der Entwicklungsumgebung finde ich auch sehr interessant. So ist Eclipse deutlicher Favorit unter den IDEs. Ich h&#228;tte allerdings gedacht, dass Netbeans einen Schritt nach vorne macht aber es hat in punkte &#8220;h&#228;ufig&#8221; zur letzten Erhebung sogar abgenommen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendEntwicklungsumgebung.png" alt="Java Trendbarometer - Entwicklungsumgebung" title="Java Trendbarometer - Entwicklungsumgebung" width="500" height="276" class="alignnone size-full wp-image-1918" />
</div>
<p>Jetzt kommt der Chart f&#252;r die Frameworks f&#252;r Web-Anwendungen. Hier hat Spring immer noch die Nase vorn und das Resultiert wohl aus der allgemeinen JEE Entwicklung. Interessant ist auch, dass die Menge der Eigenentwicklungen deutlich vertreten ist. Das Ajax hier als Framework mit aufgef&#252;hrt scheint mir ein wenig Fragw&#252;rdig allerdings ist sch&#246;n zu erkennen, dass ohne Ajax wohl keine Web-Anwendung mehr entwickelt wird.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendFrameworkWebentwicklung.png" alt="Java Trendbarometer - Frameworks Webentwicklung" title="Java Trendbarometer - Frameworks Webentwicklung" width="500" height="467" class="alignnone size-full wp-image-1919" />
</div>
<p>Im der Frage nach der Entwicklung von Rich Internet Applications (RIA) ist Ajax allerdings wieder richtig angesiedelt und im Gegensatz zur letzten Erhebung Ende letzten Jahres hat Ajax und Webstart an H&#228;ufigkeit zugenommen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/JavaTrendRIA.png" alt="Java Trendbarometer - Rich Internet Applications" title="Java Trendbarometer - Rich Internet Applications" width="500" height="281" class="alignnone size-full wp-image-1920" />
</div>
<p>Diese sechs Charts sind nur ein kleiner Auszug aus dem Trendbarometer und zeigen die f&#252;r diesen Blog wichtigsten Themen. Die hier aufgelisteten Themen k&#246;nnen auch direkt mit dem <a href="http://javathreads.de/2009/01/trends-in-java-projekten/">Artikel &#252;ber den letzten Trenbarometer</a> verglichen werden.<br />
Weitere Themen unter den &#220;berschriften &#8220;Aktuelle Themen (SOA)&#8221;, &#8220;Open Source&#8221;, &#8220;Software-Entwicklungsprozess&#8221; und &#8220;Inovation und Weiterbildung&#8221; werden auch in dem Trendbarometer besprochen und auch sehr interessant. Der <a href="http://www.expeso.de/java-trendbarometer.html">Trendbarometer</a> kann kostenlos bei der Firma expeso <a href="http://www.expeso.de/newsletter.html">kostenlos angefordert</a> werden.</p>
<p>Das einleitende Zitat stammt &#252;brigens aus dem <a href="http://www.heise.de/developer/news/foren/S-Java-Entwicklung-zwischen-chaos-driven-und-pseudo-agil/forum-163108/list/">Heise Forum</a> zum entsprechenden <a href="http://www.heise.de/newsticker/Java-Entwicklung-zwischen-chaos-driven-und-pseudo-agil--/meldung/142735">Artikel</a> &#252;ber den Java Trendbarometer . Die Diskussionen in dem Form gehen von interessant bis am&#252;sant und es lohnt sich daher einen Blick reinzuwerfen.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/07/java-trendbarometer-sommer-2009/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Subversion unter Eclipse Galileo konfigurieren</title>
		<link>http://javathreads.de/2009/07/subversion-unter-eclipse-galileo-konfigurieren/</link>
		<comments>http://javathreads.de/2009/07/subversion-unter-eclipse-galileo-konfigurieren/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 16:38:40 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Galielo]]></category>
		<category><![CDATA[Galileo]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Subversive]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1857</guid>
		<description><![CDATA[Nachdem es schon mit Eclipse Ganymede den Aufwand gab SVN (Subversion) zum laufen zu bringen h&#228;tte man drauf hoffen k&#246;nnen, dass diesmal bei Eclipse Galileo eine direkte SVN Unterst&#252;tzung schon mit dabei ist. Aber leider muss man auch hier ein wenig nachhelfen.
In dem Eclipse JEE Package muss man wie auch unter Ganymede erst das Subversive [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem es schon mit Eclipse Ganymede den Aufwand gab SVN (Subversion) zum laufen zu bringen h&#228;tte man drauf hoffen k&#246;nnen, dass diesmal bei Eclipse Galileo eine direkte SVN Unterst&#252;tzung schon mit dabei ist. Aber leider muss man auch hier ein wenig nachhelfen.</p>
<p>In dem <a href="http://eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/galileor">Eclipse JEE Package</a> muss man wie auch unter <a href="http://javathreads.de/2008/07/subversion-unter-eclipse-ganymede-konfigurieren/">Ganymede</a> erst das <strong>Subversive Plugin</strong> und anschlie&#223;end einen <strong>Subversive Connector</strong> installieren. Man muss also zwei verschiedene Update Sites f&#252;r die Installation ansprechen.</p>
<h4>Subversive Plugin Installation</h4>
<p>Das Subersive Plugin selbst steht unter der Eclipse Lizenz und ist somit direkt &#252;ber die Eclipse Galielo Update Site <a href="http://download.eclipse.org/releases/galileo">http://download.eclipse.org/releases/galileo</a> zu finden. Diese Update Site muss nicht neu hinzugef&#252;gt werden sondern ist schon im &#8220;Install new Software&#8221; Dialog (Hauptmen&#252;->Help->Install new Software&#8230;) unter &#8220;Work with&#8221; bereits zu finden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/eclipse35svnconnectorupdatesiteselection.png" alt="Eclipse Galileo - SVN Subversive Plugin Update Site" title="Eclipse Galileo - SVN Subversive Plugin Update Site" width="610" height="254" class="alignnone size-full wp-image-1858" />
</div>
<p>Wenn die Update Site ausgew&#228;hlt wurde muss unter dem Punkt &#8220;Collaboration&#8221; der &#8220;Subversive SVN Team Provider (Incubation)&#8221; selektiert werden. Das ist das von Eclipse bereitgestelte Subversive Plugin:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/eclipse35svnplugins.png" alt="Eclipse Galileo - SVN Subversive Plugin" title="Eclipse Galileo - SVN Subversive Plugin" width="610" height="333" class="alignnone size-full wp-image-1877" />
</div>
<p>Anschlie&#223;end die Installation mit dem Button &#8220;Next&#8221; starten und den Dialog Angaben folgen.</p>
<p>Da noch eine weitere Installation der Subversive Connectors folgt muss Eclipse nicht dringend wie empfohlen neu gestartet werden.</p>
<h4>Subversive Connector Installation</h4>
<p>Nachdem das Subversive Plugin als Basis installiert wurde muss als Subversive Connector eine externe Bibliothek installiert werden. Dazu bietet Polarion wie auch schon zu Eclipse Ganymede verschiedene Connectoren an. Die ben&#246;tigte Update Site URL ist <a href="http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/">http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/</a>. Diese muss im &#8220;Install new Software&#8221; Dialog (Hauptmen&#252;->Help->Install new Software&#8230;) noch hinzugef&#252;gt werden.</p>
<p>Dazu die URL einfach in das &#8220;Work with&#8221; Eingabefeld kopieren und Enter dr&#252;cken. Als Connectoren kann man entweder einen reinen Windows Connector (JavaHL) oder reinen Java Connector (SVNKit) verwenden. Welchen man verwenden m&#246;chte kann man selbst entscheiden. Es ist kein Problem alle angebotenen zu installieren da man diesen sp&#228;ter noch konfigurieren kann:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/eclipse35svnconnectorauswahl.png" alt="Eclipse Galileo SVN Connector Auswahl" title="Eclipse Galileo SVN Connector Auswahl" width="610" height="403" class="alignnone size-full wp-image-1865" />
</div>
<p>Anschlie&#223;end die Installation mit dem Button &#8220;Next&#8221; starten und den Dialog Angaben folgen. Eclipse nach der Installtion wie aufgefordert neu starten.</p>
<h4>Subversive Konfiguration</h4>
<p>Einmal installiert kann man im &#8220;Eclipse Installation Details&#8221; Dialog (Hauptmen&#252;->Help->About Eclipse->Installation Details) die installierte Subversive Software aufgelistet sehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/eclipse35subversiveinstalltion.png" alt="Eclipse Galileo Subversive Software" title="Eclipse Galileo Subversive Software" width="610" height="211" class="alignnone size-full wp-image-1867" />
</div>
<p>Welcher Subversive Connector verwendet werden soll kann in den Eclipse Preferences (Hauptmen&#252;->Window->Preferences) unter Team->SVN im Reiter SVN Connector konfiguriert werden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/07/eclipse35subversiveconnectorkonfiguration.png" alt="Eclipse Galileo Subversive Connector Preferences Konfiguration" title="Eclipse Galileo Subversive Connector Preferences Konfiguration" width="610" height="225" class="alignnone size-full wp-image-1868" />
</div>
<p>Einmal alles installiert und konfiguriert kann man in der SVN Perspektive nun einen SVN Repository einrichten und seine Projekte wieder mit dem SVN Repository synchronisieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/07/subversion-unter-eclipse-galileo-konfigurieren/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Eclipse Galileo ver&#246;ffentlicht</title>
		<link>http://javathreads.de/2009/06/eclipse-galileo-veroeffentlicht/</link>
		<comments>http://javathreads.de/2009/06/eclipse-galileo-veroeffentlicht/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 07:00:43 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Galileo]]></category>
		<category><![CDATA[JBoss Tools]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1777</guid>
		<description><![CDATA[Es ist knapp ein Jahr her, dass Eclipse Ganymede (3.4) ver&#246;ffentlicht wurde und viele Erneuerungen gegen&#252;ber seinem Vorg&#228;nger mitgebracht hat &#8211; ich berichtete dar&#252;ber. In vielen Firmen wird erst so langsam auf Eclipse Ganymede umgestiegen und nun erscheint auch schon der Nachfolger: Eclipse Galileo.



Eclipse Galileo entspricht der Version 3.5 und bringt seinerseits auch wieder viele [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist knapp ein Jahr her, dass Eclipse Ganymede (3.4) ver&#246;ffentlicht wurde und viele Erneuerungen gegen&#252;ber seinem Vorg&#228;nger mitgebracht hat &#8211; <a href="http://javathreads.de/2008/07/eclipse-ganymede-als-jee-entwicklungsumgebung/">ich berichtete dar&#252;ber</a>. In vielen Firmen wird erst so langsam auf Eclipse Ganymede umgestiegen und nun erscheint auch schon der Nachfolger: <a href="http://eclipse.org/downloads/">Eclipse Galileo</a>.</p>
<div class="singleImgDiv">
<a href="http://eclipse.org/downloads/"><img src="http://javathreads.de/data/uploads/2009/06/eclipsegalileo.png" alt="Eclipse Galileo" title="Eclipse Galileo" width="620" height="91" class="alignnone size-full wp-image-1778" /></a>
</div>
<p>Eclipse Galileo entspricht der Version 3.5 und bringt seinerseits auch wieder viele neue Dinge mit. Neben den bisher schon bekannten Projekte wie z.B. WebTools, Data Tools oder C/C++ Tools bringt Galileo f&#252;nf neue Projekte mit an den Start. Pers&#246;nlich finde ich das <a href="http://eclipse.org/mat/">Memory Analyzer Projekt</a> (MAT) am interessantesten. Wer einen Einblick in MAT bekommen m&#246;chte sollte sich mal das dazugeh&#246;rige <a href="http://dev.eclipse.org/blogs/memoryanalyzer/">Blog</a> und auch das <a href="http://live.eclipse.org/node/520">Webinar</a> aus dem letzten Jahr ansehen.</p>
<p>Nebem dem MAT sind auch noch die <a href="http://eclipse.org/pdt/">PHP Developer Tools</a>, eine <a href="http://eclipse.org/mylyn/">Mylyn</a> WikiText Unterst&#252;tzung, eine Unterst&#252;tzung um <a href="http://eclipse.org/webtools/sse/">XSL Tooling</a> um XSL zu bearbeiten und zu debuggen und Verbesserungen f&#252;r die <a href="http://eclipse.org/birt/phoenix/">Business Intelligence Reporting Tools</a> (BIRT) mit Galileo ver&#246;ffentlicht worden (siehe auch <a href="http://www.eclipse.org/org/press-release/20090624_galileo.php">Release Notes</a>).</p>
<div class="subHeadline">Eclipse 3.5 &#8211; New and Noteworthy</div>
<p>Das sch&#246;ne an Ver&#246;ffentlichungen von Eclipse und deren Plugins sind die &#8220;<a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/eclipse-news-all.html">New and Noteworthy</a>&#8221; Seiten auf denen die interessantesten Erneuerungen mit einem Screenshot erl&#228;utert werden. F&#252;r Eclipse Galileo ist die Seite entsprechend der vielen Erneuerungen auch wirklich lang. Im folgenden ein paar Erneuerungen die ich auf Anhieb ganz interessant fand:</p>
<ul>
<li><b>Platform &#8211; Compare Editor enhancements</b><br/>Wirklich brauchbare Erneuerungen wie Go to line oder Open Resource und Type sowie die M&#246;glichkeit den Encoding Type auf jeder Seite des Editors neu zu setzen.
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/gotoline.png" alt="Eclipse Ganymede - Compare Editor - Go to line" title="Eclipse Ganymede - Compare Editor - Go to line" width="466" height="345" class="alignnone size-full wp-image-1780" />
</div>
</li>
<li><b>Platform &#8211; Open Resource dialog allows choice of editor</b><br/>Man kann nun den Editor f&#252;r die zu &#246;ffnende Datei direkt im Open Resource Dialog ausw&#228;hlen, falls gew&#252;nscht:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/open-resource-dialog.png" alt="Eclipse Galileo - Open Resource Dialog - Editor ausw&#228;hlen" title="Eclipse Galileo - Open Resource Dialog - Editor ausw&#228;hlen" width="369" height="406" class="alignnone size-full wp-image-1782" />
</div>
</li>
<li><b>Install/Update Changes</b><br/>Wie auch bei der letzten Version wurde einiges an dem Install und Update Management gearbeitet und verbessert. Um nur eine Sache herauszugreifen im folgenden der Screenshot des vereinfachten Hinzuf&#252;gen neuer Update Sites:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/p2install.png" alt="Eclipse Galileo - Install and Update Dialog - Installing software from a new site" title="Eclipse Galileo - Install and Update Dialog - Installing software from a new site" width="452" height="573" class="alignnone size-full wp-image-1783" />
</div>
</li>
<li><b>Java Editor &#8211; Constructor completion</b><br/>Der Content Assistent bietet nun die verf&#252;gbaren Konstruktoren der Klasse zur Auswahl an:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/constructor-completion.png" alt="Eclipse Galileo - Java Editor - Constructor completion" title="Eclipse Galileo - Java Editor - Constructor completion" width="466" height="201" class="alignnone size-full wp-image-1785" />
</div>
</li>
<li><b>Java Editor &#8211; Open Implementation hyperlink</b><br/>Ein Feature auf das wohl s&#228;mtliche Entwickler lange gewartet haben. Von einem Interface direkt in die Implementierung via Hyperlink springen sofern nur eine Implementierung vorhanden ist. Sind mehre da werden diese in der type hierarchy  aufgelistet und man kann dann direkt w&#228;hlen. Den Hyperlink erh&#228;lt man indem man die Taste STRG gedr&#252;ckt h&#228;lt und mit der Maus &#252;ber die Methode f&#228;hrt. Der Dialog sieht dann wie folgt aus:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/open-implementation.png" alt="Eclipse Galileo - Java Editor - Open Implementation" title="Eclipse Galileo - Java Editor - Open Implementation" width="466" height="102" class="alignnone size-full wp-image-1786" />
</div>
</li>
<li><b>Java Editor &#8211; Quick Fix to start Rename refactoring</b><br/>M&#246;chte man eine Methode mit Quick Fix (Strg-1) umbennen besteht nun die M&#246;glichkeit auch ein Refactoring &#252;ber das Projekt zu starten:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/rename-in-workspace.png" alt="Java Editor - Quick Fix to start Rename refactoring" title="Java Editor - Quick Fix to start Rename refactoring" width="466" height="76" class="alignnone size-full wp-image-1792" />
</div>
</li>
<li><b>Java Editor &#8211; Formatter option to preserve user line breaks</b><br/>Eine der bisher sehr nervigen Details am Formatter war, dass ich meine selbstdefinierten Zeilenumbr&#252;che nicht behalten durfte. Das soll jetzt vorbei sein:
<div class="singleImgDiv" style="text-align:left;">
<img src="http://javathreads.de/data/uploads/2009/06/formatter-join-lines-before.png" alt="Java Editor - Formatter option to preserve user line breaks - Vorher" title="Java Editor - Formatter option to preserve user line breaks - Vorher" width="115" height="97" class="alignnone size-full wp-image-1787" style="border:none;" />
</div>
<p>Und nach dem formatieren:</p>
<div class="singleImgDiv" style="text-align:left;">
<img src="http://javathreads.de/data/uploads/2009/06/formatter-join-lines-after.png" alt="Java Editor - Formatter option to preserve user line breaks - nacher" title="Java Editor - Formatter option to preserve user line breaks - nacher" width="154" height="98" class="alignnone size-full wp-image-1788" style="border:none;"/>
</div>
</li>
<li><b>Java Refactoring and Source Actions &#8211; Generate toString()</b><br/>Ein ziemlich cooles Feature ist die Unterst&#252;tzung f&#252;r die toString() Methode. Man erh&#228;lt diesen Dialog aus dem Context Men&#252; unter &#8220;Source->Generate toString()&#8230;&#8221; und dieser sieht wie folgt aus:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/generate-tostring-dialog.png" alt="Eclipse Galileo - Java Refactoring and Source Actions - Generate toString()" title="Eclipse Galileo - Java Refactoring and Source Actions - Generate toString()" width="428" height="574" class="alignnone size-full wp-image-1793" />
</div>
</li>
<li><b>Java Refactoring and Source Actions &#8211; Comparing identical values</b><br/>Wenn zwei gleiche Variablen verglichen werden wird das nun als Warning angegeben:
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/comparing-identical-values-example.png" alt="Eclipse Galileo - Java Refactoring and Source Actions - Comparing identical values" title="Eclipse Galileo - Java Refactoring and Source Actions - Comparing identical values" width="466" height="113" class="alignnone size-full wp-image-1790" />
</div>
</li>
<li><b>Java Refactoring and Source Actions &#8211; Missing hashCode() method</b><br/>Der Compiler kann nun fehlende hashCode() Methoden finden auch wenn equals() schon vorhanden ist. Dieses Feature ist per Default ausgeschalten &#8211; einschalten kann man es unter  &#8220;Preferences > Java > Compiler > Errors/Warnings in the Potential programming problems&#8221;.
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/compiler-hashcode-diagnosis.png" alt="Java Refactoring and Source Actions - Missing hashCode() method" title="Java Refactoring and Source Actions - Missing hashCode() method" width="440" height="196" class="alignnone size-full wp-image-1796" />
</div>
</li>
</ul>
<p>Es gibt noch einige mehr Erweiterungen die man sich auf der &#8220;<a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/eclipse-news-all.html">New and Noteworthy</a>&#8221; Seite ansehen kann.</p>
<div class="subHeadline">Eclipse Galileo Packages</div>
<p>Neben den neuen Projekten werden nat&#252;rlich auch wieder fertige <a href="http://www.eclipse.org/downloads/">Projekt Packages </a>angeboten &#8211; darunter auch wieder das JEE Package mit den Web Tools und Data Tools:</p>
<div class="singleImgDiv">
<a href="http://www.eclipse.org/downloads/"><img src="http://javathreads.de/data/uploads/2009/06/eclipsegalileoprojektpackages.jpg" alt="Eclipse Galileo Packages" title="Eclipse Galileo Packages" width="620" height="321" class="alignnone size-full wp-image-1802" /></a>
</div>
<p>Startet man das Eclipse Galileo JEE Package sieht man auch an der Welcome Page eine deutlichen &#196;nderung:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/eclipsegalileowelcomepage.jpg" alt="Eclipse Galileo JEE Package Welcome Page" title="Eclipse Galileo JEE Package Welcome Page" width="620" height="419" class="alignnone size-full wp-image-1820" />
</div>
<p>Auf dieser Welcome Page sind unter anderem die sieben wichtigsten im JEE Package durch die Web Tools Platform mitgebrachten Unterst&#252;tzungen aufgelistet: Web Services, Web, XML Tools, Server Tools, Java EE, JSF, JPA. Die Web Tools Platform 3.1, welche auch erst im Juni ver&#246;ffentlicht wurde, hat auch einige Erneuerungen mitgebracht die unter &#8220;<a href="http://www.eclipse.org/webtools/releases/3.1.0/newandnoteworthy/">Eclipse Web Tools Platform 3.1 &#8211; New and Noteworthy</a>&#8221; im Detail angesehen werden k&#246;nnen.</p>
<div class="subHeadline">JBoss Tools unter Eclipse Galileo</div>
<p>Nat&#252;rlich steht auch wieder das leidige Thema Plugin Update auf der Liste und diesmal haben die JBoss Tools schon ein wenig vorgearbeitet. Schon am Anfang des Monats wurde auf dem offiziellen Blog <a href="http://in.relation.to/Bloggers/JBossTools31MilestoneReleased">verk&#252;ndet</a>, dass man den JBoss Tools 3.1 Milestone 1 f&#252;r Eclipse Galileo installieren und testen kann. Der Update Site Link f&#252;r die Developer Version ist: <a href="http://download.jboss.org/jbosstools/updates/development">http://download.jboss.org/jbosstools/updates/development</a>.</p>
<div class="singleImgDiv">
<a href="http://in.relation.to/Bloggers/JBossTools31MilestoneReleased"><img src="http://javathreads.de/data/uploads/2009/06/jbosstoolsgalileo2.jpg" alt="JBoss Tools 3.1 M1 f&#252;r Eclipse Galileo" title="JBoss Tools 3.1 M1 f&#252;r Eclipse Galileo" width="450" height="101" class="alignnone size-full wp-image-1827" /></a>
</div>
<p>Ich habe die JBoss Tools 3.1 M1 unter Eclipse Galileo installieren und auch ohne erkennbare Probleme verwenden k&#246;nnen. In einem ersten Versuch hat das Umbennenen ohne Probleme funktioniert. Den Rename Dialog erh&#228;lt man am einfachsten aus der Seam Component View heraus. Insgesamt ein wirklich sehr n&#252;tzliches Feature!<br />
In ersten Tests mit einem bestehenden Projekt lies sich insgesamt problemlos arbeiten. Im About Dialog von Eclipse werden die entsprechenden Plugins auch korrekt angezeigt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/06/jbosstoolseclipsegalileo.png" alt="Eclipse Galileo - JBoss Tools 3.1 M1 installiert" title="Eclipse Galileo - JBoss Tools 3.1 M1 installiert" width="548" height="331" class="alignnone size-full wp-image-1798" />
</div>
<p>Auch zu den JBoss Tools 3.1 M1 gibt es eine &#8220;<a href="http://docs.jboss.org/tools/whatsnew/index.html">News and Noteworthy</a>&#8221; Seite auf der die einzelnen nennenswerten Erneuerungen zu finden sind. Ich m&#246;chte nur kurz eins hervorherben welche ich ziemlich praktisch finde und zwar ist das der &#8220;Rename Seam Component&#8221; Dialog, der verf&#252;gbar ist wenn man in einer Klasse die mit @Name annotiert ist, sich in der components.xml oder in der Seam components view befindet. Verwendet man diesen Dialog wird der Name auch in den xhtml Dateien gefunden und dort refactored:</p>
<div class="singleImgDiv">
<a href="http://in.relation.to/Bloggers/JBossTools31MilestoneReleased"><img src="http://javathreads.de/data/uploads/2009/06/renameseamcomponent.png" alt="JBoss Tools 3.1 M1 - Seam Tools - Rename Seam Component Dialog" title="JBoss Tools 3.1 M1 - Seam Tools - Rename Seam Component Dialog" width="485" height="494" class="alignnone size-full wp-image-1797" /></a>
</div>
<p>Der &#220;bergang von Eclipse 3.4 auf Eclipse 3.5 mit den JBoss Tools scheint also vorerst problemlos zu funktioniern (im Gegensatz zu dem Umstieg von 3.3 auf 3.4).</p>
<p>Somit w&#252;nsche ich viel Spass beim ausprobieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/06/eclipse-galileo-veroeffentlicht/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse QuickFix Tipp: instanceof Class Cast erstellen</title>
		<link>http://javathreads.de/2009/04/exlipse-quickfix-tipp-instanceof-class-cast-erstellen/</link>
		<comments>http://javathreads.de/2009/04/exlipse-quickfix-tipp-instanceof-class-cast-erstellen/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 07:00:53 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[QuickFix]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1372</guid>
		<description><![CDATA[Hat man ein Objekt und m&#246;chte &#252;berpr&#252;fen von welcher Klasse dieses Objekt eine Instanz ist wird der Operator instanceof verwendet. Ergibt diese Pr&#252;fung true erfolgt in der Regel ein Cast auf diese Klasse. So sieht der Code oft wie folgt aus:

if(unknownObj instanceof&#160;Integer) {
  Integer myCastedIntObj = (Integer)unknownObj;
  // do sth with casted object
}

Um [...]]]></description>
			<content:encoded><![CDATA[<p>Hat man ein Objekt und m&#246;chte &#252;berpr&#252;fen von welcher Klasse dieses Objekt eine Instanz ist wird der Operator <code>instanceof</code> verwendet. Ergibt diese Pr&#252;fung <code>true</code> erfolgt in der Regel ein Cast auf diese Klasse. So sieht der Code oft wie folgt aus:</p>
<div class="codebox">
<pre style="margin:0;padding:0">if(unknownObj <span style="color:#7F0074;"><b>instanceof</b></span>&#160;Integer) {
  Integer myCastedIntObj = (Integer)unknownObj;
  <span style="color:#3F7F5F">// do sth with casted object</span>
}</pre>
</div>
<p>Um diesen &#8220;instance of&#8221; Code mit anschlie&#223;endem Class Cast zu erstellen besteht in Eclipse die M&#246;glichkeit einen Quickfix zu verwenden und so die Tipparbeit deutlich zu vereinfachen. Dazu einfach das Schl&#252;sselwort <code>instanceof</code> anfangen zu schreiben und <code>Strg-Space</code> dr&#252;cken. Es &#246;ffnet sich der QuickFix Panel mit Vorschl&#228;gen wobei instanceof direkt an erster Stelle steht:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsequickfix_instanceof1.png" alt="Eclipse QuickFix Panel" title="Eclipse QuickFix Panel" width="600" height="163" class="borderGray alignnone size-full wp-image-1439" />
</div>
<p>Selektiert man diesen QuickFix und dr&#252;ckt Enter wird das Code Template im Editor erstellt um die restlichen notwendigen Angaben wie z.B. die Variable die gepr&#252;ft oder die Klasse auf die gecastet werden soll. Was viele nicht wissen ist, dass wenn im Eclipse Editor ein blauer Rahmen um ein Wort steht kann man einfach mit Tab durch das Template navigieren:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsequickfix_eingabe.png" alt="Eclipse QuickFix instanceof Eingabe" title="Eclipse QuickFix instanceof Eingabe" width="600" height="84" class="borderGray alignnone size-full wp-image-1441" />
</div>
<p>Gibt man die Klasse an auf die gepr&#252;ft werden soll wird sie auch direkt in der Zeile mit dem Cast eingesetzt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsequickfix_instanceof3.png" alt="Eclipse QuickFix instanceof - Klassenangabe" title="Eclipse QuickFix instanceof - Klassenangabe" width="600" height="77" class="borderGray alignnone size-full wp-image-1443" />
</div>
<p>Anschlie&#223;end nur noch den Namen der neuen internen Variable anpassen und mit Enter den QuickFix und somit das Bearbeiten des Templates beenden. Der Cursor postiert sich nun direkt in die Zeile unter der Class cast Zeile und es kann somit direkt weitergearbeitet werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsequickfix_instanceof4.png" alt="Eclipse QuickFix instanceof Cursor nach beenden" title="Eclipse QuickFix instanceof Cursor nach beenden" width="600" height="70" class="borderGray alignnone size-full wp-image-1444" />
</div>
<p>Man wird diesen QuickFix wahrscheinlich seltener brauchen aber wenn man ihn kennt und wei&#223; wie sich Eclipse verh&#228;lt kann man einen solchen <code>instanceof</code> Ausdruck binnen Sekunden und ohne gro&#223;e M&#252;he erstellen. Man sollte es also mal ausprobiert haben und wissen, dass es diese Unterst&#252;tzung gibt.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/04/exlipse-quickfix-tipp-instanceof-class-cast-erstellen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DB Schema aus JPA Entit&#228;ten mit Hilfe von Eclipse WTP und den Hibernate Tools generieren lassen</title>
		<link>http://javathreads.de/2009/04/db-schema-aus-jpa-entitaeten-mit-hilfe-von-eclipse-wtp-und-den-hibernate-tools-generieren-lassen/</link>
		<comments>http://javathreads.de/2009/04/db-schema-aus-jpa-entitaeten-mit-hilfe-von-eclipse-wtp-und-den-hibernate-tools-generieren-lassen/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 06:00:20 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[DDL]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclpse Ganymede]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Hibernate Tools]]></category>
		<category><![CDATA[JBoss Tools]]></category>
		<category><![CDATA[JPA]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1384</guid>
		<description><![CDATA[Arbeitet man mit JPA (Java Persistence API) und konfiguriert die Entity Beans mit Hilfe von javax.persistence Annotationen stellt sich immer die Frage wie man von den modellierten Entity Beans an das Datenbankschema f&#252;r die entsprechende Zieldatenbeank gelangt.



Entity Bean mit JPA Annotationen


Dazugeh&#246;riges SQL Schema f&#252;r diese Entity Bean











Meistens bringen die verschiedenen JPA Implementierungen eigene Tools mit. [...]]]></description>
			<content:encoded><![CDATA[<p>Arbeitet man mit JPA (Java Persistence API) und konfiguriert die Entity Beans mit Hilfe von <code>javax.persistence</code> Annotationen stellt sich immer die Frage wie man von den modellierten Entity Beans an das Datenbankschema f&#252;r die entsprechende Zieldatenbeank gelangt.</p>
<table style="width:100%">
<tr>
<td style="width:50%">
Entity Bean mit JPA Annotationen
</td>
<td style="width:50%">
Dazugeh&#246;riges SQL Schema f&#252;r diese Entity Bean
</td>
</tr>
<tr>
<td style="width:50%">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlsnippetentity2.png" alt="Entity Bean mit JPA Annotationen" title="Entity Bean mit JPA Annotationen" width="300" height="332" class="borderGray alignnone size-full wp-image-1414" />
</td>
<td style="width:50%">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlsnippetsql.png" alt="Entity Schema" title="Entity Schema" width="300" height="332" class="borderGray alignnone size-full wp-image-1412" />
</td>
</tr>
</table>
<p>Meistens bringen die verschiedenen JPA Implementierungen eigene Tools mit. Verwendet man z.B. Hibernate kann man zum Beispiel die von <a href="http://www.hibernate.org/hib_docs/reference/en/html/toolsetguide.html">Konsole Tools</a> in Form eines ANT Tasks verwenden. Arbeitet man mit der Eclipse Ganymede IDE hat man mit dem Web Tools Subprojekt &#8220;Dali&#8221; (<a href="http://www.eclipse.org/webtools/dali/main.php">Dali JPA Tools</a>) die M&#246;glichkeit sich das DB Schema mit Hilfe eines Eclipse Dialogs generieren zu lassen.  Ich habe schon mal bei der Vorstellung der JBoss Tools 3 Alpha Version <a href="http://javathreads.de/2008/08/jboss-tools-300-alpha1-langsam-geht-es-vorwaerts/">darauf hingewiesen</a>, dass das WTP Dali Projekt ab Version 3 unterst&#252;tzt wird.</p>
<div class="subHeadline">Kurze Anleitung</div>
<p>Nachdem ich diesen Artikel in der ausf&#252;hrlichen Version erstellt hatte kam mir dieser mehr doch sehr lang vor obwohl das Konfigurieren an sich relativ schnell geht. Dahier hier die wenigen Schritte in absoluter Kurzform:</p>
<ul>
<li>Projekt Facet &#8220;JPA Persistence&#8221; dem EJB Projekt hinzuf&#252;gen (Projekt Properties)</li>
<li>JPA Plattform und DB Verbindung konfigurieren (Projekt Properties)</li>
<li>Im Cotextmen&#252; auf dem EJB-Projekt &#8220;JPA-Tools->Generate DDL&#8230;&#8221; w&#228;hlen</li>
<li>Im DDL Generation Dialog das Zielverzeichnis, die Ausgabedatei und Hibernate Console- (konfigurierbar &#252;ber die Hibernate Perspektive) oder DB-Konfiguration angeben. Dialog mit &#8220;Finish&#8221; beenden -> DDL Datei wird erstellt.</li>
</ul>
<div class="subHeadline">Ausf&#252;hrliche Anleitung</div>
<p>Im Folgenden wird anhand meines kleinen <a href="http://java-schnipsel.de">Java Schnipsel</a> Projektes gezeigt wie das Datenbankschema, genauer gesagt die DDL (Data Definition Language) Datei, mit Eclipse generiert werden kann. Dieses Projekt verwendet Hibernate und somit werden aus den JBoss Tools Plugins das Hibernate Tools Eclipse Plugin ben&#246;tigt. Nun sind die JBoss Tools 3.0.0 endlich <a href="http://javathreads.de/2009/03/jboss-tools-300-ga-fuer-eclipse-ganymede-verfuegbar/">offiziell Stable erschienen</a> und da ist es an der Zeit dieses Feature mal auszuprobieren.</p>
<p>Im ersten Schritt sollte &#252;berpr&#252;ft werden ob die Hibernate Tools installiert sind. Aus den JBoss Tools Eclipse Plugins wird f&#252;r das Generieren der DDL Datei die Hibernate Tools ben&#246;tigt. F&#252;r eine Installationsanleitung der JBoss Tools siehe <a href="http://javathreads.de/2009/03/jboss-tools-300-ga-fuer-eclipse-ganymede-verfuegbar/">hier</a>.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlhibernatetoolsaddon.png" alt="JBoss Tools Eclipse Plugins - Hibernate Tools" title="JBoss Tools Eclipse Plugins - Hibernate Tools" width="600" height="88" class="borderGray alignnone size-full wp-image-1389" />
</div>
<p>Mein Beispielprojekt ist in der f&#252;r Eclipse normalen JEE Projektstruktur erstellt worden (mit dem <a href="http://javathreads.de/2008/09/tutorial-mit-jboss-seam-und-jee5-unter-eclipse-starten/">Seam Web Project Wizzard</a>):</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlhibernatetoolsprojektstruktur.png" alt="Eclipse JEE Projektstruktur" title="Eclipse JEE Projektstruktur" width="600" height="131" class="borderGray alignnone size-full wp-image-1388" />
</div>
<p>Hat man eine solche Projektstruktur muss man nun das JPA Project Facet hinzuf&#252;gen. Dazu auf dem EJB Projekt aus dem Context Men&#252; (recht Maustaste) &#8220;Properties&#8221; aufrufen. Im Properties Dialog &#8220;Project Facets&#8221; selektieren und dort das Facet &#8220;Java Persistence&#8221; ausw&#228;hlen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlprojectfacets3.png" alt="Project Facet &quot;Java Persistence&quot;" title="Project Facet &quot;Java Persistence&quot;" width="600" height="402" class="borderGray alignnone size-full wp-image-1402" />
</div>
<p>Wenn das Facet &#8220;Java Persistence&#8221; selektiert wurde erscheint unten im gelben Hintergrund der Hinweis, dass weitere Konfigurationsm&#246;glichkeiten bestehen (&#8220;Further configuration available&#8221;). Am einfachsten ist es diese Konfiguration direkt auszuw&#228;hlen. Hat man die Einstellung mit &#8220;Apply&#8221; best&#228;tigt einfach das Facet noch einmal deslektieren, Apply dr&#252;cken und das Facet wieder selektieren.<br />
In dem Dialog &#8220;Modify Facet Project -> JPA Facet&#8221; muss nun die verwendete JPA Platform und die DB Verbindung konfiguriert werden. Ich verwende Hibernate und habe meine MySQL Verbindung konfiguriert. Man kann direkt von diesem Dialog aus eine neue DB Verbindung konfigurieren, sofern man das noch nicht getan hat.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlprojectfacetjpa.png" alt="JPA Facet Konfiguration" title="JPA Facet Konfiguration" width="525" height="229" class="borderGray alignnone size-full wp-image-1396" />
</div>
<p>Die zwei weiteren dort m&#246;glichen Einstellungen habe ich bei mir auf &#8220;Use implementation provided by server Runtime&#8221; (Die Server Runtime kann in den Properties unter dem Punkt &#8220;Targeted Runtimes&#8221; konfiguriert werden &#8211; verwendet man keinen Server wie den JBoss kann man die JPA Jars auch direkt angeben) und &#8220;Discover annotated classes automatically&#8221; gesetzt. Anschlie&#223;end den JPA Facet Dialog und anschlie&#223;end den Properties Dialog mit &#8220;Ok&#8221; beenden.</p>
<p>Hat man allerdings den Properties Dialog schon vor den zus&#228;tzlichen JPA Einstellungen mit &#8220;Ok&#8221; beendet muss man noch einmal die Properties f&#252;r das EJB Projekt aufrufen und kann dann aber den Men&#252;punkt &#8220;JPA&#8221; direkt selektieren und somit konfigurieren:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlprojectfacetjpadirekt2.png" alt="JPA Facet Konfiguration im Properties Men&#252;" title="JPA Facet Konfiguration im Properties Men&#252;" width="600" height="254" class="borderGray alignnone size-full wp-image-1404" />
</div>
<p>Nachdem die Java Persistence Project Facets dem JEE Projekt hinzugef&#252;gt wurden ist im Context Men&#252;, sofern man dieses auf dem EJB Projekt aufruft, der Eintrag &#8220;JPA Tools&#8221; zu finden. Darin findet sich der Men&#252;punkt &#8220;Generate DDL&#8221;.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddljpatoolscontextmenu2.png" alt="Context Men&#252; JPA Tools -&gt; Generate DDL" title="Context Men&#252; JPA Tools -&gt; Generate DDL" width="600" height="325" class="borderGray alignnone size-full wp-image-1416" />
</div>
<p>Erh&#228;lt man nach dem Ausw&#228;hlen dieses Men&#252;punktes den Fehler &#8220;DDL Generation is not supported by the Generic Platform&#8221; hat man vergessen seinen JPA Platform (Hibernate, Toplink, ..) zu konfigurieren. Dazu einfach wieder in die EJB Projekt Properties und den Men&#252;punkt &#8220;JPA&#8221; selektieren und konfigurieren. Mehr Informantionen zu dieser Fehlermeldung auch <a href="http://dev.eclipse.org/newslists/news.eclipse.technology.dali/msg00324.html">hier</a>.<br />
Ist alles soweit korrekt konfiguriert &#246;ffnet sich der DDL Generation Dialog. Darin gibt man zuerst das Zielverzeichnis sowie den Namen der DDL Datei an. Die zweite wichtige Konfiguration ist der Hibernate Dialekt der verwendet werden soll. Dazu kann man entweder eine bereits durch die Hibernate Perspektive erstellte <a href="http://javathreads.de/2008/03/unterstuetzung-fuer-jpa-hibernate-tools-in-eclipse/">Hibernate Console Konfiguration</a> verwenden und diese mit der Checkbox &#8220;Use Console Konfiguration&#8221; verwenden oder wie in meinem Fall die bereits konfigurierte Datenbankverbindung. Der Dialekt kann dabei automatisch erkannt werden (<a href="http://javathreads.de/2009/02/zwingend-den-hibernate-dialekt-konfigurieren/">ich berichtete dar&#252;ber</a>) oder direkt angeben:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddlgenerationdialog.png" alt="DDL Generation Dialog" title="DDL Generation Dialog" width="600" height="466" class="alignnone size-full wp-image-1407" />
</div>
<p>Ist alles korrekt konfiguriert wird durch den Button &#8220;Finish&#8221; das Generieren der DDL in der gew&#252;nschten Zieldatei gestartet. Das kann einen kleinen Moment dauern und anschlie&#223;end ist diese Schemadatei auch unter der gew&#252;nschten Position (bei mir im EJB-Projekt im Ordner ejbModule) zu finden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/jpaddldatei.png" alt="DDL Datei: schema.ddl" title="DDL Datei: schema.ddl" width="600" height="276" class="borderGray alignnone size-full wp-image-1408" />
</div>
<p>Gerade f&#252;r die erste Entwicklungszeit und dem Erstellen der Entit&#228;ten ist diese einfach DDL Generierung sehr n&#252;tzlich. Sieht man doch direkt was f&#252;r Datenbanktypen aus den Java Attributen erstellt werden.</p>
<p>Alternativ kann man mit den Hibernate Tools &#252;ber die Hibernate Perspektive das Schema auch direkt in der DB erstellen. Vor gut einem Jahr habe ich dazu einen <a href="http://javathreads.de/2008/03/unterstuetzung-fuer-jpa-hibernate-tools-in-eclipse/">kleinen Artikel erstellt</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/04/db-schema-aus-jpa-entitaeten-mit-hilfe-von-eclipse-wtp-und-den-hibernate-tools-generieren-lassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse QuickFix Tipp: Getter &amp; Setter generieren</title>
		<link>http://javathreads.de/2009/04/eclipse-quickfix-tipp-getter-setter-generieren/</link>
		<comments>http://javathreads.de/2009/04/eclipse-quickfix-tipp-getter-setter-generieren/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 19:00:00 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[QuickFix]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1347</guid>
		<description><![CDATA[Eines der m&#228;chtigsten Features von Eclipse ist das sogenannte &#8220;QuickFix&#8220;. Immer wenn ein Error oder Warning im Editor angezeigt wird besteht die M&#246;glichkeit sich von Eclipse helfen zu lassen. Um an die QuickFix Vorschl&#228;ge von Eclipse zu gelangen kann man entweder einfach nur mit der Maus &#252;ber die entsprechende unterringelte Stelle fahren oder links auf [...]]]></description>
			<content:encoded><![CDATA[<p>Eines der m&#228;chtigsten Features von Eclipse ist das sogenannte &#8220;<strong>QuickFix</strong>&#8220;. Immer wenn ein Error oder Warning im Editor angezeigt wird besteht die M&#246;glichkeit sich von Eclipse helfen zu lassen. Um an die QuickFix Vorschl&#228;ge von Eclipse zu gelangen kann man entweder einfach nur mit der Maus &#252;ber die entsprechende unterringelte Stelle fahren oder links auf das Error oder Warning Icon klicken.</p>
<div class="subHeadline">QuickFix Dialog</div>
<p>Um das QuickFix Verhalten zu verdeutlichen habe ich den Namen der Klasse ge&#228;ndert, so dass dieser nicht mehr mit dem Namen der Datei (QuickFixTests.java) &#252;bereinstimmt. In Java ist das nicht erlaubt und somit bietet mir Eclipse mit dem QuickFix Dialog L&#246;sungen an. Hier der Screenshot des Maus Hovers:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/quickfixclassnamehover.png" alt="Quickfix Vorschl&#228;ge mit Maus-Hover" title="QuickFix Vorschl&#228;ge mit Maus-Hover" width="600" height="129" class="borderGray alignnone size-full wp-image-1348" />
</div>
<p>Hier der Screenshot des Klicks auf das Warning oder Error Icons links. Ist der Cursor in dieser Zeile kann man auch einfach <b>Strg-1</b> dr&#252;cken um diesen Dialog zu erhalten:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/quickfixclassnameclick.png" alt="QuickFix Vorschl&#228;ge mit Maus-Klick" title="QuickFix Vorschl&#228;ge mit Maus-Klick" width="600" height="95" class="borderGray alignnone size-full wp-image-1349" />
</div>
<div class="subHeadline">QuickFix Tipp: Getter und Setter generieren lassen</div>
<p>Einer der Features &#252;berhaupt ist das Generieren von Getter und Setter zu einem Attribut. So spart man sich deutlich Tipparbeit in dem man direkt nach dem Schreiben des Attributes Strg-1 dr&#252;ckt, &#8220;Generate getter and setter for &#8216;attributeName&#8217;&#8221; selektiert und Enter dr&#252;ckt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/quickfixgettersettergeneration.png" alt="Eclipse QuickFix - Generate getter and setter" title="Eclipse QuickFix - Generate getter and setter" width="600" height="166" class="borderGray alignnone size-full wp-image-1353" />
</div>
<p>Anschlie&#223;end erscheint der Dialog f&#252;r die Getter und Setter Konfiguration, welcher auch &#252;ber das Context Men&#252; &#8220;Source->Generate Getters and Setters..&#8221; ge&#246;ffnet werden kann:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsegenerategetterandsetterdialog2.png" alt="Eclipse Generate Getter and Setter Dialog" title="Eclipse Generate Getter and Setter Dialog" width="422" height="285" class="alignnone size-full wp-image-1358" />
</div>
<p>Vor allem die Einstellung an welche Position der Setter und Getter erstellt werden soll ist interessant: sollen die neuen Methoden an die erste oder letzte Stelle in der Klasse oder direkt hinter einer schon bestehenden Methode erstellt werden? Sind die Einstellungen erst einmal gesetzt worden werden sie f&#252;r die n&#228;chste Generieren &#252;bernommen. So kann man anschlie&#223;end die weiteren Getter und Setter ohne gro&#223;es Konfigurieren schnell generieren.</p>
<p>Ist das Generieren durchgelaufen sind die Getter und Setter nat&#252;rlich vorhanden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/quickfixgettersettergenerated.png" alt="Eclipse QuickFix - Generierte Getter und Setter" title="Eclipse QuickFix - Generierte Getter und Setter" width="600" height="197" class="borderGray alignnone size-full wp-image-1359" />
</div>
<div class="subHeadline">Toggle Mark Occurrences</div>
<p>Interessant an dieser Stelle zu erw&#228;hnen ist noch die farbliche Hervorhebung des Attributes. Hat man ein in der Eclipse Men&#252;leiste den Button &#8220;Toggle Mark Occurrences&#8221; (Alt-Strg-O) eingeschaltet wie im folgenden Screenshot rot hervorgehoben zu sehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/04/eclipsetogglemarkoccurrences.png" alt="&quot;Toggle Mark Occurrences&quot; (Alt-Strg-O) " title="&quot;Toggle Mark Occurrences&quot; (Alt-Strg-O) " width="600" height="137" class="borderGray alignnone size-full wp-image-1360" />
</div>
<p>Dann die Verwendung des gerade mit dem Cursor selektierten Attributes farblich hervorgehoben. Dabei wird farblich zwischen lesenden und schreibenden Aktionen unterschieden. Dieses Verhalten ist im Screenshot davor mit den generierten Getter und Setter sch&#246;n zu sehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/04/eclipse-quickfix-tipp-getter-setter-generieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JBoss Tools 3.0.0 GA f&#252;r Eclipse Ganymede verf&#252;gbar</title>
		<link>http://javathreads.de/2009/03/jboss-tools-300-ga-fuer-eclipse-ganymede-verfuegbar/</link>
		<comments>http://javathreads.de/2009/03/jboss-tools-300-ga-fuer-eclipse-ganymede-verfuegbar/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 22:00:33 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Ganymede]]></category>
		<category><![CDATA[JBoss Tools]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=1242</guid>
		<description><![CDATA[Nach l&#228;ngerem warten und den verschiedensten Versuchen die JBoss Tools unter Ganymede, als Nightly Build oder 3.0.0 Alpha Version f&#252;r Eclipse Ganymede zu installieren ist nun endlich die offizielle JBoss Tools 3.0.0 GA Version ver&#246;ffentlicht worden. Schon seit letzter Woche konnte man die JBoss Tools 3.0.0 GA &#252;ber den Eclipse Update Manager installieren &#8211; nur [...]]]></description>
			<content:encoded><![CDATA[<p>Nach l&#228;ngerem warten und den verschiedensten Versuchen die JBoss Tools unter <a href="http://javathreads.de/2008/07/jboss-tools-unter-eclipse-ganymede-verwenden/">Ganymede</a>, als <a href="http://javathreads.de/2008/10/jboss-tools-nightly-build-update-seite/">Nightly Build</a> oder <a href="http://javathreads.de/2008/08/jboss-tools-300-alpha1-langsam-geht-es-vorwaerts/">3.0.0 Alpha Version</a> f&#252;r Eclipse Ganymede zu installieren ist nun endlich die offizielle <a href="http://in.relation.to/Bloggers/JBossTools3IsHere">JBoss Tools 3.0.0 GA</a> Version ver&#246;ffentlicht worden. Schon seit letzter Woche konnte man die JBoss Tools 3.0.0 GA &#252;ber den Eclipse Update Manager installieren &#8211; nur die offizielle Nachricht fehlte. Die JBoss Tools kommen auch gleich mit einem neuen Logo daher, welches aus <a href="https://jira.jboss.org/jira/browse/JBIDE-2739">vielen verschiedenen Vorschl&#228;gen</a> ausgew&#228;hlt wurde.</p>
<div class="singleImgDiv">
<a href="http://in.relation.to/Bloggers/JBossTools3IsHere"><img src="http://javathreads.de/data/uploads/2009/03/jbosstools3logo.png" alt="JBoss Tools 3 Logo" title="JBoss Tools 3 Logo" width="600" height="145" class="borderGray alignnone size-full wp-image-1244" /></a>
</div>
<div class="subHeadline">JBoss Tools unter Eclipse Ganymede (3.4) installieren</div>
<p>M&#246;chte man mit den JBoss Tools 3 arbeiten ben&#246;tigt man Eclipse Ganymede. Es wird nicht empfohlen von Eclipse 3.3 auf Eclipse 3.4 via Update Manager zu wechseln. Viel praktischer ist es eine frische Eclipse Installation vorzunehmen und somit auch potentielle Fehlerquellen aus dem Weg zu gehen. Am einfachsten ist es wenn man die <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-jee-ganymede-SR2-win32.zip">Eclipse 3.4 IDE for Java EE Developers</a> herunterl&#228;dt. Auch hier gibt es mittlerweile das Release 2 Bundle, welches ca 170 MB gro&#223; ist.</p>
<div class="singleImgDiv">
<a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-jee-ganymede-SR2-win32.zip"><img src="http://javathreads.de/data/uploads/2009/03/eclipseideforjavaeedevelopersjpg.png" alt="Eclipse 3.4 IDE for Java EE Developers SR2" title="Eclipse 3.4 IDE for Java EE Developers SR2" width="600" height="74" class="borderGray alignnone size-full wp-image-1245" /></a>
</div>
<p>Nachdem Eclipse heruntergeladen, entpackt und gestartet wurde einfach die JBoss Tools Update URL (<a href="http://download.jboss.org/jbosstools/updates/stable">http://download.jboss.org/jbosstools/updates/stable</a>) im Eclipse Update Manager hinzuf&#252;gen. Den Update Manager findet man im Hauptmen&#252; unter Help->Software Updates. Dort den Reiter &#8220;Available Software&#8221; selektieren und rechts den Button &#8220;Add Site&#8230;&#8221; dr&#252;cken:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/eclipse34jbosstoolsupdatesite.png" alt="JBoss Tools Update Site" title="JBoss Tools Update Site" width="600" height="346" class="borderGray alignnone size-full wp-image-1248" />
</div>
<p>Ist die Update Site hinzugef&#252;gt kann man nach dem Aufklappen alle angebotenen JBoss Tools sehen. F&#252;r meine Seam Entwicklung mit Hibernate, RichFaces auf dem JBoss AS installiere ich immer die folgende Tools (hervorgehobene Selektion):</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/eclipse34jbosstoolsselektion.png" alt="JBoss Tools Selektion" title="JBoss Tools Selektion" width="600" height="487" class="borderGray alignnone size-full wp-image-1249" />
</div>
<p>Um die Installation fertigzustellen den Button &#8220;Install&#8221; dr&#252;cken und den Anweisungen folgen.</p>
<p>Erstellt man &#252;ber die JBoss Tools ein Seam Web Projekt sieht man schon die erste Erneuerung denn es wird jetzt auch Seam 2.1 direkt unterst&#252;tzt, wie man auch bei der Konfiguration der Seam Runtime sehen kann:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/jbosstools3seam21support.png" alt="Seam 2.1 Support" title="Seam 2.1 Support" width="525" height="191" class="borderGray alignnone size-full wp-image-1250" />
</div>
<div class="subHeadline">N&#252;tzliche neue Features f&#252;r die Entwicklung von XHTML Seiten mit Seam</div>
<p>Wer mit der Nightly Build oder 3.0.0 Alpha Version gearbeitet hat wird die neuen wirklich n&#252;tzlichen Features wahrscheinlich schon gesehen und ausprobiert haben. Vor allem bei der Entwicklung von Facelets XHTML Seiten in Verbindung mit Seam Komponenten sind sehr sch&#246;ne Features in die neue Version reingekommen. Ein paar davon, die ich pers&#246;nlich absolut praktisch finde, sind im folgenden kurz aufgelistet.</p>
<p><strong>Autocompletion:</strong><br />
Es werden alle mit <code>@Name</code> annotierten Seam Komponenten direkt im XHTML Editor gefunden und durch Autocomplete angeboten:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/jbosstools3codecompletion.png" alt="JBoss Toosl - XHTML Code Completion" title="JBoss Toosl - XHTML Code Completion" width="374" height="204" class="borderGray alignnone size-full wp-image-1252" />
</div>
<p><strong>EL Warning:</strong><br />
Hat man eine Fehler in der Expression Language gemacht wie der typische &#8220;rechte-Klammer-fehlt&#8221; Fehler findet man diesen nun nicht mehr erst nach dem Deployment sondern direkt im Editor durch ein Warning:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/jbosstools3elwarning.png" alt="JBoss Tools - EL Warning" title="JBoss Tools - EL Warning" width="397" height="338" class="borderGray alignnone size-full wp-image-1253" />
</div>
<p><strong>Seam Komponenten und Links direkt aus dem Editor heraus &#246;ffnen:</strong><br />
Man kann nun direkt aus dem XHMTL Editor heraus durch halten von STRG und der Maus direkt in die Java Klassen der Seam Komponenten oder direkt in andere .xhtml Seiten springen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/jbosstools3openon.png" alt="JBoss Tools - OpenOn" title="JBoss Tools - OpenOn" width="389" height="61" class="borderGray alignnone size-full wp-image-1255" />
</div>
<p><strong>Visueller Editor f&#252;r die pages.xml:</strong><br />
Es gibt nun eine wirklich gute Unterst&#252;tzung f&#252;r die pages.xml. Darunter auch eine visuelle Ansicht f&#252;r die Navigationsregeln, die in der pages.xml definiert werden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/03/jbosstools3pages1.png" alt="JBoss Tools - pages.xml visueller Editor" title="JBoss Tools - pages.xml visueller Editor" width="600" height="191" class="borderGray alignnone size-full wp-image-1254" />
</div>
<p>Mehr Bilder zu den neuen Features findet man auch wie gewohnt im Kapitel &#8220;<a href="http://docs.jboss.org/tools/whatsnew/">News and Noteworthy</a>&#8220;.<br />
Alles in allem ist es wirklich sch&#246;n endlich eine funktionierende und offizielle Version der JBoss Tools f&#252;r Eclipse Ganymede zu haben. Nun steht der Entwicklung von vielen sch&#246;nen neuen Seam Projekten nichts mehr im Wege =).</p>
<p>Die offizielle Meldung f&#252;r die JBoss Tools 3.0 findet man auch noch mal <a href="http://in.relation.to/Bloggers/JBossTools3IsHere">hier</a> zum nachlesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/03/jboss-tools-300-ga-fuer-eclipse-ganymede-verfuegbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einf&#252;hrung in Unit Tests mit TestNG unter Eclipse</title>
		<link>http://javathreads.de/2009/02/einfuehrung-in-unit-tests-mit-testng-unter-eclipse/</link>
		<comments>http://javathreads.de/2009/02/einfuehrung-in-unit-tests-mit-testng-unter-eclipse/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 08:00:34 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Plugins]]></category>
		<category><![CDATA[TestNG]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=169</guid>
		<description><![CDATA[
Unit Tests sind vielen Entwicklern ein Begriff und in der Java Welt verbindet man diesen Begriff fast automatisch mit dem Testframework JUnit. Dabei steht als genereller Gedanke hinter Unit Tests einzelne kleine Teilbereiche (Units, Methoden, Funktionen) atomar und unabh&#228;ngig von einer Umgebung und Abh&#228;ngigkeiten zu testen. Man geht davon aus, dass wenn die einzelnen kleinen [...]]]></description>
			<content:encoded><![CDATA[<div style="float:left; margin: 5px;"><a href="http://www.amazon.de/Next-Generation-Java-Testing-Advanced/dp/0321503104/ref=sr_1_1?ie=UTF8&#038;s=books-intl-de&#038;qid=1234856702&#038;sr=8-1"><img src="http://javathreads.de/data/uploads/2008/07/testngbuchcover.jpg" alt="" title="Buch: Next Generation Java Testing" width="240" height="240" class="alignnone size-full wp-image-170" /></a></div>
<p>Unit Tests sind vielen Entwicklern ein Begriff und in der Java Welt verbindet man diesen Begriff fast automatisch mit dem Testframework <a href="http://junit.sourceforge.net/">JUnit</a>. Dabei steht als genereller Gedanke hinter Unit Tests einzelne kleine Teilbereiche (Units, Methoden, Funktionen) atomar und unabh&#228;ngig von einer Umgebung und Abh&#228;ngigkeiten zu testen. Man geht davon aus, dass wenn die einzelnen kleinen Teile eines Systems in Ihrerer Aufgabe funktionieren und diese korrekt tun das gro&#223;e Ganze auch Bestand hat. Dabei gelten nur die Zust&#228;nde: Erfolg oder Fehler.</p>
<p>In diesem und folgenden Artikeln soll es um den JUnit Konkurrenten <a href="http://testng.org">TestNG</a> gehen. Das Testframework TestNG ist laut seinem Entwickler Cédric Beust aus der JUnit Frustration entstanden und das NG in TestNG bezieht sich auf <strong>N</strong>ext <strong>G</strong>eneration.</p>
<p>Wer diese Frustration nachlesen m&#246;chte kann dies <a href="http://www.beust.com/weblog/archives/000173.html">hier</a> und <a href="http://www.beust.com/weblog/archives/000082.html">hier</a> tun.</p>
<p>Nicht nur wegen dieser Aussage soll TestNG ein wenig n&#228;her begutachtet werden. Wer z.B. mit <a href="http://seamframework.org/">JBoss Seam</a> arbeitet wird sehr schnell merken, dass Seam von Haus aus eine TestNG Unterst&#252;tzung mitbringt. Auch andere Frameworks setzen auf TestNG. Aber auch ohne diese Frameworks bietet TestNG eine sehr gute Alternative zu dem schon genannten JUnit.</p>
<p>Das Ziel dieses ersten TestNG Artikels ist einfache TestNG Unit-Tests zu erstellen und aus Eclipse heraus ausf&#252;hren zu k&#246;nnen. In folgenden Artikeln wird es mehr in die M&#246;glichkeiten von TestNG und in die Konfiguration von Tests und Testsuites gehen.</p>
<div class="subHeadline">TestNG Bibliothek und Eclipse Plugin</div>
<p>Um TestNG zu verwenden muss die aktuelle Version <a href="http://testng.org/doc/download.html">heruntergeladen</a> werden. Zur Zeit ist die aktuellste Version 5.8 und kann <a href="http://testng.org/testng-5.8.zip">hier direkt</a> heruntergeladen werden.</p>
<p>Es besteht auch eine Eclipse Unterst&#252;tzung f&#252;r TestNG, die &#252;ber eine Update Seite installiert werden kann. Dazu unter Eclipse 3.4 (Ganymede) &#252;ber &#8220;Help->Software Updates&#8230;->Available Software Tab->Add Site&#8230;&#8221; klicken, die TestNG Update Site URL <a href="http://beust.com/eclipse">http://beust.com/eclipse</a> angeben und mit &#8220;OK&#8221; best&#228;tigen. Anschlie&#223;end das neu hinzugef&#252;gte Element aufklappen, das Plugin TestNG selektieren und den Button &#8220;Install&#8221; dr&#252;cken.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/07/testng_eclipsepluginupdateseite.png" alt="" title="Test NG - Eclipse Plugin Update Seite" class="borderGray alignnone size-full wp-image-173" />
</div>
<p>Bei der Installation den Anweisungen folgen. Es kam bei mir ab und an vor, dass bei der Best&#228;tigung f&#252;r die zu installierende Software nur ein leeres Fenster auftrat &#8211; da einfach mit &#8220;OK&#8221; weiter klicken.<br />
Nach dem Neustart von Eclipse steht eine TestNG View zur Verf&#252;gung und kann ge&#246;ffnet werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/07/testng_eclipseview.png" alt="" title="TestNG - Eclipse View" width="257" height="110" class="borderGray alignnone size-full wp-image-174" />
</div>
<div class="subHeadline">TestNG Bibliothek im Classpath angeben</div>
<p>Um TestNG aus Eclipse heraus verwenden zu k&#246;nnen m&#252;ss die TestNG Bibliothek noch im Classpath referenziert werden. TestNG liefert zwei jars aus: eine f&#252;r Java 1.4 (<span class="code">testng-5.8-jdk14.jar</span>) und eine f&#252;r Java 5 (<span class="code">testng-5.8-jdk15.jar</span>). Beide liegen im heruntergeladenen TestNG.zip im Root Verzeichnis oder alternativ im TestNG Eclipse Plugin Ordner (<span class="code">eclipse\plugins\org.testng.eclipse_5.8.0.2\lib</span>). In meinem Fall kopiere ich mir das <span class="code">testng-5.8-jdk15.jar</span> in meinen im Projekt erstellten <span class="code">lib</span> Ordner und gebe dieses im Projekt Classpath an (Rechte Maustaste auf den Projekt Ordner->Properties->Java Build Path).</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/07/testng_buildpath.png" alt="" title="TestNG - Java Build Path" class="borderGray alignnone size-full wp-image-176" />
</div>
<div class="subHeadline">Java Klasse und TestNG Testklasse erstellen</div>
<p>Als Beispielprojekt bzw. Beispiel Source Code der getestet werden soll habe ich ein Java Projekt mit zwei Source Ordnern erstellt. Ich pers&#246;nlich mag es lieber, wenn die Testklassen in einem getrennten Source Ordner liegen. So besteht bei mir der Source Ordner: <span class="code">src</span> und <span class="code">test</span> sowie ein normaler Ordner f&#252;r die ben&#246;tigten Java Bibliotheken <span class="code">lib</span>. Unterhalb der zwei Source Ordern erstelle ich zweimal das gleiche Package. Anschlie&#223;end in dem Ordner <span class="code">src</span> die Klasse <span class="code">de.javathreads.util.Calc</span> und in den Ordner <span class="code">test</span> die Klasse <span class="code">de.javathreads.util.CalcTest</span>. Nach getaner Arbeit sieht die Projektstruktur wie folgt aus:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/07/testng_javaprojektstruktur.png" alt="" title="TestNG - Java Projektstruktur" class="borderGray alignnone size-full wp-image-175" />
</div>
<p>Nun schauen wir uns den Source Code der zwei Klassen etwas genauer an. Die Klasse <span class="code">de.javathreads.util.Calc</span> beinhaltete die einfachen Methoden <span class="code">add()</span> und <span class="code">divide()</span>:</p>
<div class="codebox">
<pre style="margin:0;padding:0"><span style="color:#7F0074;"><b>package</b></span>&#160;de.javathreads.util;

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

  <span style="color:#7F0074;"><b>public</b></span>&#160;<span style="color:#7F0074;"><b>int</b></span>&#160;add(<span style="color:#7F0074;"><b>int</b></span>&#160;first, <span style="color:#7F0074;"><b>int</b></span>&#160;second) {
    <span style="color:#7F0074;"><b>return</b></span>&#160;fist + second;
  }

  <span style="color:#7F0074;"><b>public</b></span>&#160;<span style="color:#7F0074;"><b>double</b></span>&#160;divide(<span style="color:#7F0074;"><b>int</b></span>&#160;first, <span style="color:#7F0074;"><b>int</b></span>&#160;second) {
    <span style="color:#7F0074;"><b>if</b></span>&#160;(second == 0) {
      <span style="color:#7F0074;"><b>throw</b></span>&#160;<span style="color:#7F0074;"><b>new</b></span>&#160;ArithmeticException();
    }
    <span style="color:#7F0074;"><b>return</b></span>&#160;first / second;
  }
}</pre>
</div>
<p>Um mit TestNG eine Methode zu definieren die den eigentlichen Unit-Test enth&#228;lt wird diese mit der Annotation <span class="code">org.testng.annotations.Test</span> versehen. Um abzupr&#252;fen ob das Ergebnis dem erwarteten Ergebnis entspricht arbeitet TestNG mit Java Assertions und dem Schl&#252;sselwort <span class="code">assert</span>. Das sieht dann in meiner <span class="code">CalcTest</span> Klasse, welche die Methode <span class="code">Calc.divide()</span> testen soll, wie folgt aus:</p>
<div class="codebox">
<pre style="margin:0;padding:0"><span style="color:#7F0074;"><b>package</b></span>&#160;de.javathreads.util;

<span style="color:#7F0074;"><b>import</b></span>&#160;org.testng.annotations.Test;

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

  <span style="color:#3F5FBF">/**
   * Test f&#252;r simples dividieren.
   */</span>
  <span style="color:#646464">@Test</span>
  <span style="color:#7F0074;"><b>public</b></span>&#160;<span style="color:#7F0074;"><b>void</b></span>&#160;divideSimple() {
    Calc c = <span style="color:#7F0074;"><b>new</b></span>&#160;Calc();
    <span style="color:#7F0074;"><b>double</b></span>&#160;sum = c.divide(4, 2);
    <span style="color:#7F0074;"><b>assert</b></span>&#160;(sum == 2);
  }

  <span style="color:#3F5FBF">/**
   * Test f&#252;r Division durch 0.
   */</span>
  <span style="color:#646464">@Test</span>
  <span style="color:#7F0074;"><b>public</b></span>&#160;<span style="color:#7F0074;"><b>void</b></span>&#160;divideByZero() {
    Calc c = <span style="color:#7F0074;"><b>new</b></span>&#160;Calc();
    <span style="color:#7F0074;"><b>try</b></span>&#160;{
      c.divide(4, 0);
    } <span style="color:#7F0074;"><b>catch</b></span>&#160;(ArithmeticException ex) {
      <span style="color:#7F0074;"><b>assert</b></span>&#160;(true);
      return;
    }
    <span style="color:#7F0074;"><b>assert</b></span>&#160;(false);
  }
}</pre>
</div>
<p>Bei einer Pr&#252;fung mit dem Schl&#252;sselwort <span class="code">assert</span> muss der Ausdruck immer <span class="code">true</span> ergeben. Mehr zu Java Assertions kann auch in dem javathreads Artikel &#8220;<a href="http://javathreads.de/2009/01/reservierte-schluesselwoerter-in-java-assertions/">Reservierte Schl&#252;sselw&#246;rter in Java &#8211; Assertions</a>&#8221; sowie im <a href="http://www.java-blog-buch.de/0609-assertions/">Java Blog Buch</a> gefunden werden.</p>
<div class="subHeadline">Tests ausf&#252;hren</div>
<p>Durch das TestNG Eclipse Plugin ist ein Unit Test sehr einfach durch das Context-Men&#252; direkt aus dem Package Explorer heraus zu starten. Dazu mit der rechten Maustaste direkt auf die Klasse klicken welche die mit <span class="code">@Test</span> annotierten Methoden enth&#228;lt und anschlie&#223;end unterhalb des Men&#252;punkts &#8220;Run As&#8221; den Punkt &#8220;TestNG Test&#8221; anklicken:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/02/testngcontextmenurunas.jpg" alt="TestNG - Context Men&#252; -&gt; Run As -&gt; TestNG Test" title="TestNG - Context Men&#252; -&gt; Run As -&gt; TestNG Test" width="600" height="222" class="borderGray alignnone size-full wp-image-1112" />
</div>
<p>Es ist auch m&#246;glich auf ein Package zu klicken und somit alle darin liegenden Testklassen zu starten.<br />
Nach einem oder mehreren durchlaufenen Unit-Tests wird das Ergebnis in der TestNG View farblich hervorgehoben. Dabei wird farblich gezeigt ob generell alle Test positiv waren (gr&#252;n) oder mindestens einer fehlgeschlagen ist (rot). Im folgenden ein Screenshot f&#252;r den Fall das alle Tests positiv waren:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/02/testngresult.png" alt="TestNG - Ergebnisview positiv" title="TestNG - Ergebnisview positiv" width="600" height="177" class="borderGray alignnone size-full wp-image-1113" />
</div>
<p>Ist mindestens ein Test fehlgeschlagen wird der Balken sch&#246;n rot und man die fehlgeschlagene Methode erkennt man durch das rote Kreuz. Selektiert man diesen Test erh&#228;lt man im rechten Fenster die Exception zu dem Fehler. Bei TestNG sind das immer <span class="code">java.lang.AssertionError</span>, wie man im folgenden Screenshot sehen kann:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/02/testngresultnegative.png" alt="TestNG - Ergebnisview negativ" title="TestNG - Ergebnisview negativ" width="600" height="192" class="borderGray alignnone size-full wp-image-1115" />
</div>
<p>Mit einem Doppelklick auf die Methode gelangt man direkt in den Java Editor an die gew&#252;nschte Stelle der Testklasse. Es w&#228;re nun auch m&#246;glich den Test im Debug Modus zu starten. Dazu anstatt &#8220;Run As&#8221; einfach den Test mit &#8220;Debug As&#8221; starten. Dabei nat&#252;rlich nicht vergessen einen Breakpoint zu setzen ;).</p>
<p>In der Console k&#246;nnen noch die Logausgaben und auch das Gesamtergebnis begutachtet werden. Treten Exceptions in der zu testenden Klasse auf sind diese auch in der Konsole sichtbar. Im folgenden die Konsolenausgabe des Positiven Tests:</p>
<div class="codebox">
[Parser] Running:<br />
  D:\Projekte\Ganymede\02_src\01_trunk\JavaTestNGProject\temp-testng-customsuite.xml</p>
<p>PASSED: divideSimple<br />
PASSED: divideByZero</p>
<p>===============================================<br />
    de.javathreads.util.CalcTest<br />
    Tests run: 2, Failures: 0, Skips: 0<br />
===============================================
</p></div>
<p>Als letzte Information zu dieser kleinen Einf&#252;hrung noch der Hinweis, dass TestNG immer mit XML Konfigurationsdateien arbeitet. Der Vorteil wenn das TestNG Eclipse Plugin verwendet wird liegt darin, dass dieses Plugin die XML Datei generiert. Aktualisiert man im Package View das Projekt (Projekt selektieren und F5 dr&#252;cken) erscheint die Datei <span class="code">temp-testng-customsuite.xml</span>:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2009/02/testngxmlconfigfile.png" alt="TestNG - XML generiert Konfigurationsdatei im Projekt" title="TestNG - XML generiert Konfigurationsdatei im Projekt" width="278" height="282" class="borderGray alignnone size-full wp-image-1116" />
</div>
<p>Schaut man in diese Konfigurationsdatei rein sieht man wie der einfachste Fall eines TestNG Tests vie XML konfiguriert werden kann. Die Testklasse wird direkt angegeben:</p>
<div class="codebox">
<pre>&lt;!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"&gt;
&lt;suite name="JavaTestNGProject"&gt;
  &lt;test verbose="2" name="de.javathreads.util.CalcTest" annotations="JDK"&gt;
    &lt;classes&gt;
      &lt;class name="de.javathreads.util.CalcTest"/&gt;
    &lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;</pre>
</div>
<p>Man kann nat&#252;rlich auch eine solche XML Konfigurationsdatei manuell erstellen und via Eclipse Kontextmen&#252; als TestNG Test ausf&#252;hren. Dazu legt man sie einfach mit im Test-Source Verzeichnis ab.</p>
<div class="subHeadline">Fazit und Ausblick</div>
<p>In diesem Artikel wurde gezeigt wie man TestNG in Eclipse einbindet und das Eclipse Plugin verwenden kann. Zudem wurde ein sehr einfacher Test geschrieben und ausgef&#252;hrt. Grunds&#228;tzlich ist man nun also in der Lage Tests zu schreiben und diese auch auszuf&#252;hren, was den ein oder anderen schon deutlich weiter bringen d&#252;rfte ;).<br />
Im n&#228;chsten Artikel &#252;ber TestNG wird mehr auf die M&#246;glichkeiten mit TestNG eingegangen. Welche Annotationen gibt es und wie kann man sie einsetzen bzw. wo liegen die Vorteile.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2009/02/einfuehrung-in-unit-tests-mit-testng-unter-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

