<?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>leine.info &#187; Java</title>
	<atom:link href="http://leine.info/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://leine.info</link>
	<description>Discover my public and private World.</description>
	<lastBuildDate>Thu, 22 Dec 2011 13:57:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Websockets in JSF 2.0</title>
		<link>http://leine.info/2011/12/websockets-in-jsf-2-0/</link>
		<comments>http://leine.info/2011/12/websockets-in-jsf-2-0/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 08:00:55 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[JSF 2.0]]></category>
		<category><![CDATA[Websokets]]></category>

		<guid isPermaLink="false">https://ssl-account.com/leine.info/?p=450</guid>
		<description><![CDATA[HTML5 rückt immer näher und die Unterstützung auf Endgeräten wird allmählich marktreif. Höchste Zeit sich einmal mit JSF 2.0 und Websockets auseinanderzusetzen. Das alles wird einem schön in einer JAX Session näher gebracht. Building next-generation Web Apps with WebSocket and &#8230; <a href="http://leine.info/2011/12/websockets-in-jsf-2-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HTML5 rückt immer näher und die Unterstützung auf Endgeräten wird allmählich marktreif. Höchste Zeit sich einmal mit JSF 2.0 und Websockets auseinanderzusetzen. Das alles wird einem schön in einer JAX Session näher gebracht.</p>
<p><iframe src="http://player.vimeo.com/video/34071289?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p><a href="http://vimeo.com/34071289">Building next-generation Web Apps with WebSocket and HTML5</a> from <a href="http://vimeo.com/jaxtv">JAX TV</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/websockets-in-jsf-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails UI, gui:dataTable und i18n</title>
		<link>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/</link>
		<comments>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 11:02:31 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dataTable]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[grails ui]]></category>
		<category><![CDATA[gui:dataTable]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http:/leine.info//leine.info/ssl-account.com/leine.info/?p=418</guid>
		<description><![CDATA[Vor kurzem habe ich mich mit Grails beschäftigt. Eigentlich eine ziemlich nettes Framework, mit dem man schnell einen Prototyp programmieren kann. Für meinen Geschmack war die Unterstützung für Rich UI allerdings etwas dürftig, doch das ist kein Problem, denn in &#8230; <a href="http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem habe ich mich mit <a href="http://grails.org/">Grails</a> beschäftigt. Eigentlich eine ziemlich nettes Framework, mit dem man schnell einen Prototyp programmieren kann. Für meinen Geschmack war die Unterstützung für Rich UI allerdings etwas dürftig, doch das ist kein Problem, denn in diese Lücke springen in Grails die sogenannten <a href="http://www.grails.org/plugins/">Plugins</a>.</p>
<p>In meinem Fall habe ich mich für das <a href="http://www.grails.org/plugin/grails-ui">Grails-UI Plugin</a> entschieden. Dieses Plugin bietet eine schöne Integration von <a href="http://developer.yahoo.com/yui/">YUI</a> und YUI wiederum bietet ein umfangreiches Set an Rich UI Komponenten.</p>
<p>Das Plugin war schnell installiert und die Integration in Grails war auch relativ leicht umzusetzen. Vor allem das Tag <strong>&lt;gui:dataTable&gt;</strong> kam bei mir stark zum Einsatz. Irgendwann allerdings kam ich zu dem Punkt, wo ich mich mit Internationalisierung auseinandersetzen musste und dieses Problem war leider nur sehr dürftig beschrieben. Aus diesem Grund will ich heute kurz aufzeigen was man hierfür alles tun muss.</p>
<p><span id="more-418"></span></p>
<h2>i18n für YUI</h2>
<p>Um YUI zu internationalisieren muss man ein wenig in der offiziellen Doku suchen. Leider habe ich kein durchgängiges Konzept erkennen können. Teilweise müssen einfach statische JS Variablen umdefiniert werden, teilweise muss eine Variable im prototype überschrieben werden und teilweise müssen sog. Data Formatter definiert werden, die z.B. eine Datumszelle entsprechend formatieren.</p>
<pre name="code" class="javascript">  YAHOO.widget.Calendar.DEFAULT_CONFIG.NAV.value = true;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.CLOSE.value = "Schlie\u00DFen"

  // Correct formats for Germany: dd.mm.yyyy, dd.mm, mm.yyyy
  YAHOO.widget.Calendar.DEFAULT_CONFIG.DATE_FIELD_DELIMITER.value = ".";

  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_DAY_POSITION.value = 1;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_MONTH_POSITION.value = 2;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_YEAR_POSITION.value = 3;

  YAHOO.widget.Calendar.DEFAULT_CONFIG.MD_DAY_POSITION.value = 1;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MD_MONTH_POSITION.value = 2;

  // Date labels for German locale
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MONTHS_SHORT.value = ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MONTHS_LONG.value = ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_1CHAR.value = ["S", "M", "D", "M", "D", "F", "S"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_SHORT.value = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_MEDIUM.value = ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_LONG.value = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];

  // Start the week on a Monday (Sunday == 0)
  YAHOO.widget.Calendar.DEFAULT_CONFIG.START_WEEKDAY.value = 1;

  //CalendarNavigator show up if clicked on the current month
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.submit = "OK"
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.cancel = "Abbr."
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.invalidYear = "Das Jahr muss eine Zahl sein."
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.month = "Monat"
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.year = "Jahr"

    YAHOO.widget.BaseCellEditor.prototype.LABEL_SAVE = "OK"
    YAHOO.widget.BaseCellEditor.prototype.LABEL_CANCEL = "Abbr."

    /*
     * BUGFIX for YUI &lt; 2.9
     * If a date cell contains a null value the cell editor calendar does not show up.
     * Till we're not using YUI 2.9 and above this is the fix for it.
     *
     * http://yuilibrary.com/projects/yui2/ticket/2529117
     */
    YAHOO.widget.DateCellEditor.prototype.resetForm = function() {
      var value = this.value || new Date();
      var selectedValue = (value.getMonth()+1)+"/"+value.getDate()+"/"+value.getFullYear();
      this.calendar.cfg.setProperty("selected",selectedValue,false);
      this.calendar.render();
    };

    YAHOO.widget.DataTable.Formatter.date = function(elCell, oRecord, oColumn, oData) {
      var oDate = oData;
      if(oDate instanceof Date) {
        elCell.innerHTML = YAHOO.util.Date.format(oDate, { format: "%d.%m.%Y"});
      } else {
        elCell.innerHTML = '';
      }
    };</pre>
<p>Damit hat man zumindest den reinen YUI DataTable umgestellt. Der große Teil ist hier einfach die Übersetzung der englischen Strings in die jeweilige Zielsprache. Ein kleinerer Teil ist die Verwendung eines speziellen DateFormatters, damit in der Zelle selbst ein deutsches Format verwendet wird, und zum Schluss noch ein Bugfix für YUI selbst, denn das Grails Plugin verwendet momentan noch YUI in der Version 2.8. In dieser Version ist es unmöglich für eine leere Datums Tabellenzelle einen neuen Wert zu definieren. Sollte das Grails Plugin irgendwann YUI die Version 2.9 verwenden entfällt dieser Bugfix.</p>
<h2>i18n für Grails</h2>
<p>Hat man YUI nun eine andere Sprache beigebracht, muss man sich jetzt noch um den Grails Teil kümmern. Folgender Template Code demonstriert dies kurz.</p>
<pre name="code" class="html">        &lt;!-- http://jira.grails.org/browse/GPUI-250 --&gt;
        &lt;g:set var="i18nfirstName" value="${message(code: 'user.firstName.label', default: 'First Name')}"/&gt;
        &lt;g:set var="i18nlastName" value="${message(code: 'user.lastName.label', default: 'Last Name')}" /&gt;
        &lt;g:set var="i18ndate" value="${message(code: 'user.date.label', default: 'Date')}" /&gt;

        &lt;g:set var="i18nfirstPage" value="${message(code: 'disy.paginator.firstPage.label', default: 'First Page')}" /&gt;
        &lt;g:set var="i18npreviousPage" value="${message(code: 'disy.paginator.previousPage.label', default: 'Previous Page')}" /&gt;
        &lt;g:set var="i18nnextPage" value="${message(code: 'disy.paginator.nextPage.label', default: 'Next Page')}" /&gt;
        &lt;g:set var="i18nlastPage" value="${message(code: 'disy.paginator.lastPage.label', default: 'Last Page')}" /&gt;

        &lt;gui:dataTable
          id="myList"
          selectionMode="standard"
          draggableColumns="true"
          sortedBy="lastName"
          columnDefs="[
                  [id:'Id',
                   hidden: true ],

                  [lastName: i18nlastName,
                   formatter:  'text' ,
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true],

                  [firstName: i18nfirstName,
                   formatter:  'text' ,
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true],

                  [date: i18ndate,
                   formatter:  'date',
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true]]"
          allowExclusiveSort='true'
          controller="myController" action="listJSON"
          rowsPerPage="30"
          MSG_EMPTY="${message(code: 'dataTable.empty.label', default: 'No records found.')}"
          MSG_ERROR="${message(code: 'dataTable.error.label', default: 'Data error.')}"
          MSG_LOADING="${message(code: 'dataTable.loading.label', default: 'Loading...')}"
          paginatorConfig="[
            firstPageLinkLabel: '&amp;lt;&amp;lt;',
            firstPageLinkTitle: i18nfirstPage,
            previousPageLinkLabel: '&amp;lt;',
            previousPageLinkTitle: i18npreviousPage,
            nextPageLinkLabel: '&amp;gt;',
            nextPageLinkTitle: i18nnextPage,
            lastPageLinkLabel: '&amp;gt;&amp;gt;',
            lastPageLinkTitle: i18nlastPage
          ]" /&gt;</pre>
<p>HIerbei fällt folgendes auf:</p>
<ul>
<li>Der Pager wird als paginatorConfig umdefiniert, damit dieser auch in der gewünschten Zielsprache ist.</li>
<li>Die Default Texte für einen leeren DataTable (MSG_EMPTY, MSG_ERROR, MSG_LOADING) werden ebenfalls definiert.</li>
<li>Alle Zellenüberschriften werden zuvor als Grails Variable angelegt und verwendet. Dies ist leider noch ein Feature Request für gui:dataTable und vielleicht wird dies in absehbarer Zeit umgesetzt.</li>
</ul>
<p>Damit hat man nun einen DataTable, der fast fertig ist. Fast deswegen, weil die übermittelten Werte des YUI DataTable auf Controller Seite noch formatiert werden müssen. Werden neue Datumswerte ausgewählt, dann überträgt YUI dies in einem bestimmten DateFormat, welches wir auf Grails Seite bei einem AJAX Update entsprechend in unser Date parsen müssen.</p>
<pre name="code" class="Java">    //Parse param
    if (params.field == 'date') {
      SimpleDateFormat formatter = new java.text.SimpleDateFormat("E MMM dd yyyy HH:mm:ss ZZZZZZZ", Locale.ROOT);
      myObject."$params.field" = formatter.fomrmat(params.newValue)
    }</pre>
<p>Haben wir all diese Schritte entsprechend umgesetzt, sollten wir nun in der Lage sein einen internationalisierten gui:dataTable zu verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Spring und STS</title>
		<link>http://leine.info/2011/11/maven-spring-und-sts/</link>
		<comments>http://leine.info/2011/11/maven-spring-und-sts/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 19:20:39 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[M2E]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Maven Annotations]]></category>
		<category><![CDATA[STS]]></category>

		<guid isPermaLink="false">http://leine.info/?p=414</guid>
		<description><![CDATA[Durch Zufall bin ich heute im Spring Blog auf einen guten Artikel gestoßen, der sich mit dem Problem von STS (2.8), M2E (1.0) und Android beschäftigt. Für all diejenigen, die nun wissen was ich meine, rate ich dringend diesem Eintrag &#8230; <a href="http://leine.info/2011/11/maven-spring-und-sts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Durch Zufall bin ich heute im <a title="Spring Blog" href="http://blog.springsource.com">Spring Blog</a> auf einen guten Artikel gestoßen, der sich mit dem Problem von <a title="STS" href="http://www.springsource.com/developer/sts">STS</a> (2.8), <a title="M2E" href="http://www.eclipse.org/m2e/">M2E</a> (1.0) und <a title="Android" href="http://developer.android.com/sdk">Android</a> beschäftigt. Für all diejenigen, die nun wissen was ich meine, rate ich dringend diesem Eintrag zu lesen. Für alle anderen, die ihr Android Project mit Hilfe von Maven, Spring und STS bauen wollen, empfehle ich zumindest einen Blick darauf zu werfen. Mir hat es endlich geholfen meine Build Probleme in den Griff zu bekommen.</p>
<p><a title="Los geht's!" href="http://blog.springsource.com/2011/11/07/updated-maven-support-for-android-projects/">Los gehts!</a></p>
<p>Und wenn wir schon beim Thema Android Entwicklung sind. Wenn euch unter dem Stichwort <a title="Android Annotations" href="http://code.google.com/p/androidannotations/">Android Annotations</a> nichts einfällt, dann werft unbedingt auch ein Blick hierauf. Gerade am Anfang erleichtert es einem die App Entwicklung enorm!</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/11/maven-spring-und-sts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JPA Optimierungen</title>
		<link>http://leine.info/2011/09/jpa-optimierungen/</link>
		<comments>http://leine.info/2011/09/jpa-optimierungen/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 13:52:56 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://leine.info/?p=407</guid>
		<description><![CDATA[Da ich im Allgemeinen ein großer Fan von JPA bin, und überdies bei meinen privaten Projekten gerne Spring Data einsetze, ist es für mich unabdingbar mich auch näher mit dessen Optimierung zu beschäftigen. Nichts ist schlimmer als wenn man ein &#8230; <a href="http://leine.info/2011/09/jpa-optimierungen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Da ich im Allgemeinen ein großer Fan von <a title="JPA" href="http://en.wikipedia.org/wiki/Java_Persistence_API" target="_blank">JPA</a> bin, und überdies bei meinen privaten Projekten gerne <a title="Spring Data" href="http://www.springsource.org/spring-data" target="_blank">Spring Data</a> einsetze, ist es für mich unabdingbar mich auch näher mit dessen Optimierung zu beschäftigen. Nichts ist schlimmer als wenn man ein schönes OR-Mapping mit entsprechenden Repositories aufweisen kann, die zu Grunde liegende DB Schicht allerdings eine schlechte Performance aufweist.</p>
<p>Also tut euch und dem DB Admin einen Gefallen und werft einen kurzen Blick auf folgendes Video. Schaden kann es nicht ;)</p>
<p><iframe src="http://player.vimeo.com/video/29416491?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p><a href="http://vimeo.com/29416491">Optimierung von JPA-Anwendungen</a> from <a href="http://vimeo.com/jaxtv">JAX TV</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/09/jpa-optimierungen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 7 Video Tutorials</title>
		<link>http://leine.info/2011/07/java-7-video-tutorials/</link>
		<comments>http://leine.info/2011/07/java-7-video-tutorials/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 08:02:55 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java 7]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://leine.info/?p=387</guid>
		<description><![CDATA[Nach einer gefühlten Ewigkeit ist es nun soweit. Java erscheint in der Version 7. Zumindest hoffe ich das wenn wir endlich den 28 Juli haben. Umfangreiche Änderungen oder neue Killer Features sucht man leider vergeblich. Allerdings gibt es die ein &#8230; <a href="http://leine.info/2011/07/java-7-video-tutorials/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nach einer gefühlten Ewigkeit ist es nun soweit. Java erscheint in der Version 7. Zumindest hoffe ich das wenn wir endlich den 28 Juli haben.</p>
<p>Umfangreiche Änderungen oder neue Killer Features sucht man leider vergeblich. Allerdings gibt es die ein oder andere Verbesserung, die einem die tägliche Entwicklerarbeit erleichtert. Derjenige, der sich noch nicht mit den neuen Features von Java 7 beschäftigt hat, empfehle ich die zugeschnitten Videos des Java Launch Events. Sie bieten eine kurze Einführung und Übersicht über die neuen Features, wie z.B.:</p>
<ul>
<li>Strings in switch</li>
<li>Multi-Catch</li>
<li>try-with-resources</li>
<li>Varargs Warnungen</li>
<li>Diamond Operatoren</li>
</ul>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168642001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168642001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168643001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168643001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168644001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168644001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168645001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168645001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168646001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168646001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/07/java-7-video-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAXB für JavaScript &#8211; oder wie parse ich XML in JSON</title>
		<link>http://leine.info/2011/04/jaxb-fur-javascript-oder-wie-parse-ich-xml-in-json/</link>
		<comments>http://leine.info/2011/04/jaxb-fur-javascript-oder-wie-parse-ich-xml-in-json/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 07:00:37 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JAXB]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Jsonix]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://leine.info/?p=364</guid>
		<description><![CDATA[Denkt man an XML Parsing in JAVA denkt man zuerst an JAXB. JAXB ist eine komfortable Methode XML in JAVA zu parsen. Man gibt dem Marshaller einfach ein XML File zum lesen und am Ende erhält man normale Java Instanzen, &#8230; <a href="http://leine.info/2011/04/jaxb-fur-javascript-oder-wie-parse-ich-xml-in-json/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Denkt man an XML Parsing in JAVA denkt man zuerst an <a href="http://jaxb.java.net/">JAXB</a>. JAXB ist eine komfortable Methode XML in JAVA zu parsen. Man gibt dem Marshaller einfach ein XML File zum lesen und am Ende erhält man normale Java Instanzen, die das eingelesene XML File wiedergeben. Eine wirklich einfache und komfortable Lösung.<span id="more-364"></span></p>
<p>Ganz anders sieht es allerdings aus wenn man das gleiche in JavaScript machen will. JAXB gibt es für JavaScript leider nicht und das parsen von XML in JavaScript ist leider auch nicht wirklich komfortabel. Auch wenn JSON mehr und mehr auf dem Vormarsch ist, kommt man teilweise doch nicht drum herum XML zu verarbeiten. Wie schön wäre es da, wenn man die gleichen komfortablen Mechanismen wie in Java hätte.</p>
<p>Nun, die gibt es. Auf meine Streifzügen durchs Web bin ich heute auf das Projekt <a href="http://confluence.highsource.org/display/JSNX/Jsonix">Jsonix</a> gestoßen. Dieses Projekt orientiert sich eindeutig am JAXB Paradigma. Es bietet einem die gleichen komfortablen Mechanismen und es nimmt einem die lästige Arbeit ab XML in JavaScript Objekte zu wandeln.</p>
<p>Kleiner Vorgeschmack gefällig?</p>
<p>Mal angenommen wir wollen folgendes XML File in JavaScript einlesen und in JSON verwandeln.</p>
<pre name="code" class="xml">
<purchaseOrder orderDate="1999-10-20">
  <shipTo country="US">
    <name>Alice Smith</name>
    <street>123 Maple Street</street>
    <city>Mill Valley</city>
    <state>CA</state>
    <zip>90952</zip>
  </shipTo>
  <billTo country="US">
    <name>Robert Smith</name>
    <street>8 Oak Avenue</street>
    <city>Old Town</city>
    <state>PA</state>
    <zip>95819</zip>
  </billTo>
  <comment>Hurry, my lawn is going wild!</comment>
  <items>
    <item partNum="872-AA">
<productName>Lawnmower</productName>
      <quantity>1</quantity>
      <USPrice>148.95</USPrice>
      <comment>Confirm this is electric</comment>
    </item>
    <item partNum="926-AA">
<productName>Baby Monitor</productName>
      <quantity>1</quantity>
      <USPrice>39.98</USPrice>
      <shipDate>1999-05-21</shipDate>
    </item>
  </items>
</purchaseOrder>
</pre>
<p>Um dieses XML File einzulesen müssen wir in Jsonix folgende Zeilen Code schreiben.</p>
<pre name="code" class="javascript">
var PO = { };
var context = new Jsonix.Context([ PO ]);
var unmarshaller = context.createUnmarshaller();
unmarshaller.unmarshalURL('/org/hisrc/jsonix/samples/po/test/po-0.xml',
  function(result) {
    assertEquals('Alice Smith', result.value.shipTo.name);
    assertEquals('Baby Monitor', result.value.item[1].productName);
  }
);
</pre>
<p>Sieht gut aus? Stimmt! Der geneigte JAXB User erkennt deutlich die Parallelen. Meiner Meinung nach ist dies eine deutliche Erleichterung um XML mit JavaScript einzulesen. <a href="http://confluence.highsource.org/display/JSNX/Jsonix">Jsonix</a> hat auf jeden Fall meine Aufmerksamkeit verdient.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/04/jaxb-fur-javascript-oder-wie-parse-ich-xml-in-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX Tutorial</title>
		<link>http://leine.info/2009/12/javafx-tutorial/</link>
		<comments>http://leine.info/2009/12/javafx-tutorial/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 08:37:23 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Pac-Man]]></category>
		<category><![CDATA[Spiel]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://leine.info/?p=329</guid>
		<description><![CDATA[Für alle die sich mit dem Thema JavaFX auseinandersetzen wollen kann ich nur das &#8220;Writing the Pac-Man Game in JavaFX&#8221; von Haining Henry Zhang empfehlen. Da mir immer die nötige Motivation gefehlt hat mich mit dem Thema JavaFX auseinanderzusetzen und &#8230; <a href="http://leine.info/2009/12/javafx-tutorial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Für alle die sich mit dem Thema JavaFX auseinandersetzen wollen kann ich nur das <a href="http://www.insideria.com/2009/05/writing-the-pac-man-game-in-ja.html">&#8220;Writing the Pac-Man Game in JavaFX&#8221;</a> von Haining Henry Zhang empfehlen. Da mir immer die nötige Motivation gefehlt hat mich mit dem Thema JavaFX auseinanderzusetzen und ich zudem auch keine Lust verspürte Hello World Beispiele o.ä. durchzuarbeiten, habe ich mich nie näher damit beschäftigt.<br />
Dieses Tutorial bietet eine nette Abwechslung. Vom Aufbau des Labyrinths, der Animation, den Spielregeln bis zum Ghost-Algorithmus werden alle Details anhand von JavaFX-Codebeispielen beschrieben. Und da ich schon immer mal mein eigenes Computerspiel haben wollte, vielleicht auch mit meinen eigenen Grafiken und Sound, bot sich dieses Tutorial geradezu nur an. Also ran die Bulletten und selber ausprobieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2009/12/javafx-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12. Java Forum Stuttgart</title>
		<link>http://leine.info/2009/06/12-java-forum-stuttgart/</link>
		<comments>http://leine.info/2009/06/12-java-forum-stuttgart/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 07:00:31 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Forum Stuttgart]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[Konferenz]]></category>

		<guid isPermaLink="false">http://leine.info/?p=292</guid>
		<description><![CDATA[Demnächst ist es endlich soweit. Das 12. Java Forum Stuttgart findet am 2. Juli 2009 statt. Ich kann es selbst kaum erwarten. Im Java Bereich gab es für mich eigentlich immer nur die JAX, doch als ich vor Monaten das &#8230; <a href="http://leine.info/2009/06/12-java-forum-stuttgart/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Demnächst ist es endlich soweit. Das <a href="http://www.java-forum-stuttgart.de/">12. Java Forum Stuttgart</a> findet am 2. Juli 2009 statt. Ich kann es selbst kaum erwarten.</p>
<p>Im Java Bereich gab es für mich eigentlich immer nur die <a href="http://it-republik.de/jaxenter/jax/">JAX</a>, doch als ich vor Monaten das <a href="http://www.java-forum-stuttgart.de/vortragsprogramm.html">Vortragsprogramm</a> dieser Veranstaltung entdeckte habe ich mich ehrlich gefragt warum dies überhaupt so ist? Gut, die Veranstaltung dauert nur einen Tag, doch dafür ist die Themenauswahl mindestens genauso interessant. Vergleicht man dann noch die Preise dieser beiden Veranstaltung fällt einem die Entscheidung leicht.</p>
<p>Ich bin auf jeden Fall schon sehr gespannt auf die JUG und ich werde darüber natürlich bloggen. Hoffentlich werden meine Erwartungen erfüllt und vielleicht sieht man sich ja dort?</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2009/06/12-java-forum-stuttgart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4-teilige Richfaces webinar Serie</title>
		<link>http://leine.info/2009/05/4-teilige-richfaces-webinar-serie/</link>
		<comments>http://leine.info/2009/05/4-teilige-richfaces-webinar-serie/#comments</comments>
		<pubDate>Thu, 28 May 2009 10:02:36 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Richfaces]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://leine.info/?p=281</guid>
		<description><![CDATA[Heute möchte ich euch auf die richfaces webinar Serie aufmerksam machen. JBOSS hat zu diesem Thema eine 4 teilige Serie gestartet. Die ersten drei davon wurden bereits abgehalten, jedch sind diese auch aufgenommen worden, so das man sich dieses bequem &#8230; <a href="http://leine.info/2009/05/4-teilige-richfaces-webinar-serie/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich euch auf die richfaces webinar Serie aufmerksam machen. JBOSS hat zu diesem Thema eine 4 teilige Serie gestartet. Die ersten drei davon wurden bereits abgehalten, jedch sind diese auch aufgenommen worden, so das man sich dieses bequem daheim ansehen. Ich finde dies eine sehr coole Sache und kann die webinare nur jedem empfehlen.<span id="more-281"></span></p>
<p><a href="https://inquiries.redhat.com/go/redhat/20090324ExadelWebinar">Webinar 1: Starting with RichFaces</a><br />
This session will cover everything you need to start using RichFaces. You will learn the most important concepts and features in RichFaces. We will start with a simple JSF application and then add AJAX features to it. Topics covered include RichFaces installation, how to send an AJAX request, and how to do partial page rendering. After this session, attendees will be able to use RichFaces in their applications.</p>
<p><a href="https://inquiries.redhat.com/go/redhat/20090421ExadelWebinar">Webinar #2: More RichFaces Features and Concepts</a><br />
The second session includes a quick review &#8220;Starting with RichFaces&#8221;, then covers more advanced features and concepts such as deciding what to process on the server, using the &#8220;a4j:region&#8221; tag, and looking at various re-rendering options. More &#8220;a4j:&#8221; tags will be covered as well.</p>
<p><a href="https://inquiries.redhat.com/go/redhat/20090519ExadelWebinar">Webinar #3: RichFaces UI Components</a><br />
The third session will demonstrate and showcase the various UI components from the &#8220;rich:&#8221; tag library. This library consists of a large number of out-of-the-box ready-to-use AJAX JSF components.</p>
<p><a href="https://inquiries.redhat.com/go/redhat/20090616ExadelWebinar">Webinar #4: RichFaces Skins</a><br />
The fourth session will cover the &#8220;skin-ability&#8221; features in RichFaces. Attendees will learn how to use built-in skins, how to change skins, and how to load new skins at runtime. Next, we will learn how to create new skins. In addition, standard component &#8220;skin-ability&#8221; will be covered.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2009/05/4-teilige-richfaces-webinar-serie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausblick auf Maven 3</title>
		<link>http://leine.info/2009/04/ausblick-auf-maven-3/</link>
		<comments>http://leine.info/2009/04/ausblick-auf-maven-3/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 07:00:49 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://leine.info/?p=251</guid>
		<description><![CDATA[Und wieder bin ich auf ein interessantes Video im Web gestoßen. Diesmal zum Thema Maven 3. Wer schon einmal vorab einen Blick wagen will kann dies mit diesem Video tun. Neue Features sind z.B. der Support von Incremental Builds, Änderungen &#8230; <a href="http://leine.info/2009/04/ausblick-auf-maven-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Und wieder bin ich auf ein interessantes Video im Web gestoßen. Diesmal zum Thema Maven 3. Wer schon einmal vorab einen Blick wagen will kann dies mit diesem Video tun. Neue Features sind z.B. der Support von Incremental Builds, Änderungen an Plexus und der Plug-in-API, eine bessere Multi-Language-Unterstützung und ein Refactored Plug-in Manager.</p>
<p><object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4156556&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4156556&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object><br /><a href="http://vimeo.com/4156556" style="width: 480px; text-align: center; font-family: verdana,sans-serif; font-size: 0.8em;">Video: Jason van Zyl on Maven 3.</a> (52:48)</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2009/04/ausblick-auf-maven-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

