<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A Java Developer's Life</title>
	<atom:link href="http://javadeveloperslife.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://javadeveloperslife.wordpress.com</link>
	<description>Some thoughts on software development and related topics...</description>
	<lastBuildDate>Sat, 07 Jan 2012 13:07:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='javadeveloperslife.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>A Java Developer's Life</title>
		<link>http://javadeveloperslife.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://javadeveloperslife.wordpress.com/osd.xml" title="A Java Developer&#039;s Life" />
	<atom:link rel='hub' href='http://javadeveloperslife.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Managing unmanaged beans in CDI</title>
		<link>http://javadeveloperslife.wordpress.com/2012/01/07/managing-unmanaged-beans-in-cdi/</link>
		<comments>http://javadeveloperslife.wordpress.com/2012/01/07/managing-unmanaged-beans-in-cdi/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 13:03:44 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Server Side Java]]></category>
		<category><![CDATA[CDI]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=401</guid>
		<description><![CDATA[Nice post: Managing unmanaged beans in CDI (A Java geek / Nicolas Fränkel&#8217;s Blog)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=401&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nice post: <a href="http://blog.frankel.ch/managing-unmanaged-beans-in-cdi" title="Managing unmanaged beans in CDI">Managing unmanaged beans in CDI</a> (A Java geek / Nicolas Fränkel&#8217;s Blog)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/401/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/401/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/401/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=401&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2012/01/07/managing-unmanaged-beans-in-cdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>Combining Strong Typing and Bean Validation (JSR 303)</title>
		<link>http://javadeveloperslife.wordpress.com/2011/12/05/combining-strong-typing-and-bean-validation-jsr-303/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/12/05/combining-strong-typing-and-bean-validation-jsr-303/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:44:25 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=392</guid>
		<description><![CDATA[Sometimes, it&#8217;s nice to use strong typing instead of repeating the same checks all over the layers and tiers. The interesting thing is that making a class robust against misuse is very similar to using Java Bean Validation. A classical approach may look like this: Using Bean Validation, we could create a custom constraint instead: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=392&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes, it&#8217;s nice to use strong typing instead of repeating the same checks all over the layers and tiers. The interesting thing is that making a class robust against misuse is very similar to using Java Bean Validation. </p>
<p>A classical approach may look like this:</p>
<p><pre class="brush: java;">
public class User {

    private static final Pattern PATTERN = Pattern.compile(&quot;[a-z][0-9a-z_\\-]*&quot;);

    private String name;

    public User(String name) {
        super();
        if (name == null) {
            throw new IllegalArgumentException(&quot;name == null&quot;);
        }
        String trimmed = name.trim().toLowerCase();
        if (trimmed.length() == 0) {
            throw new IllegalArgumentException(&quot;length name == 0&quot;);
        }
        if (trimmed.length() &lt; 3) {
            throw new IllegalArgumentException(&quot;length name &lt; 3&quot;);
        }
        if (trimmed.length() &gt; 20) {
            throw new IllegalArgumentException(&quot;length name &gt; 20&quot;);
        }
        if (!PATTERN.matcher(trimmed).matches()) {
            throw new IllegalArgumentException(&quot;name pattern violated&quot;);
        }
        this.name = trimmed;
    }

}
</pre></p>
<p>Using Bean Validation, we could create a custom constraint instead:</p>
<p><pre class="brush: java;">
@Size(min = 3, max = 20)
@Pattern(regexp = &quot;[a-z][0-9a-z_\\-]*&quot;)
@Target({ ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
@Documented
public @interface UserName {

    String message() default &quot;{org.fuin.blog.UserName.message}&quot;;

    Class&lt;?&gt;[] groups() default {};

    Class&lt;? extends Payload&gt;[] payload() default {};

}
</pre></p>
<p>The User class now looks much better:</p>
<p><pre class="brush: java;">
public class User {

    @NotNull
    @UserName
    private String name;

    public User(String name) {
        super();
        this.name = name;
    }

}
</pre></p>
<p>But now, the object has lost the ability to protect itself against misuse. It’s no longer a robust object. Maybe someone uses a validator to check if the object is valid; maybe not. In any case, it’s always possible to create invalid objects of this kind.</p>
<p>How about combining both techniques? </p>
<p>Let’s rename the UserName annotation into UserNameStr because it actually works on a string, and this way, we can also avoid a name clash with a new strong type we will create soon:</p>
<p><pre class="brush: java;">
@Size(min = 3, max = 20)
@Pattern(regexp = &quot;[a-z][0-9a-z_\\-]*&quot;)
@Target({ ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
@Documented
public @interface UserNameStr {

    String message() default &quot;{org.fuin.blog.UserNameStr.message}&quot;;

    Class&lt;?&gt;[] groups() default {};

    Class&lt;? extends Payload&gt;[] payload() default {};

}
</pre></p>
<p>Next, we create a base type for all such String based on strong typing:</p>
<p><pre class="brush: java;">
public abstract class AbstractStringBasedType&lt;T extends AbstractStringBasedType&lt;T&gt;&gt; implements Comparable&lt;T&gt;, Serializable {

    private static final long serialVersionUID = 0L;

    private static final Validator VALIDATOR;

    static {
        VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();
    }

    public final int hashCode() {
        return nullSafeToString().hashCode();
    }

    public final boolean equals(final Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final T other = (T) obj;
        return nullSafeToString().equals(other.nullSafeToString());
    }

    public final int compareTo(final T other) {
        return this.nullSafeToString().compareTo(other.nullSafeToString());
    }

    public final int length() {
        return nullSafeToString().length();
    }

    protected final void requireValid(final T value) {
        final Set&lt;ConstraintViolation&lt;T&gt;&gt; constraintViolations = VALIDATOR.validate(value);
        if (constraintViolations.size() &gt; 0) {
            final StringBuffer sb = new StringBuffer();
            for (final ConstraintViolation&lt;T&gt; constraintViolation : constraintViolations) {
                if (sb.length() &gt; 0) {
                    sb.append(&quot;, &quot;);
                }
                sb.append(&quot;[&quot; + constraintViolation.getPropertyPath() + &quot;] &quot;
                        + constraintViolation.getMessage() + &quot; {&quot;
                        + constraintViolation.getInvalidValue() + &quot;}&quot;);
            }
            throw new IllegalArgumentException(sb.toString());
        }
    }

    private String nullSafeToString() {
        final String str = toString();
        if (str == null) {
            return &quot;null&quot;;
        }
        return str;
    }

    public abstract String toString();

}
</pre></p>
<p>The refactored UserName class now uses the Bean Validation API to perform a constraint check at the end of the constructor, which means one is no longer able to create invalid objects:</p>
<p><pre class="brush: java;">
public final class UserName extends AbstractStringBasedType&lt;UserName&gt; {

    private static final long serialVersionUID = 0L;

    @NotNull
    @UserNameStr
    private final String userName;

    public UserName(final String userName) {
        super();
        this.userName = userName;

        // Always the last line in the constructor!
        requireValid(this);
    }

    public String toString() {
        return userName;
    }

}
</pre></p>
<p>The refactored User class is now even simpler and contains only a @NotNull annotation on the name property:</p>
<p><pre class="brush: java;">
public class User {

    // Only null check here, because all other
    // checks are done by user name itself
    @NotNull
    private UserName name;

    public User(UserName name) {
        super();
        this.name = name;
    }

}
</pre></p>
<p>Here is a simple example using the UserName type:</p>
<p><pre class="brush: java;">
public class Example {

    public static void main(String[] args) {

        Locale.setDefault(Locale.ENGLISH);

        try {
            new UserName(null);
        } catch (IllegalArgumentException ex) {
            // [userName] may not be null {null}
        }

        try {
            new UserName(&quot;&quot;);
        } catch (IllegalArgumentException ex) {
            // [userName] must match &quot;[a-z][0-9a-z_\-]*&quot; {},
            // [userName] size must be between 3 and 20 {}
        }

        try {
            new UserName(&quot;_a1&quot;);
        } catch (IllegalArgumentException ex) {
            // [userName] must match &quot;[a-z][0-9a-z_\-]*&quot; {_a1}
        }

        // Valid name
        System.out.println(new UserName(&quot;john-2_a&quot;));

    }

}
</pre></p>
<p>If we don’t want to use the strong typing, it’s easy to use only annotations. This ability is helpful especially where you have to deal with non-Java clients. In these situations, a DTO may contain only a simple annotated String:</p>
<p><pre class="brush: java;">
public class UserDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @NotNull
    @UserNameStr
    private String name;

    public UserDTO(String name) {
        super();
        this.name = name;
    }

}
</pre></p>
<p>Now strong types and Bean Validation can live in peaceful coexistence within your application. It’s a good idea to check if your GUI controls support such JS303 enhanced strong types before you start using it. Otherwise, you may lose the ability to validate upfront on the client (e.g. checking input length based on the @Size annotation).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/392/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/392/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/392/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=392&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/12/05/combining-strong-typing-and-bean-validation-jsr-303/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>M2Eclipse &amp; Plugin execution not covered by lifecycle configuration</title>
		<link>http://javadeveloperslife.wordpress.com/2011/10/24/m2eclipse-plugin-execution-not-covered-by-lifecycle-configuration/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/10/24/m2eclipse-plugin-execution-not-covered-by-lifecycle-configuration/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 19:25:15 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=371</guid>
		<description><![CDATA[I was recently forced to update my Eclipse installation to version 3.7 (Indigo). After opening some old projects, I got the following error message: Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.5:add-source (execution: add-source, phase: generate-sources) ... Maven Project Build Lifecycle Mapping Problem The “build-helper-maven-plugin” simply adds a second source folder: However, with Indigo and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=371&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was recently forced to update my Eclipse installation to version 3.7 (Indigo). After opening some old projects, I got the following error message:</p>
<p><code>Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.5:add-source (execution: add-source, phase: generate-sources) ... Maven Project Build Lifecycle Mapping Problem<br />
</code></p>
<p>The “build-helper-maven-plugin” simply adds a second source folder:</p>
<p><pre class="brush: xml;">
&lt;plugin&gt;
	&lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
	&lt;artifactId&gt;build-helper-maven-plugin&lt;/artifactId&gt;
	&lt;version&gt;1.5&lt;/version&gt;
	&lt;executions&gt;
		&lt;execution&gt;
			&lt;id&gt;add-source&lt;/id&gt;
			&lt;phase&gt;generate-sources&lt;/phase&gt;
			&lt;goals&gt;
				&lt;goal&gt;add-source&lt;/goal&gt;
			&lt;/goals&gt;
			&lt;configuration&gt;
				&lt;sources&gt;
					&lt;source&gt;${basedir}/src-gen/main/java&lt;/source&gt;
				&lt;/sources&gt;
			&lt;/configuration&gt;
		&lt;/execution&gt;
	&lt;/executions&gt;
&lt;/plugin&gt;
</pre></p>
<p>However, with Indigo and M2Eclipse, the source folder was no longer added, and I got compile errors all over the place&#8230;</p>
<p>It took me some time to figure out the right solution:<br />
<strong>Just install the &#8220;M2Extras / buildhelper&#8221; plugin!</strong></p>
<p>You can download it here (Eclipse Update Site):<br />
<a title="M2Extras" href="https://repository.sonatype.org/content/repositories/forge-sites/m2e-extras/0.14.0/N/0.14.0.201109282148/">https://repository.sonatype.org/content/repositories/forge-sites/m2e-extras/0.14.0/N/0.14.0.201109282148/</a><br />
(The exact directory may vary depending on you exact Eclipse version and the latest available M2Extras release)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=371&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/10/24/m2eclipse-plugin-execution-not-covered-by-lifecycle-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>CQRS, Domain Events, Event Sourcing with Greg Young (Hamburg/Germany 09/19 &#8211; 09/21/2011)</title>
		<link>http://javadeveloperslife.wordpress.com/2011/08/30/cqrs-domain-events-event-sourcing-with-greg-young-hamburggermany-0919-09212011/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/08/30/cqrs-domain-events-event-sourcing-with-greg-young-hamburggermany-0919-09212011/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 19:18:02 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=366</guid>
		<description><![CDATA[Great news: We got Greg Young the inventor of &#8220;Command Query Separation&#8221; (CQRS) for a 3-day course in Hamburg! Details and registration: http://www.fuin.org/course.html<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=366&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Great news: We got Greg Young the inventor of &#8220;Command Query Separation&#8221; (CQRS) for a 3-day course in Hamburg!</p>
<p>Details and registration: <a href="http://www.fuin.org/course.html">http://www.fuin.org/course.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/366/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=366&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/08/30/cqrs-domain-events-event-sourcing-with-greg-young-hamburggermany-0919-09212011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>@Ignore unit tests immediately if they fail!</title>
		<link>http://javadeveloperslife.wordpress.com/2011/07/24/ignore-unit-tests-immediately-if-they-fail/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/07/24/ignore-unit-tests-immediately-if-they-fail/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 10:41:26 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=359</guid>
		<description><![CDATA[In development teams, there is often discussion about using the @Ignore tag for failing tests. In particular, developers who are very enthusiastic about writing unit tests often tend to be very dogmatic about it. They argue, &#8220;A test should never be ignored! It’s better to have the build server on Yellow if tests fail. That [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=359&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In development teams, there is often discussion about using the @Ignore tag for failing tests.</p>
<p>In particular, developers who are very enthusiastic about writing unit tests often tend to be very dogmatic about it. They argue, &#8220;A test should never be ignored! It’s better to have the build server on Yellow if tests fail. That way we always have an overview of our problems and are forced to fix them!&#8221;</p>
<p>What might sound good at first is not a good idea, at least when it comes to large development teams.</p>
<p>If you have several commits from multiple developers and maybe even additional deliveries from different branches to the main development line, the build will definitely break from time to time. How long does it take to fix such an error? Sometimes it may be easy, but in some cases, it may take days to fix a broken test. Now let’s assume that we have implemented the rule that you should never ignore a test. This means that the build may stay Yellow for a long time.</p>
<p>If another developer now updates his workspace with the latest version from the trunk and runs the unit tests locally, he will see failing tests even if he didn’t make any mistakes! That’s pretty bad itself. But he then checks the build server and, after some time looking around, he realizes it wasn’t his fault, as the server is already in the Yellow state. Should he commit now? If he does, he will receive endless emails from the build server about the broken build state that he didn’t cause. If not, his work and maybe the work of others will be blocked until the test is fixed. In a typical, pretty hectic IT project, with it’s almost impossible to meet deadlines, this is not really an option.</p>
<p>What is the solution?</p>
<ol>
<li>If you cause a build to break, @Ignore the failing test immediately and commit the change.</li>
<li>Now that the build server is Green again (or Blue in the case of Hudson), start fixing the test.</li>
<li>After you have fixed the test, commit the change and check to see if the build stays Green.</li>
<li>Have some kind of statistic page on the build server that lists all ignored tests – this allows you to easily track the tests that are currently disabled.</li>
</ol>
<p>Don’t get me wrong: all failing unit tests should be fixed as fast as possible! But my failure when committing a change should never constrain other team members from doing their work.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/359/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=359&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/07/24/ignore-unit-tests-immediately-if-they-fail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>ThreeTen the JSR-310 (Date and Time API) RI</title>
		<link>http://javadeveloperslife.wordpress.com/2011/05/06/threeten-the-jsr-310-date-and-time-api-ri/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/05/06/threeten-the-jsr-310-date-and-time-api-ri/#comments</comments>
		<pubDate>Fri, 06 May 2011 04:00:49 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=351</guid>
		<description><![CDATA[I always liked the Joda Time library. Hopefully it&#8217;s successor the JSR-310 will be included in Java 8. The refererence implementation for the JSR-310 is the ThreeTen project that aims to provide a modern date and time library for Java and includes many of the lessons learned in the Joda-Time project. Take a look at [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=351&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I always liked the <a href="http://joda-time.sourceforge.net/" title="Joda Time">Joda Time</a> library. Hopefully it&#8217;s successor the <a href="http://www.jcp.org/en/jsr/detail?id=310" title="JSR-310">JSR-310</a> will be included in Java 8. </p>
<p>The refererence implementation for the JSR-310 is the <a href="http://sourceforge.net/apps/mediawiki/threeten/" title="ThreeTen">ThreeTen</a> project that aims to provide a modern date and time library for Java and includes many of the lessons learned in the Joda-Time project. </p>
<p>Take a look at it!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=351&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/05/06/threeten-the-jsr-310-date-and-time-api-ri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>Large software projects and icons &#8211; it depends on the style!</title>
		<link>http://javadeveloperslife.wordpress.com/2011/05/01/large-software-projects-and-icons-it-depends-on-the-style/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/05/01/large-software-projects-and-icons-it-depends-on-the-style/#comments</comments>
		<pubDate>Sun, 01 May 2011 01:00:17 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=345</guid>
		<description><![CDATA[Have you come across similar conversations in the context of large software projects? Developer: I need an icon for a button. Boss: You have MS-Paint on your computer. Why don&#8217;t you draw it yourself? Developer: No… I am not a graphic designer… Why don&#8217;t we purchase the icons? Boss: Hmm…We have got an intern, haven&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=345&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Have you come across similar conversations in the context of large software projects? </p>
<p><strong>Developer:</strong> I need an icon for a button.<br />
<strong>Boss:</strong> You have MS-Paint on your computer. Why don&#8217;t you draw it yourself?<br />
<strong>Developer:</strong> No… I am not a graphic designer… Why don&#8217;t we purchase the icons?<br />
<strong>Boss:</strong> Hmm…We have got an intern, haven&#8217;t we? He can do it!<br />
<strong>Developer:</strong> But he is no graphic designer either… And there are great low-cost icon libraries available to download.<br />
<strong>Boss:</strong> I wouldn&#8217;t know how to book that… The intern will do it!</p>
<p>Sometimes I wonder what makes large companies tick&#8230;They spend millions on software and skimp on a few hundred dollars for nice graphics. Unfortunately, the completed applications often look as if an intern has designed the icons. </p>
<p>A leading supplier of icons offers his entire catalogue (approx. 250 sets with around 850,000 icons) for 399 USD. Commissions for individual icons in addition to an existing set cost approx. 50-75 USD per icon. In return you will get designs which are visually pleasing to the end user who interacts with the finished piece of software. </p>
<p>Anyone who allows his developers or interns to design icons, must be crazy. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/345/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/345/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/345/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=345&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/05/01/large-software-projects-and-icons-it-depends-on-the-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>The Specification Pattern</title>
		<link>http://javadeveloperslife.wordpress.com/2011/04/02/the-specification-pattern/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/04/02/the-specification-pattern/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 08:19:46 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=335</guid>
		<description><![CDATA[I recently stumbled across an older article from Greg Young about something called the Specification Pattern. I haven&#8217;t heard about it before but the problem sounds familiar to me as I already implemented something similar. Digging deeper I found an interesting paper from Eric Evans and Martin Fowler explaining the idea in depth: Specifications. There [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=335&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently stumbled across an older <a href="http://codebetter.com/gregyoung/2008/12/21/ddd-specifications-language-and-locality/">article</a> from Greg Young about something called the Specification Pattern. I haven&#8217;t heard about it before but the problem sounds familiar to me as I already implemented something similar. </p>
<p>Digging deeper I found an interesting paper from <a href="http://en.wikipedia.org/wiki/Domain-driven_design">Eric Evans</a>  and <a href="http://www.martinfowler.com/">Martin Fowler</a> explaining the idea in depth: <a href="http://martinfowler.com/apsupp/spec.pdf">Specifications</a>.</p>
<p>There is also a small <a href="http://code.google.com/p/specification/">Java implementation</a> of the pattern available at Google Code that unforunately seems to be inactive since 2008.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/335/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/335/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/335/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=335&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/04/02/the-specification-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>
	</item>
		<item>
		<title>A better keytool II</title>
		<link>http://javadeveloperslife.wordpress.com/2011/03/20/a-better-keytool-ii/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/03/20/a-better-keytool-ii/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 06:00:32 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=315</guid>
		<description><![CDATA[Have you ever used Java&#8217;s keytool? A simplistic command line tool that&#8217;s a pain if you use it only once in awhile. Some time ago I suggested KeyTool IUI as a nice visual replacement for the Java Keytool. The bad news is that the owner sold the software and it&#8217;s no longer available. [Update 2011/04/01] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=315&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Have you ever used Java&#8217;s <a title="Java Keytool" href="http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html" target="_blank">keytool</a>? A simplistic command line tool that&#8217;s a pain if you use it only once in awhile.</p>
<p>Some time ago <a href="http://javadeveloperslife.wordpress.com/2009/06/21/a-better-keytool/">I suggested</a> KeyTool IUI as a nice visual replacement for the Java Keytool. The bad news is that the owner sold the software and it&#8217;s no longer available. <strong>[Update 2011/04/01]</strong> Good news! <a href="http://code.google.com/p/keytool-iui/">KeyTool IUI</a> is now open source!</p>
<p>But there is another nice open source tool you can use: </p>
<p><a href="http://portecle.sourceforge.net/"><img src="http://javadeveloperslife.files.wordpress.com/2011/03/portecle.jpg?w=450" alt="" title="Portecle"   class="alignnone size-full wp-image-320" /></a></p>
<p>It&#8217;s a user friendly GUI application for creating, managing and examining keystores, keys, certificates, certificate requests, certificate revocation lists and more. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=315&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/03/20/a-better-keytool-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>

		<media:content url="http://javadeveloperslife.files.wordpress.com/2011/03/portecle.jpg" medium="image">
			<media:title type="html">Portecle</media:title>
		</media:content>
	</item>
		<item>
		<title>Mindmap of Java EE 6 Technologies</title>
		<link>http://javadeveloperslife.wordpress.com/2011/03/13/mindmap-of-java-ee-6-technologies/</link>
		<comments>http://javadeveloperslife.wordpress.com/2011/03/13/mindmap-of-java-ee-6-technologies/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 10:33:49 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Server Side Java]]></category>

		<guid isPermaLink="false">http://javadeveloperslife.wordpress.com/?p=303</guid>
		<description><![CDATA[I recently took a look at Oracle&#8217;s page with Java EE 6 Technologies and found it a bit confusing (it&#8217;s poorly structured). Hence I created a mindmap that makes it easier to navigate between the different topics: Maybe it&#8217;s useful for you too.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=303&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently took a look at Oracle&#8217;s page with <a href="http://www.oracle.com/technetwork/java/javaee/tech/index.html">Java EE 6 Technologies</a> and found it a bit confusing (it&#8217;s poorly structured). Hence I created a mindmap that makes it easier to navigate between the different topics: </p>
<p><a href="http://www.fuin.org/files/jee-technologies.html"><img src="http://javadeveloperslife.files.wordpress.com/2011/03/jee-technologies.jpg?w=450&#038;h=150" alt="" title="jee-technologies" width="450" height="150" class="alignnone size-full wp-image-313" /></a></p>
<p>Maybe it&#8217;s useful for you too.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javadeveloperslife.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javadeveloperslife.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javadeveloperslife.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javadeveloperslife.wordpress.com&amp;blog=7751753&amp;post=303&amp;subd=javadeveloperslife&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javadeveloperslife.wordpress.com/2011/03/13/mindmap-of-java-ee-6-technologies/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94050915a37b980ae5a1b604f2f05f95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Michael</media:title>
		</media:content>

		<media:content url="http://javadeveloperslife.files.wordpress.com/2011/03/jee-technologies.jpg" medium="image">
			<media:title type="html">jee-technologies</media:title>
		</media:content>
	</item>
	</channel>
</rss>
