<?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>Axel Jung &#187; java</title>
	<atom:link href="http://www.ajung.de/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Mon, 03 May 2010 19:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Javascript und CSS komprimieren mit Jawr</title>
		<link>http://www.ajung.de/2009/01/13/javascript-und-css-komprimieren-mit-jawr/</link>
		<comments>http://www.ajung.de/2009/01/13/javascript-und-css-komprimieren-mit-jawr/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 18:09:05 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=478</guid>
		<description><![CDATA[Jawr ist ein Java Servlet zum komprimieren der Javascript und CSS Dateien auf dem Webserver.  Dieses Komprimieren geschieht serverseitig und der Entwickler muss die Dateien nicht per Hand komprimieren. Bundles Besonders praktisch ist die Möglichkeit, viele Dateien zu einen Bundle zusammenzufügen. Somit kann man auch die Anzahl der Request reduzieren, aber in der Entwicklung mit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://jawr.dev.java.net/"><img class="alignright size-full wp-image-481" title="logo" src="http://www.ajung.de/wp-content/uploads/2009/01/logo.png" alt="logo" width="465" height="82" /></a><a href="https://jawr.dev.java.net/">Jawr</a> ist ein Java Servlet zum komprimieren der Javascript und CSS Dateien auf dem Webserver.  Dieses Komprimieren geschieht serverseitig und der Entwickler muss die Dateien nicht per Hand komprimieren.</p>
<h3><strong>Bundles</strong></h3>
<p>Besonders praktisch ist die Möglichkeit, viele Dateien zu einen Bundle zusammenzufügen. Somit kann man auch die Anzahl der Request reduzieren, aber in der Entwicklung mit vielen einzelnen JS und CSS Dateien arbeiten.  Optimalerweise, sollte man für jede Javascript Klasse eine eigene Datei verwenden.</p>
<h3><strong>Installation mit Maven 2</strong></h3>
<p>Die Installation<strong> </strong>in einen Maven Projekt ist genial einfach. Man fügt in die Pom Datei nur folgende Zeile ein:</p>
<pre>&lt;dependency&gt;
      &lt;groupId&gt;net.jawr&lt;/groupId&gt;
      &lt;artifactId&gt;jawr&lt;/artifactId&gt;
      &lt;version&gt;[2,]&lt;/version&gt;
&lt;/dependency&gt;</pre>
<p>Ein Repository muss man auch noch einfügen:</p>
<pre>&lt;repository&gt;
          &lt;id&gt;maven2-repository.dev.java.net&lt;/id&gt;
          &lt;name&gt;Java.net Repository for Maven&lt;/name&gt;
          &lt;url&gt;http://download.java.net/maven/2/&lt;/url&gt;
          &lt;layout&gt;default&lt;/layout&gt;
&lt;/repository&gt;</pre>
<p>Log4J</p>
<p>Jawr benötigt zusätzlich Log4J. Deshalb muss noch folgende Abhängigkeit eingefügt werden:</p>
<pre>&lt;dependency&gt;
        &lt;groupId&gt;log4j&lt;/groupId&gt;
        &lt;artifactId&gt;log4j&lt;/artifactId&gt;
        &lt;version&gt;1.2.15&lt;/version&gt;
        &lt;type&gt;jar&lt;/type&gt;
        &lt;scope&gt;compile&lt;/scope&gt;
        &lt;exclusions&gt;
            &lt;exclusion&gt;
                &lt;groupId&gt;com.sun.jmx&lt;/groupId&gt;
                &lt;artifactId&gt;jmxri&lt;/artifactId&gt;
            &lt;/exclusion&gt;
            &lt;exclusion&gt;
                &lt;groupId&gt;com.sun.jdmk&lt;/groupId&gt;
                &lt;artifactId&gt;jmxtools&lt;/artifactId&gt;
            &lt;/exclusion&gt;
            &lt;exclusion&gt;
                &lt;groupId&gt;javax.jms&lt;/groupId&gt;
                &lt;artifactId&gt;jms&lt;/artifactId&gt;
            &lt;/exclusion&gt;
        &lt;/exclusions&gt;
 &lt;/dependency&gt;</pre>
<p>Hierbei ist es wichtig dass die <strong>JMX Abhängigkeit</strong> ausgeklammert wird, da Maven sonst eventuell nicht startet.</p>
<p>In die <strong>web.xml</strong> müssen nun noch die Servlets und das Mapping eingetragen werden:</p>
<pre>&lt;servlet&gt;
        &lt;servlet-name&gt;JavascriptServlet&lt;/servlet-name&gt;
        &lt;servlet-class&gt;net.jawr.web.servlet.JawrServlet&lt;/servlet-class&gt;
        &lt;init-param&gt;
            &lt;param-name&gt;configLocation&lt;/param-name&gt;
            &lt;param-value&gt;jawr.properties&lt;/param-value&gt;
        &lt;/init-param&gt;
        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet&gt;
        &lt;servlet-name&gt;CSSServlet&lt;/servlet-name&gt;
        &lt;servlet-class&gt;net.jawr.web.servlet.JawrServlet&lt;/servlet-class&gt;
        &lt;init-param&gt;
                &lt;param-name&gt;configLocation&lt;/param-name&gt;
                &lt;param-value&gt;jawr.properties&lt;/param-value&gt;
        &lt;/init-param&gt;
        &lt;init-param&gt;
                &lt;param-name&gt;type&lt;/param-name&gt;
                &lt;param-value&gt;css&lt;/param-value&gt;
        &lt;/init-param&gt;
        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;JavascriptServlet&lt;/servlet-name&gt;
        &lt;url-pattern&gt;*.js&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;CSSServlet&lt;/servlet-name&gt;
        &lt;url-pattern&gt;*.css&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;</pre>
<h3>Konfiguration</h3>
<p>Die Konfiguration geschieht in der <strong>jawr.properties</strong></p>
<pre>jawr.debug.on=false
jawr.gzip.on=true
jawr.gzip.ie6.on=false
jawr.charset.name=UTF-8</pre>
<p>Jawr erkennt automatisch ob der Browser <strong>gzip </strong>unterstützt. Wenn die Einstellung <strong>jawr.debug.on</strong> auf <strong>true </strong>steht, werden Dateien nicht komprimiert und die  Bundles werden einzeln geladen. Das ist in der Entwicklung sehr wichtig.</p>
<pre>jawr.js.bundle.basedir=/js
jawr.js.bundle.names=lib,core,model

jawr.js.bundle.lib.id=/bundles/lib.js
jawr.js.bundle.lib.mappings=/js/lib/**

jawr.js.bundle.core.id=/bundles/core.js
jawr.js.bundle.core.mappings=/js/helper/**,/js/.../version.js,/js/.../all/**

jawr.js.bundle.model.id=/bundles/model.js
jawr.js.bundle.model.mappings=/js/kosmos/cockpit/**,/js/.../../DragAndDrop.js,/js/.../reportone/**</pre>
<p>Hier definiere ich 3 verschiedene Bundles. Die Bundles können aus ganzen Ordnern oder einzeln Dateien bestehen. Doppelte Dateien überspringt Jawr automatisch.</p>
<pre>jawr.css.bundle.basedir=/css
jawr.css.bundle.names=style
jawr.css.bundle.style.id=/style.css
jawr.css.bundle.style.mappings=/css/**
jawr.csslinks.flavor = xhtml</pre>
<p>Hier wird ein CSS Bundle definiert. Wichtig ist die Einstellung<strong> jawr.csslinks.flavor = xhtml </strong>, da der Link Tag sonst nicht geschlossen wird.</p>
<p>In der JSP muss nur noch die Taglib angegeben werden.</p>
<pre>&lt;%@ taglib uri="http://jawr.net/tags" prefix="jwr" %&gt;</pre>
<p>Und dieTags für die Bundles eingefügt werden.</p>
<pre>&lt;jwr:style src="/style.css" media="all" /&gt;
&lt;jwr:script src="/bundles/lib.js"/&gt;
...</pre>
<p>Den Unterschied merkt man bei umfangreichen Javascript Anwenungen deutlich.</p>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/01/13/javascript-und-css-komprimieren-mit-jawr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Statische Dateien unter Jetty nicht änderbar</title>
		<link>http://www.ajung.de/2008/11/04/statische-dateien-unter-jetty-nicht-anderbar/</link>
		<comments>http://www.ajung.de/2008/11/04/statische-dateien-unter-jetty-nicht-anderbar/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:22:51 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[maven2]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=393</guid>
		<description><![CDATA[Jetty ist ein schlanker Java Webserver der oft für die Entwicklungs Phase eingesetzt wird. Unter Windows hat Jetty leider die Angewohnheit statische Dateien, also Javascript, Stylesheets und HTML in den Speicher zu legen und somit sind sie dann nicht mehr editierbar. Erst nach einen Neustart gibt dieser die Dateien wieder frei. Zur Zeit arbeite ich [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mortbay.org/jetty/"><img class="alignright size-full wp-image-394" title="jetty_banner" src="http://www.ajung.de/wp-content/uploads/2008/11/jetty_banner.gif" alt="" width="467" height="60" />Jetty</a> ist ein schlanker Java Webserver der oft für die Entwicklungs Phase eingesetzt wird. Unter Windows hat Jetty leider die Angewohnheit statische Dateien, also Javascript, Stylesheets und HTML in den Speicher zu legen und somit sind sie dann nicht mehr editierbar. Erst nach einen Neustart gibt dieser die Dateien wieder frei.</p>
<p>Zur Zeit arbeite ich gerade mit den <a href="http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin">Jetty Plugin</a> für <a href="http://maven.apache.org/">Maven</a>. Dort muss man erst mal in der .pom Datei für Maven die Plugin Konfiguration anpassen und eine eigene <strong>webDefaultXml </strong>angeben.</p>
<pre>&lt;configuration&gt;
   &lt;webDefaultXml&gt;src/main/recources/webdefault.xml&lt;/webDefaultXml&gt;
   ....</pre>
<p>Mit dieser Datei kann man Jetty feiner einstellen als mit der Plugin Konfiguration. Diese Date kann man sich auch den Jar Archiv von Jetty kopieren.</p>
<p>Hier muss man dann den Parameter <strong>useFileMappedBuffer </strong>auf <strong>false </strong>stellen.</p>
<pre>&lt;init-param&gt;
  &lt;param-name&gt;useFileMappedBuffer&lt;/param-name&gt;
  &lt;param-value&gt;false&lt;/param-value&gt;
&lt;/init-param&gt;</pre>
<p>Mit dieser Einstellung kann man dann die Dateien auch unter Windows zur Laufzeit ändern.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/11/04/statische-dateien-unter-jetty-nicht-anderbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Charts mit Jquery Flot</title>
		<link>http://www.ajung.de/2008/10/28/javascript-charts-mit-jquery-flot/</link>
		<comments>http://www.ajung.de/2008/10/28/javascript-charts-mit-jquery-flot/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 17:19:51 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=368</guid>
		<description><![CDATA[Flot ist eine JavaScript Bibliothek auf Basis von Jquery. Ich verwende diese gerade im Zusammenspiel mit ExtJS. So lassen sich schicke Grids mit den passenden Charts dazu erzeugen. Ein Flot Chart wird immer in ein Jquery Element generiert. Dieses muss ein HTML Element mit einer festen Höhe und Breite haben. Wie bei Jquery üblich, ist [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/flot/">Flot </a>ist eine JavaScript Bibliothek auf Basis von <a href="http://jquery.com/">Jquery</a>. Ich verwende diese gerade im Zusammenspiel mit <a href="http://extjs.com/">ExtJS</a>. So lassen sich schicke Grids mit den passenden Charts dazu erzeugen.</p>
<p>Ein Flot Chart wird immer in ein Jquery Element generiert. Dieses muss ein HTML Element mit einer festen Höhe und Breite haben. Wie bei Jquery üblich, ist der Aufruf mit ein paar Zeilen möglich.</p>
<pre lang="javascript">$().ready(function() {
	var data = {
			label:"Dummy Daten",
			data:[[1,1.5],[2,5],[3,2.3],[4,3.3]]
	};
	var options = {
		lines:{show:true},
		points:{show:true}
	}
	var plot = $.plot($('#placeholder'), [data], options)
});</pre>
<p>Dieser Simple Code erzeugt folgenden Chart:</p>
<p><img class="alignnone size-full wp-image-376" title="_1225212985388" src="http://www.ajung.de/wp-content/uploads/2008/10/_1225212985388.png" alt="" width="319" height="117" /></p>
<p>Das schöne an einem Javscript generierten Chart ist die Möglichkeit diesen zur Laufzeit anzupassen. Man kann auf Kopfdruck weitere Daten im vorhandenen Chart anzeigen. Flot Charts sind auch an klickbar. So kann man Punkte auf dem Chart anklicken und dem User dann weiterer Daten zu den bestimmten Punkt anzeigen.</p>
<h3>Zoom Funktion</h3>
<p>Spannend ist auch die Zoom Funktion um bestimmte Bereiche auf den Chart genauer anzusehen. Dazu muss man nur in den Optionen die Selection aktivieren:</p>
<pre>selection: { mode: "x"  oder "y" oder "xy"}</pre>
<p>Dann kann man sich an den Event <strong>plotselected </strong>anhängen und den Chart anzoomen:</p>
<pre>$("#placeholder").bind("plotselected", function (event, ranges) {
        plot = $.plot($("#placeholder"), [data],
                      $.extend(true, {}, options, {
                          xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }
          }));
});

<img class="alignnone size-full wp-image-382" title="zoom" src="http://www.ajung.de/wp-content/uploads/2008/10/zoom.jpg" alt="" width="436" height="210" />
<img class="alignnone size-full wp-image-383" title="zoomed" src="http://www.ajung.de/wp-content/uploads/2008/10/zoomed.jpg" alt="" width="436" height="210" /></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/10/28/javascript-charts-mit-jquery-flot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
