<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx</link><description>Both Java and .NET have several things in common - their runtimes are both able to execute code written in a machine-independent "assembly language". As we know, this code is represented in binary format: bytecode in the Java world, and IL in .NET. The</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402107</link><pubDate>Fri, 25 Mar 2005 10:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402107</guid><dc:creator>Mathias Raacke</dc:creator><description>The UCSD Pascal link doesn't work - 404.</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402128</link><pubDate>Fri, 25 Mar 2005 13:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402128</guid><dc:creator>Barry Kelly</dc:creator><description>&amp;quot;I am wondering why no Java virtual machines do not have something similar these days? &amp;quot;&lt;br&gt;&lt;br&gt;GCJ (the GNU Java compiler) can compile .class files into executable objects which can then be linked into a .exe file, or even C++ files. Of course, the final exe / library will end up with GC &amp;amp; Java runtime (statically / dynamically linked .LIB) dependencies.&lt;br&gt;&lt;br&gt;Of course, GCJ executables run slower (but start faster) than executables run under the JIT. In particular, GCJ uses the Boehm conservative GC, which limits its optimization strategies (for one thing, it can't compact since it's conservative).&lt;br&gt;&lt;br&gt;Also, inferring the correct machine operator to use from the datatypes that are statically analysed and discovered on the stack at that point in the assembly (a fundamental limitation of both JVM and MSIL being that the stack must be the same at every instruction, no matter what path got to that instruction) is trivial, not difficult (especially since the stack type data inferral needs to be done for verification). It's easier than function overload resolution, which is something compiler writers do as a matter of course when implementing a language with that feature.&lt;br&gt;&lt;br&gt;And yes, I write compilers.</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402151</link><pubDate>Fri, 25 Mar 2005 15:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402151</guid><dc:creator>Stephane R</dc:creator><description>&lt;br&gt;By pre-JITting you are probably talking about ngen.exe right?&lt;br&gt;&lt;br&gt;ngen.exe can be very bad (premature optimization) since it will create machine code on the machine it's running, for instance at build time, not on the end user machine.&lt;br&gt;&lt;br&gt;Since ngen is not provided by the .NET 2.0 runtime (neither with previous runtime versions by the way), there is no way you are going to ngen your app as a post-install step.&lt;br&gt;&lt;br&gt;I must have missed something really obvious...&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402152</link><pubDate>Fri, 25 Mar 2005 15:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402152</guid><dc:creator>Stephane R</dc:creator><description>&lt;br&gt;Oops, sorry. ngen.exe is with the runtime dist.&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402172</link><pubDate>Fri, 25 Mar 2005 16:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402172</guid><dc:creator>theCoach</dc:creator><description>Back in the heady days of Java as silver bullet/panacea, one of the pillars of why Java was the end all be all was Write Hurriedly Once\Run Everywhere, and part of selling that was that JIT was really fast, and that they could (theoretically, in the next release) use runtime information to make the JITted code faster.&lt;br&gt;Part of the culture of Java is still the devotion to machine independence.&lt;br&gt;There are probably some technical reasons that I do not understand as well, but I think it would be hard to dismiss the white hot anti-Microsoft fires in which Java was forged. </description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402222</link><pubDate>Fri, 25 Mar 2005 18:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402222</guid><dc:creator>Adi Oltean</dc:creator><description>&amp;gt;&amp;gt;&amp;gt; GCJ (the GNU Java compiler) can compile .class files into executable objects which can then be linked into a .exe file, or even C++ files.&lt;br&gt;&lt;br&gt;Yes, I knew about GCJ (I should have mention it). But I don't consider it a runtime. It's just a compiler. So you lose all these advantages coming from a runtime environment (you cannot re-JIT if you detect a certain usage pattern over time, etc). &lt;br&gt;&lt;br&gt;</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402223</link><pubDate>Fri, 25 Mar 2005 18:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402223</guid><dc:creator>Adi Oltean</dc:creator><description>The UCSD link is working now. </description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402227</link><pubDate>Fri, 25 Mar 2005 19:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402227</guid><dc:creator>Junfeng Zhang</dc:creator><description>ngen.exe is in .Net framework redist. Check your framework directory.&lt;br&gt;&lt;br&gt;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\ngen.exe&lt;br&gt;&lt;br&gt;Java5.0 has introduced Java Class Data Sharing concept. Not the same concept, but similar result. It is very limited though. &lt;br&gt;&lt;br&gt;Java was never popular for client side applications. That is probably why Sun does not do ngen.exe.  &lt;br&gt;&lt;br&gt;But all are just speculations. </description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402250</link><pubDate>Fri, 25 Mar 2005 20:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402250</guid><dc:creator>James Arendt</dc:creator><description>Pre-JIT can help with load time, but the better performance optimizations typically happen at runtime. The Java camp seem to be more interested in actual runtime performance, not loading performance.&lt;br&gt;&lt;br&gt;The usual example that I've seen floated about is the performance of the JVM's virtual method calls vs the CLR's. The JVM can inline some virtual method calls at runtime. If it realizes the optimization would not benefit the program any longer, it backs it out. Whereas the CLR currently does not bother with even attempting that optimization. Which, considering there are lots of virtual method calls, is unfortunate.&lt;br&gt;&lt;br&gt;The general idea is that a good JIT can determine more about the execution of your program than a pre-compiler can.</description></item><item><title>re: Why Java VMs do not have a Pre-JIT feature?</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#402252</link><pubDate>Fri, 25 Mar 2005 20:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:402252</guid><dc:creator>Nicholas Allen</dc:creator><description>I'll go out on a limb here and guess that for their particular circumstances they decided that adding support for pre-JITing of user code was more expensive relative to the customer benefit that it would provide than other features under consideration for this release cycle.</description></item><item><title> Antimail Why Java VMs do not have a Pre JIT feature | Menopause Relief</title><link>http://blogs.msdn.com/adioltean/archive/2005/03/25/402099.aspx#9711028</link><pubDate>Tue, 09 Jun 2009 03:02:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9711028</guid><dc:creator> Antimail Why Java VMs do not have a Pre JIT feature | Menopause Relief</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://menopausereliefsite.info/story.php?id=1536"&gt;http://menopausereliefsite.info/story.php?id=1536&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>