((Chaser)me).log();

 

2007年3月28日

[转载]JDK、JRE、JVM之间的关系

JDK、JRE、JVM之间的关系

原文链接:http://www.cjsdn.net/post/view?bid=1&id=9965&sty=1&tpg=1&age=0

如果安装了JDK,会发同你的电脑有两套JRE,
一套位于 <JDK安装目录>\jre
另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下
后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。
如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。

JRE 的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完 JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。

1、为什么Sun要让JDK安装两套相同的JRE?
这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 <JDK安装目录>\lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
这个意思是说,你输入javac.exe与输入
java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main

是一样的,会得到相同的结果。
从 这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现<JDK安装 目录>\lib目录下的程序都很小,不大于29K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用 程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。

2、如果一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。
Java.exe依照底下的顺序来查找JRE:
自己的目录下有没有JRE;
父目录有没有JRE;
查询注册表:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]

所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。

3、介绍JVM
JRE目录下的Bin目录有两个目录:server与client。这就是真正的jvm.dll所在。
jvm.dll 无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。
因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll。



posted @ 2007-05-06 18:09 Chaser 阅读(223) | 评论 (0)编辑 收藏

The Java Programming Language 4th edition - 读书笔记 - 1

第一章:快速浏览

1. 关于类的基础概念关键字 
(class),对象/实例(instance), 成员 (member), 字段 (field)、 方法 (method),
class/instance 的状态 (state), 语句 (statement),修饰符(eg. public,static),引元;
method的参数(parameter)列表 + 名字(name) => method的签名(signature),
method的signature + 修饰符 + 返回类型 + 可抛出异常(exception) => 方法头(header), 
method header + 方法体(body) => 方法声明(declaration);
方法体(body)就是出现在花括号之间的语句块(statement block).
静态(static)意味着member属于class而不与该class的特定instance相关联。
    关于System.out.println():System是java.lang包中的一个重要的类,out是System的一个静态field,是一个java.io.PrintStream类型的对象,println是对象out的一个重载(overload)了的静态method。

2. 常量
    字面常量(literal)是包含在一对双引号""之间的字符序列,如字符串字面常量(string literal)"Hello, World!"。常量(constant)或literal使我们能够指定一些在程序运行过程中保持不变的值。具名常量(named constant)是通过名字来引用的常量值,实际上是用final声明并、的一些适当类型的字段,一旦初始化就成为不可变的(immutable)。named constant使得程序逻辑清晰,修改容易,减少出错。
    使用enum枚举类型可以更好的表示一些named constant组,枚举是一种特殊的class,它要表示的每一个named constant都有与之相对应的预定义实例:
    enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
每个枚举常量都是指向其值所对应的对象的静态字段,如Suit.HEARTS。

3. 基本类型变量
    8种内建的基本类型表示的是机器能够直接理解的数值数据,char是16位Unicode UTF-16字符型(无符号); boolean只包含两个"值":真(true)和假(false); 4种整型和2种浮点型都是有符号的,int~float(32), long~double(64);包装器(wrapper)类;一种可读性强的声明并初始化书写格式:
    int lo = 1,
        hi =  1;
变量使用前未被声明初始化就通不过编译;

4. 语言所属的字符集与注释 
    Unicode字符集包括16位的基本字符和21位的增补字符,Java的标识符可以使用他们,现有的ASCII或ISO Latin-1字符集标识在处理前会被Java自动转换为Unicode。所以,Java使用的总是Unicode字符集
    有三种代码中的注释,其中/**......*/格式的注释称作文档注释(documentation comment,简称doc注释),可以被javadoc工具解析生成各个类的参考文档。把这种注释写在代码块的最上方。另外两种注释穿插在代码之间,用于阅读代码时观看。

5. 控制流
    从循环中挑出的方式有:1.条件表达式变为false; 2. 执行了break语句; 3. 抛出异常

posted @ 2007-03-28 22:48 Chaser 阅读(385) | 评论 (0)编辑 收藏

Internet Explorer Developer Toolbar Beta 3

Internet Explorer Developer Toolbar Beta 3

http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en

新增(或改变)的功能有:

1、工具栏的打开方式:

  现在的IE Dev Toolbar不再会占用工具栏里大量的空间,取而代之的是工具栏里的一个按钮 ,点击它之后就会弹出我们熟悉的IE Dev Toolbar。

2、最常用的操作被列举为单独的按钮:

  按照官方说法(似乎也的确是),最常用的几个操作是:“Select Element by Click”、“Refresh”、“Clear Browser Cache”和“View Element Source”(这是个新功能)。它们现在被IE Dev Toolbar单独列举出来,如下:

3、Style Tracer:

  查看一个元素的当前样式,这个功能大家都一定接触过,它可以在IE Dev Toolbar右侧看到。据说现在IE Dev Toolbar提供了Style Tracer的能力,也就是说,我们可以查看到这个元素的某个特定样式(例如字体大小)是在哪个CSS类里被定义的,这样就可以避免被CSS的继承关系给搞晕了。

  等等,什么是“据说”?非常令人汗颜的是,这个功能我只在“官方说法”中找到截图以及使用方式,我自己不曾尝试出这个功能来。从官方Blog里也可以看到,并不是我一个人遇到了这个问题。

  不得不说,如果Style Tracer无法使用,IE Dev Toolbar这次更新的效果就会大打折扣了。

4、View Source:

  刚才也提到过新增的View Source功能,它的作用是可以查看一个特定元素的HTML。

  这有什么用?我们本来不就可以查看页面的HTML吗?

  这就是View Source这个功能的神奇之处,就在于它显示的不是浏览器从服务器端那里得到的HTML,而是通过DOM进行“逆向工程”之后得到的HTML。于是现在我们就可以放心地从浏览器里选择一个元素,无论它在页面刚打开时是什么样子,甚至于它是在页面运行过程中使用JavaScript新创建的元素,都可以方便的查看它“当前”源码。

posted @ 2007-03-28 14:04 Chaser 阅读(685) | 评论 (0)编辑 收藏

导航

公告


这里只谈技术, 那里是我的生活……

留言簿(2)

随笔档案(3)

文章档案(1)

相册

Blogs

Knowledge Base

国外站点 - Foreign Sites

社区,论坛,新闻聚合

搜索

积分与排名

最新随笔

最新评论

阅读排行榜