<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ryan norris &#187; Java</title>
	<atom:link href="http://www.ryannorris.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ryannorris.com</link>
	<description>managing software teams and delivering great results</description>
	<lastBuildDate>Fri, 25 Jun 2010 13:44:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Common Java Idiom, Lousy GWT Bug</title>
		<link>http://www.ryannorris.com/2010/01/15/common-java-idiom-lousy-gwt-bug/</link>
		<comments>http://www.ryannorris.com/2010/01/15/common-java-idiom-lousy-gwt-bug/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 04:49:29 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[strategypattern]]></category>

		<guid isPermaLink="false">http://www.ryannorris.com/?p=145</guid>
		<description><![CDATA[I have to get around to shipping this one to the GWT committers, but this one bit me hard. Let&#8217;s say you have interface Driveable: public interface Driveable &#123; public void accelerate&#40;&#41;; &#160; public void brake&#40;&#41;; &#160; public void tuneRadio&#40;&#41;; &#125; Awesome. Now let&#8217;s say you have class AbstractDriveable: public abstract class AbstractDriveable implements Driveable [...]]]></description>
			<content:encoded><![CDATA[<p>I have to get around to shipping this one to the GWT committers, but this one bit me hard.</p>
<p><span id="more-145"></span>Let&#8217;s say you have interface Driveable:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> Driveable <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> accelerate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> brake<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> tuneRadio<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Awesome. Now let&#8217;s say you have class AbstractDriveable:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">class</span> AbstractDriveable <span style="color: #000000; font-weight: bold;">implements</span> Driveable <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> accelerate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003399;">Window</span>.<span style="color: #006633;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Vroom vroom!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> brake<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003399;">Window</span>.<span style="color: #006633;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Screeeeeech!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Totally cool.  And then you love your favorite FM station in ConcreteDriveable:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ConcreteDriveable <span style="color: #000000; font-weight: bold;">extends</span> AbstractDriveable <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> tuneRadio<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003399;">Window</span>.<span style="color: #006633;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Rockin' the oldies!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Then we launch into development mode with whatever our application is, and&#8230;something explodes.</p>
<p>So we debug, and upon looking at the code that cleverly calls <code>tuneRadio</code> polymorphically &#8211; we notice that our debugger drops into a catch block for a <code>NoSuchMethodError</code>.</p>
<p>It appears that GWT seems to lose track of this common idiom &#8211; use an interface to define behavior, realize that interface on an abstract class to create default behaviors, and then strategize those behaviors in concrete implementations.</p>
<p>The workaround is simple: redeclare your unrealized interface method in the abstract class.  But this is a pretty nasty little bug.  The GWT guys know this, but it&#8217;s rather critical to GWT that it follow the practices of Java as best as possible.  Otherwise it&#8217;s YAL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2010/01/15/common-java-idiom-lousy-gwt-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Piling on Praise for Apache Wicket</title>
		<link>http://www.ryannorris.com/2009/04/13/piling-on-praise-for-apache-wicket/</link>
		<comments>http://www.ryannorris.com/2009/04/13/piling-on-praise-for-apache-wicket/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 12:20:57 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Building Better Software]]></category>
		<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.ryannorris.com/?p=66</guid>
		<description><![CDATA[I think someone finally got a web framework for Java right. While I&#8217;m still yet to try on some of the AJAX support &#8211; something that makes or breaks a web framework these days &#8211; Wicket&#8216;s clear separation of concerns and robust architecture for MVP (right, &#8216;P&#8217;, as in Model-View-Presenter) has really impressed me.  Generally [...]]]></description>
			<content:encoded><![CDATA[<p>I <strong>think </strong>someone finally got a web framework for Java right.</p>
<p>While I&#8217;m still yet to try on some of the AJAX support &#8211; something that makes or breaks a web framework these days &#8211; <a title="Wicket" href="http://wicket.apache.org" target="_blank">Wicket</a>&#8216;s clear separation of concerns and robust architecture for MV<em>P</em> (right, &#8216;P&#8217;, as in Model-View-Presenter) has really impressed me.  Generally speaking, I have not been one to embrace convention over configuration in frameworks like RoR, simply because it seems non-scalable.  But given it&#8217;s pure focus on UI and it&#8217;s total flexibility to do whatever the hell I want with my middle tier, I&#8217;m feeling that when restricted to the presentation layer &#8211; the paradigm works.  Wicket is pretty programmer-centric, so unlike RoR, you&#8217;re not going to get off the ground without some skills or a scaffolding framework like <em>Wicketopia</em>, but I&#8217;m not at all convinced this isn&#8217;t a bad thing.</p>
<p>There are a couple of things that I could get enthusiastic with around Wicket, were someone &#8211; including myself &#8211; to improve them.</p>
<ol>
<li><strong>Documentation. </strong>Look, I hate documenting things as much as the next guy &#8211; but in as much as I&#8217;ve enjoyed the fruits of my labor in Wicket, I have not enjoyed chasing down information to all ends of the globe.  I love the fact that this is working software, and the curve isn&#8217;t too steep &#8211; but try finding stuff on form validation, or the entire concept of mounting URL paths.</li>
<li><strong>Callbacks, anyone? </strong>So, forms in Wicket generally appear to be processed by the <strong>onSubmit()</strong> method of the Form class.  You override this in your child class of form.  This is the very object-oriented way of doing things, but it seems a touch limiting out of the box to not be able to register callbacks on this method.  My <strong>Form</strong> class exists so that I can have more than one of these per page, no doubt (take <em>THAT</em> ASP.NET), but I still think that I&#8217;d like to be able to actually register callback handlers as I wish in each <strong>Page</strong>, thus allowing Forms to have different behaviors dependent on where they are used.  I&#8217;m pretty sure this isn&#8217;t the 80% use case, but I still am left with only one alternative out of the box, and that&#8217;s to keep extending the class hierarchy.  It&#8217;s nice to embrace strategy pattern and all, but to me this is where we really need an observer.
<p>So I was able to fudge this myself by creating a <strong>FormSubmitListener </strong>interface, subclass <strong>Form </strong>and implement it&#8217;s <strong>onSubmit()</strong> to call the <strong>formSubmitted()</strong><em> </em>method from my new interface, it&#8217;s own implementation registered through the constructor on my <strong>Form</strong> subclass &#8211; but I think in an MVP or MVC framework, I still would like the ability to use OOP to handle the quirks of the page lifecycle (yeah, yeah &#8211; Wicket is unmanaged), but allow observers to actually handle pseudo-user events.</li>
</ol>
<p>These two things aside, I feel pretty at peace with Wicket as my web framework for Java projects going forward (sorry Seam).</p>
<p>Another note &#8211; I&#8217;m really interested in the possibilities of packaging all of the resources for the web project in the JAR file.  While WAR&#8217;s are fine for deployment, JAR&#8217;s make the application open for truly modular design.</p>
<p>Now to refresh my memory on getting JTA running in a pure servlet container&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2009/04/13/piling-on-praise-for-apache-wicket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diving back into Java, and liking it (mostly)</title>
		<link>http://www.ryannorris.com/2009/04/08/diving-back-into-java-and-liking-it-mostly/</link>
		<comments>http://www.ryannorris.com/2009/04/08/diving-back-into-java-and-liking-it-mostly/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:53:14 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Building Better Software]]></category>
		<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.ryannorris.com/?p=60</guid>
		<description><![CDATA[So for various reasons, I&#8217;ve pulled Eclipse Ganymede down and decided to check in on where Java has gone during my year-long mental hiatus in Redmond.  I have certain biases now from the land of .Net, and god help the Java world if it angers me after seeing the things I&#8217;ve seen in the last [...]]]></description>
			<content:encoded><![CDATA[<p>So for various reasons, I&#8217;ve pulled Eclipse Ganymede down and decided to check in on where Java has gone during my year-long mental hiatus in Redmond.  I have certain biases now from the land of .Net, and god help the Java world if it angers me after seeing the things I&#8217;ve seen in the last year.</p>
<p>All in all, I&#8217;m very pleased.</p>
<p><strong>The m2eclipse plugin is marvelous, finally.</strong></p>
<p>The day has finally come where I&#8217;m no longer fighting <a title="Eclipse" href="http://www.eclipse.org" target="_blank">Eclipse</a> to build projects using <a title="Maven" href="http://maven.apache.org" target="_blank">Maven</a>, as it should be.  Maven ties far too many niceties of the world together, and to not have it as the underlying, portable build tool within the IDE has always frustrated me.  The ability to quickly start a new Maven project, apply an archetype and go is fantastic.  The fact that it doesn&#8217;t require special jazz to get a WTP project up and running is even better.</p>
<p><strong>Hey look, working with my database and some JPA implementation is really easy!</strong></p>
<p>&#8230;well, almost easy.  I created a project for my middleware just using the quickstart archetype.  I was just going to throw Spring on top of it and avoid spoiling the good experience so far with EJB insanity.  The next thing I wanted to do was load up my database tables as ORM classes via Hibernate.</p>
<p>For whatever reason, this was cool on my Mac.  Project Properties&#8230;JPA Tools&#8230;Generate entities.  This is somehow not the way to do it over in windows.  So instead I tried to add JPA as a project facet.</p>
<p>My first problem was that I didn&#8217;t have Hibernate set up as my default JPA provider.  Unfortunately, you can only do this through the Maven-managed dependencies.  It has to be an Eclipse user library.  So I download the Entity Manager and wire it up into Eclipse.  Add the Java Facet (somehow <strong>not a default</strong>, probably Maven&#8217;s fault), added the JPA Facet (and am told I need to add the Utility Facet, so I do that).</p>
<p><em>Further configuration required.</em></p>
<p>Ok.  So I click into this further configuration and it reasonably wants to know how I connect to the database.  Fair enough.  I do all this, and it still won&#8217;t let me apply the change.</p>
<p>Eventually, it appears you need to add the Java project facet <em>first</em>, and then and only then can I reopen the properties page and apply the JPA facet.  A frustration point, but I figured it out.</p>
<p><strong>Hey, nothing special to get a project with the Wicket archetype running in WTP.</strong></p>
<p>I start a separate web project and use the <a title="Wicket" href="http://wicket.apache.org" target="_blank">Wicket </a>archetype, interested in tackling what looks to be a nice, lightweight UI package for Java (though it looks like <a title="Spring Framework" href="http://www.springframework.org" target="_blank">Spring </a>integration isn&#8217;t trivial &#8211; which is basically unacceptable these days).  I start the project, I add a server configuration, and deploy&#8230;</p>
<p><em>Holy crap, it works out of the box!</em></p>
<p>I have a ways to go, but things feel more turnkey with Eclipse than I&#8217;ve ever experienced.  I did up some JUnits with Mockito, and that was easy, indicating that if I were to set up Cruise or some other CI tool, I could quickly get going with a full Agile project.  Exciting stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2009/04/08/diving-back-into-java-and-liking-it-mostly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java Still Has Some Respect</title>
		<link>http://www.ryannorris.com/2009/02/10/java-still-has-some-respect/</link>
		<comments>http://www.ryannorris.com/2009/02/10/java-still-has-some-respect/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 02:32:55 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JAX-RS]]></category>
		<category><![CDATA[JEE]]></category>

		<guid isPermaLink="false">http://www.ryannorris.com/?p=44</guid>
		<description><![CDATA[Dave Rosenberg thinks Java is boring.  A lot of good things are boring, like automatic transmission.  It doesn't mean there isn't value, and it also doesn't excuse Sun from innovating.]]></description>
			<content:encoded><![CDATA[<p>A colleague sent along a note about how Dave Rosenberg feels that <a title="Sun Doesn't Respect Java" href="http://news.cnet.com/8301-13846_3-10161100-62.html?part=rss&amp;subj=news&amp;tag=2547-1_3-0-5" target="_blank">Sun Doesn&#8217;t Respect Java.</a> As I noted in a <a title="Beautifying Java Weeds" href="http://www.ryannorris.com/2009/02/09/standardizing-organic-java-development/" target="_self">post from yesterday</a>, I think there are some things to like about JAX-RS.  But as a decent JEE architect, I have some thoughts on whether Java actually is exciting anymore.</p>
<ol>
<li>Has Java gotten boring?  If you&#8217;re a web developer, Java has always been like 6AM &#8211; too early to really be interesting, too late to convince you to go back to sleep;</li>
<li>Java&#8217;s middle tier absolutely blows anything else out of the water.  I like LINQ, but comparables like ActiveRecord for RoR or PHPYii simply can&#8217;t do the things that JPA can do;</li>
<li>IoC/DI in Java, open source or JEE, is still better than anything anyone is doing today &#8211; Castle included.</li>
</ol>
<p>Dave points out that the &#8220;write-once, run anywhere&#8221; paradigm may have lost out to virtualization.  Call me when virtualization is native to all of the major OS&#8217;s, Dave.  Until then, the JVM is still the closest thing we have to a platform independent environment.</p>
<p>I&#8217;ve looked at the EE6 spec, and he&#8217;s right though.  Omitting things like Web Beans is certainly a disappointment.  The fact that we still don&#8217;t have great native dependency injection in the EE platform leaves us always falling back upon Spring.  All of these things are rather frustrating.</p>
<p>JavaFX &#8211; just terrible.  Adobe did it right with AIR, even if adoption is seemingly limited to hundreds of Twitter clients.</p>
<p>If Sun wants to start pushing the envelope instead of follwoing the leader &#8211; how about embracing a cloud computing platform through JEE?  JAX-RS is promising, but why not unify the JAX-WS and JAX-RS spec to provide a single platform for all web-based SOA?  At the very least, that would put them on par with WCF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2009/02/10/java-still-has-some-respect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unification of Java Weeds in a Standards Garden</title>
		<link>http://www.ryannorris.com/2009/02/09/standardizing-organic-java-development/</link>
		<comments>http://www.ryannorris.com/2009/02/09/standardizing-organic-java-development/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 13:56:39 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Building Better Software]]></category>
		<category><![CDATA[Services as Software]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JAX-RS]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://blog.ryannorris.com/?p=23</guid>
		<description><![CDATA[PHP Web Frameworks are certainly plentiful.  Sun has proven that even attempting to set community standards around the interfaces for frameworks of all types does little to stem the tide of homegrown solutions.  JSR-311 is yet another standard that will try to unify the community.]]></description>
			<content:encoded><![CDATA[<p>After my post the other day in relation to building proper web UI architecture in PHP, my brain reverted to thinking about the complexities of web application development in Java and how in spite of standards, the amount of organic homegrown stuff that&#8217;s out there has muddied the water to the extent that it&#8217;s difficult to separate the wheat from the chaffe.  Sun has tried it&#8217;s darndest to follow the elephant and clean up behind it, but there is an increasingly sordid history of great ideas (<a title="Hibernate" href="http://www.hibernate.org" target="_blank">Hibernate</a>, <a title="Spring Framework" href="http://www.springframework.org" target="_blank">Spring</a>) that gained enough community momentum where Sun felt that these innovative platforms and their imitators should be unified behind a single standard.  In fact, it&#8217;s increasingly difficult to find parts of Java that <strong>were</strong> invented by Sun.</p>
<p>I haven&#8217;t been architecting Java solutions for a living in nearly a year now, and last I checked the state of the world was more or less:</p>
<ul>
<li>EJB had assimilated Hibernate and other ORM solutions as something now called JPA, which was neccesary and useful to standardize;</li>
<li>EJB had also taken elements of Spring to invert the once ubiquitous <em>locator</em> pattern and adopt dependency injection as the standard for satisfying collaborator relationships.  Of course, the Sun solution aimed to solve specific problems in EJB, and had less interest in solving the more general need for standardization around DI-based application frameworks;</li>
<li>JSF was crashing and burning in the web tier, with Gavin King once again trying to pick up the pieces and simplifying the entire stack through Web Beans.</li>
</ul>
<p>So to distill it down &#8211; middleware in Java was actually a pleasurable place to work, and the web tier was still a torture chamber.</p>
<p><em>Note: I&#8217;m leaving Velocity, Struts, Spring, and Tapestry out of the mix here.  That&#8217;s not to say that there isn&#8217;t value in some of these frameworks.  Tapestry was architecturally sound but hinders rapid development.  Struts and Spring both require siginificant configuration, and Velocity is&#8230;like Smarty for PHP.  All of them did so many things differently that it would be difficult to standardize around any one of them.  Additionally, the only one that could arguably be standardized within the exiting JEE stack is Spring &#8211; which attempts to solve many of the problems of front and middle-tier integrations. </em></p>
<p>Per my post from the other day, I really feel that the age of the server-based Web UI framework is dead.  MVC will always be a necessity, but re-usable controls and architectures that try to solve all of the world&#8217;s problems with different delivery mechanisms be it HTML or JSON are at a dead end &#8211; it&#8217;s simply not scalable.  So my attention turned to an <a title="James Stracham on JAX-RS" href="http://macstrac.blogspot.com/2009/01/jax-rs-as-one-web-framework-to-rule.html" target="_blank">article by James Strachan about JSR-311</a> and how he feels it could be the standard to solve much of the worlds problems.  JSR-311 addresses the <a title="JAX-RS, Restful Services for Java" href="http://wikis.sun.com/display/Jersey/Overview+of+JAX-RS+1.0+Features" target="_blank">JAX-RS</a> standard for delivery of RESTful services.  This has long been needed from Sun given the narrow nature of the JAX-WS spec, but James has the right idea.</p>
<p><em>&#8230;Having had a horrid time using Tapestry and Hibernate together on some projects in the past, I&#8217;m kinda over the whole concept of server side UI web frameworks personally (I&#8217;m putting my flame-proof suite on now). I kinda think if you want to do complex rich web UIs, use wizards or complex flows, just use GWT or JavaScript on the client (or Flex/Flash for video or crazy highly graphical widgets) and keep the server side fairly simple and very RESTful&#8230;.</em></p>
<p>So, I&#8217;m not the only crazy one out there.  That&#8217;s comforting.  But is a standard that serves as the foundation for tools to deliver RESTful services the answer?  From an architecture perspective, I&#8217;ve always been of the mindset that RESTful services, particular with its HTTP metaphors is just a DAO pattern exposed as services.  This is a pretty fine grain for me, but as Seam in Java and LINQ in .Net are beginning to prove &#8211; the value of coarse grained business services as provided typically by Session Beans in EJB may be a bit overstated.  So, does it make sense to build web frameworks that are really geared towards SaaS, and allow frameworks like Spring or Velocity or, hell even simple XSLT &#8211; take the helm when more traditional request-response mechanisms are needed?</p>
<p>And even more so, a cursory review of the JAX-RS doesn&#8217;t really present any options for <em>consuming</em> the services produced by implementers.  That&#8217;s somewhat understandable given that the product is typically vanilla XML or JSON or Text or whatever.  When I wrote my own RESTful service implementation using Spring a few years back, I made sure that XSD was attached and available when the service was XML.  This made it easy to write JAXB clients if your consumer was another Java application.  Slowing down development by forcing homogeneous consumers to parse the response as DOM seems like a likely outcome of not having SOME way of addressing this issue.</p>
<p>Taken together, I&#8217;m on board with the idea that JSR-311 could be a good foundation for a web framework that treats the client as being smart, rather than the dumb terminal approach of the past.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2009/02/09/standardizing-organic-java-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
