<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>New RIFERS blogs entries from Geert Bevin in category java</title>
		<link>http://rifers.org/blogs</link>
		<description>The feeds of the Rifers community blogs</description>
		<language>en</language>
		<copyright>Copyright of the content contained is attributed to the original authors</copyright>
		<pubDate>Wed, 22 May 2013 19:14:14 +0200</pubDate>
		<managingEditor>Rifers Blogs: https://rifers.org/blogs</managingEditor>
		
			<item>
				<title>How do you use Hibernate Extended Sessions?</title>
				<link>http://rifers.org/blogs/gbevin/2009/4/16/how_do_you_use_hibernate_extend</link>
				<description>&lt;p&gt;The &lt;a href=&quot;http://www.hibernate.org/43.html&quot;&gt;Open Session in View&lt;/a&gt; pattern is very popular when Hibernate is used in a web application. This allows you to safely use managed entities when your view is being rendered. At &lt;a href=&quot;http://terracotta.org&quot;&gt;Terracotta&lt;/a&gt;, we&apos;re currently researching what other patterns are popular for Hibernate and how people apply them.&lt;/p&gt;

&lt;p&gt;One that I&apos;m in particular looking into is the &lt;a href=&quot;http://www.hibernate.org/43.html#A5&quot;&gt;Extended Session&lt;/a&gt; pattern for long running conversations. This allows you to disconnect a Hibernate session in between requests and to store it in the HTTP session in the meantime.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;I&apos;d like to know who&apos;s using the extended session pattern and what you use it for.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;To understand more about this, I developed a small example application to get a feel for the advantages, the benefits, the gotchas and the surprises. The application can be found below, it is inspired by snippets from Hibernate tutorials and example applications:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://svn.terracotta.org/svn/forge/projects/hibernate-disconnected/trunk/&quot;&gt;http://svn.terracotta.org/svn/forge/projects/hibernate-disconnected/trunk/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The example uses only servlets, filters and Hibernate. It is a webapp that allows you to create events and add people to it over different requests. When an event has been created with all the relevant people, it can be committed in one step. The intermediate state is kept within the managed entities and the Hibernate session until it&apos;s flushed.&lt;/p&gt;

&lt;p&gt;This is what I found worth mentioning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whenever a transaction is created and committed, it doesn&apos;t matter if Hibernate flush mode is set to manual, certain operations like persist and merge will be propagated to the database at transaction commit. However, modifications to managed entities wont be committed, this can be confusing.&lt;/li&gt;
&lt;li&gt;Even with manually flushed sessions, transactions are always real database transactions, causing locks to be held. They thus need to be as short as possible.&lt;/li&gt;
&lt;li&gt;A single general-purpose servlet filter might not be feasible, depending on how transactions should behave. In this application, I ended up creating only a transaction around the actual session flush.&lt;/li&gt;
&lt;li&gt;Data that is present in a manually flushed session buffer is batched but not available for queries.&lt;/li&gt;
&lt;li&gt;This doesn&apos;t behave the same as a database transaction with isolation levels that can still see their own changes.&lt;/li&gt;
&lt;li&gt;If the data needs to be available for a query, a commit needs to happen first.&lt;/li&gt;
&lt;li&gt;This can require application changes, like a redirect after form submission in case transactions are automatically committed through a servlet filter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Totally unrelated but cool, you can use an &lt;code&gt;AnnotationConfiguration&lt;/code&gt; class to setup the Hibernate config and use a fluent interface to add the managed entity classes. This reduces the amount of XML and eases maintenance (see &lt;a href=&quot;http://svn.terracotta.org/svn/forge/projects/hibernate-disconnected/trunk/src/main/java/org/terracotta/hibernate/disconnected/util/HibernateUtil.java&quot;&gt;&lt;code&gt;HibernateUtil&lt;/code&gt;&lt;/a&gt; class in my example).&lt;/p&gt;</description>
				<pubDate>Thu, 16 Apr 2009 15:53:08 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2009/4/16/how_do_you_use_hibernate_extend</guid>
			</item>
		
			<item>
				<title>JavaZone 2008 : Bytecode Manipulation in the Real World</title>
				<link>http://rifers.org/blogs/gbevin/2008/9/17/javazone_2008_bytecode</link>
				<description>&lt;p&gt;I just finished my talk at JavaZone 2008 about bytecode manipulation.&lt;/p&gt;

&lt;p&gt;You can download the presentation&apos;s PDF file from:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://uwyn.com/download/bytecode_real_world.pdf&quot;&gt;http://uwyn.com/download/bytecode_real_world.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the abstract:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Bytecode Manipulation in the Real World&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Bytecode manipulation has become increasingly popular over the last years. It is used by JPA implementations, application servers, AOP libraries, web frameworks, monitoring systems, profilers, clustering solutions, scripting languages, workflow engines, and much more. In fact, most of today&apos;s applications will most probably rely on byte code manipulation, often even without realizing.&lt;/p&gt;

&lt;p&gt;Application developers however seem to be overly careful and often frown upon bytecode manipulation as an arcane art that is risky and difficult to understand. This presentation will show you that it&apos;s easier than you think. We&apos;ll go over concise examples that illustrate the concepts. Distinct patterns, coming from different domains, will give you ideas about adopting byte code manipulation for your own products. You&apos;ll learn arguments to reassure skeptics and see how the manipulation can plugged into your tool chain. We&apos;ll finish off with tips and tricks to write maintainable code with the ASM library.&lt;/p&gt;

&lt;p&gt;After this session you&apos;ll see byte code manipulation as another tool in your arsenal and you&apos;ll have a good picture of how to start using it yourself.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Outline:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is bytecode manipulation?&lt;/li&gt;
&lt;li&gt;Some popular projects that use it&lt;/li&gt;
&lt;li&gt;Don&apos;t be afraid&lt;/li&gt;
&lt;li&gt;Plug in the manipulation&lt;/li&gt;
&lt;li&gt;Best practices&lt;/li&gt;
&lt;/ul&gt;</description>
				<pubDate>Wed, 17 Sep 2008 13:29:38 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/9/17/javazone_2008_bytecode</guid>
			</item>
		
			<item>
				<title>Speaking at TSSJS 2008 Europe in Prague</title>
				<link>http://rifers.org/blogs/gbevin/2008/5/21/speaking_at_tssjs_2008_europe</link>
				<description>&lt;p&gt;Next month I&apos;ll be speaking at &lt;a href=&quot;http://javasymposium.techtarget.com/europe/speakers.html#GBevin&quot;&gt;TheServerSide.com Java Symposium&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The topics I will cover are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://javasymposium.techtarget.com/europe/sessions.html#GBevinBold&quot;&gt;Boldly Go Where the Java Language Has Never Gone Before&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://javasymposium.techtarget.com/europe/sessions.html#GBevinJVM&quot;&gt;JVM Clustering in the Real World&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve done both sessions before and they&apos;re pretty solid now.&lt;/p&gt;
&lt;p&gt;The &apos;Boldly go...&apos; one has been a huge success at JavaOne as it was booked completely full and I did a repeat session on Friday that still had quite good attendance.&lt;/p&gt;
&lt;p&gt;See you in Prague!&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://javasymposium.techtarget.com/europe/index.html&quot;&gt;&lt;img src=&quot;http://rifers.org/images/ImSpeakingatTSSJS.gif&quot; width=&quot;100&quot; height=&quot;100&quot; alt=&quot;speaking at TSSJS 2008&quot;/&gt;&lt;/a&gt;&lt;/p&gt;</description>
				<pubDate>Wed, 21 May 2008 12:41:09 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/5/21/speaking_at_tssjs_2008_europe</guid>
			</item>
		
			<item>
				<title>Closing several JDBC statements cleanly</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/30/closing_several_jdbc_statements</link>
				<description>&lt;p&gt;It&apos;s been a while since I wrote some raw JDBC code. I didn&apos;t remember that it was so tedious to manually close a series of &lt;code&gt;PreparedStatement&lt;/code&gt; objects and make sure that any exception was properly handled and reported.&lt;/p&gt;
&lt;p&gt;Note that the &lt;a href=&quot;http://docs.google.com/View?docid=dffxznxr_1nmsqkz&quot;&gt;ARM blocks&lt;/a&gt; or &lt;a href=&quot;http://javac.info/&quot;&gt;BGGA closures&lt;/a&gt; proposals don&apos;t make this easier since this cleanup should be done after the prepared statements have been used for a while in various other methods, it doesn&apos;t automatically have to be done at the end of a lexical scope.&lt;/p&gt;
&lt;p&gt;This is what I came up with.&lt;/p&gt;
&lt;p&gt;Of course, you could write an alternative implementation that creates some kind of repository for the prepared statements in a map and then provide a method that closes them all by going over the entries of the map while preserving the exceptions in a similar manner. Any other suggestions or comments for this to be done better?&lt;/p&gt;
&lt;div class=&quot;paste&quot;&gt;
					
						&lt;div&gt;&lt;code&gt;&lt;!--  : generated by JHighlight v1.0 (http://jhighlight.dev.java.net) --&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt1&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt2&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;PreparedStatement&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;psStmt3&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_keyword&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;cleanup&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;throws&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt1&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt2&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt2&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;setNextException&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt2&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;psStmt3&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt3&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_type&quot;&gt;SQLException&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;setNextException&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;e&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;psStmt3&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;exception&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_operator&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_literal&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_keyword&quot;&gt;throw&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;exception&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_plain&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
						&lt;div&gt;&lt;code&gt;
&lt;span class=&quot;java_separator&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;java_plain&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
					
					
					
					
				&lt;/div&gt;</description>
				<pubDate>Wed, 30 Jan 2008 18:11:23 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/30/closing_several_jdbc_statements</guid>
			</item>
		
			<item>
				<title>Java Champions interviews at JavaPolis 2007</title>
				<link>http://rifers.org/blogs/gbevin/2008/1/4/jc_javapolis_interviews</link>
				<description>&lt;p&gt;At JavaPolis 2007, Aaron Houston the coordinator of the &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;Sun Java Champions program&lt;/a&gt;, recorded a whole collection of short interviews with the Java Champions that were present at the conference (2-8 mins).&lt;/p&gt;
&lt;p&gt;If you&apos;re wondering what the Java Champions are up to, or even who or what they are, this is a easy and quick way to find out.&lt;/p&gt;
&lt;p&gt;The interviews can be found on the Java Champions &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;homepage&lt;/a&gt; and will eventually move to the &lt;a href=&quot;https://java-champions.dev.java.net/content/JCLibrary.html&quot;&gt;library section&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can listen to my interview directly here (6 min 12 MB):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://java-champions.dev.java.net/mp3/JP07-geert-bevin.mp3&quot;&gt;https://java-champions.dev.java.net/mp3/JP07-geert-bevin.mp3&lt;/a&gt;&lt;/p&gt;</description>
				<pubDate>Fri, 04 Jan 2008 19:20:25 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2008/1/4/jc_javapolis_interviews</guid>
			</item>
		
			<item>
				<title>I got featured on the Sun Developer Network</title>
				<link>http://rifers.org/blogs/gbevin/2006/12/15/featured_on_sdn</link>
				<description>&lt;p&gt;The &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;Java Champions program&lt;/a&gt; has already opened many doors for me and today an interview that Steven Meloan took with me has been published on the Sun Developer Network. I would never have dreamed of this a year ago, these are very exciting times &lt;img src=&quot;http://rifers.org/images/blog/emoticon-normal.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;:)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re interested, &lt;a href=&quot;http://developers.sun.com/champions/bevin.html&quot;&gt;you can read it here&lt;/a&gt;.&lt;/p&gt;</description>
				<pubDate>Fri, 15 Dec 2006 00:19:53 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/12/15/featured_on_sdn</guid>
			</item>
		
			<item>
				<title>Late night JavaPolis quote</title>
				<link>http://rifers.org/blogs/gbevin/2006/12/13/late_night_javapolis_quote</link>
				<description>&lt;i&gt;Yanto says:&lt;/i&gt;&lt;br /&gt;
&amp;quot;Kito, can I abuse you?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
D&apos;oh!</description>
				<pubDate>Wed, 13 Dec 2006 11:33:32 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/12/13/late_night_javapolis_quote</guid>
			</item>
		
			<item>
				<title>Review : Omnicore X-develop 2.0 and CodeGuide 8.0 IDEs</title>
				<link>http://rifers.org/blogs/gbevin/2006/10/5/review_omnicore_xdevelop_2_0</link>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.omnicore.com/&quot;&gt;Omnicore&lt;/a&gt; recently released the final versions of &lt;a href=&quot;http://www.omnicore.com/xdevelop.htm&quot;&gt;X-develop&lt;/a&gt; 2.0 and &lt;a href=&quot;http://www.omnicore.com/codeguide.htm&quot;&gt;CodeGuide&lt;/a&gt; 8.0.&lt;/p&gt;
&lt;p&gt;Since I have been working with both IDEs for quite a number of years, and have been beta testing the early releases of the new version, I wrote a &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=42457&quot;&gt;comprehensive review&lt;/a&gt; about these tools for TheServerSide.&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in state-of-the-art tools for Java development, you might find this an interesting read.&lt;/p&gt;
&lt;p&gt;The review is &lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=42457&quot;&gt;available here&lt;/a&gt;.&lt;/p&gt;</description>
				<pubDate>Thu, 05 Oct 2006 11:00:02 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/10/5/review_omnicore_xdevelop_2_0</guid>
			</item>
		
			<item>
				<title>Cenqua provides FishEye and Clover for java.net</title>
				<link>http://rifers.org/blogs/gbevin/2006/8/21/fisheye_and_clover_java_net</link>
				<description>&lt;p&gt;I just saw &lt;a href=&quot;http://partners.java.net/cenqua/&quot;&gt;this&lt;/a&gt; today:&lt;/p&gt;
&lt;div class=&quot;quotebody&quot;&gt;
&lt;p&gt;Cenqua supports java.net with free licenses for &lt;a href=&quot;http://www.cenqua.com/clover/?jn&quot; title=&quot;A Java Code Coverage Tool&quot;&gt;Clover&lt;/a&gt; and free hosting for &lt;a href=&quot;http://www.cenqua.com/&quot; title=&quot;Source Control Viewing for Subversion and CVS&quot;&gt;FishEye&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cenqua.com/clover/?jn&quot; title=&quot;A Java Code Coverage Tool&quot;&gt;Clover&lt;/a&gt; is a comprehensive code coverage tool for Java.  If you wish to use it on your project, first &lt;a href=&quot;http://www.cenqua.com/licenses.jspa&quot;&gt;grab a trial license&lt;/a&gt; see if it is for you, then fill in the &lt;a href=&quot;http://www.cenqua.com/freelicenserequest%21default.jspa&quot;&gt;free license request&lt;/a&gt; form &lt;em&gt;(registration required).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
If your source is hosted at java.net you can get &lt;a href=&quot;http://www.cenqua.com/&quot; title=&quot;Source Control Viewing for Subversion and CVS&quot;&gt;FishEye&lt;/a&gt; for your project simply by sending a mail to &lt;a class=&quot;&quot; href=&quot;mailto:fisheye-hosting@cenqua.com?subject=&quot;&gt;fisheye-hosting@cenqua.com&lt;/a&gt;.  We just need to know if you are using CVS or Subversion.  java.net CVS projects live at &lt;a href=&quot;http://fisheye5.cenqua.com&quot; title=&quot;java.net CVS projects with FishEye&quot;&gt;http://fisheye5.cenqua.com&lt;/a&gt; and and Subversion projects are at &lt;a href=&quot;http://fisheye4.cenqua.com&quot; title=&quot;java.net Subversion projects with FishEye&quot;&gt;http://fisheye4.cenqua.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This is great! Together with the recent support of &lt;a href=&quot;http://subversion.tigris.org&quot;&gt;Subversion&lt;/a&gt;, the only thing that&apos;s missing from &lt;a href=&quot;http://java.net/&quot;&gt;java.net&lt;/a&gt; is a decent issue tracker, like &lt;a href=&quot;http://www.atlassian.com/software/jira/&quot;&gt;Jira&lt;/a&gt;.&lt;/p&gt;</description>
				<pubDate>Mon, 21 Aug 2006 15:51:59 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/8/21/fisheye_and_clover_java_net</guid>
			</item>
		
			<item>
				<title>X-develop : the unknown IDE that drives my love for Java</title>
				<link>http://rifers.org/blogs/gbevin/2006/8/11/xdevelop_drives_my_love_for_java</link>
				<description>&lt;p&gt;For many months I have been wondering why people where  frequently criticizing the lack of agility in the Java language, the rigidity of its static typing system and the supposed uselessness of generics. Suddenly I realized that I found myself in a position that most other Java developers don&apos;t experience: I had been using an IDE for years that makes &lt;b&gt;Java development amazingly agile and pleasant&lt;/b&gt;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;/images/blog/xdevelop_project_wide.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://rifers.org/images/blog/xdevelop_project_wide.png&quot; alt=&quot;X-develop screenshot&quot; width=&quot;300&quot; style=&quot;border: none;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me introduce &lt;a href=&quot;http://forum.omnicore.com/showthread.php?threadid=2485&quot;&gt;CodeGuide&lt;/a&gt; or it&apos;s multi-language bigger brother &lt;a href=&quot;http://www.omnicore.com/xdevelop.htm&quot;&gt;X-develop&lt;/a&gt;. The beauty of these IDEs is very similar to what is recently happening in the Java landscape: &lt;b&gt;power and simplification through default intelligent behavior&lt;/b&gt; without an overload of configurable options or explicit features. When you start X-develop for the first time, you&apos;ll probably browse through its menus and preferences, thinking that it only supports a fraction of the refactorings of IDEA or Eclipse. Well you know what, you&apos;re right. Yet, while it looks more primitive on the surface, I feel much more confident embarking into complex refactorings with X-develop than with anything else. How is this possible?&lt;/p&gt;

&lt;p&gt;Enter the genius of Omnicore&apos;s vision by having designed and developed &lt;b&gt;instant project-wide on-the-fly error checking&lt;/b&gt;. This is probably the worst understood and most powerful IDE feature in existence. The keywords &lt;i&gt;instant&lt;/i&gt;, &lt;i&gt;project-wide&lt;/i&gt; and &lt;i&gt;on-the-fly&lt;/i&gt; are of capital importance here since they allow for &lt;b&gt;free-form refactoring&lt;/b&gt; or fuzzy refactoring development styles.&lt;/p&gt;

&lt;p&gt;To explain what this is about, it&apos;s probably best draw the parallel with test-driven development: you first code what you expect and then fix everything until your code works. I apply this approach constantly while refactoring: I perform the changes that I want to introduce in certain classes and as I type, I see the errors gradually appear in the entire project. This happens literally as I type, without any compilation or execution of the application. The only thing that I have to do afterwards, is work through the errors one by one (which can be easily done by using the shortcuts ctrl-up and ctrl-down) and fix the code so that the errors disappear. Sometimes I can be working for hours like this by continuously improving APIs and never ever having to wait for any compilation or execution delays. Apart from being an amazing feature in itself (since &lt;b&gt;the IDE really understands your entire project in real-time&lt;/b&gt;), this way of developing is also &lt;b&gt;extremely satisfying&lt;/b&gt; since you see the errors disappear one by one.&lt;/p&gt;

&lt;p&gt;This is just one of the awesome &lt;a href=&quot;http://www.omnicore.com/xdevelop_features.htm&quot;&gt;features of X-develop&lt;/a&gt;, some of the others I prefer are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a lot of screen estate for your code with minimal IDE artifacts that stand in your way or distract you,&lt;/li&gt;
&lt;li&gt;back-in-time debugging,&lt;/li&gt;
&lt;li&gt;very sensible code-hyperlinking,&lt;/li&gt;
&lt;li&gt;permissive code completion (it works even if there are syntax errors),&lt;/li&gt;
&lt;li&gt;extremely fast syntax highlighting,&lt;/li&gt;
&lt;li&gt;preserve case in search/replace,&lt;/li&gt;
&lt;li&gt;great JUnit and and Subversion support,&lt;/li&gt;
&lt;li&gt;intuitive, simple and powerful GUI editor that doesn&apos;t introduce a new layout manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now of course there are not only great things to be said. Due to the Java market having been bombarded with free IDEs, Omnicore had to diversify itself and support Mono and .Net as well. This slows down the work they can perform on the Java front since they are only a small company with limited resources. I&apos;m however hoping that the recent interest for more dynamism and agility will see an uptake in their Java user-base, giving them more funds to invest in further developments.&lt;/p&gt;

&lt;p&gt;So, if you want an agile IDE that &lt;b&gt;leverages the Java language to its fullest and targets hard-core developers&lt;/b&gt;, you owe it to yourself to give CodeGuide or X-develop a try. Don&apos;t just use it as your current IDE and search for the counterpart of the features that you already know. In many cases you will not find it because Omnicore has solved the problem in a creative and often much more elegant way.&lt;/p&gt;

&lt;p&gt;Thanks &lt;a href=&quot;http://www.omnicore.com&quot;&gt;Omnicore&lt;/a&gt; for making my day a more pleasant one, every day.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Disclaimer: these are my genuine feelings and it&apos;s not a marketing ploy! I&apos;m not affiliated with Omnicore and the only thing I have to gain is when they get more users, my preferred tool will become even better. Besides that, the people at Omnicore are really great and have always promptly tried to resolve any problems I had. I thought it was about time I gave something back for the more than excellent support they&apos;ve given me over the years.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Disclaimer 2: I frequently force myself to work with IDEA and Eclipse for at least a week since I want to make sure that I&apos;m not missing out on the best tools. While they both are excellent IDEs, I never reach the same comfort and productivity that the instant on-the-fly project-wide error checking of X-develop and its debugger provide me.&lt;/i&gt;&lt;/p&gt;</description>
				<pubDate>Fri, 11 Aug 2006 18:34:16 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/8/11/xdevelop_drives_my_love_for_java</guid>
			</item>
		
			<item>
				<title>Nominated and accepted as Java Champion</title>
				<link>http://rifers.org/blogs/gbevin/2006/8/2/nominated_accepted_java_champ</link>
				<description>&lt;img src=&quot;http://rifers.org/images/java_champions.gif&quot; width=&quot;144&quot; height=&quot;144&quot; alt=&quot;Java Champions Logo&quot; align=&quot;left&quot; style=&quot;margin-right: 1em; margin-bottom: 1em;&quot; /&gt;
&lt;p&gt;Two weeks ago I received a mail out of the blue from Aaron Houston, the program coordinator of the &lt;a href=&quot;https://java-champions.dev.java.net/&quot;&gt;Java Champions project&lt;/a&gt;. He announced me that I had been &lt;a href=&quot;https://java-champions.dev.java.net/#newchampions&quot;&gt;nominated and accepted&lt;/a&gt; through a peer review process by the Java Champions Selection Committee. The committee is made up of over 50 influential Java leaders around the world!&lt;/p&gt;
&lt;p&gt;Needless to say I was extremely surprised and very honored. I learned about the project at JavaOne this year and saw a number of Java Champions slide by on the main big screen. I secretly said to myself that it would be awesome to receive the same title one day. Little did I know they were voting on my acceptance at that very time.&lt;/p&gt;
&lt;p&gt;I know that this is all very ego-stroking, but I feel great about finally getting some public recognition from peers for all the work that I&apos;ve been doing on &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt;. It also looks like my conference talks have been paying off, since evangelizing Java and publicly talking about Java technology is one of the requirements for nomination. Anyway, this is all a big pat on the back for myself. My girlfriend even understood that this is something special and proudly talked about it to her friends. Guess it&apos;s easier to say that &apos;&lt;i&gt;her boyfriend is considered one of the 100 most influential people in the Java community&lt;/i&gt;&apos; than to try to explain what I&apos;m actually working on.&lt;/p&gt;</description>
				<pubDate>Wed, 02 Aug 2006 16:59:20 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/8/2/nominated_accepted_java_champ</guid>
			</item>
		
			<item>
				<title>The state of AJAX for Java, at JavaOne Afterglow 2006</title>
				<link>http://rifers.org/blogs/gbevin/2006/6/16/the_state_of_ajax_afterglow</link>
				<description>&lt;p&gt;Last week, Sun Belgium asked me to give a 15 minute overview about the state of AJAX frameworks for Java programmers at their &lt;a href=&quot;http://be.sun.com/sunnews/events/2006/java06/index.html&quot;&gt;JavaOne Afterglow 2006&lt;/a&gt; mini-conference. It&apos;s difficult to say something meaningful in such a short timespan, but I did my best.&lt;/p&gt;
&lt;p&gt;This is the PDF of my presentation, in case it might be useful for someone:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://uwyn.com/resources/state_of_ajax_javaone_afterglow_2006.pdf&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://rifers.org/images/pdflogo.gif&quot; width=&quot;43&quot; height=&quot;44&quot; alt=&quot;PDF&quot; align=&quot;middle&quot;  /&gt;&amp;nbsp;&amp;nbsp;Static PDF document&lt;/a&gt; (170KB)&lt;/p&gt;</description>
				<pubDate>Fri, 16 Jun 2006 08:14:20 +0200</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/6/16/the_state_of_ajax_afterglow</guid>
			</item>
		
			<item>
				<title>Arrived at TSSJS Las Vegas</title>
				<link>http://rifers.org/blogs/gbevin/2006/3/23/arrived_at_tssjs_las_vegas</link>
				<description>&lt;p&gt;Yesterday I arrived at &lt;a href=&quot;http://javasymposium.techtarget.com/&quot;&gt;TSSJS in Las Vegas&lt;/a&gt;. This being my first time in the city was already quite an experience. I didn&apos;t go out since I was quite tired after having traveled for 25 hours, but during my arrival the lights, the hotels, the super-mega-lets-blow-your-mind-everywhere-you-look had my jaw dropping for a few times.&lt;/p&gt;
&lt;p&gt;I&apos;m staying at the hotel of the conference (&lt;a href=&quot;http://www.caesars.com/Caesars/LasVegas/&quot;&gt;Caesars Palace&lt;/a&gt;) and the room that &lt;a href=&quot;http://www.techtarget.com&quot;&gt;Tech Target&lt;/a&gt; booked is outstanding. It&apos;s huge and has two big king-sized beds, a couch with a table, dining area and amazing bathroom. It&apos;s a pity that Nathalie and the kids couldn&apos;t come along (not sure Vegas is a place for kids, but Nathalie would sure have had a nice time here).&lt;/p&gt;
&lt;p&gt;I walked around a bit to try to get a feel of the layout of the hotel, since it&apos;s bigger than a shopping mall. After having registered at the conference desk, I took a shower and went looking for some toothpaste that I forget to bring along. It took me a while to find this in the midst of the fancy and expensive shops. The toothpast must have some special mixture since it&apos;s the first time this costs me $4 &lt;img src=&quot;http://rifers.org/images/blog/emoticon-wink.gif&quot; width=&quot;16&quot; height=&quot;16&quot; alt=&quot;;)&quot; /&gt;.&lt;/p&gt;
&lt;p&gt;I ended up quickly eating a roast sandwich and going to bed around midnight. After having met Hani at the registration desk, I was supposed to meet up with him and some others a few hours later (I &lt;a href=&quot;http://jroller.com/page/cpurdy?entry=tss_symposium&quot;&gt;read&lt;/a&gt; Cameron was there already too), but the fatigue finally got the better of me and I decided to catch some sleep. Sadly, the jet lag reduced my night to only 5 hours, and I&apos;m already sitting here wide awake, but tired, yearning for the breakfast coffee&lt;/p&gt;
&lt;p&gt;I&apos;m looking forward to the first day of the sessions, there are quite a number of interesting ones that I want to attend (Bob Lee -
&lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#BLee&quot;&gt;WebWork @ Google - Case Study&lt;/a&gt;, Chris Nelson - &lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#NelsonRAD&quot;&gt;RAD That Ain&apos;t Bad: Domain Driven Development with Trails&lt;/a&gt;, Eugene Ciurana - &lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#ECiuranaMobile&quot;&gt;The Mobile Java Application Continuum&lt;/a&gt;, and Kito Mann - &lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#KMannJSF&quot;&gt;Portlet Development with JSF&lt;/a&gt;). I&apos;m talking myself about &quot;&lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#GBevinFlow&quot;&gt;Flow with continuations&lt;/a&gt;&quot; at 2:30pm, but before that (during lunch) I&apos;m meeting up with some people from &lt;a href=&quot;http://www.laszlosystems.com/&quot;&gt;Laszlo Systems&lt;/a&gt; to finally see each-other in real life and discuss some &lt;a href=&quot;http://www.openlaszlo.org/&quot;&gt;OpenLaszlo&lt;/a&gt;-related business opportunities.&lt;/p&gt;</description>
				<pubDate>Thu, 23 Mar 2006 15:36:49 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/3/23/arrived_at_tssjs_las_vegas</guid>
			</item>
		
			<item>
				<title>TSSJS is gonna rock!</title>
				<link>http://rifers.org/blogs/gbevin/2006/3/16/tssjs_is_gonna_rock</link>
				<description>&lt;p&gt;Only one more week and I&apos;ll take the plane to Las Vegas for &lt;a href=&quot;http://javasymposium.techtarget.com&quot;&gt;The ServerSide Java Symposium&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve really been looking forward to see all my online friends again and to meet other friends for the first time in real life. The &lt;a href=&quot;http://javasymposium.techtarget.com/html/det_descriptions.htm#GBevinRife&quot;&gt;RIFE presentation&lt;/a&gt; I wrote really kick ass. I took my time to get it right, tested it in a previous conference and had it commented on by many people. It&apos;s the presentation that I&apos;m the most proud of &apos;till now.&lt;/p&gt;
&lt;p&gt;I&apos;m particularly curious about the &lt;a href=&quot;http://raibledesigns.com/page/rd?anchor=tssjs_bof_web_framework_sweet&quot;&gt;BOF that Matt Raible will organize&lt;/a&gt; with all framework authors, talking about the sweet spots of their solution. I&apos;m sure it&apos;ll bring forward some interesting discussions.&lt;/p&gt;
&lt;p&gt;See y&apos;all in Las Vegas!&lt;/p&gt;</description>
				<pubDate>Thu, 16 Mar 2006 08:41:10 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/3/16/tssjs_is_gonna_rock</guid>
			</item>
		
			<item>
				<title>JHighlight 1.0 released</title>
				<link>http://rifers.org/blogs/gbevin/2006/3/13/jhighlight_1_0_released</link>
				<description>&lt;p&gt;&lt;a href=&quot;https://jhighlight.dev.java.net&quot;&gt;JHighlight&lt;/a&gt; is an embeddable Java syntax highlighting library that supports Java, Groovy, C++, HTML, XHTML, XML, and LZX languages and outputs to XHTML.&lt;/p&gt;

&lt;p&gt;The library can be used in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;embedded into another tool (for instance a blog or forum),&lt;/li&gt;
&lt;li&gt;through the command-line to generate highlighted files locally, or&lt;/li&gt;
&lt;li&gt;as a servlet filter to highlight source files on your server on-the- fly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It also supports &lt;a href=&quot;http://rifers.org&quot;&gt;RIFE&lt;/a&gt; templates tags and highlights them clearly so that you can easily identify the difference between your RIFE markup and the actual marked up source.&lt;/p&gt;
&lt;p&gt;The project has been developed by &lt;a href=&quot;http://uwyn.com&quot;&gt;Uwyn bvba/sprl&lt;/a&gt; and has been made possible thanks to gracious source code donations of &lt;a href=&quot;http://www.omnicore.com&quot;&gt;Omnicore Software&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;More information&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://jhighlight.dev.java.net&quot;&gt;Home page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rifers.org/04_numberguess_continuations/src/implementations/tutorial/numberguess/Game.java.html&quot; target=&quot;_blank&quot;&gt;Java&lt;/a&gt; and &lt;a href=&quot;http://rifers.org/04_numberguess_continuations/src/templates/game.html.html&quot; target=&quot;_blank&quot;&gt;html&lt;/a&gt; samples&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;JHighlight downloads&quot; href=&quot;https://jhighlight.dev.java.net/servlets/ProjectDocumentList&quot; target=&quot;_blank&quot;&gt;Download JHighlight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Browse JavaDoc Documentation&quot; href=&quot;https://jhighlight.dev.java.net/source/browse/*checkout*/jhighlight/www/docs/api/index.html&quot; target=&quot;_blank&quot;&gt;Browse Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Forum&quot; href=&quot;http://rifers.org/forum/list/categories?forumid=9&quot; target=&quot;_blank&quot;&gt;Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Browse Subversion&quot; href=&quot;http://rifers.org:8088/viewrep/rifers/jhighlight/trunk&quot;&gt;Browse Subversion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
				<pubDate>Mon, 13 Mar 2006 19:41:10 +0100</pubDate>
				<author>Geert Bevin</author>
				<guid>http://rifers.org/blogs/gbevin/2006/3/13/jhighlight_1_0_released</guid>
			</item>
		
		
	</channel>
</rss>