﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JReport for Eclipse-随笔分类-JAVA</title><link>http://www.blogjava.net/jr4e/category/34025.html</link><description>JR4E 团队博客</description><language>zh-cn</language><lastBuildDate>Sun, 24 Aug 2008 06:40:27 GMT</lastBuildDate><pubDate>Sun, 24 Aug 2008 06:40:27 GMT</pubDate><ttl>60</ttl><item><title>深入JAVA虚拟机系列 1</title><link>http://www.blogjava.net/jr4e/archive/2008/08/24/223976.html</link><dc:creator>all</dc:creator><author>all</author><pubDate>Sun, 24 Aug 2008 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/jr4e/archive/2008/08/24/223976.html</guid><wfw:comment>http://www.blogjava.net/jr4e/comments/223976.html</wfw:comment><comments>http://www.blogjava.net/jr4e/archive/2008/08/24/223976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jr4e/comments/commentRss/223976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jr4e/services/trackbacks/223976.html</trackback:ping><description><![CDATA[<font style="font-size: large; line-height: 1.3em">JAVA体系结构－java虚拟机概述</font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">最初，Sun公司为java体系定义了4个规范：</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">java语言；＝》规范了源文件</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">class文件格式；</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">java API；</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">java 虚拟机；</font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">编译期，java编译器（javac）将java源文件编译成class文件；运行期用户的class文件和java API的class文件在java虚拟机上协同工作。</font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">java虚拟机最主要的2个作用是装载class文件和执行这些class文件所包含的字节码（bytecode）。</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">这决定了java虚拟机的主要2个部件是：</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">类装载器 class loader；</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">执行引擎 execution engine；</font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">顾名思义，类装载器就是把用户程序的class和java API里的class装载到执行引擎，但是它仅仅只选择真正被用到的class进行装载。</font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">执行引擎的任务则是执行class文件中的字节码。由于class文件格式都遵循一种规范，所以执行引擎是可以有多种不同的方式来实现的。比如它可以是一个解释器，读一句字节码，生成一句机器码，然后执行之，这是典型的解释器行为； 它也可以在第一次执行某个方法时，将该方法编译成机器码，并缓存起来，下次该方法再被调用时它直接执行缓存的机器码，这其实是编译行为。所以必须记住，并不是所有的java虚拟机都是解释器（<em><wbr>interpreter）。</em><wbr></font><wbr><br />
<br />
<font style="font-size: x-small; line-height: 1.3em">关于JNI（java native interface）</font><wbr><br />
<font style="font-size: x-small; line-height: 1.3em">通过JNI，java允许你的程序调用任何其他语言写的方法。然而这样也将使你失去java平台无关的优势。建议只用java实现方法或只调用java API提供的native方法。</font>
 <img src ="http://www.blogjava.net/jr4e/aggbug/223976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jr4e/" target="_blank">all</a> 2008-08-24 13:38 <a href="http://www.blogjava.net/jr4e/archive/2008/08/24/223976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>