<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Java and Scalability</title>
	<atom:link href="http://barelyenough.org/blog/2008/06/java-and-scalability/feed/" rel="self" type="application/rss+xml" />
	<link>http://barelyenough.org/blog/2008/06/java-and-scalability/</link>
	<description>… and there is much to be learned</description>
	<lastBuildDate>Sun, 18 Jul 2010 13:33:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: MikeD</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-66718</link>
		<dc:creator>MikeD</dc:creator>
		<pubDate>Thu, 04 Dec 2008 04:40:03 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-66718</guid>
		<description>&lt;p&gt;&quot;No language will magically make your system be able, or unable, to handle an order of magnitude increase in the number of requests.&quot;
Other than Erlang of course. ;)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>&#8220;No language will magically make your system be able, or unable, to handle an order of magnitude increase in the number of requests.&#8221;<br />
Other than Erlang of course. ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JavaSPEKTRUM Blogosphäre &#187; Blog Archiv &#187; Blogosphäre (aus JavaSPEKTRUM 04/08)</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-58535</link>
		<dc:creator>JavaSPEKTRUM Blogosphäre &#187; Blog Archiv &#187; Blogosphäre (aus JavaSPEKTRUM 04/08)</dc:creator>
		<pubDate>Fri, 18 Jul 2008 16:29:28 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-58535</guid>
		<description>&lt;p&gt;[...] sich mit dem – vermeintlichen – Verhältnis von Programmiersprache und Skalierbarkeit. Peter Williams bringt es auf den Punkt: Java skaliert nicht besser oder schlechter als jede andere allgemein [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] sich mit dem – vermeintlichen – Verhältnis von Programmiersprache und Skalierbarkeit. Peter Williams bringt es auf den Punkt: Java skaliert nicht besser oder schlechter als jede andere allgemein [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Frank</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-58214</link>
		<dc:creator>Greg Frank</dc:creator>
		<pubDate>Tue, 15 Jul 2008 15:17:32 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-58214</guid>
		<description>&lt;p&gt;Being an admittedly java-centric developer and a scalability nut i had to chime in on this.&lt;/p&gt;

&lt;p&gt;I would say that the java language itself has nothing to do with scalability (Ron&#039;s comments about garbage collection were outdated and haven&#039;t been seen by me in post 1.4 JVMS on multi-gigabyte production clusters)  I do agree that the J2EE server mindset guides people into design patterns that are at a medium-level of opportunity for scalability.&lt;/p&gt;

&lt;p&gt;However, almost everyone accepts that old-school J2EE is dead and the unstoppable trend of inversion of control has caused a dismantling of the once immutable bundle known as &quot;the server&quot;&lt;/p&gt;

&lt;p&gt;Specific to scalability, this destruction of the monolithic server has lead to wider usage of such toolkits as: jgroups, ehcache and terracotta.  Those toolkits encourage average architects to use the sophisticated networking design patterns formerly applied only by the highly experienced engineers who developed clustered server products.  Today, jgroups is actually used internally by Jboss to implement their clustering model.&lt;/p&gt;

&lt;p&gt;I would say that the true force pushing scalability is the java community itself.  Perhaps we have to thank Sun for fostering that community even though they did it for their own marketing purposes.  In any case, java is merely a convenient and commonly spoken language that allows for the formation of a global community.  Like it or not, Sun&#039;s tight control of the java spec forces the community to stop debating the language internals and start debating sophisticated design patterns such as those that promote scalability.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Being an admittedly java-centric developer and a scalability nut i had to chime in on this.</p>
<p>I would say that the java language itself has nothing to do with scalability (Ron&#8217;s comments about garbage collection were outdated and haven&#8217;t been seen by me in post 1.4 JVMS on multi-gigabyte production clusters)  I do agree that the J2EE server mindset guides people into design patterns that are at a medium-level of opportunity for scalability.</p>
<p>However, almost everyone accepts that old-school J2EE is dead and the unstoppable trend of inversion of control has caused a dismantling of the once immutable bundle known as &#8220;the server&#8221;</p>
<p>Specific to scalability, this destruction of the monolithic server has lead to wider usage of such toolkits as: jgroups, ehcache and terracotta.  Those toolkits encourage average architects to use the sophisticated networking design patterns formerly applied only by the highly experienced engineers who developed clustered server products.  Today, jgroups is actually used internally by Jboss to implement their clustering model.</p>
<p>I would say that the true force pushing scalability is the java community itself.  Perhaps we have to thank Sun for fostering that community even though they did it for their own marketing purposes.  In any case, java is merely a convenient and commonly spoken language that allows for the formation of a global community.  Like it or not, Sun&#8217;s tight control of the java spec forces the community to stop debating the language internals and start debating sophisticated design patterns such as those that promote scalability.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ron</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-57063</link>
		<dc:creator>Ron</dc:creator>
		<pubDate>Wed, 02 Jul 2008 19:54:49 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-57063</guid>
		<description>&lt;p&gt;Actually Java applications are generally less rather than more scalable than other comparable languages, particularly C++.  This is because as memory requirements exceed around 1 Gbyte (admittedly we are talking LARGE programs here) the garbage collection pauses ... the time when all Java application threads are suspended to allow the JVM garbage collection threads to collect all references so they can defragment memory ... grows into multiple minutes.  Lots of bad things happen then (heartbeat detection assumes the system has failed and removes resources, web site customers call it a day, stock trade opportunities are missed, etc.).&lt;/p&gt;

&lt;p&gt;As a result, huge response latency times effectively puts a limit on available memory, which in turn puts a limit on ultimate Java application scalability when compared to C++ (of course, with C++ you have to be careful to give the memory back).  In fact, the Real Time Java API extensions were developed as a way of addressing this problem (creating what is in effect thread local heaps) but this requires code modification ... and if done wrong, can actually slow down overall performance.&lt;/p&gt;

&lt;p&gt;One alternative (from Azul Systems) transparently redeploys unmodified Java applications to what is effectively a Java Compute Appliance, allowing them to scale to hundreds of Gbytes of memory with negligible GC pauses ... but this is only possible because Azul exploits some special hardware instructions in their box.  Another is to horizontally scale out an application (all stock trades A-C go to system #1, D-F go to system #2, etc.) so memory requirements for any one instance are under control.  But this results in server sprawl, crashing instances when peak loading spikes (stock B split creating lots of activity) involved synchronization on multi-stock trades, special factoring of the data set into parallel instance caches, etc.&lt;/p&gt;

&lt;p&gt;Scaling Java applications past a certain point ain’t easy.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Actually Java applications are generally less rather than more scalable than other comparable languages, particularly C++.  This is because as memory requirements exceed around 1 Gbyte (admittedly we are talking LARGE programs here) the garbage collection pauses &#8230; the time when all Java application threads are suspended to allow the JVM garbage collection threads to collect all references so they can defragment memory &#8230; grows into multiple minutes.  Lots of bad things happen then (heartbeat detection assumes the system has failed and removes resources, web site customers call it a day, stock trade opportunities are missed, etc.).</p>
<p>As a result, huge response latency times effectively puts a limit on available memory, which in turn puts a limit on ultimate Java application scalability when compared to C++ (of course, with C++ you have to be careful to give the memory back).  In fact, the Real Time Java API extensions were developed as a way of addressing this problem (creating what is in effect thread local heaps) but this requires code modification &#8230; and if done wrong, can actually slow down overall performance.</p>
<p>One alternative (from Azul Systems) transparently redeploys unmodified Java applications to what is effectively a Java Compute Appliance, allowing them to scale to hundreds of Gbytes of memory with negligible GC pauses &#8230; but this is only possible because Azul exploits some special hardware instructions in their box.  Another is to horizontally scale out an application (all stock trades A-C go to system #1, D-F go to system #2, etc.) so memory requirements for any one instance are under control.  But this results in server sprawl, crashing instances when peak loading spikes (stock B split creating lots of activity) involved synchronization on multi-stock trades, special factoring of the data set into parallel instance caches, etc.</p>
<p>Scaling Java applications past a certain point ain’t easy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jud Valeski</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-55470</link>
		<dc:creator>Jud Valeski</dc:creator>
		<pubDate>Wed, 18 Jun 2008 00:44:56 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-55470</guid>
		<description>&lt;p&gt;scale is always such a relative term. so many factors have to be taken into account when &quot;scaling&quot; a system. requests/sec, effective use of CPU cycles, memory usage, horiz vs. vertical, etc etc.&lt;/p&gt;

&lt;p&gt;developer liquidity is a major factor as well. you have to look at the marketplace and grab a toolset/language/framework that lots of people know, so your env. can evolve with the ecosystem in which it lives.&lt;/p&gt;

&lt;p&gt;I often find folks talking about insert-language-here and &quot;scale&quot; doing so just as a conversational starting point rather than a definitive statement.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>scale is always such a relative term. so many factors have to be taken into account when &#8220;scaling&#8221; a system. requests/sec, effective use of CPU cycles, memory usage, horiz vs. vertical, etc etc.</p>
<p>developer liquidity is a major factor as well. you have to look at the marketplace and grab a toolset/language/framework that lots of people know, so your env. can evolve with the ecosystem in which it lives.</p>
<p>I often find folks talking about insert-language-here and &#8220;scale&#8221; doing so just as a conversational starting point rather than a definitive statement.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alain Penders</title>
		<link>http://barelyenough.org/blog/2008/06/java-and-scalability/comment-page-1/#comment-55453</link>
		<dc:creator>Alain Penders</dc:creator>
		<pubDate>Tue, 17 Jun 2008 19:04:22 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/?p=352#comment-55453</guid>
		<description>&lt;p&gt;Languages in general don&#039;t affect scalability all that much.  Yes, the actual execution speed of the language can determine the amount of CPU power (machines) you need to accomplish the job, but it won&#039;t determine whether or not your system is capable of running on that number of machines and deliver the required performance.  Like you said, that&#039;s part of the architecture.&lt;/p&gt;

&lt;p&gt;Java - however - is not just a language, it&#039;s also the huge collection of frameworks.  &quot;Java&quot; is the equivalent of both Ruby and Rails.  And while neither the language nor the frameworks are perfect, they have been used to build extremely scalable systems for about a decade now.  People call Java scalable not because it&#039;s better suitable for building scalable systems, but because how to build scalable systems with it is well understood and the components you need to do so are widely available.  Not only are those components widely available, they are available from multiple vendors -- some free, some commercial -- so you&#039;re never locked in, an aspect that&#039;s extremely valuable when producing commercial software.&lt;/p&gt;

&lt;p&gt;I totally believe that you can build equally scalable applications using Ruby &amp; Rails, but how to do that is not widely understood.  Even if you can hire someone who understands it, you can&#039;t replace the person if he leaves.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Languages in general don&#8217;t affect scalability all that much.  Yes, the actual execution speed of the language can determine the amount of CPU power (machines) you need to accomplish the job, but it won&#8217;t determine whether or not your system is capable of running on that number of machines and deliver the required performance.  Like you said, that&#8217;s part of the architecture.</p>
<p>Java &#8211; however &#8211; is not just a language, it&#8217;s also the huge collection of frameworks.  &#8220;Java&#8221; is the equivalent of both Ruby and Rails.  And while neither the language nor the frameworks are perfect, they have been used to build extremely scalable systems for about a decade now.  People call Java scalable not because it&#8217;s better suitable for building scalable systems, but because how to build scalable systems with it is well understood and the components you need to do so are widely available.  Not only are those components widely available, they are available from multiple vendors &#8212; some free, some commercial &#8212; so you&#8217;re never locked in, an aspect that&#8217;s extremely valuable when producing commercial software.</p>
<p>I totally believe that you can build equally scalable applications using Ruby &amp; Rails, but how to do that is not widely understood.  Even if you can hire someone who understands it, you can&#8217;t replace the person if he leaves.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
