<?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>Matt Stine&#039;s Blog &#187; thespringexperience2007</title>
	<atom:link href="http://mattstine.com/category/thespringexperience2007/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattstine.com</link>
	<description>Thoughts on Java, Groovy, Grails, Agile Development, etc. etc. etc.</description>
	<lastBuildDate>Tue, 17 May 2011 17:02:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mattstine.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Matt Stine&#039;s Blog &#187; thespringexperience2007</title>
		<link>http://mattstine.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mattstine.com/osd.xml" title="Matt Stine&#039;s Blog" />
	<atom:link rel='hub' href='http://mattstine.com/?pushpress=hub'/>
		<item>
		<title>The Spring Experience 2007 &#8211; Videos on the way!</title>
		<link>http://mattstine.com/2008/02/04/the-spring-experience-2007-videos-on-the-way/</link>
		<comments>http://mattstine.com/2008/02/04/the-spring-experience-2007-videos-on-the-way/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 20:28:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=57</guid>
		<description><![CDATA[I got an awesome email today&#8230; We are happy to announce that the video/audio streaming from TSE 2007 will be available online the week of February 11th for you. You will have the opportunity to see/hear the TSE 2007 presentations you were not able to make at TSE 2007 due to all of the great [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=57&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I got an awesome email today&#8230;<br />
<blockquote>We are happy to announce that the video/audio streaming from TSE 2007 will be available online the week of February 11th for you.  You will have the opportunity to see/hear the TSE 2007 presentations you were not able to make at TSE 2007 due to all of the great sessions available per time period.  We have captured the entire session length including any demos/live coding.  Please look for the email from us next Monday, February 11th with the details about viewing the session content online.</p></blockquote>
<p>I&#8217;m extremely excited about this. For two reasons:
<ol>
<li>I didn&#8217;t get to finish my reviews of the sessions that I attended. Now that it has been several weeks since the conference, I don&#8217;t feel like my memory of them is good enough to do a fair review. Now I can do a refresh and write!</li>
<li>There were several sessions that I wanted to attend that I couldn&#8217;t &#8211; now I get to attend&#8230;and write!</li>
</ol>
<p>Look forward to some more reviews from The Spring Experience 2007 in the coming weeks!</p>
<blockquote></blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/57/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/57/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=57&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2008/02/04/the-spring-experience-2007-videos-on-the-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
		<item>
		<title>The State of the Art in Dependency Injection: Rod Johnson</title>
		<link>http://mattstine.com/2007/12/15/the-state-of-the-art-in-dependency-injection-rod-johnson/</link>
		<comments>http://mattstine.com/2007/12/15/the-state-of-the-art-in-dependency-injection-rod-johnson/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 15:06:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=52</guid>
		<description><![CDATA[This was a truly fascinating talk. If you ever wanted to learn the entire history and landscape of dependency injection (DI), this was your opportunity. I really didn&#8217;t realize how deep of a topic DI really is. According to Rod, DI had its beginnings in 2002, in the Interface 21 Framework that was born from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=52&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This was a truly fascinating talk. If you ever wanted to learn the entire history and landscape of dependency injection (DI), this was your opportunity. I really didn&#8217;t realize how deep of a topic DI really is.</p>
<p>According to Rod, DI had its beginnings in 2002, in the Interface 21 Framework that was born from his seminal work, <a href="http://www.amazon.com/Expert-One-One-Design-Development/dp/1861007841"><span style="font-style:italic;">Expert One-on-One J2<span class="blsp-spelling-error" id="SPELLING_ERROR_0">EE</span> Design and Development</span></a>. In the beginning, DI was done solely through setter injection (SI), with external <span class="blsp-spelling-error" id="SPELLING_ERROR_1">metadata</span> (usually in XML). 2003 gave us Spring 0.9, which had the same DI model, but added <span class="blsp-spelling-error" id="SPELLING_ERROR_2">FactoryBeans</span> for indirection and proxy-based <span class="blsp-spelling-error" id="SPELLING_ERROR_3">AOP</span> (enabling among other things, declarative transaction management). With Spring, DI was always just one enabler of a complete enterprise solution. Contrast that with <a href="http://www.picocontainer.org/"><span class="blsp-spelling-error" id="SPELLING_ERROR_4">PicoContainer</span></a>, also arriving on the scene in 2003, which was an ultra-lightweight DI-only container. <span class="blsp-spelling-error" id="SPELLING_ERROR_5">PicoContainer</span> brought us several innovations, including constructor injection, automatic resolution by type, and an attempt to dispense with external configuration.</p>
<p>Rod then discussed the Pros and Cons of Constructor Injection (CI). On the Pro side, we see that CI is great for immutable objects, can be used with existing code, enforces that the necessary dependencies are provided at object construction, and allows developers to dispense with methods like <span style="font-weight:bold;font-style:italic;"><span class="blsp-spelling-error" id="SPELLING_ERROR_6">afterPropertiesSet</span>()</span>. On the Con side, there are no default arguments in Java, which forces us to ALWAYS provide all of the necessary dependencies, constructor overriding can be somewhat messy, and constructor <span class="blsp-spelling-corrected" id="SPELLING_ERROR_7">argument</span> names are not usually available through reflection, which forces us to depend on argument order for dependency resolution.</p>
<p>Spring 1.0, which arrived in late 2003, incorporated some of <span class="blsp-spelling-error" id="SPELLING_ERROR_8">PicoContainer&#8217;s</span> innovation: CI, &#8220;<span class="blsp-spelling-error" id="SPELLING_ERROR_9">Autowiring</span>&#8221; by type and by name, as well as the ability to mix CI and SI. Here Rod reflected on <span class="blsp-spelling-error" id="SPELLING_ERROR_10">Spring&#8217;s</span> pragmatic philosophy, whereby they are more than willing to incorporate the good ideas that others had first.</p>
<p>Spring 1.1 brought us method injection, a unique Spring feature, which solved the problem of long-lived managed objects which depend on short-lived objects. It also brought us Factory Methods. You now had the ability to create objects through invoking static factory methods or instance methods on other beans.</p>
<p>With the finalization of the <a href="http://java.sun.com/products/ejb/docs.html"><span class="blsp-spelling-error" id="SPELLING_ERROR_11">EJB</span> 3.0 standard</a> in May 2006, several new ideas became available in the world of DI: annotation-based DI, annotations for callback methods (e.g. <span style="font-weight:bold;font-style:italic;">@<span class="blsp-spelling-error" id="SPELLING_ERROR_12">PostConstruct</span></span>), scanning for annotations without any external configuration needed for a deployment unit, and field injection (<span class="blsp-spelling-error" id="SPELLING_ERROR_13">FI</span>). These <span class="blsp-spelling-error" id="SPELLING_ERROR_14">EJB</span> standard brought with it a new philosophy &#8211; that annotations are a superior model and that externalization should be a second-class citizen. The Pros of this standard? One big one &#8211; no configuration is necessary for simple cases. The Cons? Rod listed several: resources could only be injected from <span class="blsp-spelling-error" id="SPELLING_ERROR_15">JNDI</span>, no CI, limited control over object <span class="blsp-spelling-error" id="SPELLING_ERROR_16">lifecycle</span>, unsuitability for fine-grained object graphs, effectively <span class="blsp-spelling-corrected" id="SPELLING_ERROR_17">usable</span> ONLY with annotations, as the XML configuration option is so verbose, and it isn&#8217;t just DI &#8211; it brings along with it enforcement of many obsolete <span class="blsp-spelling-error" id="SPELLING_ERROR_18">EJB</span> concepts (such as bean instance pooling).</p>
<p>Spring 2.0 arrived in late 2005 with its own share of innovations: integration with <a href="http://www.eclipse.org/aspectj/"><span class="blsp-spelling-error" id="SPELLING_ERROR_19">AspectJ</span></a>, the ability to inject <span style="font-style:italic;">anything</span> with an <span class="blsp-spelling-error" id="SPELLING_ERROR_20">AspectJ</span> aspect via <span style="font-style:italic;"><span style="font-weight:bold;">@Configurable</span></span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_21">namespaces</span> to provide an XML-based <span class="blsp-spelling-error" id="SPELLING_ERROR_22">DSL</span> for external configuration, the <span style="font-style:italic;"><span style="font-weight:bold;">@Required</span></span> annotation, and <span class="blsp-spelling-error" id="SPELLING_ERROR_23">pluggable</span> scopes to manage the object <span class="blsp-spelling-error" id="SPELLING_ERROR_24">lifecycle</span>. About that same time, <span class="blsp-spelling-error" id="SPELLING_ERROR_25">JBoss</span> Seam introduced many strange ideas (that I didn&#8217;t quite grasp from Rod&#8217;s explanation): <span class="blsp-spelling-error" id="SPELLING_ERROR_26">bijection</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_27">outjection</span>, and subversion of control.</p>
<p>Some additional players on the field include Spring Java <span class="blsp-spelling-error" id="SPELLING_ERROR_28">Config</span>, which is a <span class="blsp-spelling-error" id="SPELLING_ERROR_29">DSL</span> for configuration in Java, <a href="http://code.google.com/p/google-guice/">Google <span class="blsp-spelling-error" id="SPELLING_ERROR_30">Guice</span> 1.0</a>, and the <a href="http://jcp.org/en/jsr/detail?id=299"><span class="blsp-spelling-error" id="SPELLING_ERROR_31">JSR</span>-299 Web Beans spec</a>, which Rod described as &#8220;<span class="blsp-spelling-error" id="SPELLING_ERROR_32">blogware</span>&#8221; in that there is currently no available implementation.</p>
<p>Finally we got to Spring 2.5, released last month. Rod didn&#8217;t have his slides printed or available on the web (<span class="blsp-spelling-error" id="SPELLING_ERROR_33">argh</span>!), so about this time my hand was really hurting from taking furious notes, and I simply gave up. Fortunately, most of what Rod covered was redundant from some of the other sessions, so I&#8217;ll have or will blog about it later. About the only thing I really don&#8217;t have good notes on is Spring Java <span class="blsp-spelling-error" id="SPELLING_ERROR_34">Config</span>, which he discussed pretty extensively. If you want to learn more about it, check out <a href="http://www.springframework.org/javaconfig">http://www.springframework.org/javaconfig</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=52&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/15/the-state-of-the-art-in-dependency-injection-rod-johnson/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax Integration Guide for 2008: Jeremy Grelle</title>
		<link>http://mattstine.com/2007/12/14/ajax-integration-guide-for-2008-jeremy-grelle/</link>
		<comments>http://mattstine.com/2007/12/14/ajax-integration-guide-for-2008-jeremy-grelle/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 20:40:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=51</guid>
		<description><![CDATA[This talk looked really exciting going in. Jeremy is a member of the Spring Web Products team and the lead of Spring Faces, as well as a member of the JSF 2.0 Expert Group. He describes himself as the resident Ajax freak at SpringSource. Jeremy began by discussing the current Ajax landscape, highlighting what he [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=51&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This talk looked really exciting going in. Jeremy is a member of the Spring Web Products team and the lead of Spring Faces, as well as a member of the <span class="blsp-spelling-error" id="SPELLING_ERROR_0">JSF</span> 2.0 Expert Group. He describes himself as the resident Ajax freak at <span class="blsp-spelling-error" id="SPELLING_ERROR_1">SpringSource</span>. Jeremy began by discussing the current Ajax landscape, highlighting what he believes are the important features a successful framework must deliver, and then identifying the frameworks he considers to be the cream of the crop. No surprises here on the list: Prototype/<span class="blsp-spelling-error" id="SPELLING_ERROR_2">Scriptaculous</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_3">jQuery</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_4">YUI</span>, Ext, and <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Dojo</span>. He then gave a brief high-level overview of each framework &#8211; I really didn&#8217;t learn anything new here, as I&#8217;ve been following these frameworks for quite awhile. He mentioned the commonality that all of these frameworks are about more than asynchronous client-server communication &#8211; they&#8217;re about improving your client-side code and user experience. See Dion&#8217;s May 2007 comment that Ajax &#8220;was never about the acronym &#8211; it&#8217;s about building killer websites.&#8221; What is good about all of these frameworks is that you can use all of them in an unobtrusive manner and progressively enhance your <span class="blsp-spelling-error" id="SPELLING_ERROR_6">UI</span>. This gives you the ability to only <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Ajaxify</span> what you need and also get graceful degradation.</p>
<p>In the second portion of his talk, Jeremy talked about connecting to Spring. I was really hoping that the &#8220;goods&#8221; would be delivered here. He started by mentioning <span class="blsp-spelling-error" id="SPELLING_ERROR_8">DWR</span>, which I think is a really nice framework. It merited 2 slides and no demo (even though there was a slide mentioning a demo). I don&#8217;t think Jeremy really cares for it or <span class="blsp-spelling-error" id="SPELLING_ERROR_9">GWT</span>, as he sort of lumped them together and didn&#8217;t mention them again. I do appreciate his point that neither really allows you to harvest any existing controlling infrastructure that we may have built using Spring <span class="blsp-spelling-error" id="SPELLING_ERROR_10">MVC</span> or another framework.</p>
<p>Jeremy then moved into what he considers the better way to do it, which is the progressive enhancement I mentioned above. He took the existing Spring Booking <span class="blsp-spelling-error" id="SPELLING_ERROR_11">MVC</span> + Web Flow example application and <span class="blsp-spelling-error" id="SPELLING_ERROR_12">ajaxified</span> portions of it. He did this using an interesting combination of Apache Tiles, some Javascript &#8220;pseudo-<span class="blsp-spelling-error" id="SPELLING_ERROR_13">AOP</span>&#8221; he lifted from the <span class="blsp-spelling-error" id="SPELLING_ERROR_14">SpringFaces</span> project, and a bit of <span class="blsp-spelling-error" id="SPELLING_ERROR_15">Dojo</span>. It seemed to work really well, but it wasn&#8217;t immediately clear how this type of technology was going to be made available to us as developers. He said something along the lines of &#8220;you don&#8217;t have to be using <span class="blsp-spelling-error" id="SPELLING_ERROR_16">JSF</span> to use this Javascript, so we probably need to change the name to something else.&#8221; I hope they figure out soon so I can get my hands on it. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>He closed by briefly discussing <span class="blsp-spelling-error" id="SPELLING_ERROR_17">REST&#8217;s</span> place in the future of Spring Web. The ideal scenario, according to Jeremy, is that we will be able to request different representations of the same resource. For example, we could request HTML for full page display or partial DOM updates, and <span class="blsp-spelling-error" id="SPELLING_ERROR_18">JSON</span> for intelligent widgets like the <span class="blsp-spelling-error" id="SPELLING_ERROR_19">Dojo</span> table.</p>
<p>It looks like a lot of exciting things will happen in 2008. I hope I don&#8217;t have to wait too long.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=51&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/14/ajax-integration-guide-for-2008-jeremy-grelle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#8217;s New in Spring 2.5? : Juergen Hoeller</title>
		<link>http://mattstine.com/2007/12/14/whats-new-in-spring-25-juergen-hoeller/</link>
		<comments>http://mattstine.com/2007/12/14/whats-new-in-spring-25-juergen-hoeller/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 20:20:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=50</guid>
		<description><![CDATA[This was my second talk of TSE 2007. I have to admit I chose it by process of elimination &#8211; none of the second session talks particularly jumped out and grabbed me like Chris Richardson&#8217;s talk. Juergen is the project lead for the Spring Framework, so he was the obvious choice to give this talk. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=50&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This was my second talk of TSE 2007. I have to admit I chose it by process of elimination &#8211; none of the second session talks particularly jumped out and grabbed me like Chris Richardson&#8217;s talk.</p>
<p>Juergen is the project lead for the Spring Framework, so he was the obvious choice to give this talk. Juergen split it up into three sections:
<ol>
<li>Platforms</li>
<li>Annotation Configuration</li>
<li>AspectJ Support</li>
</ol>
<p>To break down part one as quickly as possible, Spring supports virtually EVERYTHING. You get JDK 1.4 all the way to Java 6, including all of the new API&#8217;s in Java 6. It fully supports Java EE 5 while remaining backward compatible all the way to J2EE 1.3.  You can now deploy a Spring ApplicationContext as a RAR file, and you also get full JCA 1.5 support (if you want to know what that means, don&#8217;t ask me <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Quite notable was the fact that they have worked with IBM to support WebSphere&#8217;s proprietary transaction manager. Also interesting was Spring&#8217;s continuing strong support for OSGi as an alternative enterprise runtime.</p>
<p>The annotation configuration part of the talk was quite fascinating. I&#8217;m something of an annotations junkie &#8211; I have to be careful about that. At any rate, it was so good that I was interested enough to attend Juergen and Mark Fisher&#8217;s later talk that was completely dedicated to the subject. I&#8217;ll leave the details for my entry on that talk.</p>
<p>The final portion, on AspectJ support, was equally fascinating. The first new feature was the ability to advise specific beans by name rather than by type using AspectJ. This was made even sweeter by the fact that you can use pattern matching in your <span style="font-style:italic;font-weight:bold;"></span> definition.  Very exciting was the ability to do AspectJ load-time weaving, meaning you can use the power of AspectJ at runtime without involving the AspectJ compiler. Unfortunately, this isn&#8217;t available across all appservers. I didn&#8217;t get a chance to ask and comfirm, but it seems that JBoss (our primary appserver) does not support this. GlassFish, Weblogic, OC4J, and Tomcat were all mentioned as being able to handle it.</p>
<p>The most interesting part of this talk for me was the ability to annotate a class as <span style="font-weight:bold;font-style:italic;">@Configurable</span>, and then do dependency injection on it even thought it isn&#8217;t managed by Spring. You could do this in Spring 2.0, but you had to use the AspectJ compiler. Now, with load-time weaving, you can do this at runtime! I really could have used this recently when I wanted to inject a single dependency into a class that was really overkill to manage as a Spring bean. Since I&#8217;m using Spring 2.5 in this project, I can go back and try this feature. Exciting!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=50&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/14/whats-new-in-spring-25-juergen-hoeller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
		<item>
		<title>Pair Programming with the Official Rod Johnson Bobblehead</title>
		<link>http://mattstine.com/2007/12/13/pair-programming-with-the-official-rod-johnson-bobblehead/</link>
		<comments>http://mattstine.com/2007/12/13/pair-programming-with-the-official-rod-johnson-bobblehead/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 02:20:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=49</guid>
		<description><![CDATA[As you can see, Rod really likes my Spring MVC configuration.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=49&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://3.bp.blogspot.com/_Vo63LRwAZbk/R2HoivNFFDI/AAAAAAAAAWg/Kp-khRPCwxU/s1600-h/rod_johnson_pairprog.jpg"><img style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" src="http://3.bp.blogspot.com/_Vo63LRwAZbk/R2HoivNFFDI/AAAAAAAAAWg/Kp-khRPCwxU/s400/rod_johnson_pairprog.jpg" alt="" border="0" /></a>
<div style="text-align:center;">As you can see, Rod really likes my Spring MVC configuration. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=49&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/13/pair-programming-with-the-official-rod-johnson-bobblehead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>

		<media:content url="http://3.bp.blogspot.com/_Vo63LRwAZbk/R2HoivNFFDI/AAAAAAAAAWg/Kp-khRPCwxU/s400/rod_johnson_pairprog.jpg" medium="image" />
	</item>
		<item>
		<title>Improving Application Design with a Rich Domain Model: Chris Richardson</title>
		<link>http://mattstine.com/2007/12/13/improving-application-design-with-a-rich-domain-model-chris-richardson/</link>
		<comments>http://mattstine.com/2007/12/13/improving-application-design-with-a-rich-domain-model-chris-richardson/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 22:32:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=48</guid>
		<description><![CDATA[This was my very first session of the conference. I&#8217;ve really been looking forward to it. I became pretty excited about object-oriented programming when I first really learned it in my computer simulation course at Ole Miss. In that course we built discrete event simulation programs using collaborating Java threads. Each thread implemented an object [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=48&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This was my very first session of the conference. I&#8217;ve really been looking forward to it. I became pretty excited about object-oriented programming when I first really learned it in my computer simulation course at Ole Miss. In that course we built discrete event simulation programs using collaborating Java threads. Each thread implemented an object from the domain model representing a particular simulation problem. Once I got into the &#8220;working world,&#8221; I found that the architecture described by Rod Johnson as the &#8220;J2<span class="blsp-spelling-error" id="SPELLING_ERROR_0">EE</span> stove pipe&#8221; had made my <span class="blsp-spelling-error" id="SPELLING_ERROR_1">OO</span> skills essentially unusable in the projects on which I was required to work on a day-to-day basis. My recent experiences developing in a more <span class="blsp-spelling-error" id="SPELLING_ERROR_2">POJO</span>-based style, particularly with <span class="blsp-spelling-error" id="SPELLING_ERROR_3">JPA</span>/Hibernate, have allowed me to get closer to my preferred <span class="blsp-spelling-error" id="SPELLING_ERROR_4">OO</span>-style, but the business logic still lived in the service-tier. My domain model was still essentially &#8220;anemic&#8221; to borrow from Martin Fowler.</p>
<p>When I read the description for this session I was elated! Finally I could see that someone was building real enterprise applications using object-oriented techniques! I&#8217;ve never quite been able to articulate what I felt was wrong with the way we&#8217;re building applications in my group. I was fortunate enough to have breakfast with Chris Richardson prior to the session, and he said that addressing my inability to articulate those problems was one of the goals of his talk. Awesome! On to the session&#8230;</p>
<p>Chris began with a tour through his object-based programming experience, beginning in LISP, followed by C++ and then Java. Around 1999 he got into <span class="blsp-spelling-error" id="SPELLING_ERROR_5">EJB</span> programming, and described his experience as &#8220;Applications were still built from objects, but those objects were very different&#8230;&#8221; Basically the <span class="blsp-spelling-error" id="SPELLING_ERROR_6">EJB</span> paradigm caused us to abandon object-oriented programming in favor of procedural programming. Why? Well, for all of the pros surrounding <span class="blsp-spelling-error" id="SPELLING_ERROR_7">EJB</span>, it made writing object-oriented code difficult, and in some cases, impossible. The <span class="blsp-spelling-error" id="SPELLING_ERROR_8">EJB</span>/procedural style works very well for simple business logic, but it doesn&#8217;t scale well as business logic becomes more complex. The result is a few monolithic transactional classes containing hundreds to thousands of lines of code embedded in very long methods. Hence, the legacy of <span class="blsp-spelling-error" id="SPELLING_ERROR_9">EJB</span> (and I quote):
<ul>
<li>Java is an object-oriented language, AND&#8230;</li>
<li>Object-oriented design is a better way to tackle complexity, YET&#8230;</li>
<li>Many complex enterprise Java applications are written in a procedural style</li>
</ul>
<p>Chris then moved on to discuss the rich domain model pattern, which is really nothing new at all. It&#8217;s just good <span class="blsp-spelling-error" id="SPELLING_ERROR_10">OO</span> design. Most of your classes (or entities) correspond to real world concepts, and the business logic is spread amongst them. Classes are true objects: they contain state and behavior. The goal is to push as much business logic as possible down into the domain objects, which is exactly where it belongs. What do you get? Better maintainability, better testability, better <span class="blsp-spelling-error" id="SPELLING_ERROR_11">reusability</span>, and a better shared understanding of your domain. Not only that, but your code is <span class="blsp-spelling-error" id="SPELLING_ERROR_12">quantifiably</span> simpler! Who doesn&#8217;t want that? The main drawback to this is that you have to have good <span class="blsp-spelling-error" id="SPELLING_ERROR_13">OO</span> design skills to make it happen &#8211; which is exactly what the <span class="blsp-spelling-error" id="SPELLING_ERROR_14">EJB</span> programming model has made scarce.</p>
<p>Chris followed this up by discussing the building blocks of domain models, concepts he derived from Eric Evans&#8217; book <span style="font-style:italic;">Domain Driven Design<span style="font-style:italic;">. </span></span>In a nutshell, they are Entities, Value Objects, Aggregates, Services, Factories, and Repositories &#8211; the reader can get the book to find out what these are. Interesting notes for me include the fact that Repositories are nearly equivalent to <span class="blsp-spelling-error" id="SPELLING_ERROR_15">DAO&#8217;s</span>, especially the way I typically implement them. The concept of a Service is far different from what I&#8217;m used to. I &#8220;grew up&#8221; writing services according to the <span class="blsp-spelling-error" id="SPELLING_ERROR_16">EJB</span> Session Bean/Facade model, where essentially all of your business logic resides in service methods. Chris defined a service as a class implementing only logic that cannot be put in a single entity. They are actually quite thin!</p>
<p>Next came the discussion of frameworks and their role. In short, frameworks act as an enabler to rich domain models when used properly. Your domain model should be implemented purely as Plain Old Java Objects (<span class="blsp-spelling-error" id="SPELLING_ERROR_17">POJO&#8217;s</span>) in that they don&#8217;t implement any infrastructure interfaces or call infrastructure <span class="blsp-spelling-error" id="SPELLING_ERROR_18">API&#8217;s</span>. The jury is still out on annotations &#8211; Chris argues that they still violate the <span class="blsp-spelling-error" id="SPELLING_ERROR_19">POJO</span> concept, I&#8217;m not so sure. You then wire your model together using dependency injection, handle crosscutting concerns (transaction management, security, logging, etc.) with Aspect-Oriented Programming (<span class="blsp-spelling-error" id="SPELLING_ERROR_20">AOP</span>), and use object/relational mapping (<span class="blsp-spelling-error" id="SPELLING_ERROR_21">ORM</span>) for persistence. What you often run into as obstacles are that many of these frameworks, particularly web and <span class="blsp-spelling-error" id="SPELLING_ERROR_22">ORM</span> frameworks, force you to introduce &#8220;smells&#8221; into your code for the framework to use them. Examples include requirements for public default constructors and <span class="blsp-spelling-error" id="SPELLING_ERROR_23">JavaBean</span>-style setters.</p>
<p>Chris closed with an awesome discussion of common code smells and the <span class="blsp-spelling-error" id="SPELLING_ERROR_24">refactorings</span> used to eliminate them. I was most interested in Feature Envy, which is where you have methods that are far too interested in data belonging to other classes. This is very common in session facades, and the healing factor is to push that logic down into the appropriate domain classes. Another interesting smell was Primitive Obsession, where code uses built-in types (such as String and Integer) instead of application classes to represent state. The <span class="blsp-spelling-error" id="SPELLING_ERROR_25">refactoring</span> in this case is to introduce Value Objects, which are immutable, validated objects representing domain concepts (e.g. a shipping address).</p>
<p>Chris closed with the charge to begin <span class="blsp-spelling-error" id="SPELLING_ERROR_26">refactoring</span> our procedural designs into a rich domain model on MONDAY! Oh, how I can&#8217;t wait to begin. Good job Chris!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=48&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/13/improving-application-design-with-a-rich-domain-model-chris-richardson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
		<item>
		<title>Enterprise Java and the Changing of the Guard</title>
		<link>http://mattstine.com/2007/12/13/enterprise-java-and-the-changing-of-the-guard/</link>
		<comments>http://mattstine.com/2007/12/13/enterprise-java-and-the-changing-of-the-guard/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 19:02:00 +0000</pubDate>
		<dc:creator>mattstine</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[thespringexperience2007]]></category>

		<guid isPermaLink="false">http://www.mattstine.com/?p=47</guid>
		<description><![CDATA[Greetings from The Spring Experience 2007 in Hollywood, FL. So far this has been a great conference &#8211; I&#8217;m currently waiting for my third session of the day to start. As much as I enjoy all of the hype and eye candy at JavaOne, I really get a lot more out of these smaller conferences [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=47&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Greetings from <a href="http://www.thespringexperience.com">The Spring Experience 2007</a> in Hollywood, FL. So far this has been a great conference &#8211; I&#8217;m currently waiting for my third session of the day to start. As much as I enjoy all of the hype and eye candy at <span class="blsp-spelling-error" id="SPELLING_ERROR_0">JavaOne</span>, I really get a lot more out of these smaller conferences as you&#8217;re not running around stressed out trying to weave through thousands of geeks as you move from session to session (or more <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">accurately</span>, from session to queue!).</p>
<p>I wanted to post a few insights that I gained from Rod Johnson&#8217;s keynote last night (the title of this entry). The basis for Rod&#8217;s presentation was a <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Gartner</span> report entitled &#8220;<a href="http://www.gartner.com/DisplayDocument?ref=g_search&amp;id=525420&amp;subref=simplesearch">Trends in Platform <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Middleware</span>: Disruption Is in Sight</a>.&#8221; To summarize, there are many converging forces in the enterprise Java space that are causing or will probably cause a great deal of disruption in the way we develop enterprise Java applications. These forces include our collective experience with application servers, the rediscovery of object-oriented or <span class="blsp-spelling-error" id="SPELLING_ERROR_4">POJO</span>-based programming, open source innovation, non-Java challengers (.NET, <span class="blsp-spelling-error" id="SPELLING_ERROR_5">RoR</span>), the rise of <span class="blsp-spelling-error" id="SPELLING_ERROR_6">SOA</span>, and Rich Internet Applications. Rod sees a big movement from the &#8220;old guard,&#8221; which he described as the &#8220;J2<span class="blsp-spelling-error" id="SPELLING_ERROR_7">EE</span> Stovepipe Architecture&#8221; which was based primarily around the idea of distributed objects, to a world in which many of the highest volume Java applications don&#8217;t even use a Java <span class="blsp-spelling-error" id="SPELLING_ERROR_8">EE</span> application server. An interesting point was the stagnation in job requirements for the big name application servers coupled with the <span class="blsp-spelling-error" id="SPELLING_ERROR_9">BZ</span> Research statistic that 64% of Java application developers are using Tomcat for production deployment. Yet another force for disruption is the emergence of <span class="blsp-spelling-error" id="SPELLING_ERROR_10">OSGi</span>, which allows developers to modularize applications and provides facilities for <span class="blsp-spelling-error" id="SPELLING_ERROR_11">versioned</span> components, fine-grained redeployment, and library conflict resolution &#8211; all features that Java EE currently does not and perhaps cannot address. Open source provides yet more disruption, as developers have become participants in rather than spectators of the development of Java enterprise solutions. Innovation is now primarily coming from the open source world. All of this culminated in the rather telegraphed conclusion that Rod (and also the <span class="blsp-spelling-error" id="SPELLING_ERROR_12">Gartner</span> report apparently) believes that Spring is uniquely positioned to provide the best value for ongoing Enterprise Java development in the face of the current trends. Of course, what would you expect him to say? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  <a href="http://www.gartner.com/DisplayDocument?ref=g_search&amp;id=525420&amp;subref=simplesearch"><br /></a><br />I do tend to agree with him. The pace at which Spring is innovating and addressing the Java enterprise pain points far outpaces the pace of the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">JCP</span>. It just takes too long to design specs by committee. One of the more wise things that Spring does is to learn from and in most cases <span class="blsp-spelling-corrected" id="SPELLING_ERROR_14">accommodate</span> the changing landscape of Java <span class="blsp-spelling-error" id="SPELLING_ERROR_15">EE</span> and integrate the best features directly into the framework. I for one am glad to be developing applications with Spring, as it makes it very easy to do the things I want to do and write quality code that isn&#8217;t directly dependent on an infrastructure framework. Generally, it stays out of my way.</p>
<p>More to come on the sessions I&#8217;ve attended thus far.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mattstine.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mattstine.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattstine.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattstine.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattstine.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattstine.com&amp;blog=58954&amp;post=47&amp;subd=mattstine&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattstine.com/2007/12/13/enterprise-java-and-the-changing-of-the-guard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1eaa45fee6a2b0c4b479b2982a4274f4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattstine</media:title>
		</media:content>
	</item>
	</channel>
</rss>
