﻿<?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-((Chaser)me).log();</title><link>http://www.blogjava.net/pianyao/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 15:04:02 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 15:04:02 GMT</pubDate><ttl>60</ttl><item><title>[转载]JDK、JRE、JVM之间的关系</title><link>http://www.blogjava.net/pianyao/archive/2007/05/06/115598.html</link><dc:creator>Chaser</dc:creator><author>Chaser</author><pubDate>Sun, 06 May 2007 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/pianyao/archive/2007/05/06/115598.html</guid><wfw:comment>http://www.blogjava.net/pianyao/comments/115598.html</wfw:comment><comments>http://www.blogjava.net/pianyao/archive/2007/05/06/115598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pianyao/comments/commentRss/115598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pianyao/services/trackbacks/115598.html</trackback:ping><description><![CDATA[<span class="javascript" id="text9965"><strong><font color="brown">JDK、JRE、JVM之间的关系</font></strong><br><br></span>原文链接：<a target="_blank" href="http://www.cjsdn.net/post/view?bid=1&amp;id=9965&amp;sty=1&amp;tpg=1&amp;age=0">http://www.cjsdn.net/post/view?bid=1&amp;id=9965&amp;sty=1&amp;tpg=1&amp;age=0</a><br><br><span class="javascript" id="text9965">如果安装了JDK，会发同你的电脑有两套JRE，<br>一套位于<strong>  &lt;JDK安装目录&gt;\jre  </strong><br>另外一套位于<strong>  C:\Program Files\Java\j2re1.4.1_01  </strong>目录下<br>后面这套比前面那套少了Server端的Java虚拟机，不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于  <strong>C:\Program Files\Java</strong>  目录下的JRE。<br>如果你只安装JRE，而不是JDK，那么只会在<strong>  C:\Program Files\Java  </strong>目录下安装唯一的一套JRE。<br><br>JRE
的地位就象一台PC机一样，我们写好的Win32应用程序需要操作系统帮我们运行，同样的，我们编写的Java程序也必须要JRE才能运行。所以当你装完
JDK后，如果分别在硬盘上的两个不同地方安装了两套JRE，那么你可以想象你的电脑有两台虚拟的Java
PC机，都具有运行Java程序的功能。所以我们可以说，只要你的电脑安装了JRE，就可以正确运行Java应用程序。<br><br><strong>1、为什么Sun要让JDK安装两套相同的JRE？</strong><br>这是因为JDK里面有很多用Java所编写的开发工具（如javac.exe、jar.exe等），而且都放置在  <strong>&lt;JDK安装目录&gt;\lib\tools.jar  </strong> 里。从下面例子可以看出，先将tools.jar改名为tools1.jar，然后运行javac.exe，显示如下结果：<br>Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main<br>这个意思是说，你输入javac.exe与输入<br>
<pre class="codeStyle">java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main</pre>
<br>是一样的，会得到相同的结果。<br>从
这里我们可以证明javac.exe只是一个包装器（Wrapper），而制作的目的是为了让开发者免于输入太长的指命。而且可以发现&lt;JDK安装
目录&gt;\lib目录下的程序都很小，不大于29K，从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写，所以也是Java应用
程序，因此要使用JDK所附的工具来开发Java程序，也必须要自行附一套JRE才行，所以位于C:\Program
Files\Java目录下的那套JRE就是用来运行一般Java程序用的。<br><br><strong>2、如果一台电脑安装两套以上的JRE，谁来决定呢？</strong><br>这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。<br>Java.exe依照底下的顺序来查找JRE：<br><font color="blue">自己的目录下有没有JRE；<br>父目录有没有JRE；<br>查询注册表：<br>[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]</font><br>所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。<br><br><strong>3、介绍JVM</strong><br>JRE目录下的Bin目录有两个目录：server与client。这就是真正的jvm.dll所在。<br>jvm.dll
无法单独工作，当jvm.dll启动后，会使用explicit的方法（就是使用Win32
API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库），而这些辅助用的动态链接库（.dll）都必须位
于jvm.dll所在目录的父目录之中。<br>因此想使用哪个JVM，只需要设置PATH，指向JRE所在目录底下的jvm.dll。
</span>
<br><br><br> <img src ="http://www.blogjava.net/pianyao/aggbug/115598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pianyao/" target="_blank">Chaser</a> 2007-05-06 18:09 <a href="http://www.blogjava.net/pianyao/archive/2007/05/06/115598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Java Programming Language 4th edition - 读书笔记 - 1 </title><link>http://www.blogjava.net/pianyao/archive/2007/03/28/107084.html</link><dc:creator>Chaser</dc:creator><author>Chaser</author><pubDate>Wed, 28 Mar 2007 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/pianyao/archive/2007/03/28/107084.html</guid><wfw:comment>http://www.blogjava.net/pianyao/comments/107084.html</wfw:comment><comments>http://www.blogjava.net/pianyao/archive/2007/03/28/107084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pianyao/comments/commentRss/107084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pianyao/services/trackbacks/107084.html</trackback:ping><description><![CDATA[
		<p mce_serialized="1">
				<strong mce_serialized="1">
						<span style="FONT-SIZE: 18pt; LINE-HEIGHT: 160%; FONT-FAMILY: 宋体" mce_serialized="1">第一章：快速浏览</span>
				</strong>
		</p>
		<p mce_serialized="1">
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">1. 关于类的基础概念关键字 <br mce_serialized="1" /></span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">类</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(class)，对象/实例(instance)，</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">成员</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(member)，</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">字段</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(field)、</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">方法</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(method)，<br mce_serialized="1" /></span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">class/instance</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">的状态</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(state)，</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%" mce_serialized="1">
						<font face="宋体" mce_serialized="1">语句</font>
				</span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">(statement)，修饰符(eg. public,static)，引元；<br mce_serialized="1" /></span>
				<span style="FONT-SIZE: 10pt; LINE-HEIGHT: 160%; FONT-FAMILY: Verdana" mce_serialized="1">method的参数(parameter)列表 + 名字(name) =&gt; method的签名(signature)，<br mce_serialized="1" />method的signature + 修饰符 + 返回类型 + 可抛出异常(exception) =&gt; 方法头(header), <br mce_serialized="1" />method header + 方法体(body) =&gt; 方法声明(declaration);<br mce_serialized="1" /></span>
				<font size="2" mce_serialized="1">方法体(body)就是出现在花括号之间的语句块(statement block).<br mce_serialized="1" /></font>
				<strong mce_serialized="1">静态(static)</strong>意味着member属于class而不与该class的特定instance相关联。<br mce_serialized="1" />    关于<strong mce_serialized="1">System.out.println()</strong>：System是java.lang包中的一个重要的类，out是System的一个静态field，是一个java.io.PrintStream类型的对象，println是对象out的一个重载(overload)了的静态method。</p>
		<p mce_serialized="1">2. 常量<br mce_serialized="1" />    <strong mce_serialized="1">字面常量</strong>(literal)是包含在一对双引号""之间的字符序列，如字符串字面常量(string literal)"Hello, World!"。<strong mce_serialized="1">常量</strong>(constant)或literal使我们能够指定一些在程序运行过程中保持不变的值。<strong mce_serialized="1">具名常量</strong>(named constant)是通过名字来引用的常量值，实际上是用final声明并、的一些适当类型的字段，一旦初始化就成为不可变的(immutable)。named constant使得程序逻辑清晰，修改容易，减少出错。<br mce_serialized="1" />    使用<strong mce_serialized="1">enum枚举类型</strong>可以更好的表示一些named constant组，枚举是一种特殊的class，它要表示的每一个named constant都有与之相对应的<u mce_serialized="1">预定义实例: </u><br mce_serialized="1" />    enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }<br mce_serialized="1" />每个<u mce_serialized="1">枚举常量</u>都是指向其值所对应的对象的<strong mce_serialized="1">静态字段</strong>,如Suit.HEARTS。</p>
		<p mce_serialized="1">3. 基本类型变量<br mce_serialized="1" />    8种内建的<strong mce_serialized="1">基本类型</strong>表示的是机器能够直接理解的数值数据，char是16位Unicode UTF-16字符型(无符号); boolean只包含两个"值"：真(true)和假(false); 4种整型和2种浮点型都是有符号的，int~float(32), long~double(64)；包装器(wrapper)类；一种可读性强的声明并初始化书写格式：<br mce_serialized="1" />    int lo = 1,<br mce_serialized="1" />        hi =  1;<br mce_serialized="1" />变量使用前未被声明<strong mce_serialized="1">和</strong>初始化就通不过编译；</p>
		<p mce_serialized="1">4. 语言所属的字符集与注释 <br mce_serialized="1" />    <font size="2" mce_serialized="1">Unicode字符集包括16位的基本字符和21位的增补字符，Java的标识符可以使用他们，现有的ASCII或ISO Latin-1字符集标识在处理前会被Java自动转换为Unicode。所以，<font size="3" mce_serialized="1"><strong mce_serialized="1">Java使用的总是Unicode字符集</strong>。<br mce_serialized="1" />    有三种代码中的注释，其中/**......*/格式的注释称作文档注释(documentation comment,简称doc注释),可以被javadoc工具解析生成各个类的参考文档。把这种注释写在代码块的最上方。另外两种注释穿插在代码之间，用于阅读代码时观看。</font></font></p>
		<p mce_serialized="1">5. 控制流<br mce_serialized="1" />    从循环中挑出的方式有：1．条件表达式变为false； 2. 执行了break语句； 3. 抛出异常</p>
<img src ="http://www.blogjava.net/pianyao/aggbug/107084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pianyao/" target="_blank">Chaser</a> 2007-03-28 22:48 <a href="http://www.blogjava.net/pianyao/archive/2007/03/28/107084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Internet Explorer Developer Toolbar Beta 3</title><link>http://www.blogjava.net/pianyao/archive/2007/03/28/106948.html</link><dc:creator>Chaser</dc:creator><author>Chaser</author><pubDate>Wed, 28 Mar 2007 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/pianyao/archive/2007/03/28/106948.html</guid><wfw:comment>http://www.blogjava.net/pianyao/comments/106948.html</wfw:comment><comments>http://www.blogjava.net/pianyao/archive/2007/03/28/106948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pianyao/comments/commentRss/106948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pianyao/services/trackbacks/106948.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#0000ff" size="5">Internet Explorer Developer Toolbar Beta 3</font>
		</p>
		<p>
				<font size="2">
						<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en</a>
				</font>
		</p>
		<p>新增（或改变）的功能有：</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
				<strong>1、工具栏的打开方式：</strong>
		</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　现在的IE Dev Toolbar不再会占用工具栏里大量的空间，取而代之的是工具栏里的一个按钮<img height="25" alt="" src="http://www.cnblogs.com/images/cnblogs_com/JeffreyZhao/WindowsLiveWriter/IEDevToolbarBeta3Released_AD3C/1[5].png" width="25" /> ，点击它之后就会弹出我们熟悉的IE Dev Toolbar。</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
				<strong>2、最常用的操作被列举为单独的按钮：</strong>
		</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　按照官方说法（似乎也的确是），最常用的几个操作是：“Select Element by Click”、“Refresh”、“Clear Browser Cache”和“View Element Source”（这是个新功能）。它们现在被IE Dev Toolbar单独列举出来，如下：</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
				<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="136" alt="" src="http://www.cnblogs.com/images/cnblogs_com/JeffreyZhao/WindowsLiveWriter/IEDevToolbarBeta3Released_AD3C/2[3].png" width="199" border="0" />
		</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
				<strong>3、Style Tracer：</strong>
		</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　查看一个元素的当前样式，这个功能大家都一定接触过，它可以在IE Dev Toolbar右侧看到。据说现在IE Dev Toolbar提供了Style Tracer的能力，也就是说，我们可以查看到这个元素的某个特定样式（例如字体大小）是在哪个CSS类里被定义的，这样就可以避免被CSS的继承关系给搞晕了。</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　等等，什么是“据说”？非常令人汗颜的是，这个功能我只在“官方说法”中找到截图以及使用方式，我自己不曾尝试出这个功能来。从<a href="http://blogs.msdn.com/ie/archive/2007/01/09/ie-developer-toolbar-beta-3-now-available.aspx">官方Blog</a>里也可以看到，并不是我一个人遇到了这个问题。</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　不得不说，如果Style Tracer无法使用，IE Dev Toolbar这次更新的效果就会大打折扣了。</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
				<strong>4、View Source：</strong>
		</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　刚才也提到过新增的View Source功能，它的作用是可以查看一个特定元素的HTML。</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　这有什么用？我们本来不就可以查看页面的HTML吗？</p>
		<p style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">　　这就是View Source这个功能的神奇之处，就在于它显示的不是浏览器从服务器端那里得到的HTML，而是通过DOM进行“逆向工程”之后得到的HTML。于是现在我们就可以放心地从浏览器里选择一个元素，无论它在页面刚打开时是什么样子，甚至于它是在页面运行过程中使用JavaScript新创建的元素，都可以方便的查看它“当前”源码。</p>
<img src ="http://www.blogjava.net/pianyao/aggbug/106948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pianyao/" target="_blank">Chaser</a> 2007-03-28 14:04 <a href="http://www.blogjava.net/pianyao/archive/2007/03/28/106948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>