<?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: Beware of polyglot programming</title>
	<atom:link href="http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/</link>
	<description>Dhananjay Nene's opinions on software programming, design, architecture and the internet</description>
	<lastBuildDate>Sun, 28 Feb 2010 03:58:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Satish J</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-304</link>
		<dc:creator>Satish J</dc:creator>
		<pubDate>Sat, 12 Jul 2008 11:23:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-304</guid>
		<description>Could tag libs perfromance be affected by synchronised pooling and the container in question?
As far as using JNI - I would only use it if it was non trivial and worth the reuse.</description>
		<content:encoded><![CDATA[<p>Could tag libs perfromance be affected by synchronised pooling and the container in question?<br />
As far as using JNI &#8211; I would only use it if it was non trivial and worth the reuse.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Satish J</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-433</link>
		<dc:creator>Satish J</dc:creator>
		<pubDate>Sat, 12 Jul 2008 10:23:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-433</guid>
		<description>Could tag libs perfromance be affected by synchronised pooling and the container in question?&lt;br&gt;As far as using JNI - I would only use it if it was non trivial and worth the reuse.</description>
		<content:encoded><![CDATA[<p>Could tag libs perfromance be affected by synchronised pooling and the container in question?<br />As far as using JNI &#8211; I would only use it if it was non trivial and worth the reuse.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PuneTech &#187; Upcoming Events: Java Meet and PLUG meeting</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-245</link>
		<dc:creator>PuneTech &#187; Upcoming Events: Java Meet and PLUG meeting</dc:creator>
		<pubDate>Wed, 02 Jul 2008 13:08:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-245</guid>
		<description>[...] Beware of polyglot programming [...]</description>
		<content:encoded><![CDATA[<p>[...] Beware of polyglot programming [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-188</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Wed, 11 Jun 2008 21:53:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-188</guid>
		<description>@Daniel 

sorry I meant the docs for jruby (not ruby) since the Ruby.eval() method in the latest release seems to need an additional parameter (was it a boolean ?) and I didn&#039;t know what to pass to it.

With regards to Scala / Java integration being good and fast, if I quote from the Fractal Programming post I linked to - here&#039;s some excerpts

&lt;blockquote&gt;So you can for example use a combination of Ruby, Java and external or internal DSLs:&lt;/blockquote&gt;

and 
&lt;blockquote&gt;Or you could use Clojure, Scala and JavaScript:&lt;/blockquote&gt;

and when talking about stable layer
&lt;blockquote&gt;Languages in the stable layer can be Java, Scala or F#.&lt;/blockquote&gt;

and with regards to the dynamic layer

&lt;blockquote&gt;The languages used in this layer are mostly external DSLs, but can also include extremely DSL-friendly languages like Ruby, Python or Groovy.&lt;/blockquote&gt;

Wonder what it will be like ....</description>
		<content:encoded><![CDATA[<p>@Daniel </p>
<p>sorry I meant the docs for jruby (not ruby) since the Ruby.eval() method in the latest release seems to need an additional parameter (was it a boolean ?) and I didn&#8217;t know what to pass to it.</p>
<p>With regards to Scala / Java integration being good and fast, if I quote from the Fractal Programming post I linked to &#8211; here&#8217;s some excerpts</p>
<blockquote><p>So you can for example use a combination of Ruby, Java and external or internal DSLs:</p></blockquote>
<p>and </p>
<blockquote><p>Or you could use Clojure, Scala and JavaScript:</p></blockquote>
<p>and when talking about stable layer</p>
<blockquote><p>Languages in the stable layer can be Java, Scala or F#.</p></blockquote>
<p>and with regards to the dynamic layer</p>
<blockquote><p>The languages used in this layer are mostly external DSLs, but can also include extremely DSL-friendly languages like Ruby, Python or Groovy.</p></blockquote>
<p>Wonder what it will be like &#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-187</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Wed, 11 Jun 2008 21:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-187</guid>
		<description>@mark

I compared apples to apples. Simply replaced the tag libraries with raw java code.</description>
		<content:encoded><![CDATA[<p>@mark</p>
<p>I compared apples to apples. Simply replaced the tag libraries with raw java code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-186</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Wed, 11 Jun 2008 21:42:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-186</guid>
		<description>Ruby documentation: http://ruby-doc.org/core/

The problem with benchmarking this sort of thing on JRuby is the platform has significant overhead, both in startup time and invocation cost.  Ruby is an almost excessively dynamic language.  It lends itself extremely nicely to metaprogramming and other nifty tricks, but this dynamic nature also precludes use of the native JVM call stack for most situations.  For this reason, JRuby has quite a bit more overhead associated with a simple call than does Scala or Clojure.  Also, JRuby has a fairly large runtime (including JIT) which must be init&#039;d prior to doing anything.  Groovy has something similar, but with Scala it&#039;s all just part of the JVM.  Scala *literally* compiles down to Java-equivalent bytecode, there is no runtime or indirection layer other than the JVM itself.

I think I agree with your central point, that the use of additional languages just to be &quot;trendy&quot; introduces unnecessary overhead and performance costs, but when judiciously applied, this overhead can be acceptably mitigated or even less-costly than the same algorithm handled in the single &quot;main&quot; language.</description>
		<content:encoded><![CDATA[<p>Ruby documentation: <a href="http://ruby-doc.org/core/" rel="nofollow">http://ruby-doc.org/core/</a></p>
<p>The problem with benchmarking this sort of thing on JRuby is the platform has significant overhead, both in startup time and invocation cost.  Ruby is an almost excessively dynamic language.  It lends itself extremely nicely to metaprogramming and other nifty tricks, but this dynamic nature also precludes use of the native JVM call stack for most situations.  For this reason, JRuby has quite a bit more overhead associated with a simple call than does Scala or Clojure.  Also, JRuby has a fairly large runtime (including JIT) which must be init&#8217;d prior to doing anything.  Groovy has something similar, but with Scala it&#8217;s all just part of the JVM.  Scala *literally* compiles down to Java-equivalent bytecode, there is no runtime or indirection layer other than the JVM itself.</p>
<p>I think I agree with your central point, that the use of additional languages just to be &#8220;trendy&#8221; introduces unnecessary overhead and performance costs, but when judiciously applied, this overhead can be acceptably mitigated or even less-costly than the same algorithm handled in the single &#8220;main&#8221; language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mark</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-185</link>
		<dc:creator>mark</dc:creator>
		<pubDate>Wed, 11 Jun 2008 21:36:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-185</guid>
		<description>The JSP tag libraries probably &#039;appeared&#039; expensive because they were writing to the servelet output stream. There is a risk that the network time got added to your profiled tag times.</description>
		<content:encoded><![CDATA[<p>The JSP tag libraries probably &#8216;appeared&#8217; expensive because they were writing to the servelet output stream. There is a risk that the network time got added to your profiled tag times.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-184</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Wed, 11 Jun 2008 21:14:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-184</guid>
		<description>@Daniel,

&lt;blockquote&gt;While I agree that polyglot programming is over-hyped and dangerous, I’m not sure that your reasoning is sound.&lt;/blockquote&gt;

If you read me carefully - I have not reasoned it out. I have projected my past experience into the future and done that quite explicitly.

&lt;blockquote&gt;For such languages, the intrinsic performance penalty is extremely minimal&lt;/blockquote&gt;

I have already stated my specific experience with JSP Tag Libraries. The only reason I am unable to quote these figures is because the metrics are locked away in documents at a customer site - documents I do not have access to since the customer engagement is over.

&lt;blockquote&gt;Your arguments also make the assumption that developers are jumping into polyglotism blindly without considering the performance implications at all&lt;/blockquote&gt;

I still remember the days in middle of 2000 I used to look at EJB design and go - this just can&#039;t work, this just can&#039;t scale. Even if a lot of developers do keep their eyes open I have seen sufficient empirical evidence of developers and managers having their eyes closed.

&lt;blockquote&gt;There are a lot of reasons to be wary of polyglot programming, but I don’t think performance is one of them.&lt;/blockquote&gt;
If polyglottism becomes more prevalent and if it so turns out 2-3 years from now then I shall stand corrected. But I shall prefer to stand corrected after sounding a cautionary note, rather than being stand correct without sounding it.

Performance just like beauty is in the eye of the beholder. I have had to deliver more than 50 Transactions Per Second (many reads + few writes per transaction) on a one desktop class machine (as of hardware 2-3 years ago) on multiple occasions in the past few years. Under demanding level every millisecond counts. What can be good for one set of performance targets may suck for another. So even if 9 out of 10 readers think I&#039;m overreacting, but I am able to help the 1 remaining developer meet his performance targets, the objective of this post will be served.

I am not worried about the large grained calls. However even if you stick in a 100 nanosecond overhead in a deep inner loop on method calls on a high thruput system - it will hurt and hurt badly. The reason I wrote this note is not that I am expecting the individual method overhead to be too high. But if you have a core java engine calling small business rules written in other languages (as some of the thoughts seem to be progressing towards) these are more likely to be fine grained calls stuck in inner loops. 

Having said that - I actually tried to benchmark something using jruby. Unfortunately the sample code for jruby didn&#039;t compile and I couldn&#039;t get find the javadoc API for the ruby classes. So for now treat the caution as empiricial and instinctive. If over the next few days I am able to test it out I will post the figures here.</description>
		<content:encoded><![CDATA[<p>@Daniel,</p>
<blockquote><p>While I agree that polyglot programming is over-hyped and dangerous, I’m not sure that your reasoning is sound.</p></blockquote>
<p>If you read me carefully &#8211; I have not reasoned it out. I have projected my past experience into the future and done that quite explicitly.</p>
<blockquote><p>For such languages, the intrinsic performance penalty is extremely minimal</p></blockquote>
<p>I have already stated my specific experience with JSP Tag Libraries. The only reason I am unable to quote these figures is because the metrics are locked away in documents at a customer site &#8211; documents I do not have access to since the customer engagement is over.</p>
<blockquote><p>Your arguments also make the assumption that developers are jumping into polyglotism blindly without considering the performance implications at all</p></blockquote>
<p>I still remember the days in middle of 2000 I used to look at EJB design and go &#8211; this just can&#8217;t work, this just can&#8217;t scale. Even if a lot of developers do keep their eyes open I have seen sufficient empirical evidence of developers and managers having their eyes closed.</p>
<blockquote><p>There are a lot of reasons to be wary of polyglot programming, but I don’t think performance is one of them.</p></blockquote>
<p>If polyglottism becomes more prevalent and if it so turns out 2-3 years from now then I shall stand corrected. But I shall prefer to stand corrected after sounding a cautionary note, rather than being stand correct without sounding it.</p>
<p>Performance just like beauty is in the eye of the beholder. I have had to deliver more than 50 Transactions Per Second (many reads + few writes per transaction) on a one desktop class machine (as of hardware 2-3 years ago) on multiple occasions in the past few years. Under demanding level every millisecond counts. What can be good for one set of performance targets may suck for another. So even if 9 out of 10 readers think I&#8217;m overreacting, but I am able to help the 1 remaining developer meet his performance targets, the objective of this post will be served.</p>
<p>I am not worried about the large grained calls. However even if you stick in a 100 nanosecond overhead in a deep inner loop on method calls on a high thruput system &#8211; it will hurt and hurt badly. The reason I wrote this note is not that I am expecting the individual method overhead to be too high. But if you have a core java engine calling small business rules written in other languages (as some of the thoughts seem to be progressing towards) these are more likely to be fine grained calls stuck in inner loops. </p>
<p>Having said that &#8211; I actually tried to benchmark something using jruby. Unfortunately the sample code for jruby didn&#8217;t compile and I couldn&#8217;t get find the javadoc API for the ruby classes. So for now treat the caution as empiricial and instinctive. If over the next few days I am able to test it out I will post the figures here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dnene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-432</link>
		<dc:creator>dnene</dc:creator>
		<pubDate>Wed, 11 Jun 2008 20:53:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-432</guid>
		<description>&lt;blockquote&gt;So you can for example use a combination of Ruby, Java and external or internal DSLs:&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;and &lt;br&gt;&lt;blockquote&gt;Or you could use Clojure, Scala and JavaScript:&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;and when talking about stable layer&lt;br&gt;&lt;blockquote&gt;Languages in the stable layer can be Java, Scala or F#.&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;and with regards to the dynamic layer&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;The languages used in this layer are mostly external DSLs, but can also include extremely DSL-friendly languages like Ruby, Python or Groovy.&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Wonder what it will be like ....</description>
		<content:encoded><![CDATA[<blockquote><p>So you can for example use a combination of Ruby, Java and external or internal DSLs:</p></blockquote>
<p>and <br />
<blockquote>Or you could use Clojure, Scala and JavaScript:</p></blockquote>
<p>and when talking about stable layer<br />
<blockquote>Languages in the stable layer can be Java, Scala or F#.</p></blockquote>
<p>and with regards to the dynamic layer</p>
<blockquote><p>The languages used in this layer are mostly external DSLs, but can also include extremely DSL-friendly languages like Ruby, Python or Groovy.</p></blockquote>
<p>Wonder what it will be like &#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dnene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-431</link>
		<dc:creator>dnene</dc:creator>
		<pubDate>Wed, 11 Jun 2008 20:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-431</guid>
		<description>@mark&lt;br&gt;&lt;br&gt;I compared apples to apples. Simply replaced the tag libraries with raw java code.</description>
		<content:encoded><![CDATA[<p>@mark</p>
<p>I compared apples to apples. Simply replaced the tag libraries with raw java code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Spiewak</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-183</link>
		<dc:creator>Daniel Spiewak</dc:creator>
		<pubDate>Wed, 11 Jun 2008 18:57:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-183</guid>
		<description>While I agree that polyglot programming is over-hyped and dangerous, I&#039;m not sure that your reasoning is sound.  As a previous commenter pointed out, a lot of the &quot;polyglot languages&quot; being pushed these days already run on the JVM.  Some of these languages (such as Scala, Clojure, Groovy, etc) even go so far as to use the same call-stack and internal runtime semantics as Java.  For such languages, the intrinsic performance penalty is extremely minimal.  Obviously Groovy imposes all the overhead of a dynamic language, but Scala is just as fast as Java (even faster for some operations).  Interop between such languages really seems to be the only significant overhead (loading the extra support libs, etc), but because the call stack is shared, &quot;polyglot calls&quot; are really just the same as normal Java method invocations.

Your arguments also make the assumption that developers are jumping into polyglotism blindly without considering the performance implications at all.  I don&#039;t think this is the case.  When I use Ruby for something, I&#039;m well aware that there are much faster (in terms of runtime performance) options.  Given the vociferous nature of most language proponents, it&#039;s hard *not* to be aware of the performance minutia of modern languages, especially as they compare to old stand-bye languages like Java.

There are a lot of reasons to be wary of polyglot programming, but I don&#039;t think performance is one of them.</description>
		<content:encoded><![CDATA[<p>While I agree that polyglot programming is over-hyped and dangerous, I&#8217;m not sure that your reasoning is sound.  As a previous commenter pointed out, a lot of the &#8220;polyglot languages&#8221; being pushed these days already run on the JVM.  Some of these languages (such as Scala, Clojure, Groovy, etc) even go so far as to use the same call-stack and internal runtime semantics as Java.  For such languages, the intrinsic performance penalty is extremely minimal.  Obviously Groovy imposes all the overhead of a dynamic language, but Scala is just as fast as Java (even faster for some operations).  Interop between such languages really seems to be the only significant overhead (loading the extra support libs, etc), but because the call stack is shared, &#8220;polyglot calls&#8221; are really just the same as normal Java method invocations.</p>
<p>Your arguments also make the assumption that developers are jumping into polyglotism blindly without considering the performance implications at all.  I don&#8217;t think this is the case.  When I use Ruby for something, I&#8217;m well aware that there are much faster (in terms of runtime performance) options.  Given the vociferous nature of most language proponents, it&#8217;s hard *not* to be aware of the performance minutia of modern languages, especially as they compare to old stand-bye languages like Java.</p>
<p>There are a lot of reasons to be wary of polyglot programming, but I don&#8217;t think performance is one of them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-177</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Tue, 10 Jun 2008 18:30:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-177</guid>
		<description>Paul,

I am not sure if the assumption that given the scenario both languages work with Java bytecode there should be no difference at runtime. If you look at the first example I talked about - Java Tag Libraries - these are compiled to java bytecode as are the calls to them. Yet the performance is radically different. This precisely is my concern. 

There just seems to be this assumption that given java bytecodes on both sides things will just be hunky dory. It just seems a little facile assumption to me. I am sure with some use cases it might seem just fine but developers will trip on some others. The trouble is that if they are not watching out for it they will have a harder fall - and that is what I am attempting to highlight.

Dhananjay</description>
		<content:encoded><![CDATA[<p>Paul,</p>
<p>I am not sure if the assumption that given the scenario both languages work with Java bytecode there should be no difference at runtime. If you look at the first example I talked about &#8211; Java Tag Libraries &#8211; these are compiled to java bytecode as are the calls to them. Yet the performance is radically different. This precisely is my concern. </p>
<p>There just seems to be this assumption that given java bytecodes on both sides things will just be hunky dory. It just seems a little facile assumption to me. I am sure with some use cases it might seem just fine but developers will trip on some others. The trouble is that if they are not watching out for it they will have a harder fall &#8211; and that is what I am attempting to highlight.</p>
<p>Dhananjay</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-176</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Tue, 10 Jun 2008 17:31:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-176</guid>
		<description>The concern about marshaling data is valid.

But, often with polyglot programming (in Java anyway) we are talking about generating byte code. As far as the runtime is concerned, there is no difference whether the bytecode was generated from (say a) Scala compiler, or a Java compiler.

Now, if you are talking about a dynamic scripting language.... yes, performance will definitely be an issue.</description>
		<content:encoded><![CDATA[<p>The concern about marshaling data is valid.</p>
<p>But, often with polyglot programming (in Java anyway) we are talking about generating byte code. As far as the runtime is concerned, there is no difference whether the bytecode was generated from (say a) Scala compiler, or a Java compiler.</p>
<p>Now, if you are talking about a dynamic scripting language&#8230;. yes, performance will definitely be an issue.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dnene</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-430</link>
		<dc:creator>dnene</dc:creator>
		<pubDate>Tue, 10 Jun 2008 17:30:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-430</guid>
		<description>Paul,&lt;br&gt;&lt;br&gt;I am not sure if the assumption that given the scenario both languages work with Java bytecode there should be no difference at runtime. If you look at the first example I talked about - Java Tag Libraries - these are compiled to java bytecode as are the calls to them. Yet the performance is radically different. This precisely is my concern. &lt;br&gt;&lt;br&gt;There just seems to be this assumption that given java bytecodes on both sides things will just be hunky dory. It just seems a little facile assumption to me. I am sure with some use cases it might seem just fine but developers will trip on some others. The trouble is that if they are not watching out for it they will have a harder fall - and that is what I am attempting to highlight.&lt;br&gt;&lt;br&gt;Dhananjay</description>
		<content:encoded><![CDATA[<p>Paul,</p>
<p>I am not sure if the assumption that given the scenario both languages work with Java bytecode there should be no difference at runtime. If you look at the first example I talked about &#8211; Java Tag Libraries &#8211; these are compiled to java bytecode as are the calls to them. Yet the performance is radically different. This precisely is my concern. </p>
<p>There just seems to be this assumption that given java bytecodes on both sides things will just be hunky dory. It just seems a little facile assumption to me. I am sure with some use cases it might seem just fine but developers will trip on some others. The trouble is that if they are not watching out for it they will have a harder fall &#8211; and that is what I am attempting to highlight.</p>
<p>Dhananjay</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://blog.dhananjaynene.com/2008/06/beware-of-polyglot-programming/comment-page-1/#comment-429</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Tue, 10 Jun 2008 16:31:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=31#comment-429</guid>
		<description>The concern about marshaling data is valid.&lt;br&gt;&lt;br&gt;But, often with polyglot programming (in Java anyway) we are talking about generating byte code. As far as the runtime is concerned, there is no difference whether the bytecode was generated from (say a) Scala compiler, or a Java compiler.&lt;br&gt;&lt;br&gt;Now, if you are talking about a dynamic scripting language.... yes, performance will definitely be an issue.</description>
		<content:encoded><![CDATA[<p>The concern about marshaling data is valid.</p>
<p>But, often with polyglot programming (in Java anyway) we are talking about generating byte code. As far as the runtime is concerned, there is no difference whether the bytecode was generated from (say a) Scala compiler, or a Java compiler.</p>
<p>Now, if you are talking about a dynamic scripting language&#8230;. yes, performance will definitely be an issue.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.678 seconds -->
