<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Victims Of J2EE Success</title>
	<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/</link>
	<description></description>
	<pubDate>Sat, 05 Jul 2008 08:35:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: David Peterson</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-651</link>
		<dc:creator>David Peterson</dc:creator>
		<pubDate>Thu, 17 May 2007 07:35:41 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-651</guid>
		<description>Shahzad -- Whilst I would agree with you that J2EE was an improvement over predecessor technologies for enterprise distributed programming (RPC and CORBA as perhaps the most obvious, but also COM/DCOM in the MS space as well as earlier middleware standards such as DCE also), I would take issue with your characterisation of Dan's post as "J2EE bashing". It is true that there has been a lot of anti-J2EE sentiment, especially since Spring/Hibernate started to come seriously onto the scene, but I don't know why you would (seem to) feel that this is a bad thing.

Frankly, the rise of Spring and Hibernate (and Toplink, and now JPA as part of the EJB3 spec) was really a grass-roots developer community response to extremely serious issues of sorely lacking functionality (AOP, DI etc) and serious performance limitations (EJB2) within the J2EE architectural stack. Spring and Hibernate were born from the painful experience of software developers and architects who built real systems and found that the (so-called) "J2EE Blueprints" just didn't cut the mustard in a real-world scenario (especially a demanding transaction processing one).

In fact, as a former CORBA developer yourself (as you state in your post), I would have thought you would have been well positioned to observe what is (in my view) the *fundamental* limitation of the early J2EE design model: its sufferance (to a large, and now thankfully a decreasing extent) from *design by committee* - the very same affliction that basically killed CORBA. The whole open-source "build first, standardise later" approach adopted by Spring / Hibernate, etc is the very antithesis of the former approach. Distributed innovation and "best technology wins" has finally started to trump "most powerful / influential vendor" and the results are (blissfully!) finally beginning to show.

So I don't think Dan was intentionally "J2EE bashing" in his post - but he was questioning the depth of knowledge held by the very many people now bandying "J2EE" (and related "techologies" e.g. JSP, JPA, JNDI, etc) around on their resumes. All distributed systems, Java or otherwise, are governed by the same underlying rules of computational theory. Many software developers would do well to read a good text on distributed systems (perhaps Birman's latest book "Distributed Systems" or the slightly older one of the same name by van Steen and Tanenbaum) before getting too bogged down in reading vendor whitepapers or "specification" documents.

Dave</description>
		<content:encoded><![CDATA[<p>Shahzad &#8212; Whilst I would agree with you that J2EE was an improvement over predecessor technologies for enterprise distributed programming (RPC and CORBA as perhaps the most obvious, but also COM/DCOM in the MS space as well as earlier middleware standards such as DCE also), I would take issue with your characterisation of Dan&#8217;s post as &#8220;J2EE bashing&#8221;. It is true that there has been a lot of anti-J2EE sentiment, especially since Spring/Hibernate started to come seriously onto the scene, but I don&#8217;t know why you would (seem to) feel that this is a bad thing.</p>
<p>Frankly, the rise of Spring and Hibernate (and Toplink, and now JPA as part of the EJB3 spec) was really a grass-roots developer community response to extremely serious issues of sorely lacking functionality (AOP, DI etc) and serious performance limitations (EJB2) within the J2EE architectural stack. Spring and Hibernate were born from the painful experience of software developers and architects who built real systems and found that the (so-called) &#8220;J2EE Blueprints&#8221; just didn&#8217;t cut the mustard in a real-world scenario (especially a demanding transaction processing one).</p>
<p>In fact, as a former CORBA developer yourself (as you state in your post), I would have thought you would have been well positioned to observe what is (in my view) the *fundamental* limitation of the early J2EE design model: its sufferance (to a large, and now thankfully a decreasing extent) from *design by committee* - the very same affliction that basically killed CORBA. The whole open-source &#8220;build first, standardise later&#8221; approach adopted by Spring / Hibernate, etc is the very antithesis of the former approach. Distributed innovation and &#8220;best technology wins&#8221; has finally started to trump &#8220;most powerful / influential vendor&#8221; and the results are (blissfully!) finally beginning to show.</p>
<p>So I don&#8217;t think Dan was intentionally &#8220;J2EE bashing&#8221; in his post - but he was questioning the depth of knowledge held by the very many people now bandying &#8220;J2EE&#8221; (and related &#8220;techologies&#8221; e.g. JSP, JPA, JNDI, etc) around on their resumes. All distributed systems, Java or otherwise, are governed by the same underlying rules of computational theory. Many software developers would do well to read a good text on distributed systems (perhaps Birman&#8217;s latest book &#8220;Distributed Systems&#8221; or the slightly older one of the same name by van Steen and Tanenbaum) before getting too bogged down in reading vendor whitepapers or &#8220;specification&#8221; documents.</p>
<p>Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shahzad Bhatti &#187; Blog Archive &#187; J2EE Bashing</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-650</link>
		<dc:creator>Shahzad Bhatti &#187; Blog Archive &#187; J2EE Bashing</dc:creator>
		<pubDate>Wed, 16 May 2007 14:32:52 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-650</guid>
		<description>[...] Ever since Spring/Hibernate came about in early 2000, there has been increasingly bashing on J2EE. I saw another post on similar topic from Dan CresWell. He questions using J2EE to mean many things and using J2EE in resumes. I have been doing distributed programming for over ten years from BSD sockets, to Java, CORBA, EJB, JINI, Messaging, etc. I found J2EE containers were a great improvements over their predecessors. Though, I agree that J2EE umbrella means a lot of things to different people, and we should be using real words to describe enterprise level concerns such as deployment, monitoring, networking, concurrency, etc. For any large enterprise systems, the need for monitoring, scaling, security and availability are very critical. J2EE created a abstraction for developers for writing enterprise and distributed programming by implementing internal threading, transactions, security, remoting, and monitoring (JMX). Needless to say, it was mistake to create that abstraction layer that forced developers to forget about the realities of underlying system. However, things like monitoring, hot deployment, security and high availability should only be managed in a container or centralized way. These problems are really hard and I have not seen any reliable solutions outside commercial space. These problems are best handled at architecture level rather than at implementation level such as using J2EE. I still see large organizations use J2EE in one way or the other. Though, they may be using some in-house frameworks for monitoring, deployment, etc. For example, many large companies use many stateless services, which are managed independently. In a lot of cases, a database or memory server is used for state. Such architecture can lend itself easily for high availability. For example, at Amazon or Ebay, the site is backed by many many services and at any time, one or more service may be restarting, but it does not effect most of the users. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Ever since Spring/Hibernate came about in early 2000, there has been increasingly bashing on J2EE. I saw another post on similar topic from Dan CresWell. He questions using J2EE to mean many things and using J2EE in resumes. I have been doing distributed programming for over ten years from BSD sockets, to Java, CORBA, EJB, JINI, Messaging, etc. I found J2EE containers were a great improvements over their predecessors. Though, I agree that J2EE umbrella means a lot of things to different people, and we should be using real words to describe enterprise level concerns such as deployment, monitoring, networking, concurrency, etc. For any large enterprise systems, the need for monitoring, scaling, security and availability are very critical. J2EE created a abstraction for developers for writing enterprise and distributed programming by implementing internal threading, transactions, security, remoting, and monitoring (JMX). Needless to say, it was mistake to create that abstraction layer that forced developers to forget about the realities of underlying system. However, things like monitoring, hot deployment, security and high availability should only be managed in a container or centralized way. These problems are really hard and I have not seen any reliable solutions outside commercial space. These problems are best handled at architecture level rather than at implementation level such as using J2EE. I still see large organizations use J2EE in one way or the other. Though, they may be using some in-house frameworks for monitoring, deployment, etc. For example, many large companies use many stateless services, which are managed independently. In a lot of cases, a database or memory server is used for state. Such architecture can lend itself easily for high availability. For example, at Amazon or Ebay, the site is backed by many many services and at any time, one or more service may be restarting, but it does not effect most of the users. [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pragmatic Dictator » Blog Archive » Victims Of J2EE Success &#171; A Frog in the Valley Internet Stream Pulse</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-649</link>
		<dc:creator>Pragmatic Dictator » Blog Archive » Victims Of J2EE Success &#171; A Frog in the Valley Internet Stream Pulse</dc:creator>
		<pubDate>Sat, 12 May 2007 04:25:54 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-649</guid>
		<description>[...] Pragmatic Dictator » Blog Archive » Victims Of J2EE Success [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Pragmatic Dictator » Blog Archive » Victims Of J2EE Success [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Peterson</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-648</link>
		<dc:creator>David Peterson</dc:creator>
		<pubDate>Thu, 03 May 2007 11:03:13 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-648</guid>
		<description>Okay last one (I promise!) - a rejoinder to Yury:

Yury - you cite the example of eBay and their home-grown transaction management approach, but do you understand _why_ eBay made those technical decisions? Martin Fowler has a write-up on eBay's "transactionless" approach (http://www.martinfowler.com/bliki/Transactionless.html) and Dan Pritchett's InfoQ speaker page (with links to presentations) to which he refers is here: http://qcon.infoq.com/qcon/speakers/show_speaker.jsp?oid=175.

You do state in your post that "you can hardly understand the explanation" so I hope the above gives you some information. Maybe it's best described like that old country &#38; western song "Freedom ain't free" - except we can say instead that: "2PC ain't free" ;) (2PC = two-phase commit) It isn't, not for you, me or eBay. And when you're running tens of thousands of database operations per second, the overhead of strict isolation and strong ACID compliance can begin to hurt!

And while I'm on about 2PC, check Gregor's article, originally entitled "Starbucks doesn't use 2 phase commit". Quite illuminating :)

http://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf

In fact, Gregor's whole site is worth a long read. He was one of the most impressive speakers (IMO) at SpringOne 2006 in Antwerp.

Okay, stopping now - got _real_ (i.e. "for food") work to do!

Dave</description>
		<content:encoded><![CDATA[<p>Okay last one (I promise!) - a rejoinder to Yury:</p>
<p>Yury - you cite the example of eBay and their home-grown transaction management approach, but do you understand _why_ eBay made those technical decisions? Martin Fowler has a write-up on eBay&#8217;s &#8220;transactionless&#8221; approach (http://www.martinfowler.com/bliki/Transactionless.html) and Dan Pritchett&#8217;s InfoQ speaker page (with links to presentations) to which he refers is here: <a href="http://qcon.infoq.com/qcon/speakers/show_speaker.jsp?oid=175." rel="nofollow">http://qcon.infoq.com/qcon/speakers/show_speaker.jsp?oid=175.</a></p>
<p>You do state in your post that &#8220;you can hardly understand the explanation&#8221; so I hope the above gives you some information. Maybe it&#8217;s best described like that old country &amp; western song &#8220;Freedom ain&#8217;t free&#8221; - except we can say instead that: &#8220;2PC ain&#8217;t free&#8221; <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> (2PC = two-phase commit) It isn&#8217;t, not for you, me or eBay. And when you&#8217;re running tens of thousands of database operations per second, the overhead of strict isolation and strong ACID compliance can begin to hurt!</p>
<p>And while I&#8217;m on about 2PC, check Gregor&#8217;s article, originally entitled &#8220;Starbucks doesn&#8217;t use 2 phase commit&#8221;. Quite illuminating <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf" rel="nofollow">http://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf</a></p>
<p>In fact, Gregor&#8217;s whole site is worth a long read. He was one of the most impressive speakers (IMO) at SpringOne 2006 in Antwerp.</p>
<p>Okay, stopping now - got _real_ (i.e. &#8220;for food&#8221;) work to do!</p>
<p>Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Peterson</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-647</link>
		<dc:creator>David Peterson</dc:creator>
		<pubDate>Thu, 03 May 2007 10:46:00 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-647</guid>
		<description>To Jorge -

Agree with your sentiments. Just expressed something similar in email to Dan, part of which I will take the liberty of repeating below: 

My little secret  advice for finding a good developer is to look for one who programs in at least one "interesting" language, where "interesting" is defined to be one of: Perl (decreasingly, but it was my interesting language for a long while so I'll include it), Python (the new sweet spot it seems), Ruby, Haskell, Erlang, Concurrent Clean, Stackless Python, etc. This tells you (at least) two things about the person: (1) the person is familiar with (1) the idea of learning a language "for fun" - which in turn tells you a lot about their motivations to be in the industry, and (2) that they have been exposed to programming ideas outside of the conventional "narrow box" thinking of C-like (yes, Java) statically typed procedural languages.

Now that doesn't mean you're expecting the person to be coding functors, monads, closures and higher order functions ("for food", i.e. paid day-job) all day long, but take a bet that the kind of person who has been exposed to these concepts, *and* can also code a "day job language" like Java/J2EE is likely to be a lot better hire than someone who has not.


I also know what you mean about the "arse-about application" anti-pattern. Because the "servlet container" is the canonical "core" of the environment in the eyes of the (inexperienced) architect, they go ahead and build the whole damn app inside the thing. The app gets started via a ContextLoaderListener hook or some similar bullshit, and if you want to refresh some aspect of the UI contained in a servlet or jsp (you do have run-time compilation switched off for performance, right? lol) then it's a matter of taking the whole damn thing down to do so. Truly crazy stuff, but it comes with the territory it seems. Clearly a separation of concerns argument would have the UI tier and the processing tier in separate application contexts (and the processing tier not, ideally, running inside a J2EE app-server enviironment at all). I think the Spring guys, Adrian Colyer in particular, are starting to head this way with the talk of OSGI support and integration, but there is some way to go just yet.

-- Dave</description>
		<content:encoded><![CDATA[<p>To Jorge -</p>
<p>Agree with your sentiments. Just expressed something similar in email to Dan, part of which I will take the liberty of repeating below: </p>
<p>My little secret  advice for finding a good developer is to look for one who programs in at least one &#8220;interesting&#8221; language, where &#8220;interesting&#8221; is defined to be one of: Perl (decreasingly, but it was my interesting language for a long while so I&#8217;ll include it), Python (the new sweet spot it seems), Ruby, Haskell, Erlang, Concurrent Clean, Stackless Python, etc. This tells you (at least) two things about the person: (1) the person is familiar with (1) the idea of learning a language &#8220;for fun&#8221; - which in turn tells you a lot about their motivations to be in the industry, and (2) that they have been exposed to programming ideas outside of the conventional &#8220;narrow box&#8221; thinking of C-like (yes, Java) statically typed procedural languages.</p>
<p>Now that doesn&#8217;t mean you&#8217;re expecting the person to be coding functors, monads, closures and higher order functions (&#8221;for food&#8221;, i.e. paid day-job) all day long, but take a bet that the kind of person who has been exposed to these concepts, *and* can also code a &#8220;day job language&#8221; like Java/J2EE is likely to be a lot better hire than someone who has not.</p>
<p>I also know what you mean about the &#8220;arse-about application&#8221; anti-pattern. Because the &#8220;servlet container&#8221; is the canonical &#8220;core&#8221; of the environment in the eyes of the (inexperienced) architect, they go ahead and build the whole damn app inside the thing. The app gets started via a ContextLoaderListener hook or some similar bullshit, and if you want to refresh some aspect of the UI contained in a servlet or jsp (you do have run-time compilation switched off for performance, right? lol) then it&#8217;s a matter of taking the whole damn thing down to do so. Truly crazy stuff, but it comes with the territory it seems. Clearly a separation of concerns argument would have the UI tier and the processing tier in separate application contexts (and the processing tier not, ideally, running inside a J2EE app-server enviironment at all). I think the Spring guys, Adrian Colyer in particular, are starting to head this way with the talk of OSGI support and integration, but there is some way to go just yet.</p>
<p>&#8211; Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge Campos</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-646</link>
		<dc:creator>Jorge Campos</dc:creator>
		<pubDate>Thu, 03 May 2007 03:07:47 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-646</guid>
		<description>I've been looking for a developer for the past 4 months and really it is not easy to find a good one (i.e. knowing threading, protocols, persistence, scalability, object theory and other "basic" concepts).
During my interviews of all of the senior developers, designers and architects I got one remark that was really representative of the state of the market today and the impact of the J2EE way of doing things. The remark was after I asked this "architect" about multithreaded programming, he said "I leave that for the people that know the stuff" refering that he used libraries or app servers instead of taking care of that part of the application.
I agree that you shouldn't reinvent the wheel, but if you are a car architect you should know why wheels are made that way and which wheel type to use. AND if you need to build a wheel, then  at least you where to start.
Nowadays market is full of people that apply recipes, not knowing if the recipe is appropriate for your needs. (If all you have is a hammer then everything looks like a nail).

I almost forgot, apparently if you use Tomcat to put a couple of JSPs then you're building a J2EE application and Tomcat is an application server. Back in the old days (1999)  Tomcat was a servlet container.

I know of a couple of aberrant architectures because of doing it in an app server (aka Tomcat). The application is a server that listens for SMS through a SMPP channel, that's the main purpose, but since the application had a web service interface to query for transactions then someone decided to transform that into a web application!!! So now the server is embedded in Tomcat instead of embedding Jetty or Simple within the server!!!

We develop gateways and systems that interconnect other systems, an app server is too much, too bloated for our needs, we need control, we need to know what's going on in our application.

Sorry for the long post, but it's kind of comforting to see that there are people somewhere that think as I do and have the same problems as I do.

If you find a way to attract real devs, please share it with us. I will do the same if I succeed.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been looking for a developer for the past 4 months and really it is not easy to find a good one (i.e. knowing threading, protocols, persistence, scalability, object theory and other &#8220;basic&#8221; concepts).<br />
During my interviews of all of the senior developers, designers and architects I got one remark that was really representative of the state of the market today and the impact of the J2EE way of doing things. The remark was after I asked this &#8220;architect&#8221; about multithreaded programming, he said &#8220;I leave that for the people that know the stuff&#8221; refering that he used libraries or app servers instead of taking care of that part of the application.<br />
I agree that you shouldn&#8217;t reinvent the wheel, but if you are a car architect you should know why wheels are made that way and which wheel type to use. AND if you need to build a wheel, then  at least you where to start.<br />
Nowadays market is full of people that apply recipes, not knowing if the recipe is appropriate for your needs. (If all you have is a hammer then everything looks like a nail).</p>
<p>I almost forgot, apparently if you use Tomcat to put a couple of JSPs then you&#8217;re building a J2EE application and Tomcat is an application server. Back in the old days (1999)  Tomcat was a servlet container.</p>
<p>I know of a couple of aberrant architectures because of doing it in an app server (aka Tomcat). The application is a server that listens for SMS through a SMPP channel, that&#8217;s the main purpose, but since the application had a web service interface to query for transactions then someone decided to transform that into a web application!!! So now the server is embedded in Tomcat instead of embedding Jetty or Simple within the server!!!</p>
<p>We develop gateways and systems that interconnect other systems, an app server is too much, too bloated for our needs, we need control, we need to know what&#8217;s going on in our application.</p>
<p>Sorry for the long post, but it&#8217;s kind of comforting to see that there are people somewhere that think as I do and have the same problems as I do.</p>
<p>If you find a way to attract real devs, please share it with us. I will do the same if I succeed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gabriel</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-645</link>
		<dc:creator>Gabriel</dc:creator>
		<pubDate>Wed, 02 May 2007 18:05:07 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-645</guid>
		<description>The problem is that J2EE covers a way smaller niche than everybody seems to believe (probably due to marketing) that leaves the other niches "unattended" due to lack of hype :-)
Even new frameworks appeared to cover the difference between what people think J2EE should  do and  what actually does, but still the focus is J2EE.

As always, one must use the right tool for the problem...</description>
		<content:encoded><![CDATA[<p>The problem is that J2EE covers a way smaller niche than everybody seems to believe (probably due to marketing) that leaves the other niches &#8220;unattended&#8221; due to lack of hype <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Even new frameworks appeared to cover the difference between what people think J2EE should  do and  what actually does, but still the focus is J2EE.</p>
<p>As always, one must use the right tool for the problem&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Creswell</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-642</link>
		<dc:creator>Dan Creswell</dc:creator>
		<pubDate>Wed, 02 May 2007 07:57:52 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-642</guid>
		<description>To David Peterson,

Spot on with the FLP thing - one nit pick which is that Patterson should be Paterson (at least according to all the history I can find) though there are mis-spellings around the web.

So I owe you some beer tokens - I sometimes get to Sydney and If you're ever in the UK I'm buying.

Good stuff,

Dan.</description>
		<content:encoded><![CDATA[<p>To David Peterson,</p>
<p>Spot on with the FLP thing - one nit pick which is that Patterson should be Paterson (at least according to all the history I can find) though there are mis-spellings around the web.</p>
<p>So I owe you some beer tokens - I sometimes get to Sydney and If you&#8217;re ever in the UK I&#8217;m buying.</p>
<p>Good stuff,</p>
<p>Dan.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Creswell</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-641</link>
		<dc:creator>Dan Creswell</dc:creator>
		<pubDate>Wed, 02 May 2007 07:53:52 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-641</guid>
		<description>Hi Steve,

"I think I’ve been a victim of J2EE success"

It sounds like you're sorting out a cure though :)

Seriously just remember it's not just about the technology (though I think Python and Django are worth spending time with) it's the thinking - your design philosophy, your architectural approach, taste, simplicity, pragmatism, a global view that covers the whole lifecycle including deployment, treating ops as customers etc.

Good luck!

Dan,</description>
		<content:encoded><![CDATA[<p>Hi Steve,</p>
<p>&#8220;I think I’ve been a victim of J2EE success&#8221;</p>
<p>It sounds like you&#8217;re sorting out a cure though <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Seriously just remember it&#8217;s not just about the technology (though I think Python and Django are worth spending time with) it&#8217;s the thinking - your design philosophy, your architectural approach, taste, simplicity, pragmatism, a global view that covers the whole lifecycle including deployment, treating ops as customers etc.</p>
<p>Good luck!</p>
<p>Dan,</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Peterson</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-639</link>
		<dc:creator>David Peterson</dc:creator>
		<pubDate>Wed, 02 May 2007 07:42:42 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-639</guid>
		<description>Oh, and to the guy again: Sorry I should have explained that F, L and P are the first letters of the authors' surnames; (Michael) Fisher, (Nancy) Lynch and (Michael) Patterson. (Note not _David_ Patterson of operating systems book fame. Some people seem to confuse the two, I don't know why).

-- D.</description>
		<content:encoded><![CDATA[<p>Oh, and to the guy again: Sorry I should have explained that F, L and P are the first letters of the authors&#8217; surnames; (Michael) Fisher, (Nancy) Lynch and (Michael) Patterson. (Note not _David_ Patterson of operating systems book fame. Some people seem to confuse the two, I don&#8217;t know why).</p>
<p>&#8211; D.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Peterson</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-638</link>
		<dc:creator>David Peterson</dc:creator>
		<pubDate>Wed, 02 May 2007 07:40:18 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-638</guid>
		<description>To the guy who who asked earlier about FLP:

I think this is what you're after: http://portal.acm.org/citation.cfm?id=214121

FLP is a classic paper on impossibility of consensus in distributed systems.


To Dan:

Agree 100% with your post. Quite spot on, though you seem to have stirred up the Java-monkeys at TSS just a little ;)


-- Dave</description>
		<content:encoded><![CDATA[<p>To the guy who who asked earlier about FLP:</p>
<p>I think this is what you&#8217;re after: <a href="http://portal.acm.org/citation.cfm?id=214121" rel="nofollow">http://portal.acm.org/citation.cfm?id=214121</a></p>
<p>FLP is a classic paper on impossibility of consensus in distributed systems.</p>
<p>To Dan:</p>
<p>Agree 100% with your post. Quite spot on, though you seem to have stirred up the Java-monkeys at TSS just a little <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&#8211; Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-637</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Tue, 01 May 2007 17:27:12 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-637</guid>
		<description>I think I've been a victim of J2EE success. It's my own darned fault, but I see now where I got away from a more productive path.

J2EE was supposed to solve all the hard problems for developers. The major ones. Transactions, security, remoting. That is fine. But for 95% of applications, this kind of architecture is overkill. It was sold as something you do so that you'll be able to scale in the future. However, the fact that the biggest sites are moving away from J2EE at the super-high end tells me something: J2EE is not necessary at that scale.

So J2EE is now not required at the high end, and a pain at the low end. Is there a sweet spot in the middle? I'm not sure.

I'm learning Python and Django. I'm learning more about Unix. For too long I've just been staring at the Java JSRs and I didn't understand that when doing maintenance, Operations and Reporting have to be easy.</description>
		<content:encoded><![CDATA[<p>I think I&#8217;ve been a victim of J2EE success. It&#8217;s my own darned fault, but I see now where I got away from a more productive path.</p>
<p>J2EE was supposed to solve all the hard problems for developers. The major ones. Transactions, security, remoting. That is fine. But for 95% of applications, this kind of architecture is overkill. It was sold as something you do so that you&#8217;ll be able to scale in the future. However, the fact that the biggest sites are moving away from J2EE at the super-high end tells me something: J2EE is not necessary at that scale.</p>
<p>So J2EE is now not required at the high end, and a pain at the low end. Is there a sweet spot in the middle? I&#8217;m not sure.</p>
<p>I&#8217;m learning Python and Django. I&#8217;m learning more about Unix. For too long I&#8217;ve just been staring at the Java JSRs and I didn&#8217;t understand that when doing maintenance, Operations and Reporting have to be easy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Creswell</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-636</link>
		<dc:creator>Dan Creswell</dc:creator>
		<pubDate>Tue, 01 May 2007 15:42:34 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-636</guid>
		<description>Mike Y:

I agree with much of what you say but would contend that learning new technologies and languages is only the beginning.  Understanding higher level issues around design, architecture, performance etc is where the real value is at though it should be underpinned with a grounding in various tech.

At the moment I think too many are tech magpies that eschew the higher level thinking.  And as I've said in several comments, the motivation for the entry is to determine how best to locate those that think at or aspire to be at this higher level.</description>
		<content:encoded><![CDATA[<p>Mike Y:</p>
<p>I agree with much of what you say but would contend that learning new technologies and languages is only the beginning.  Understanding higher level issues around design, architecture, performance etc is where the real value is at though it should be underpinned with a grounding in various tech.</p>
<p>At the moment I think too many are tech magpies that eschew the higher level thinking.  And as I&#8217;ve said in several comments, the motivation for the entry is to determine how best to locate those that think at or aspire to be at this higher level.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Y</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-635</link>
		<dc:creator>Mike Y</dc:creator>
		<pubDate>Tue, 01 May 2007 14:51:45 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-635</guid>
		<description>Personally, I don't see a problem with it. Most developers can spell J2EE, but understanding it is another thing all together. I encourage my developers to know various frameworks, whether J2EE or .Net or whatever.  And I like to see various languages too. I don't care about someone being the best C programmer or Java guy. I care whether he's diverse in his tools and can pick the right tool for the right job and get things done quickly with as little heavy lifting as possible. 

I've learned a lot from J2EE. I can't think of a reason I'd want to use it today. :) But I sure did a few years back. But isn't that the case for just about every technology? You should keep pressing on, learn new techniques, languages, etc. I find that to be quite fun, challenging and rewarding.</description>
		<content:encoded><![CDATA[<p>Personally, I don&#8217;t see a problem with it. Most developers can spell J2EE, but understanding it is another thing all together. I encourage my developers to know various frameworks, whether J2EE or .Net or whatever.  And I like to see various languages too. I don&#8217;t care about someone being the best C programmer or Java guy. I care whether he&#8217;s diverse in his tools and can pick the right tool for the right job and get things done quickly with as little heavy lifting as possible. </p>
<p>I&#8217;ve learned a lot from J2EE. I can&#8217;t think of a reason I&#8217;d want to use it today. <img src='http://www.dancres.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> But I sure did a few years back. But isn&#8217;t that the case for just about every technology? You should keep pressing on, learn new techniques, languages, etc. I find that to be quite fun, challenging and rewarding.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Creswell</title>
		<link>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-634</link>
		<dc:creator>Dan Creswell</dc:creator>
		<pubDate>Tue, 01 May 2007 10:18:26 +0000</pubDate>
		<guid>http://www.dancres.org/blitzblog/2007/04/27/victim-of-j2ee-success/#comment-634</guid>
		<description>Hi Yury,

"Perhaps my level is not high enough but I can not understand why adding servers to J2EE cluster is bad for scaling?"

If your load is read-only and you can afford to be loosely consistent then adding boxes is fine.  Scenarios outside of this profile need other strategies (or at least a mixture).

"I think the problem you mention is not J2EE specific."

Indeed however J2EE's wide reach exaggerates any "bad" side effects such as "wrong-thinking" well beyond what other technologies might do.

"Instead eBay developers do things “properly” they update “important” tables first and in case of troubles they know how to clean them up. Well as J2EE developer I can hardly understend such explanation"

For a hint as to what's going on here see:

http://www.dancres.org/blitzblog/2007/04/12/when-is-a-transaction-not-a-transaction/

And check out the eBay presentation:

http://www.addsimplicity.com.nyud.net:8080/downloads/eBaySDForum2006-11-29.pdf</description>
		<content:encoded><![CDATA[<p>Hi Yury,</p>
<p>&#8220;Perhaps my level is not high enough but I can not understand why adding servers to J2EE cluster is bad for scaling?&#8221;</p>
<p>If your load is read-only and you can afford to be loosely consistent then adding boxes is fine.  Scenarios outside of this profile need other strategies (or at least a mixture).</p>
<p>&#8220;I think the problem you mention is not J2EE specific.&#8221;</p>
<p>Indeed however J2EE&#8217;s wide reach exaggerates any &#8220;bad&#8221; side effects such as &#8220;wrong-thinking&#8221; well beyond what other technologies might do.</p>
<p>&#8220;Instead eBay developers do things “properly” they update “important” tables first and in case of troubles they know how to clean them up. Well as J2EE developer I can hardly understend such explanation&#8221;</p>
<p>For a hint as to what&#8217;s going on here see:</p>
<p><a href="http://www.dancres.org/blitzblog/2007/04/12/when-is-a-transaction-not-a-transaction/" rel="nofollow">http://www.dancres.org/blitzblog/2007/04/12/when-is-a-transaction-not-a-transaction/</a></p>
<p>And check out the eBay presentation:</p>
<p><a href="http://www.addsimplicity.com.nyud.net:8080/downloads/eBaySDForum2006-11-29.pdf" rel="nofollow">http://www.addsimplicity.com.nyud.net:8080/downloads/eBaySDForum2006-11-29.pdf</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
