<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-18862554</id><updated>2008-09-08T12:14:42.763+02:00</updated><title type='text'>Java ist auch eine Insel</title><subtitle type='html'>In diesem Blog schreibe ich über aktuelle Entwicklungen in Java, Softwareentwicklung im Allgemeinen, Open-Source, JavaScript, neue Eclipse-Plugins und Neuerungen im Buch ›Java ist auch eine Insel‹.</subtitle><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>209</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18862554.post-4158798215125210651</id><published>2008-08-31T15:37:00.001+02:00</published><updated>2008-08-31T15:37:20.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>GWT 1.5 fertig</title><content type='html'>&lt;p&gt;Unter &lt;a title="http://www.theserverside.com/news/thread.tss?thread_id=50498" href="http://www.theserverside.com/news/thread.tss?thread_id=50498"&gt;http://www.theserverside.com/news/thread.tss?thread_id=50498&lt;/a&gt; ging gerade die Nachricht rein, dass GWT 1.5 nun final ist.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;GWT Home: &lt;a href="http://code.google.com/webtoolkit/"&gt;http://code.google.com/webtoolkit/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Download: &lt;a href="http://code.google.com/webtoolkit/download.html"&gt;http://code.google.com/webtoolkit/download.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Announcement: &lt;a href="http://googlewebtoolkit.blogspot.com/2008/08/gwt-15-now-available.html"&gt;http://googlewebtoolkit.blogspot.com/2008/08/gwt-15-now-available.html&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/gwt-15-fertig.html' title='GWT 1.5 fertig'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=4158798215125210651' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4158798215125210651'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4158798215125210651'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2421063199044683684</id><published>2008-08-26T09:19:00.003+02:00</published><updated>2008-09-01T09:11:44.525+02:00</updated><title type='text'>HOWTO Build a REST-Application with Jersey and Jetty</title><content type='html'>&lt;p&gt;Resource first:&lt;/p&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;package com.tutego.traida.server;&lt;br /&gt;&lt;br /&gt;import javax.ws.rs.*;&lt;br /&gt;&lt;br /&gt;@Path( &amp;quot;/&amp;quot; )&lt;br /&gt;public class GreetingResource&lt;br /&gt;{&lt;br /&gt;  @GET @ProduceMime(&amp;quot;text/plain&amp;quot;)&lt;br /&gt;  &lt;br /&gt;  public String get()&lt;br /&gt;  {&lt;br /&gt;    return &amp;quot;Yea!&amp;quot;;&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Bring it to Jetty&lt;/p&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;package com.tutego.traida.server;&lt;br /&gt;&lt;br /&gt;import org.mortbay.jetty.Server;&lt;br /&gt;import org.mortbay.jetty.servlet.Context;&lt;br /&gt;import org.mortbay.jetty.servlet.ServletHolder;&lt;br /&gt;import com.sun.jersey.spi.container.servlet.ServletContainer; &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;public class Application &lt;br /&gt;{&lt;br /&gt;  public static void main( String[] args ) throws Exception&lt;br /&gt;  {&lt;br /&gt;    ServletHolder sh = new ServletHolder( ServletContainer.class );&lt;br /&gt;&lt;br /&gt;    sh.setInitParameter( &amp;quot;com.sun.jersey.config.property.resourceConfigClass&amp;quot;,&lt;br /&gt;                         &amp;quot;com.sun.jersey.api.core.PackagesResourceConfig&amp;quot; );&lt;br /&gt;    sh.setInitParameter( &amp;quot;com.sun.jersey.config.property.packages&amp;quot;, &amp;quot;com.tutego.traida.server&amp;quot; );&lt;br /&gt;&lt;br /&gt;    Server server = new Server( 9999 );&lt;br /&gt;    Context context = new Context( server, &amp;quot;/&amp;quot;, Context.SESSIONS );&lt;br /&gt;&lt;br /&gt;    context.addServlet( sh, &amp;quot;/*&amp;quot; );&lt;br /&gt;    server.start();&lt;br /&gt;&lt;br /&gt;  } &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;To use REST-parameters&lt;/p&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;@Path( &amp;quot;/edit-customer/{customerid}&amp;quot; )&lt;br /&gt;public class EditCustomerResource&lt;br /&gt;{&lt;br /&gt;  @GET @ProduceMime(&amp;quot;text/plain&amp;quot;)&lt;br /&gt;  public String editUser( @PathParam(&amp;quot;customerid&amp;quot;) String customerId )&lt;br /&gt;  {&lt;br /&gt;    ....&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;</content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/howto-build-rest-application-with.html' title='HOWTO Build a REST-Application with Jersey and Jetty'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2421063199044683684' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2421063199044683684'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2421063199044683684'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-7083513045479357008</id><published>2008-08-24T13:38:00.001+02:00</published><updated>2008-08-24T13:38:19.787+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>HOWTO Add a JDBC DataSource/JNDI to GlassFish</title><content type='html'>&lt;p&gt;Use &lt;em&gt;asadmin&lt;/em&gt; with option &lt;em&gt;create-jdbc-connection-pool&lt;/em&gt; first:&lt;/p&gt;  &lt;pre&gt;asadmin create-jdbc-connection-pool --datasourceclassname org.apache.derby.jdbc.EmbeddedDataSource --property databaseName=\$\{com.sun.aas.instanceRoot\}/databases/tutegodb:connectionAttributes=\;create\=true tutegoPool&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Use &lt;em&gt;asadmin &lt;/em&gt;again to install the actual JNDI name:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;asadmin create-jdbc-resource --connectionpoolid=tutegoPool jdbc/tutego&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To remove the pool and all attached JNDI names:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;asadmin delete-jdbc-connection-pool --cascade tutegoPool&lt;/pre&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/howto-add-jdbc-datasourcejndi-to.html' title='HOWTO Add a JDBC DataSource/JNDI to GlassFish'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=7083513045479357008' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/7083513045479357008'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/7083513045479357008'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-6330769320627235014</id><published>2008-08-24T11:00:00.001+02:00</published><updated>2008-08-24T11:00:10.619+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>DZone-Interview mit Sacha Labourey über JBoss AS 5</title><content type='html'>&lt;p&gt;Gibt es unter &lt;a title="http://java.dzone.com/videos/tech-chat-sacha-labourey-jboss" href="http://java.dzone.com/videos/tech-chat-sacha-labourey-jboss"&gt;http://java.dzone.com/videos/tech-chat-sacha-labourey-jboss&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Nat&amp;#252;rlich galt es im Interview zu kl&amp;#228;ren, warum man auf JBoss 5 so lange warten muss. Fertig ist er aber immer noch nicht!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We are very close to GA.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Warum noch immer nicht soweit? Weil der JBoss einen ganz neuen Microcontainer bekommt und weil unter anderem die Messaging-L&amp;#246;sung (JBoss Messaging) neu entwickelt wurde und JBoss 5 einen neuen Transaktions-Monitor bekommt. Einen Lacher erntet er bei mir aber mit:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Intuitively people usually think that it is an issue with the J2EE spec and how much time it took us to implement this pretty significant update of the J2EE spec.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;JBoss war immerhin einer der ersten Container, die EJB 3 unterst&amp;#252;tzten. Aber Web-Services machen den JBoss 4 immer etwas Probleme, was auch an der Integration von Axis lag.&lt;/p&gt;  &lt;p&gt;Ich sehe eher weniger gute Zukunfsaussichten f&amp;#252;r JBoss. Mit der wachsenden Popularit&amp;#228;t von GlassFish und Geronimo wird JBoss 5 zu k&amp;#228;mpfen haben. GlassFish und Geronimo/IBM WASCE sowie WebLogic Server v10.0, SAP NetWeaver 7.1, Apusic Application Server, TmaxSoft JEUS 6, NEC WebOTX 8.1 sind (zum Teil schon sehr lange) Java EE 5 zertifiziert (&lt;a title="http://java.sun.com/javaee/overview/compatibility.jsp" href="http://java.sun.com/javaee/overview/compatibility.jsp"&gt;http://java.sun.com/javaee/overview/compatibility.jsp&lt;/a&gt;) und JBoss 5 hat das auch noch vor sich.&lt;/p&gt;  &lt;p&gt;Weiterhin glaube ich in der Java-Community einen Trend in Richtung der Sun-Implementierungen erkennen zu k&amp;#246;nnen, was zum Beispiel die RI f&amp;#252;r JavaServer Faces, aber auch etwa &lt;a href="https://jax-ws.dev.java.net/"&gt;JAX-WS&lt;/a&gt; f&amp;#252;r Web-Services angeht. Interessant ist auch, dass GlassFish die JSP-Servlet-&lt;a href="http://blogs.sun.com/kchung/entry/speed_up_jsp_compilations_with"&gt;&amp;#220;bersetzung optimiert &amp;#252;ber JSR 199&lt;/a&gt; regelt, eine Entwicklung, die eben nicht von Tomcat ausgeht. So nutzt auch Jetty das. (Schon 2006 war zu lesen: &amp;quot;patch to allow Jetty to use JSP2.1 from Glassfish instead of Jasper from Tomcat&amp;quot;). Von GlassFish geht im Moment ein sehr starker Zug aus und es bleibt sehr spannend.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/dzone-interview-mit-sacha-labourey-ber.html' title='DZone-Interview mit Sacha Labourey über JBoss AS 5'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=6330769320627235014' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/6330769320627235014'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/6330769320627235014'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-4727701830939631462</id><published>2008-08-24T10:17:00.001+02:00</published><updated>2008-08-24T10:17:26.542+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><title type='text'>MouseScrollableUI für JXLayer</title><content type='html'>&lt;p&gt;Browser haben mich zum ersten Mal auf ein Gui-Feature aufmerksam gemacht, das folgender Screenshot am Besten erkl&amp;#228;rt:&lt;/p&gt;  &lt;p&gt;&lt;img alt="demo screenshot" src="https://swinghelper.dev.java.net/bin/blog/scrolling/srollable.PNG" /&gt;&lt;/p&gt;  &lt;p&gt;In der Tabelle erkennt man ein Symbol, mit dem sich leicht durch gro&amp;#223;e Views scrollen l&amp;#228;sst. Aktiviert wird diese M&amp;#246;glichkeit &amp;#252;ber die mittlere Maustaste.&lt;/p&gt; &lt;a href="http://weblogs.java.net/blog/alexfromsun/archive/2008/06/jxlayer_30_mous.html"&gt;Nun ist so etwas auch einfach f&amp;#252;r Swing &amp;#252;ber einen Dekorator m&amp;#246;glich:&lt;/a&gt;  &lt;pre&gt;JScrollPane sp = JScrollPane( table );&lt;br /&gt;JXLayer&amp;lt;JScrollPane&amp;gt; lsp = new JXLayer&amp;lt;JScrollPane&amp;gt;( sp, new MouseScrollableUI() );&lt;br /&gt;container.add( lsp );&lt;/pre&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/mousescrollableui-fr-jxlayer.html' title='MouseScrollableUI für JXLayer'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=4727701830939631462' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4727701830939631462'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4727701830939631462'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-1144996138336723678</id><published>2008-08-24T10:11:00.001+02:00</published><updated>2008-08-24T10:11:23.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Die wöchentliche Dosis Java'/><title type='text'>Thema der Woche: Refactoring</title><content type='html'>&lt;p&gt;Refactoring von Code ist eine wichtige Aufgabe von Entwicklern neben der Neuentwicklung von Programmcode. Die Pflege und Aufarbeitung darf nat&amp;#252;rlich nicht zum Selbstzweck werden, aber langlebige Software muss zwingend f&amp;#252;r immer die Kriterien Wartbarkeit und Erweiterbarkeit bewahren und gut dokumentiert und verst&amp;#228;ndlich sein.&lt;/p&gt;  &lt;p&gt;Den gr&amp;#246;&amp;#223;ten Einfluss auf das Thema Refactoring hat das Refactoring-Buch von Martin Fowler, der auf seiner &lt;a href="http://www.refactoring.com/"&gt;Webseite&lt;/a&gt; das Prinzip Refactoring, Refactoring-Tools und News auflistet.&lt;/p&gt;  &lt;p&gt;Martin Fowler hat mir erlaubt, seinen &lt;a href="http://www.refactoring.com/catalog/index.html"&gt;Refactoring-Katalog&lt;/a&gt; auf Deutsch zu &amp;#252;bersetzen: &lt;a title="http://www.tutego.com/java/refactoring/catalog/" href="http://www.tutego.com/java/refactoring/catalog/"&gt;http://www.tutego.com/java/refactoring/catalog/&lt;/a&gt;. Gehe kurz &amp;#252;ber alle Refactorings.&lt;/p&gt;  &lt;p&gt;Moderne IDEs erlauben von Haus aus das Refactoring von Code. Im Fall von Eclipse finde zu jedem unterst&amp;#252;tzten Refactoring ein Beispiel und lasse es von Eclipse umbauen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm" href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm"&gt;http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-java-editor-quickassist.htm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm" href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm"&gt;http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-menu-refactor.htm&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/thema-der-woche-refactoring.html' title='Thema der Woche: Refactoring'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=1144996138336723678' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/1144996138336723678'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/1144996138336723678'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-4953502762719243604</id><published>2008-08-16T22:26:00.002+02:00</published><updated>2008-09-08T12:02:18.582+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Frameworks'/><title type='text'>GWT 1.5 RC2</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Bezug unter http://code.google.com/webtoolkit/download.html . Changelog unter http://code.google.com/webtoolkit/releases/release-notes-1.5.1.html#Release_Notes_Current . Grundsätzlich für GWT 1.5:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Java 1.5 Support&lt;/li&gt;&lt;li&gt;Compiler Enhancements to Improve Application Speed&lt;/li&gt;&lt;li&gt;UI Library Additions: Widget Animations, Visual Themes&lt;/li&gt;&lt;li&gt;DOM API for simplified DOM Programming&lt;/li&gt;&lt;li&gt;Internationalization Improvements: Bi-di, Pluralization&lt;/li&gt;&lt;li&gt;Accessibility Support&lt;/li&gt;&lt;li&gt;Enhancements to the JRE Emulation Library&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/gwt-15-rc2.html' title='GWT 1.5 RC2'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=4953502762719243604' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4953502762719243604'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4953502762719243604'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-1422265821765248710</id><published>2008-08-16T19:10:00.001+02:00</published><updated>2008-08-16T19:10:59.951+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse-News</title><content type='html'>&lt;p&gt;Seit dem 8.8. ist nicht nur Olympia, sondern es es gibt auch den ersten Milestone von 3.5. Die Neuerungen sind aber seeehr mager und bis zur endg&amp;#252;ltigen Version ist ja auch noch viel Zeit. Bei &lt;a href="http://www.netbeans.org/community/releases/65/"&gt;NetBeans&lt;/a&gt; tut sich zur Zeit mehr.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M1-200808071402/3.5M1/eclipse-news-M1.html"&gt;http://download.eclipse.org/eclipse/downloads/drops/S-3.5M1-200808071402/3.5M1/eclipse-news-M1.html&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Plugin-News:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.instantiations.com/windowbuilder/"&gt;WindowBuilder&lt;/a&gt; ist ein WYSIWYG-Gui-Builder f&amp;#252;r Swing, SWT und auch GWT.      &lt;br /&gt;      &lt;br /&gt;&lt;img alt="http://www.instantiations.com/images2/wbp/wb-screenshot.png" src="http://www.instantiations.com/images2/wbp/wb-screenshot.png" /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pydev.sourceforge.net/"&gt;PyDev&lt;/a&gt;. Von der Pyhthon-IDE gibt es ebenfalls Neues. &amp;#196;ltere Screenshots:      &lt;br /&gt;      &lt;br /&gt;&lt;img src="http://pydev.sourceforge.net/images/screenshot/screenshot2.png" border="1" /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;img src="http://pydev.sourceforge.net/images/screenshot/screenshot3.png" border="1" /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://antlrv3ide.sourceforge.net/"&gt;ANTLR IDE&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;img alt="http://antlrv3ide.sourceforge.net/resources/screenshot.png" src="http://antlrv3ide.sourceforge.net/resources/screenshot.png" /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;img alt="http://antlrv3ide.sourceforge.net/resources/interpreterview.png" src="http://antlrv3ide.sourceforge.net/resources/interpreterview.png" /&gt;&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/eclipse-news.html' title='Eclipse-News'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=1422265821765248710' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/1422265821765248710'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/1422265821765248710'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-3083907398428799268</id><published>2008-08-14T22:08:00.001+02:00</published><updated>2008-08-14T22:08:02.834+02:00</updated><title type='text'>NetBeans IDE 6.5 Beta</title><content type='html'>&lt;p&gt;Es ist wieder soweit. Sun aktualisiert ihre IDE. Es gibt interessante Neuigkeiten unter &lt;a title="http://wiki.netbeans.org/NewAndNoteWorthy" href="http://wiki.netbeans.org/NewAndNoteWorthy"&gt;http://wiki.netbeans.org/NewAndNoteWorthy&lt;/a&gt; zu lesen. Spannender ist:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h6&gt;Compile on Save. Where is the Build action? It is not needed any more. The Compile on Save feature does a build for you automatically. Run/debug/test actions are now available immediately. Modify a method body while running the debugger and save - the changes will be reloaded in the running application. Compilation errors inside a method don't stop you from running your program; if you debug, the debugger will halt if program execution hits that point.&lt;/h6&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Code completion has been added to the SQL editor, making it easier to insert schema, table and column names.&lt;/p&gt;    &lt;p&gt;&lt;img alt="sql-completion.png" src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone2NB65/sql-completion.png" /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Hibernate is now part of the standard distribution. No need to install the plug-in anymore.&amp;#160; Hibernate Reverse Engineering File Editor Support&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;JSF CRUD Generator&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Property Values Code Completion und Property Values Error Checking&lt;/p&gt;    &lt;p&gt;&lt;img alt="css-context-aware-values-cc.png" src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone2NB65/css-context-aware-values-cc.png" /&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;img alt="css-values-checks.png" src="http://wiki.netbeans.org/attach/NewAndNoteWorthyMilestone2NB65/css-values-checks.png" /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Sonst: JavaScript-Debugger, &amp;#220;berarbeitung vom UML-Tool, SVG f&amp;#252;r Java ME, Remote Profiling. Sehr h&amp;#252;bsch.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/netbeans-ide-65-beta.html' title='NetBeans IDE 6.5 Beta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=3083907398428799268' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3083907398428799268'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3083907398428799268'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-3467052541877421663</id><published>2008-08-10T20:40:00.001+02:00</published><updated>2008-08-10T20:40:04.280+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 7'/><title type='text'>Erster Java Closures Prototype im openjdk</title><content type='html'>&lt;p&gt;Von &lt;a title="http://gafter.blogspot.com/2008/08/java-closures-prototype-feature.html" href="http://gafter.blogspot.com/2008/08/java-closures-prototype-feature.html"&gt;http://gafter.blogspot.com/2008/08/java-closures-prototype-feature.html&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The complete source code, released under GPLv2, is in the project's openjdk repository. A binary build, suitable for use with an existing JDK6, is at &lt;a href="http://www.javac.info/closures.tar.gz"&gt;http://www.javac.info/closures.tar.gz&lt;/a&gt;. Other related documents are on the website &lt;a href="http://www.javac.info/"&gt;http://www.javac.info/&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Neu sind Method references aus dem&amp;#160; &lt;a href="http://docs.google.com/View?docid=ddhp95vd_6hg3qhc"&gt;FCM proposal&lt;/a&gt;:&lt;/p&gt;  &lt;pre&gt;{ String =&amp;gt; int } parseInt = Integer#parseInt(String);&lt;br /&gt;int x = parseInt.invoke(&amp;quot;42&amp;quot;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Damit wird es immer wahrscheinlicher, dass es Closures in Java 7 gibt, obwohl Zeitpunkt und Inhalte immer noch nicht feststehen.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/erster-java-closures-prototype-im.html' title='Erster Java Closures Prototype im openjdk'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=3467052541877421663' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3467052541877421663'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3467052541877421663'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-8661984752936461410</id><published>2008-08-05T20:45:00.001+02:00</published><updated>2008-08-05T20:45:42.584+02:00</updated><title type='text'>Generics zum Verstecken von Exceptions</title><content type='html'>&lt;p&gt;Im Blog &lt;a title="http://nat.truemesh.com/archives/000738.html" href="http://nat.truemesh.com/archives/000738.html"&gt;http://nat.truemesh.com/archives/000738.html&lt;/a&gt; schreibt Nat &amp;#252;ber eine interessante Anwendung von Generics zur Vermeidung von l&amp;#228;stigen throws im Fall von RuntimeExceptions.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/generics-zum-verstecken-von-exceptions.html' title='Generics zum Verstecken von Exceptions'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=8661984752936461410' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8661984752936461410'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8661984752936461410'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-8887761677304605379</id><published>2008-08-04T21:17:00.001+02:00</published><updated>2008-08-04T21:17:42.826+02:00</updated><title type='text'>Der Ampel-Bär</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Das CI-System Hudson wird immer populärer und lustige Dinge kommen dazu: &lt;br/&gt;&lt;a href='http://hudson.gotdns.com/wiki/pages/viewpage.action?pageId=20250625'&gt;http://hudson.gotdns.com/wiki/pages/viewpage.action?pageId=20250625&lt;/a&gt;. Gefunden unter &lt;a href='http://blog.last.fm/2008/08/01/quality-control'&gt;http://blog.last.fm/2008/08/01/quality-control&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/08/der-ampel-br.html' title='Der Ampel-Bär'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=8887761677304605379' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8887761677304605379'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8887761677304605379'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-5543994913735631723</id><published>2008-07-25T10:51:00.001+02:00</published><updated>2008-07-25T10:51:17.901+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Insel'/><title type='text'>Insel: Kurzer Abriss der Java Open-Source-Werdung</title><content type='html'>&lt;p&gt;Schon seit Java 1.0 gibt es den Quellcode der Standard-Bibliotheken (beim JDK im im Wurzelverzeichnis unter dem Namen src.zip) und jeder Interessierte konnte einen Blick auf die Implementierung werfen. Zwar verschloss Sun nicht den Blick auf die Implementierungen, aber weder die Laufzeitumgebung, noch der Compiler oder die Bibliotheken standen unter einer akzeptierten Open-Source-Lizenz. Sehr &amp;#252;ber 10 Jahren gab es in der Software-Welt Forderungen an Sun, die gesamte Java-Plattform unter einer bekanntere Lizenzform wie der GNU General Public License (GPL) oder BSD-Lizenz zu stellen. Dabei hat Jonathan Schwartz in San Francisco bei der JavaOne Konferenz 2006 schon angedeutet: &amp;#8250;&amp;#8250;It's not a question of whether we'll open source Java, now the question is how&amp;#8249;&amp;#8249;. War die Frage also statt des &amp;#8222;Ob&amp;#8220; ein &amp;#8222;Wie&amp;#8220;, k&amp;#252;ndigte bei der Er&amp;#246;ffnungsrede der JavaOne Konferenz im Mai 2007 Rich Green die endg&amp;#252;ltige Freigabe Java als OpenJDK&amp;#160; unter der Open Source-Lizenz GPL 2 an. Dem ging Ende 2006 die Freigabe von Compiler und der virtuellen Maschine voraus.&lt;/p&gt;  &lt;p&gt;Die Geschichte ist allerdings noch ein wenig komplizierter. Obwohl OpenJDK nun unter der GPL steht, enthielt es doch Teile wie den Font-Renderer, Sound-Unterst&amp;#252;tzung, Farbmanagement, SNMP-Code, die als bin&amp;#228;re Pakete beigelegt wurden, weil etwa die Rechte zur Ver&amp;#246;ffentlichung fehlten. Sun nennt diese Teile, die etwa 4 % vom JDK 6 ausmachen, &amp;#8222;belasteter Code&amp;#8220; (engl. &amp;#8222;encumbered code&amp;#8220;) . Das hindere puristische Linux-Distributoren daran, OpenJDK auszuliefern. RedHat ver&amp;#246;ffentlichte daraufhin im Juni 2007 das Projekt IcedTea, um diese bin&amp;#228;ren Teile auf der Basis vom OpenJDK durch GPL-Software zu ersetzen. So basiert der Font-Renderer zum Beispiel auf FreeType&amp;#160; und das Farbmanagement auf little CMS . Mit diesen Ersetzungen schaffte dann OpenJDK + IcedTea im Juni 2008 das Technology Compatibility Kit (TCK) von Sun und hei&amp;#223;t nun OpenJDK 6. Darauf hin floss das OpenJDK 6 unter der GPLv2 in Linux-Distributionen wie Fedora und Debian ein.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/insel-kurzer-abriss-der-java-open.html' title='Insel: Kurzer Abriss der Java Open-Source-Werdung'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=5543994913735631723' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5543994913735631723'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5543994913735631723'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2229071540015573960</id><published>2008-07-25T09:41:00.001+02:00</published><updated>2008-07-25T09:41:55.735+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>VisualVM 1.0 + JDK Integration</title><content type='html'>&lt;p&gt;&lt;a href="https://visualvm.dev.java.net/"&gt;VisualVM&lt;/a&gt; ist nun in der Version 1.0 final. Ein erstaunliche Neuerung ist, dass Sun VisualVM in das Update 7 von JDK 6 integriert hat; sonst wurden noch nie in Updates neue Tools integriert.&lt;/p&gt;  &lt;p&gt;Die wichtigsten Features von der Webseite:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/localremoteapps.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/localremoteapps_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Display local and remote Java applications.&lt;/b&gt; VisualVM automatically detects and lists locally and remotely running Java applications (&lt;code&gt;jstatd&lt;/code&gt; must be running on the remote host). You can also define applications manually by JMX connection. This way you can easily see what Java applications are running on your system or check if a remote J2EE server process is alive. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/overview.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/overview_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Display application configuration and runtime environment.&lt;/b&gt; For each application VisualVM shows basic runtime information: PID, main class, arguments passed to &lt;code&gt;java&lt;/code&gt; process, JVM version, JDK home, JVM flags and arguments and system properties. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/monitor.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/monitor_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Monitor application memory consumption and runtime behavior.&lt;/b&gt; VisualVM monitors application heap and permanent generation memory, number of loaded classes and running threads. You can easily detect suspicious memory consumption and take an action - invoke garbage collection in the application or take a heap dump and browse the contents of application heap. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/threads.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/threads_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Monitor application threads.&lt;/b&gt; All threads running in a Java process are displayed in a timeline. You can track thread activity and uncover inefficient patterns like blocked Event Dispatch Thread or unused worker threads. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/profiler.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/profiler_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Profile application performance or analyze memory allocation.&lt;/b&gt; VisualVM has a built-in application profiler which can visualize where most of the time is being spent or which objects consume most of the memory by just one mouse click without any additional configuration. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/threaddump.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/threaddump_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Take and display thread dumps.&lt;/b&gt; Taking and displaying a thread dump is as easy as clicking a mouse button. You don't need to deal with the command line at all to determine what's currently happening in the application. Moreover, simultaneous thread dumps of multiple applications can be taken at once to start uncovering distributed deadlocks. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/heapdump.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/heapdump_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Take and browse heap dumps.&lt;/b&gt; When you need to browse contents of application memory or uncover a memory leak in your application, you'll find the built-in HeapWalker tool really handy. It can read files written in &lt;code&gt;hprof&lt;/code&gt; format and is also able to browse heap dumps created by the JVM on an OutOfMemoryException. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/coredump.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/coredump_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Analyze core dumps.&lt;/b&gt; When a Java process crashes, a core dump can be generated by the JVM containing important information about application state at the time of the crash. VisualVM is able to display application configuration and runtime environment and to extract thread and heap dumps from the core dump. &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;a href="https://visualvm.dev.java.net/images/appsnapshot.png"&gt;&lt;img src="https://visualvm.dev.java.net/images/appsnapshot_small.png" /&gt;&lt;/a&gt;&lt;b&gt;Analyze applications offline.&lt;/b&gt; VisualVM is able to save application configuration and runtime environment together with all taken thread dumps, heap dumps and profiler snaphots into a single application snapshot which can be later processed offline. This is especially useful for bug reports where users can provide a single file containing all the necessary information to identify runtime environment and application state. &lt;/p&gt;  &lt;p&gt;Die Webseite sieht auch viel schicker aus (was f&amp;#252;r die anderen java.net-Projekte aber nicht gilt).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Werbung&lt;/strong&gt;: Wir haben neue/aktualisierte Seminare.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.tutego.com/seminare/java-schulung/liferay-portal-seminar.html"&gt;Liferay Portal Enterprise&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.tutego.com/seminare/java-schulung/IBM-WebSphere-Application-Server-Community-Edition-Administration-Apache-Geronimo.html"&gt;WebSphere AS Community Edition/Geronimo Administration&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tutego.com/seminare/java-schulung/swt-seminar-swt-jface-schulung.html"&gt;SWT und JFace&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tutego.com/seminare/server-administration-schulung/apache-http-server-seminar-apache-webserver-kurs.html"&gt;Apache HTTP Server&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/visualvm-10-jdk-integration.html' title='VisualVM 1.0 + JDK Integration'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2229071540015573960' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2229071540015573960'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2229071540015573960'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2867379301426356177</id><published>2008-07-25T09:28:00.001+02:00</published><updated>2008-07-25T09:28:42.061+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>Doclet APIviz für nette UML-Diagramme</title><content type='html'>&lt;p&gt;&lt;a href="http://code.google.com/p/apiviz/"&gt;APIviz&lt;/a&gt; ist ein LGPL-Doclet, welches nicht nur die klassische JavaDoc-API erstellt, sondern gleich dabei noch UML-Diagramme. Die Diagramme werden generiert von &lt;a title="http://www.graphviz.org/" href="http://www.graphviz.org/"&gt;http://www.graphviz.org/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Hier ein Beispiel, wie das nach dem Erzeugen aussieht:&lt;/p&gt;  &lt;h4&gt;net.gleamynode.netty.buffer   &lt;br /&gt;Class HeapChannelBuffer&lt;/h4&gt;  &lt;pre&gt;&lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true"&gt;java.lang.Object&lt;/a&gt;&lt;br /&gt;  &lt;img alt="extended by " src="http://netty.googlecode.com/svn/site/api/3.0/resources/inherit.gif" /&gt;&lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/AbstractChannelBuffer.html"&gt;net.gleamynode.netty.buffer.AbstractChannelBuffer&lt;/a&gt;&lt;br /&gt;      &lt;img alt="extended by " src="http://netty.googlecode.com/svn/site/api/3.0/resources/inherit.gif" /&gt;&lt;b&gt;net.gleamynode.netty.buffer.HeapChannelBuffer&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;All Implemented Interfaces:&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/Comparable.html?is-external=true"&gt;Comparable&lt;/a&gt;&amp;lt;&lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/ChannelBuffer.html"&gt;ChannelBuffer&lt;/a&gt;&amp;gt;, &lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/ChannelBuffer.html"&gt;ChannelBuffer&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;Direct Known Subclasses:&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;&lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/BigEndianHeapChannelBuffer.html"&gt;BigEndianHeapChannelBuffer&lt;/a&gt;, &lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/LittleEndianHeapChannelBuffer.html"&gt;LittleEndianHeapChannelBuffer&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;dl&gt;&lt;dt&gt;&lt;br /&gt;    &lt;pre&gt;public abstract class &lt;a href="http://netty.googlecode.com/svn/site/api/3.0/src-html/net/gleamynode/netty/buffer/HeapChannelBuffer.html#line.35"&gt;&lt;b&gt;HeapChannelBuffer&lt;/b&gt;&lt;/a&gt;&lt;dt&gt;extends &lt;a href="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/AbstractChannelBuffer.html"&gt;AbstractChannelBuffer&lt;/a&gt;&lt;/dt&gt;&lt;/pre&gt;&lt;br /&gt;  &lt;/dt&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img alt="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/HeapChannelBuffer.png" src="http://netty.googlecode.com/svn/site/api/3.0/net/gleamynode/netty/buffer/HeapChannelBuffer.png" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;dl&gt;&lt;dt&gt;&lt;b&gt;Version:&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;$Rev$, $Date$ &lt;/dd&gt;&lt;dt&gt;&lt;b&gt;Author:&lt;/b&gt;&lt;/dt&gt;&lt;dd&gt;The Netty Project (netty@googlegroups.com), Trustin Lee (trustin@gmail.com) &lt;/dd&gt;&lt;/dl&gt;&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/doclet-apiviz-fr-nette-uml-diagramme.html' title='Doclet APIviz für nette UML-Diagramme'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2867379301426356177' title='1 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2867379301426356177'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2867379301426356177'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-4226956144961050753</id><published>2008-07-11T10:28:00.001+02:00</published><updated>2008-07-11T10:28:06.907+02:00</updated><title type='text'>Erster Milestone für NetBeans 6.5</title><content type='html'>&lt;p&gt;&lt;a href="http://wiki.netbeans.org/NewAndNoteWorthyMilestone1NB65"&gt;http://wiki.netbeans.org/NewAndNoteWorthyMilestone1NB65&lt;/a&gt; listet alle Neuerungen auf. Interessant ist unter anderem &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PHP-IDE (schon erstaunlich, welche Rolle PHP in der Java-Umgebung spielt. Sollte das mit &lt;a title="http://www.caucho.com/resin-3.0/quercus/" href="http://www.caucho.com/resin-3.0/quercus/"&gt;http://www.caucho.com/resin-3.0/quercus/&lt;/a&gt; zusammenh&amp;#228;ngen?)&lt;/li&gt;    &lt;li&gt;Eclipse project import and synchronization&lt;/li&gt;    &lt;li&gt;Enhanced Java Web Start support&lt;/li&gt;    &lt;li&gt;CSS code completion&lt;/li&gt;    &lt;li&gt;JavaScript Debugger &lt;/li&gt;    &lt;li&gt;&lt;a href="http://wiki.netbeans.org/JavaScriptBundledLibraries"&gt;Bundled JavaScript Libraries &lt;/a&gt;(Yahoo UI, WoodStock, jQuery, dojo, scriptaculous, prototype)&lt;/li&gt;    &lt;li&gt;CamelCase code completion&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Groovy-Editor und Grails, Ruby &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Spring (Wow! H&amp;#228;tte ich Sun gar nicht zugetraut). Auch mit Refactorings&lt;/li&gt;    &lt;li&gt;Hibernate-Anfragen&lt;/li&gt;    &lt;li&gt;Refactrings bei JSF&lt;/li&gt;    &lt;li&gt;ButtonGroup visualization&lt;/li&gt;    &lt;li&gt;RESTful services from database&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Insgesamt phantastische Neuerungen einer freien, quelloffenen IDE. Insbesondere mit den Erweiterungen zieht NB Eclipse klar die Ohren lang. In puren Editor-Bereich sehe ich zwar weiterhin Vorteile von Eclipse, aber im Bereich Wizards und Unterst&amp;#252;tzung der Java-Technologien wird NB die Nase vorne haben.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/erster-milestone-fr-netbeans-65.html' title='Erster Milestone für NetBeans 6.5'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=4226956144961050753' title='1 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4226956144961050753'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/4226956144961050753'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-8684069033192839532</id><published>2008-07-11T10:13:00.001+02:00</published><updated>2008-07-11T10:13:45.017+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Die wöchentliche Dosis Java'/><title type='text'>Thema der Woche: Rich Internet Applications mit OpenLaszlo und ZK</title><content type='html'>&lt;p&gt;Statt wie bei vielen Java Web-Frameworks HTML-Seiten in das Zentrum zu stellen, gehen moderne RIA (Rich Internet Applications)-Frameworks einen anderen Weg. Im Mittelpunkt stehen dort XML-Dateien, die die View beschreiben, angereichert mit JavaScript f&amp;#252;r die Interaktion und das Ansprechen von Services in der Middle-Tier. Drei der bekannten Frameworks sind:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OpenLaslo. &lt;a title="http://www.openlaszlo.org/" href="http://www.openlaszlo.org/"&gt;http://www.openlaszlo.org/&lt;/a&gt;, &lt;a title="http://de.wikipedia.org/wiki/OpenLaszlo" href="http://de.wikipedia.org/wiki/OpenLaszlo"&gt;http://de.wikipedia.org/wiki/OpenLaszlo&lt;/a&gt;, &lt;/li&gt;    &lt;li&gt;Flex. &lt;a title="http://www.adobe.com/de/products/flex/" href="http://www.adobe.com/de/products/flex/"&gt;http://www.adobe.com/de/products/flex/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;ZK. &lt;a title="http://www.zkoss.org/" href="http://www.zkoss.org/"&gt;http://www.zkoss.org/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Verschaffe einen Eindruck &amp;#252;ber die Frameworks mit dem Demos &lt;a title="http://www.zkoss.org/demo/" href="http://www.zkoss.org/demo/"&gt;http://www.zkoss.org/demo/&lt;/a&gt;, &lt;a title="http://www.openlaszlo.org/showcase" href="http://www.openlaszlo.org/showcase"&gt;http://www.openlaszlo.org/showcase&lt;/a&gt;, &lt;a title="http://www.webspiders.com/flex/" href="http://www.webspiders.com/flex/"&gt;http://www.webspiders.com/flex/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.openlaszlo.org/lps4/laszlo-explorer/index.jsp?lzr=dhtml" href="http://www.openlaszlo.org/lps4/laszlo-explorer/index.jsp?lzr=dhtml"&gt;http://www.openlaszlo.org/lps4/laszlo-explorer/index.jsp?lzr=dhtml&lt;/a&gt; bietet unter &amp;quot;Laszlo in 10 Minutes &amp;quot; einen Editor auf der einen Seite und eine Ansicht auf der anderen, so dass man &amp;#252;ber dem Editor, eigene Programme in der Mini-IDE schreiben kann. Entwickle auf diese Weise einen Umrechner von Euro in Dollar.&lt;/p&gt;  &lt;p&gt;Installiere den OpenLaszlo Server (&lt;a title="http://www.openlaszlo.org/lps4/docs/installation/" href="http://www.openlaszlo.org/lps4/docs/installation/"&gt;http://www.openlaszlo.org/lps4/docs/installation/&lt;/a&gt;). Setze den Euro/Dollar-Umrechner in das Verzeichnis. Schreibe eine einfache JSP (oder echten Web-Service &amp;#252;ber Java 6 wer will; angelehnt an &lt;a title="http://rscreeney.wordpress.com/2006/09/19/laszlo-simple-web-service/" href="http://rscreeney.wordpress.com/2006/09/19/laszlo-simple-web-service/"&gt;http://rscreeney.wordpress.com/2006/09/19/laszlo-simple-web-service/&lt;/a&gt;), die als Service den aktuellen Umrechnugskurs liefert, worauf das eigene OpenLaslo-Programm zur&amp;#252;ckgreift. (Wer m&amp;#246;chte, kann die L&amp;#246;sung gerne hier als Kommentar reinsetzen.)&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/thema-der-woche-rich-internet.html' title='Thema der Woche: Rich Internet Applications mit OpenLaszlo und ZK'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=8684069033192839532' title='1 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8684069033192839532'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8684069033192839532'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2718720922846671099</id><published>2008-07-03T10:25:00.001+02:00</published><updated>2008-07-03T10:25:06.083+02:00</updated><title type='text'>Sehr interessanter Java/C-Benchmark</title><content type='html'>&lt;p&gt;Stefan hat unter &lt;a title="http://www.stefankrause.net/wp/?p=9" href="http://www.stefankrause.net/wp/?p=9"&gt;http://www.stefankrause.net/wp/?p=9&lt;/a&gt; die Ausf&amp;#252;hrungszeit von Programme mit unterschiedliche JVMs und C-Compilern getestet. Zwar misst er keine OOP-Eigenschaften, wie die Heap-Allokation, GC oder Kosten f&amp;#252;r dynamisch gebundene Methodenaufrufe, aber eben die Effizient f&amp;#252;r Low-Level-Operationen. Gut zu sehen, dass Java auch da schon extrem gut mithalten kann. Ich h&amp;#228;tte die Performance bei arithmetischen Operationen gar nicht so gut eingesch&amp;#228;tzt. Im Endeffekt gibt es folgendes Ergebnis:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Der GCC-Compiler und die C-Programme sind in der Regel am Schnellsten. Mal ist Suns JVM sogar schneller.&lt;/li&gt;    &lt;li&gt;Der native-Compiler JET von Excelsior bringt ausgezeichnete Ergebnisse (Platz 2).&lt;/li&gt;    &lt;li&gt;Der oft gepriesene C-Compiler LLVM ist nicht so gut wie gedacht.&lt;/li&gt;    &lt;li&gt;Die Performance von Suns JVM schwankt stark. Mal ist sie ausgezeichnet im Gewinnerfeld, mal weit abgeschlagen in der absoluten Verliererzone.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Praxisrelevant sind diese Benchmarks nur zum Teil. Jetzt ist es interessant zu wissen, wie OOP-Eigenschaften vom C++-Compiler oder von JET umgesetzt werden.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/sehr-interessanter-javac-benchmark.html' title='Sehr interessanter Java/C-Benchmark'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2718720922846671099' title='3 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2718720922846671099'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2718720922846671099'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-8621500100744147176</id><published>2008-07-02T12:04:00.001+02:00</published><updated>2008-07-02T12:04:03.238+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>Zwei Open-Source Bibs für Java ME Entwicklung</title><content type='html'>&lt;p&gt;Wer f&amp;#252;r die Java ME entwickelt, der muss vieles selbst machen, da die CLDC/MIDP-Bibs doch relativ schwach sind. Zwei Open-Source Bibs, die dort Arbeit abnehmen k&amp;#246;nnen, sind:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://kommons.dev.java.net/"&gt;kommons - JavaME reusable objects&lt;/a&gt;; hat nix mit KDE zu tun :-)      &lt;br /&gt;The goal of the project kommons is to provide a set of reusable objects useful to make networking, object persistence (Caching), logging, working with Strings (Iso, UTF8) and many more...&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.59pixels.com/"&gt;59pixels Open Source J2ME Libraries&lt;/a&gt;      &lt;br /&gt;Some of the libraries which 59Pixels have built up over the last year. Most of them are the first generation versions and are not as polished or as efficient as they could be but we have been able to distribute our products on over 150 handsets so I'm sure they will be useful to you.&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/zwei-open-source-bibs-fr-java-me.html' title='Zwei Open-Source Bibs für Java ME Entwicklung'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=8621500100744147176' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8621500100744147176'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/8621500100744147176'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2950909739372505158</id><published>2008-07-02T11:58:00.001+02:00</published><updated>2008-07-02T11:58:32.079+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>Apache POI 3.1 final</title><content type='html'>&lt;p&gt;Von &lt;a href="http://poi.apache.org"&gt;http://poi.apache.org&lt;/a&gt;, der Open-Source Bib. zum Verarbeiten von MS Excel-, PowerPoint-, Visio- und Word-Dateien, gibt es eine neue Version. &lt;a href="http://java.dzone.com/announcements/apache-poi-31-final-released"&gt;&amp;#196;nderungen&lt;/a&gt; sind unter anderem:&lt;/p&gt;  &lt;pre&gt;Highlights in POI-HSSF - Java API To Access Microsoft Excel Format Files:&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Major improvements in formula evaluation &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for conditional formatting &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for Excel hyperlinks &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Handling of embedded OLE2 documents &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for getting excel cell comments when extracting text &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for specifying a policy to HSSF on missing / blank cells when fetching&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Highlights in  POI-HSLF - Java API To Access Microsoft PowerPoint Format Files:&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Support for getting embedded sounds &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for getting embedded OLE objects &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for Tables &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Improved text extraction &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Export PowerPoint slides into image &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Java2D Graphics driver&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Highlights in POI-HWPF - Java API To Access Microsoft Word Format Files&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Handling of embedded OLE2 documents &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Support for extracting Escher images from HWPF files &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Improved Range.replaceText()&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ich bin gespannt, ob sich mit der MS-Initiative, Dokus anzubieten, die Bib. noch weiter und vollst&amp;#228;ndiger entwickeln wird:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.heise.de/newsticker/Microsoft-legt-Dokumentationen-zu-Dateiformaten-und-Protokollen-vor--/meldung/110253"&gt;Microsoft legt Dokumentationen zu Dateiformaten und Protokollen vor&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/07/apache-poi-31-final.html' title='Apache POI 3.1 final'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2950909739372505158' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2950909739372505158'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2950909739372505158'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-5394650575573606414</id><published>2008-06-27T09:15:00.001+02:00</published><updated>2008-06-27T09:15:50.827+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse 3.4 (Eclipse Ganymede) fertig</title><content type='html'>&lt;p&gt;Seit dem 17. Juni kann man Eclipse 3.4 &lt;a href="http://ganymede-mirror1.eclipse.org/eclipse/downloads/"&gt;laden&lt;/a&gt;. Die &lt;a href="http://www.eclipse.org/downloads/packages/"&gt;Eclipse Ganymede Packages&lt;/a&gt; sind auch aktuell etwa mit der &lt;b&gt;&lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip"&gt;Eclipse IDE for Java EE Developers&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Und wie geht's nun weiter? Planungen laufen f&amp;#252;r Eclipse 4.0, was auch unter dem Namen e4 l&amp;#228;uft. Einige Links dazu:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://it-republik.de/jaxenter/news/Eine-Preview-auf-Eclipse-4.0-043598.html" href="http://it-republik.de/jaxenter/news/Eine-Preview-auf-Eclipse-4.0-043598.html"&gt;http://it-republik.de/jaxenter/news/Eine-Preview-auf-Eclipse-4.0-043598.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://wiki.eclipse.org/E4" href="http://wiki.eclipse.org/E4"&gt;http://wiki.eclipse.org/E4&lt;/a&gt; mit Unterlinks&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Interessant d&amp;#252;rfe &lt;a href="http://www.eclipse.org/rap/"&gt;Rich Ajax Platform (RAP)&lt;/a&gt; werden, eine M&amp;#246;glichkeit, mehr oder weniger direkt die SWT-Anwendungen &amp;#252;ber ein Ajax-Framework ins Web zu setzen.&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/06/eclipse-34-eclipse-ganymede-fertig.html' title='Eclipse 3.4 (Eclipse Ganymede) fertig'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=5394650575573606414' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5394650575573606414'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5394650575573606414'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-2898760820657416575</id><published>2008-06-25T09:46:00.001+02:00</published><updated>2008-06-25T09:46:25.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Die wöchentliche Dosis Java'/><title type='text'>Thema der Woche: Collection-API-Erweiterungen</title><content type='html'>&lt;p&gt;Die Java-Collection API bietet grundlegende Sammlungen, aber es gibt immer noch Bedarf an mehr. Drei Bibliotheken stechen hier besonders raus:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://code.google.com/p/google-collections/" href="http://code.google.com/p/google-collections/"&gt;http://code.google.com/p/google-collections/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://commons.apache.org/collections/" href="http://commons.apache.org/collections/"&gt;http://commons.apache.org/collections/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://javolution.org/" href="http://javolution.org/"&gt;http://javolution.org/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Lese etwas &amp;#252;ber die Projekte. Beantworte folgende Fragen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Welche neuen Datenstrukturen enthalten Google Collections?&lt;/li&gt;    &lt;li&gt;Welche Autoren arbeiten an Google Collections?&lt;/li&gt;    &lt;li&gt;Welchen Sinn ergeben folgende Szenarien: new ReferenceMap(WEAK, STRONG), new ReferenceMap(WEAK, WEAK), new ReferenceMap(STRONG, STRONG)?&lt;/li&gt;    &lt;li&gt;Was kann man mit der Apache-Klasse ExtendedProperties machen?&lt;/li&gt;    &lt;li&gt;Wof&amp;#252;r sind die Typen in org.apache.commons.collections.functors n&amp;#246;tig und wie verwendet man sie ? Haben Transformer damit etwas zu tun?&lt;/li&gt;    &lt;li&gt;Warum spricht Javolution an vielen Stellen von &amp;quot;hard real-time compliant&amp;quot;?&lt;/li&gt;    &lt;li&gt;Bewerte den Benchmark &lt;a title="http://javolution.org/doc/benchmark.html" href="http://javolution.org/doc/benchmark.html"&gt;http://javolution.org/doc/benchmark.html&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/06/thema-der-woche-collection-api_25.html' title='Thema der Woche: Collection-API-Erweiterungen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=2898760820657416575' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2898760820657416575'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/2898760820657416575'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-5849447549017392672</id><published>2008-06-24T14:32:00.001+02:00</published><updated>2008-06-24T14:32:33.594+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Insel'/><title type='text'>Inselupdate: instanceof mit Class-Objekten, isInstance() und isAssignableFrom</title><content type='html'>&lt;p&gt;Der bin&amp;#228;ren Operator instanceof testet, ob ein Objekt Exemplar einer Klasse oder der Oberklasse ist. Wenn das Ergebnis wahr ist, l&amp;#228;sst sich das Objekt unter dem gegeben Typen ansprechen, ist also zu-weisungskompatibel. Der rechte Operator bei instanceof, der Typname, muss jedoch immer zur &amp;#220;bersetzungszeit bekannt sein und kann nicht dynamisch, etwa durch eine String, festgelegt werden.&lt;/p&gt;  &lt;p&gt;Ist der Typname zur Compilerzeit vielleicht unbekannt, kann das Class-Objekt helfen. Die Methode isInstance(Object) ist sozusagen ein dynamisches instanceof. Gilt mit dem Operator&lt;/p&gt;  &lt;p&gt;object instanceof ReferenceType&lt;/p&gt;  &lt;p&gt;So hei&amp;#223;t das mit der Methode&lt;/p&gt;  &lt;p&gt;ReferenceType-Class-Objekt.isInstance( object )&lt;/p&gt;  &lt;p&gt;Gew&amp;#246;hungsbed&amp;#252;rftig ist sicherlich die Tatsache, dass bei der Methode isInstance() die beiden Operanden umgedreht sind. Dazu ein paar Beispiele:&lt;/p&gt;  &lt;p&gt;Component b = new JLabel();   &lt;br /&gt;out.println( b instanceof JLabel );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true    &lt;br /&gt;out.println( JLabel.class.isInstance( b ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true    &lt;br /&gt;out.println( Object.class.isInstance( b ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true    &lt;br /&gt;out.println( Class.forName(&amp;quot;java.awt.Component&amp;quot;).isInstance( b ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true    &lt;br /&gt;out.println( String.class.isInstance( b ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // false&lt;/p&gt;  &lt;p&gt;Die Methode isInstance(object) ist nat&amp;#252;rlich ein wenig eingeschr&amp;#228;nkt dadurch, dass es immer ein Test-Objekt geben muss. Die Frage etwa, ob das Class-Objekt der Schnittstelle PublicKey eine ist-eine-Art von Serializable ist, kann isInstance(object) nicht beantworten, denn dann m&amp;#252;sste es vorher ein Objekt geben. F&amp;#252;r diesen Fall bietet das Class-Objekt noch eine zweite Funktion: isAs-signableFrom(Class).&lt;/p&gt;  &lt;p&gt;Class&amp;lt;?&amp;gt; clazz = Serializable.class;   &lt;br /&gt;out.println( clazz.isAssignableFrom( String.class ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true    &lt;br /&gt;out.println( clazz.isAssignableFrom( Thread.class ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // false    &lt;br /&gt;out.println( clazz.isAssignableFrom( PublicKey.class ) );&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // true&lt;/p&gt;  &lt;p&gt;Solange der Typname zur &amp;#220;bersetzungszeit bekannt ist, ist instanceof immer noch die beste L&amp;#246;sung. Doch wenn die Klasse nur durch ein Class-Objekt gegeben ist, bleibt immer noch isAssignableFrom(). Die Methode clazz.isInstance(obj) ist sozusagen eine Kurzform von clazz.isAssignableFrom(obj.getClass()).&lt;/p&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/06/inselupdate-instanceof-mit-class.html' title='Inselupdate: instanceof mit Class-Objekten, isInstance() und isAssignableFrom'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=5849447549017392672' title='3 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5849447549017392672'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/5849447549017392672'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-3159664524738758883</id><published>2008-06-16T13:51:00.001+02:00</published><updated>2008-06-16T13:51:01.819+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><title type='text'>Open Source Docking Frameworks</title><content type='html'>&lt;p&gt;&lt;a title="http://lopeathal.wikispaces.com/Open+Source+Docking+Frameworks" href="http://lopeathal.wikispaces.com/Open+Source+Docking+Frameworks"&gt;http://lopeathal.wikispaces.com/Open+Source+Docking+Frameworks&lt;/a&gt; gibt einen &amp;#220;berblick &amp;#252;ber Docking-Frameworks:&lt;/p&gt;  &lt;table class="wiki_table"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Development&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Licens&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Size&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Comments&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://mydoggy.sourceforge.net/" rel="nofollow"&gt;MyDoggy&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;LGPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;only jar's: 0.5 MB         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://www.netbeans.org/" rel="nofollow"&gt;NetBeans&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;CDDL/GPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;4.6 MB (platform.zip)         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://xui.sourceforge.net/wikka/wikka.php?wakka=DockingFramework%20" rel="nofollow"&gt;XUI&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;MPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;1.6 MB (XUI-jdk15.zip)         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="https://jdocking.dev.java.net" rel="nofollow"&gt;JDocking&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;inactive         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;CDDL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;1.3 MB (v0.8.zip)         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;the docking part         &lt;br /&gt;of netbeans          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://www.jrichclient.org" rel="nofollow"&gt;JRichClient&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;GPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;heavy development         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;derivation of flexdock         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="https://flexdock.dev.java.net/" rel="nofollow"&gt;FlexDock&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;inactive community although         &lt;br /&gt;there is a new version (bugfix)          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;MIT         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;only jar's: 0.5 MB         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://www.javadocking.com/" rel="nofollow"&gt;Sanaware&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;GPL or Commercial         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;full zip 0.3MB         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://sourceforge.net/projects/infonode/" rel="nofollow"&gt;InfoNode&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;last version January 2007         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;GPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://www.vlsolutions.com/en/products/docking/index.php" rel="nofollow"&gt;VL Docking&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;one year old - inactive?         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;CeCILL/GPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://www.eclipse.org/" rel="nofollow"&gt;Eclipse&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;CPL or EPL         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;?         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;only swt (?)         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&lt;a class="wiki_link_ext" href="http://dock.javaforge.com" rel="nofollow"&gt;Docking Frames&lt;/a&gt;          &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;active         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;LGPL 2.1         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;0.7 MB         &lt;br /&gt;&lt;/td&gt;        &lt;td&gt;         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/06/open-source-docking-frameworks.html' title='Open Source Docking Frameworks'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=3159664524738758883' title='3 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3159664524738758883'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/3159664524738758883'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-18862554.post-7893260800760374772</id><published>2008-06-16T13:05:00.001+02:00</published><updated>2008-06-16T13:05:36.188+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Die wöchentliche Dosis Java'/><title type='text'>Thema der Woche: Collection-API</title><content type='html'>&lt;p&gt;Die Collection-API enth&amp;#228;lt grundlegende Sammlungen f&amp;#252;r Listen, Kellerspeicher, Assoziativspeicher. Gehe &amp;#252;ber alle Operationen der folgenden Schnittstellen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/Collection.html" href="http://java.sun.com/javase/6/docs/api/java/util/Collection.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/Collection.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/List.html" href="http://java.sun.com/javase/6/docs/api/java/util/List.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/List.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/Queue.html" href="http://java.sun.com/javase/6/docs/api/java/util/Queue.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/Queue.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/Set.html" href="http://java.sun.com/javase/6/docs/api/java/util/Set.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/Set.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/Map.html" href="http://java.sun.com/javase/6/docs/api/java/util/Map.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/Map.html&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Finde je ein Beispiel f&amp;#252;r keySet(), retainAll(), toArray(), headSet().&lt;/p&gt;  &lt;p&gt;Welche Implementierungseigenschaften haben die folgenden Klassen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/HashSet.html" href="http://java.sun.com/javase/6/docs/api/java/util/HashSet.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/HashSet.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/TreeSet.html" href="http://java.sun.com/javase/6/docs/api/java/util/TreeSet.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/TreeSet.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html" href="http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html" href="http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQueue.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQueue.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQueue.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArraySet.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArraySet.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArraySet.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListSet.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListSet.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListSet.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/EnumMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/EnumMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/EnumMap.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/HashMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/HashMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/HashMap.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/IdentityHashMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/IdentityHashMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/IdentityHashMap.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/LinkedHashMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/LinkedHashMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/LinkedHashMap.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://java.sun.com/javase/6/docs/api/java/util/WeakHashMap.html" href="http://java.sun.com/javase/6/docs/api/java/util/WeakHashMap.html"&gt;http://java.sun.com/javase/6/docs/api/java/util/WeakHashMap.html&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;F&amp;#252;lle eine WeakHashMap mit sovielen neuen java.awt.Point-Objekten, bis es einen OutOfMemoryError gibt. Fange diesen ab und gib die Gr&amp;#246;&amp;#223;e der WeakHashMap aus.&lt;/p&gt;  &lt;p&gt;Laufe zum Verst&amp;#228;ndnis der Implementierung folgende Szenerien im Debugger ab:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ein Element wird in die HashMap eingef&amp;#252;gt, dann erfragt.&lt;/li&gt;    &lt;li&gt;In eine LinkedList bzw. ArrayList werden einige Elemente eingef&amp;#252;gt, dann nach ihrer Position erfragt und gel&amp;#246;scht.&lt;/li&gt; &lt;/ul&gt;  </content><link rel='alternate' type='text/html' href='http://www.tutego.com/blog/javainsel/2008/06/thema-der-woche-collection-api.html' title='Thema der Woche: Collection-API'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18862554&amp;postID=7893260800760374772' title='0 Kommentare'/><link rel='replies' type='application/atom+xml' href='http://www.tutego.com/blog/javainsel/atom.xml' title='Kommentare zum Post'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/7893260800760374772'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18862554/posts/default/7893260800760374772'/><author><name>Christian Ullenboom</name><uri>http://www.blogger.com/profile/02403398196910607248</uri><email>noreply@blogger.com</email></author></entry></feed>