<?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>all-IT &#187; Java</title>
	<atom:link href="http://www.k-oo.de/blog/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.k-oo.de/blog</link>
	<description>all-IT ist ein Blog aus dem IT Alltag</description>
	<lastBuildDate>Thu, 29 Jul 2010 11:56:01 +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>Vorschau auf Eclipse SDK 4.0</title>
		<link>http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/</link>
		<comments>http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 11:55:13 +0000</pubDate>
		<dc:creator>johnnypark</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Eclipse SDK 4.0]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Helios]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1753</guid>
		<description><![CDATA[Wie heise.de heute berichtet wurde eine frühe Version  [...]]]></description>
			<content:encoded><![CDATA[<p>Wie <a title="Neues Eclipse zum Schnuppern freigegeben" href="http://www.heise.de/newsticker/meldung/Neues-Eclipse-zum-Schnuppern-freigegeben-1047399.html" target="_blank">heise.de</a> heute berichtet wurde eine frühe Version der Eclipse SDK 4.0 veröffentlicht.  Sie dient laut Aussage der Entwickler als Spielwiese für Ideen für die kommende Genaration der vor allem im Java Bereich beliebten Entwicklungsumgebung. Einige Vorschläge fanden bereits den Weg in das letzte Release 3.6  ( Codename:  &#8220;Helios&#8221; ).  Der neue Look und die jetzt schon deutlich angezogene Performance machen auf jeden Fall Lust auf mehr.</p>
<p>Link: http://www.eclipse.org/eclipse4/</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/eclipse-sdk-4-0/" title="Eclipse SDK 4.0" rel="tag">Eclipse SDK 4.0</a>, <a href="http://www.k-oo.de/blog/tag/entwicklungsumgebung/" title="Entwicklungsumgebung" rel="tag">Entwicklungsumgebung</a>, <a href="http://www.k-oo.de/blog/tag/helios/" title="Helios" rel="tag">Helios</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/" title="JAX 2010 &#8211; Präsentationen (May 30, 2010)">JAX 2010 &#8211; Präsentationen</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 4 ever</title>
		<link>http://www.k-oo.de/blog/2010/07/01/java-4-ever/</link>
		<comments>http://www.k-oo.de/blog/2010/07/01/java-4-ever/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 14:13:44 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1740</guid>
		<description><![CDATA[Zu diesem Kurzfilm braucht man eigentlich nichts mehr z [...]]]></description>
			<content:encoded><![CDATA[<p>Zu diesem Kurzfilm braucht man eigentlich nichts mehr zu sagen außer, unbedingt angucken und die Botschaft begreifen. <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="480" height="269"><param name="movie" value="http://www.dailymotion.com/swf/video/xdug56_java-4-ever_shortfilms"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xdug56_java-4-ever_shortfilms" width="480" height="269" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/" title="JAX 2010 &#8211; Präsentationen (May 30, 2010)">JAX 2010 &#8211; Präsentationen</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/07/01/java-4-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Laufzeit (elapsed time) formatiert ausgeben</title>
		<link>http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/</link>
		<comments>http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 14:54:49 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1716</guid>
		<description><![CDATA[Manchmal möchte man nur wissen, wie lange das eigene J [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal möchte man nur wissen, wie lange das eigene Java Programm gebraucht hat. Wenn man sich mit der Angabe von Millisekunden begnügt ist dies ein Zweizeiler.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Date</span> start<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// do something</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Anzahl Millisekunden: &quot;</span>
   <span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> start.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Möchte man allerdings bei etwas länger laufenden Programmen nicht in Stunden und Minuten umrechnen müssen, so wird es etwas schwieriger. Was bekommt man im Internet nicht alles für Ratschläge, dabei muss man das Rad gar nicht neu erfinden. Ein Blick auf die <a href="http://commons.apache.org/lang/api-release/org/apache/commons/lang/time/DurationFormatUtils.html">Apache Commons</a> Bibliotheken hilft hier wie so oft weiter.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.lang.time.DurationFormatUtils</span><span style="color: #339933;">;</span>
...
<span style="color: #003399;">Date</span> start<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// do something</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Laufzeit: &quot;</span>
   <span style="color: #339933;">+</span>DurationFormatUtils.<span style="color: #006633;">formatDuration</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> start.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,<span style="color: #0000ff;">&quot;HH:mm:ss&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


	Tags: <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a>, <a href="http://www.k-oo.de/blog/tag/tutorial/" title="tutorial" rel="tag">tutorial</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/" title="JAX 2010 &#8211; Präsentationen (May 30, 2010)">JAX 2010 &#8211; Präsentationen</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2010 &#8211; Präsentationen</title>
		<link>http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/</link>
		<comments>http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/#comments</comments>
		<pubDate>Sun, 30 May 2010 17:10:22 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[JAX]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1679</guid>
		<description><![CDATA[
  div.thumb {display:block
    ;float: left
    ;wi [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
  div.thumb {display:block
    ;float: left
    ;width: 150px 
    ;padding: 2px
    ;margin: 2px
  }
</style>
<p>Alle Präsentationen der diesjährigen JAX erhalten die Teilnehmer diesmal nicht auf DVD, sondern nur noch über eine Adobe AIR Anwendung, für die man sich auf <a href="http://intellibook.de/special">http://intellibook.de/special</a> registrieren muss. </p>
<p>Adobe AIR ist wie Flash nicht gerade Resourcen schonend und muss (wie Flash auch) erst einmal auf dem Rechner installiert werden. Eine Webanwendung wäre mir lieber gewesen. </p>
<p>Einige Sprecher waren aber so nett, ihre Vorträge auf <a href="http://www.slideshare.net">slideshare.net</a> zur Verfügung zu stellen. Bei slideshare gibt es zwar die Möglichkeit Events einzurichten, diese wurde aber für die diesjährige Veranstaltung nicht genutzt, so dass die Präsentationen quer gestreut sind. </p>
<p>Ich bin mal auf die Suche gegangen und habe die Treffer unter dem Tag <a href="http://www.slideshare.net/tag/jax-2010"><strong>jax 2010</strong></a> zusammengefasst. Falls ich einen übersehen haben sollte, bitte ich im Voraus schon um Entschuldigung und würde mich über einen Link in den Kommentaren freuen.</p>
<div class="thumb">
    <a title="Polyglot Programming @ Jax.de 2010" href="http://www.slideshare.net/aalmiray/polyglot-programming-jaxde-2010"><br />
    <img alt="Polyglot Programming @ Jax.de 2010" src="http://cdn.slidesharecdn.com/jax10polyglotprogramming-100510032226-phpapp01-thumbnail-2?1273479824"><br />
    Polyglot Programming<br />
    </a>
  </div>
<div class="thumb">
    <a title="Flying with Griffon @ Jax.de 2010" href="http://www.slideshare.net/aalmiray/jax10-flying-withgriffon"><br />
    <img alt="Flying with Griffon @ Jax.de 2010" src="http://cdn.slidesharecdn.com/jax10flyingwithgriffon-100510032221-phpapp02-thumbnail-2?1273480137"><br />
    Flying with Griffon<br />
    </a>
  </div>
<div class="thumb">
    <a title="Adobe jax2010 1_dashboard @ Jax.de 2010" href="http://www.slideshare.net/guest9776673/adobe-jax2010-1dashboard"><br />
    <img alt="Adobe jax2010 1_dashboard @ Jax.de 2010" src="http://cdn.slidesharecdn.com/adobejax20101dashboard-100506082324-phpapp01-thumbnail-2?1273152467"><br />
     Adobe jax2010 1_dashboard<br />
    </a>
  </div>
<div class="thumb">
    <a title="JAX BPM und BPMN Open Source Roundtrip... @ Jax.de 2010" href="http://www.slideshare.net/camunda/20100506-jax-bpm-und-bpmn-open-source-roundtrip-bei-11"><br />
    <img alt="JAX BPM und BPMN Open Source Roundtrip... @ Jax.de 2010" src="http://cdn.slidesharecdn.com/berndrckerjrgmoldenhauer-bpmbei11-100506074834-phpapp01-thumbnail-2?1273150183"><br />
    JAX BPM und BPMN Open Source Roundtrip&#8230;<br />
    </a>
  </div>
<div class="thumb">
    <a title="Introduction to EclipseRT @ Jax.de 2010" href="http://www.slideshare.net/caniszczyk/introduction-to-eclipsert-jax-2010"><br />
    <img alt="Introduction to EclipseRT @ Jax.de 2010" src="http://cdn.slidesharecdn.com/introductiontoeclipsertjax2010-100506035006-phpapp01-thumbnail-2?1273135933"><br />
    Introduction to EclipseRT<br />
    </a>
  </div>
<div class="thumb">
    <a title="BPMN 2.0 in der Praxis @ Jax.de 2010" href="http://www.slideshare.net/camunda/20100506-jax-bpmn-20-in-der-praxis"><br />
    <img alt="BPMN 2.0 in der Praxis @ Jax.de 2010" src="http://cdn.slidesharecdn.com/jakobfreund-bpmn2-0inderpraxis-100506032503-phpapp02-thumbnail-2?1273134342"><br />
    BPMN 2.0 in der Praxis<br />
    </a>
  </div>
<div class="thumb">
    <a title="Am Ende ist doch alles HTML @ Jax.de 2010" href="http://www.slideshare.net/Flocke669/am-ende-ist-doch-alles-html-jax-2010"><br />
    <img alt="Am Ende ist doch alles HTML @ Jax.de 2010" src="http://cdn.slidesharecdn.com/jax-2010-jens-grochtdreis-100506013254-phpapp01-thumbnail-2?1273128010"><br />
    Am Ende ist doch alles HTML<br />
    </a>
  </div>
<div class="thumb">
    <a title="JAX JBoss ESB @ Jax.de 2010" href="http://www.slideshare.net/camunda/20100504-jax-jboss-esb"><br />
    <img alt="JAX JBoss ESB @ Jax.de 2010" src="http://cdn.slidesharecdn.com/20100504jbossesb-100504045447-phpapp01-thumbnail-2?1272966954"><br />
    JAX JBoss ESB<br />
    </a>
  </div>
<p style="clear:both" />

	Tags: <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/jax/" title="JAX" rel="tag">JAX</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/05/30/jax-2010-prasentationen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[jax 2010] Spring &#8211; Past, Present, Future</title>
		<link>http://www.k-oo.de/blog/2010/05/05/jax-2010-spring-past-present-future/</link>
		<comments>http://www.k-oo.de/blog/2010/05/05/jax-2010-spring-past-present-future/#comments</comments>
		<pubDate>Wed, 05 May 2010 18:53:10 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[frameworks]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1663</guid>
		<description><![CDATA[



Wenn ich momentan eine Java Webapplikation baue [...]]]></description>
			<content:encoded><![CDATA[<div style="float:left; margin-right: 10px">
<a href="http://www.k-oo.de/blog/wp-content/uploads/2010/05/210px-Jax_logo.svg_.png" rel="lightbox[1663]"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/05/210px-Jax_logo.svg_.png" alt="Jax 2010 logo" title="Jax 2010 logo" width="210" height="150" class="alignnone size-full wp-image-1668" /></a>
</div>
<p>Wenn ich momentan eine Java Webapplikation bauen müsste, würde ich sie wahrscheinlich mit dem <a href="http://www.springsource.org/about">Spring Framework</a> umsetzen. Im Rahmen der <a href="http://www.jax.de">Jax 2010</a> hat Jürgen Höller (einer der Chefentwickler von Spring) einen Rückblick, eine Bestandsaufnahme und einen Ausblick auf Spring gegeben.</p>
<p style="clear:both" />
Danach spielte und spielt Spring, wie viele andere Frameworks und alternative Technologien (wie z.B. SWT und GWT), aus seiner Sicht vor allem in der Rolle als Plattform und Standards &#8220;Enabler&#8221; eine große Rolle. D.h., dass Frameworks innovativer sind und höhere Release Zyklen aufweisen als Standards, wie z.B. JPA. Sie bieten vielmehr sogar die Möglichkeit neue Standards in bestehende Umgebungen zu integrieren.</p>
<p>So ist es mit Spring 3.0 möglich Anwendungen zu entwickeln, die Standards wie JPA 2.0 oder JSF 2.0 nutzen und trotzdem auch auf älteren JBoss, Websphere oder sogar Tomcat Installationen laufen können.</p>
<p>Diese integrative Rolle wird laut Jürgen Höller auch weiterhin den Weg von Spring bestimmen. Dabei sind für Juni/Juli 2010 die Version 3.1 und in 2011 auch die Version 3.2 vorgesehen. Diese werden wie in der Vergangenheit durch Milestone Releases immer nah an den neuesten Versionen der Standards gehalten oder sind ihnen sogar einen kleinen Schritt voraus.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/frameworks/" title="frameworks" rel="tag">frameworks</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/05/05/jax-2010-spring-past-present-future/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>delicious groovy &#8211; Lesezeichen automatisieren</title>
		<link>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/</link>
		<comments>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 19:18:05 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1556</guid>
		<description><![CDATA[Dass meine Beiträge für die Kategorie weekly links ei [...]]]></description>
			<content:encoded><![CDATA[<p>Dass meine Beiträge für die Kategorie <a href="http://www.k-oo.de/blog/category/weekly-links/">weekly links</a> eine Zeit lang pausiert haben, lag auch daran, dass mich das Kopieren der Links ziemlich genervt hat. </p>
<p>Was macht man also als Programmierer, wenn der Leidensdruck hoch genug ist &#8211; man liest eine API (in diesem Fall die von <a href="http://delicious.com/">delicious.com</a>), nimmt die Programmiersprache seiner Wahl (bei mir <a href="http://groovy.codehaus.org">Groovy</a>) und schafft Abhilfe.</p>
<p>Der Urvater der online Lesezeichenverwalter delicious.com stellt eine <a href="http://delicious.com/help/api">REST basierte API</a> bereit. Groovy bietet mit dem Modul <a href="http://groovy.codehaus.org/modules/http-builder/home.html">HTTPBuilder</a> ein mächtiges Tool, dass einem die Arbeit mit HTTP basierten Resourcen extrem erleichtert.</p>
<p>Nach einer erfolgreichen Authentifizierung und einer gültigen Anfrage erhält man eine XML Antwort, die so aussehen könnte:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>posts tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> user<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;</span>post href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://www.weather.com/&quot;</span> description<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;weather.com&quot;</span>
  hash<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;6cfedbe75f413c56b6ce79e6fa102aba&quot;</span> tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;weather reference&quot;</span>
  time<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2005-11-29T20:30:47Z&quot;</span> <span style="color: #339933;">/&gt;</span>
    ...
  <span style="color: #339933;">&lt;</span>post href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://www.nytimes.com/&quot;</span>
  description<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;The New York Times - Breaking News, World News &amp; Multimedia&quot;</span>
  extended<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;requires login&quot;</span> hash<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ca1e6357399774951eed4628d69eb84b&quot;</span>
  tag<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;news media&quot;</span> time<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2005-11-29T20:30:05Z&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;/</span>posts<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>Testen kann man erst einmal auf der Kommandozeile mittels <code>curl</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&gt; curl https://user:passwd@api.del.icio.us/v1/posts/recent</pre></div></div>

<p>Bestimmte URL&#8217;s wie z.B. <code>posts/all</code> sollte man nicht zu oft aufrufen, da sie limitiert sind. Macht man es doch (wie ich) erhält man den Fehler 999. Besser ist es da nur die letzten Einträge (per Default 15) über <code>posts/recent</code> anzufragen. Das ganze Programm sah dann bei mir so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">groovyx.net.http.*</span> 
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">groovy.util.slurpersupport.GPathResult</span> 
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> DeliciousBookmarkClient <span style="color: #009900;">&#123;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">static</span> main<span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      def dc<span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> DeliciousBookmarkClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
      dc.<span style="color: #006633;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">public</span> request <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// Authentifizierung</span>
         def rc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RESTClient<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'https://username:password@api.del.icio.us/v1/posts/recent'</span> <span style="color: #009900;">&#41;</span>
         rc.<span style="color: #006633;">auth</span>.<span style="color: #006633;">basic</span> <span style="color: #0000ff;">&quot;username&quot;</span>, <span style="color: #0000ff;">&quot;password&quot;</span>
&nbsp;
         <span style="color: #666666; font-style: italic;">// anfragen und überprüfen der Antwort   </span>
         def resp<span style="color: #339933;">=</span>rc.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;count&quot;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;5&quot;</span><span style="color: #009900;">&#41;</span>
         <span style="color: #000000; font-weight: bold;">assert</span> resp.<span style="color: #006633;">status</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">200</span>
         <span style="color: #000000; font-weight: bold;">assert</span> <span style="color: #009900;">&#40;</span> resp.<span style="color: #006633;">data</span> <span style="color: #000000; font-weight: bold;">instanceof</span> GPathResult <span style="color: #009900;">&#41;</span>
&nbsp;
         def recentPosts<span style="color: #339933;">=</span>resp.<span style="color: #006633;">data</span>.<span style="color: #006633;">post</span>
         println <span style="color: #0000ff;">&quot;Anzahl posts &quot;</span><span style="color: #339933;">+</span>recentPosts.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
         <span style="color: #666666; font-style: italic;">// HTML Aufbereitung des Links und der Beschreibung</span>
         println <span style="color: #0000ff;">&quot;&lt;dl&gt;&quot;</span>
         recentPosts.<span style="color: #006633;">each</span><span style="color: #009900;">&#123;</span>post<span style="color: #339933;">-&gt;</span>
            def desc<span style="color: #339933;">=</span>post.@description.<span style="color: #006633;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            def href<span style="color: #339933;">=</span>post.@href.<span style="color: #006633;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            println <span style="color: #0000ff;">&quot;   &lt;dt&gt;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>$href<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;$desc&lt;/a&gt;&lt;/dt&gt;&quot;</span>
            println <span style="color: #0000ff;">&quot;      &lt;dd&gt;$desc&lt;/dd&gt;&quot;</span>
         <span style="color: #009900;">&#125;</span>
         println <span style="color: #0000ff;">&quot;&lt;/dl&gt;&quot;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         println e.<span style="color: #006633;">response</span>.<span style="color: #006633;">status</span>
         println e.<span style="color: #006633;">message</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>   
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Über die API lassen sich natürlich auch Lesezeichen hinzufügen und löschen. Das gilt auch für Tags und Tag Bundles. Damit bleiben keine Wünsche offen.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/groovy/" title="groovy" rel="tag">groovy</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/22/50-k-webseiten-wo-seid-ihr-geblieben/" title="50 K Webseiten, wo seid ihr geblieben? (July 22, 2010)">50 K Webseiten, wo seid ihr geblieben?</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/03/09/delicious-groovy-lesezeichen-automatisieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gesucht &#8211; ein neues Logo für Eclipse</title>
		<link>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/</link>
		<comments>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 15:24:29 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1497</guid>
		<description><![CDATA[Eclipse ist für mich als Entwickler mein täglich Brot [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse ist für mich als Entwickler mein täglich Brot und begleitet mich schon seit Jahren. Das Logo hat sich während dieser Zeit kaum geändert (wieso auch &#8211; mir hat es gefallen).</p>
<p>Nun möchte Eclipse mit einem neuen Logo darauf aufmerksam machen, dass im Projekt kein Stillstand herrscht.<br />
Gefragt sind Entwürfe, die im Rahmen eines Wettbewerbs zum neuen Logo führen sollen. Auf den Sieger wartet ein Preisgeld von 500 Dollar.</p>
<p>Die bereits eingereichten Vorschläge kann man sich <a href="http://www.crowdspring.com/project/2282403_modernize-the-eclipse-logo/">hier</a> anschauen.</p>
<p>Für welchen würdet Ihr Euch entscheiden?</p>
<p><a href="http://www.k-oo.de/blog/wp-content/uploads/2010/02/eclipse_logo_entwuerfe.jpg" rel="lightbox"><img src="http://www.k-oo.de/blog/wp-content/uploads/2010/02/eclipse_logo_entwuerfe-377x500.jpg" alt="" title="eclipse logo Entwürfe" width="377" height="500" class="aligncenter size-medium wp-image-1498" /></a></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/eclipse/" title="eclipse" rel="tag">eclipse</a>, <a href="http://www.k-oo.de/blog/tag/ide/" title="ide" rel="tag">ide</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2010/02/11/gesucht-ein-neues-logo-fur-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Podcast wird 100</title>
		<link>http://www.k-oo.de/blog/2009/11/29/grails-podcast-wird-100/</link>
		<comments>http://www.k-oo.de/blog/2009/11/29/grails-podcast-wird-100/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 14:32:41 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1375</guid>
		<description><![CDATA[

Eine der wichtigsten Resourcen, wenn man sich mit G [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.k-oo.de/blog/wp-content/uploads/2009/11/head_grailspodcast.png" alt="grailspodcast logo" title="grailspodcast logo" width="499" height="105" class="alignleft size-full wp-image-1376" /></p>
<p>Eine der wichtigsten Resourcen, wenn man sich mit Groovy und Grails beschäftigt, ist aus meiner Sicht der <a href="http://www.grailspodcast.com"><strong>Grails Podcast</strong></a> von und mit Sven Haiges und Glen Smith.</p>
<p>Der Podcast, der alle 2 Wochen in englischer Sprache erscheint, hat nun die <strong>Folge 100</strong> erreicht.<br />
Alles Gute von meiner Seite zu diesem Ereignis und vielen Dank für die zahlreichen Informationen und News der letzten Jahre rund um die Themen Groovy und Grails.</p>
<p>Macht weiter so.</p>

	Tags: <a href="http://www.k-oo.de/blog/tag/grails/" title="Grails" rel="tag">Grails</a>, <a href="http://www.k-oo.de/blog/tag/groovy/" title="groovy" rel="tag">groovy</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/podcast/" title="podcast" rel="tag">podcast</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/22/50-k-webseiten-wo-seid-ihr-geblieben/" title="50 K Webseiten, wo seid ihr geblieben? (July 22, 2010)">50 K Webseiten, wo seid ihr geblieben?</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2009/11/29/grails-podcast-wird-100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Warum Groovy</title>
		<link>http://www.k-oo.de/blog/2009/11/23/warum-groovy/</link>
		<comments>http://www.k-oo.de/blog/2009/11/23/warum-groovy/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:22:21 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1324</guid>
		<description><![CDATA[

Aus meiner Sicht ist Groovy, die dynamische Sprache [...]]]></description>
			<content:encoded><![CDATA[<div style="float:left; margin-right: 5px"><img src='http://www.k-oo.de/blog/wp-content/uploads/2007/01/groovy.png' alt='Groovy Logo' /></div>
<p>Aus meiner Sicht ist <a href="http://groovy.codehaus.org"><strong>Groovy</strong></a>, die dynamische Sprache für die Java Virtual Machine, auf der großen Hype Kurve am Punkt der technischen Realität angekommen. Mit <a href="http://www.scala-lang.org/">Scala</a> und <a href="http://clojure.org/">Clojure</a> werden statt dessen gerade 2 neue Programmiersprachen durch die Gemeinde der Java Jünger getrieben.</p>
<p style="clear:both;" />
So ist es an der Zeit einmal zu hinterfragen, was man selbst bis jetzt mit Groovy implementiert hat, ob man dabei bleibt oder doch auf den Scala Zug aufspringt.</p>
<p>Dierk König, der Autor von &#8220;Groovy in Action&#8221; (dem besten Fachbuch, das ich in letzter Zeit gelesen habe), hat einmal folgende 7 Anwendungsmuster für Groovy herausgearbeitet:</p>
<blockquote><p>
Super Glue, Liquid Heart, Keyhole Surgery, Smart Configuration, Unlimited Openness, House-Elf Scripts, Prototype
</p></blockquote>
<p>Oder nicht ganz so prosaisch, als:</p>
<ul>
<li>Bindeglied zwischen Java Komponenten (wie z.B. Spring und Hibernate in Grails)</li>
<li>Auslagerung der Buisiness Logik, um sie dynamisch auf Veränderungen anpassen zu können</li>
<li>Eingriffsmöglichkeit in laufende Applikationen</li>
<li>Erweiterung der Konfiguration mit den Mitteln einer Programmiersprache (um endlich das plumpe XML loszuwerden)</li>
<li>die leichte Veränderung von Code zur Laufzeit</li>
<li>Hilfe für alle Aufgaben, die durch die Programmierung anfallen (Build automation, continuous integration, deployment, installer, service monitoring, reports, statistics, automated documentation, functional tests, HTML scraping, Web remote control, XML-RPC, WebServices)</li>
<li>Tool zur schnellen Erstellung von Prototypen, mit der Möglichkeit diese später auf Java portieren zu können.</li>
</ul>
<p>Doch zurück zum Ausgangspunkt. Was mache ich mit Groovy? </p>
<p>Zuerst einmal schreibe ich 95 % aller neuen Tests in Groovy. Die knackige Syntax, die perfekte Interoperabilität mit Java und die gute (aber verbesserungsfähige) Integration in Eclipse machen die Erstellung von Tests sehr viel weniger lästig. Zudem gibt es kleinere Web- und Webservices Applikationen auf Basis von <a href="http://grails.org/">Grails</a> (dem Webframwork, das seinerseits ebenfalls auf Groovy basiert), sowie Tools, die rein in Groovy geschrieben sind.</p>
<p>Letztendlich kann man sagen, der Hype ist dem Alltag gewichen und Groovy passt sich perfekt in die tägliche Arbeit ein. Mit <a href="http://griffon.codehaus.org/">Griffon</a> und <a href="http://gpars.codehaus.org/">GPars</a> stehen 2 weitere Frameworks für Swing Applikationen und Nebenläufige Programmierung (Threads) auf Groovy Basis zur Verfügung. Und eine lebendige Community hat sich um diese dynamische Sprache gebildet. Ein Umstieg auf Scala oder Closure kommt somit für mich momentan nicht in Betracht.</p>
<p>Und mal ganz ehlich, wenn die Kinder fragen: &#8220;Papa was machst Du?&#8221;, klingt &#8220;ich programmiere Groovy&#8221; viel cooler als &#8220;Ich programmiere Scala&#8221;. <img src='http://www.k-oo.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Links:</strong><br />
<a href="http://www.slideshare.net/gr8conf/groovy-usage-patterns-by-dierk-knig">Groovy Usage Patterns by Dierk König</a></p>

	Tags: <a href="http://www.k-oo.de/blog/tag/eclipse/" title="eclipse" rel="tag">eclipse</a>, <a href="http://www.k-oo.de/blog/tag/grails/" title="Grails" rel="tag">Grails</a>, <a href="http://www.k-oo.de/blog/tag/groovy/" title="groovy" rel="tag">groovy</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/open-source/" title="Open Source" rel="tag">Open Source</a>, <a href="http://www.k-oo.de/blog/tag/spring/" title="Spring" rel="tag">Spring</a>, <a href="http://www.k-oo.de/blog/tag/web/" title="Web" rel="tag">Web</a>, <a href="http://www.k-oo.de/blog/tag/web20/" title="web2.0" rel="tag">web2.0</a>, <a href="http://www.k-oo.de/blog/tag/xml/" title="XML" rel="tag">XML</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/22/50-k-webseiten-wo-seid-ihr-geblieben/" title="50 K Webseiten, wo seid ihr geblieben? (July 22, 2010)">50 K Webseiten, wo seid ihr geblieben?</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2009/11/23/warum-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Bean Validation</title>
		<link>http://www.k-oo.de/blog/2009/10/01/spring-bean-validation/</link>
		<comments>http://www.k-oo.de/blog/2009/10/01/spring-bean-validation/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:17:00 +0000</pubDate>
		<dc:creator>gklinkmann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.k-oo.de/blog/?p=1113</guid>
		<description><![CDATA[



Seit vorgestern steht der erste Release Candida [...]]]></description>
			<content:encoded><![CDATA[<div style="float:left; padding-right:10px;">
<img src="http://www.k-oo.de/blog/wp-content/uploads/2009/10/spring-icon.gif" alt="spring-icon" title="spring-icon" width="93" height="52" class="alignleft size-full wp-image-1115" />
</div>
<p>Seit <a href="http://blog.springsource.com/2009/09/29/spring-framework-3-0-rc1-released/">vorgestern</a> steht der erste Release Candidate vom <a href="http://www.springsource.org/about"><strong>Spring Framework</strong></a> zum <a href="http://www.springsource.com/download/community">Download</a> bereit.<br />
In dieser Version werden erstmalig der JSR-303 (<strong>Bean Validation</strong>) und JSR-330 (<strong>Dependency Injection in Java</strong>) unterstützt. Besonders auf die Umsetzung der Bean Validation war ich gespannt, denn dadurch kann man über Annotations seine Beans mit Constraints versehen.</p>
<p style="clear:both;" />
In einer Spring basierten Web Anwendung könnte man die Bean Validation wie folgt nutzen.</p>
<p><strong>1. annotieren der Bean</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> <span style="color: #003399;">Event</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #339933;">;</span>
&nbsp;
   @NotNull
   @Size<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span>,max<span style="color: #339933;">=</span><span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span>
   <span style="color: #003399;">String</span> description<span style="color: #339933;">;</span>
...</pre></td></tr></table></div>

<p>Durch die zwei Annotations (in validation-api-1.0.CR3.jar enthalten) wird festgelegt, dass der Wert für das Attribut <code>description</code> nicht null sein darf und minimum 1 Zeichen aber maximal 50 Zeichen enthalten muss.</p>
<p><strong>2. validieren der Bean innerhalb des Controllers</strong></p>
<p>Zur Validierung benötigt man eine Implementierung des JSR-303, wie z.B. den <a href="https://www.hibernate.org/412.html">Hibernate Validator</a> (momentan in Version 4.0.0 CR1). Der hat allerdings eine Menge Abhängigkeiten und muss erst über Maven <a href="https://www.hibernate.org/459.html">kompiliert</a> werden.<br />
Hat man diese Hürde genommen (und hat die daraus resultierende Jar Datei in sein Projekt eingebunden), benötigt man noch folgende Bibliotheken um keine Runtime Fehler zu produzieren:</p>
<ul>
<li>validation-api-1.0.CR3.jar</li>
<li>slf4j-api-1.5.6.jar</li>
<li>slf4j-log4j12-1.5.6.jar</li>
<li>log4j-1.2.14.jar</li>
<li>commons-logging-1.0.4.jar (benötigt man nicht unbedingt, wurde aber im Beispiel verwendet)</li>
</ul>
<p>diese liegen dann aber sowieso im lokalen Maven Repository vor.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">@RequestMapping<span style="color: #009900;">&#40;</span>value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;/event/save&quot;</span>, method<span style="color: #339933;">=</span>RequestMethod.<span style="color: #006633;">POST</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> save<span style="color: #009900;">&#40;</span><span style="color: #003399;">Event</span> event,BindingResult bindingResult, Model model<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   LocalValidatorFactoryBean validator <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> LocalValidatorFactoryBean<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   validator.<span style="color: #006633;">setProviderClass</span><span style="color: #009900;">&#40;</span>HibernateValidationProvider.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   validator.<span style="color: #006633;">afterPropertiesSet</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   validator.<span style="color: #006633;">validate</span><span style="color: #009900;">&#40;</span>event,bindingResult<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>bindingResult.<span style="color: #006633;">hasErrors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// save ...</span>
      model.<span style="color: #006633;">addAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;message&quot;</span>, <span style="color: #0000ff;">&quot;update successfully&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>         
   <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>FieldError e <span style="color: #339933;">:</span> bindingResult.<span style="color: #006633;">getFieldErrors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         log.<span style="color: #006633;">warn</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getField</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;: &quot;</span><span style="color: #339933;">+</span>e.<span style="color: #006633;">getDefaultMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>            
      <span style="color: #009900;">&#125;</span>
      model.<span style="color: #006633;">addAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;errors&quot;</span>, bindingResult.<span style="color: #006633;">getFieldErrors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
   model.<span style="color: #006633;">addAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;event&quot;</span>, event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;update&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>In den Zeilen 3-5 Wird eine Instanz des Hibernate Validators erzeugt. In Zeile 7 wird dann endlich validiert. Ob bei der Validierung Fehler aufgetreten sind kann man mit der Methode <code>hasErrors()</code> überprüfen (Zeile 9). Zugriff auf alle Fehler (z.B. zum Loggen) erhält man über die Methode <code>getFieldErrors()</code> (Zeile 13-15).<br />
In Zeile 16 werden die Fehler der View übergeben.</p>
<p><strong>3. Ausgabe der Fehler in der View</strong></p>
<p>Zur Ausgabe der Fehler wird die <a href="http://jakarta.apache.org/taglibs/index.html">JSP Standard Tag Library</a> verwendet.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;p&gt;${message}&lt;/p&gt;
&lt;c:if test=&quot;${!empty errors}&quot;&gt;
   &lt;ul&gt;
   &lt;c:forEach var=&quot;error&quot; items=&quot;${errors}&quot;&gt;
      &lt;li&gt;${error.field}: ${error.defaultMessage}&lt;/li&gt;         
   &lt;/c:forEach&gt;
   &lt;/ul&gt;
&lt;/c:if&gt;</pre></td></tr></table></div>


	Tags: <a href="http://www.k-oo.de/blog/tag/frameworks/" title="frameworks" rel="tag">frameworks</a>, <a href="http://www.k-oo.de/blog/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://www.k-oo.de/blog/tag/spring/" title="Spring" rel="tag">Spring</a><br />

	<p></p><strong>Ähnliche Artikel:</strong>
	<ul class="st-related-posts">
	<li><a href="http://www.k-oo.de/blog/2010/07/29/vorschau-auf-eclipse-sdk-4-0/" title="Vorschau auf Eclipse SDK 4.0 (July 29, 2010)">Vorschau auf Eclipse SDK 4.0</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/07/01/java-4-ever/" title="Java 4 ever (July 1, 2010)">Java 4 ever</a> (0)</li>
	<li><a href="http://www.k-oo.de/blog/2010/06/16/java-laufzeit-elapsed-time-formatiert-ausgeben/" title="Java Laufzeit (elapsed time) formatiert ausgeben (June 16, 2010)">Java Laufzeit (elapsed time) formatiert ausgeben</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.k-oo.de/blog/2009/10/01/spring-bean-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
