Java Virtual Machine 就是指Java虚拟器,以下简称VM.关于VM的概念,最早出自CPU模拟器,众所周知的PC上的游戏机模拟器采用的便是和Java VM类似的技术.java source code被编译成byte code后,其实已经是很类似机器代码了,只不过没有真正能运行这类code的CPU而已,于是为了能达到在不同平台上运行的目的,VM的概念被大力推广. 从简单的角度说,VM其实就是把java bytecode 翻译成特定的机器代码, 这和解释型编程语言不同,我们会在下面讲到.
 





    第一代的VM大多采用直接解释的方法,也就是说一句一句地把bytecode翻译成机器代码. 但这里有个缺点,如遇到循环, VM就不得不一次次重复翻译已经被翻译过的代码. 而每一次翻译均需消耗一定的cpu时间. 于是出现了第二代的VM - JIT (Just In Time Compiler)它只在bytecode需要被翻译时才做翻译工作.怎么实现呢? 打个比方,JIT VM可以事先把一段bytecode翻成machine code,并把这段code放进buffer, 当运行循环是,就反复调用这段翻译好的代码!
JIT的效率取决于他分析重复调用的本领,把翻译的工作量限制到最小,以便让出CPU时间来运行程序逻辑.  





   第三代的VM叫hotspot,我们以后做介绍.  





   有了VM以后等于有了一个虚拟的CPU, 但我们还需要一定的外部设备来帮助完成计算任务,于是出现了JNI, 它的作用在不同的场合有不同的含义. 有时你可一用JNI直接写一个设备驱动程序, 有时JNI可被作为lightweight wrapper来封装本地系统的资源.再加上Java本身提供的标准库, VM提供了再多平台应用的环境!在一个系统中JVM往往不是唯一的, 如果你在win32中安装了JDK,IE和Netscape,哪很有可能你已经有了三种不同的Virtual Machine. 至于你的程序在那个VM上运行,完全取决于你系统的设置.
大体上如果是运行applet,那么browser的VM会成为默认的平台. 当然你可以用jdk的plug-in取代IE的MS JVM.  





   每台win32系统都包含了一个MS implement的VM,如果安装了Java SDK哪你就可以用jview来从command line启动VM process. 你可以在一台电脑上同时运行几个同种或不同种的VM, 每一个都会运行在独立process中.  





下面是一些系统的属性,你可以从中获得关于VM的一些讯息!  

用 System.getProperty(String propertyName)  





properyName:        含义:  

-----------------------------------------------------  

java.version -  JRE version  





java.vendor - JRE vendor   





java.vendor.url - Vendor URL  





java.home -  Installation directory  





java.vm.specification.version  - JVM 标准的版本  





java.vm.specification.vendor - JVM 标准的开发商  





java.vm.specification.name -         





java.vm.version - JVMachine implementation version:   





java.vm.vendor - JVM implementation vendor  





java.vm.name - JVM implementation name  

      

java.specification.version -  JRE specification version  





java.specification.vendor - JRE specification vendor  





java.specification.name - JRE specification name:   





java.class.version - Class format version number:   





java.class.path - Java CLASSPATH   

浅谈Java Virtual Machine的更多相关文章

  1. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  2. Java Hour 58 Java Virtual Machine

    每每谈到Java Virtual Machine, 你必须意识到这个有三种意思: 1 一个抽象的指南 2 一个具体的实现 3 一个运行时的实例 JVM 的生命周期 每个运行时JVM 实例都是为一个特定 ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 浅谈Java中的equals和==(转)

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...

  5. 浅谈Java中的对象和引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  6. 浅谈Java中的equals和==

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...

  7. fail to create java virtual machine..

    今天打开zend stdio 的时候 出现的错误  fail to create java virtual machine... 然后找度娘了,,都说改xxxxx, 我打开360  ,把内存清理了一遍 ...

  8. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...

  9. Failed to create the Java Virtual Machine.问题的解决

    运行Eclipse,出现了"Failed to create the Java Virtual Machine."错误: 解决的办法是在Eclipse的解压目录下找到eclipse ...

随机推荐

  1. pl/sql command window 初步接触

    pl/sql command window基本操作 PL/SQL Developer应用两年了,今天第一次应用command window. command window类似于sqlplus窗口: 1 ...

  2. 三十分钟学会AWK

    摘要: 本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK ...

  3. 如何使用webapi集成swagger

    现在B/S开发中,前后端分离无疑已经成为一种新的时尚,但是如何把后端开发的接口更好的提供给前段开发呢?还用接口文档?low了吧.不仅要花时间开发接口,还得花时间写文档,白花花的时间不久浪费了吗.如果接 ...

  4. Error:C:\Users\issuser\AndroidStudioProjects\SQLiteDemo1\.gradle\buildOutputCleanup\cache.properties (系统找不到指定的文件。)

    android studio报下图中的这个错误的解决办法: 解决办法: 1.删除掉下图中标记的2个文件夹 2.将下图标记的文件的文件名重命名,把最后的后缀.lock去掉,因为加上了这个后缀,所以提示找 ...

  5. .NET(c#) 移动开发平台 - Smobiler(1)

    如果说基于.net的移动开发平台,目前比较流行的可能是xamarin了,不过除了这个,还有一个比xamarin更好用的国内的.net移动开发平台,smobiler,不用学习另外一套开发模式或者搭建复杂 ...

  6. OpenCV2.4.9 Qt5.3.1 开发环境配置错误原因与解决方案

    问题原因与解决办法 A.配置完成后,示例程序无法正常显示图片且程序无法运行 出现原因:环境变量未正确配置 解决办法:检查环境变量,添加缺失的环境变量 B.出"未定义的引用..."类 ...

  7. java数据结构与算法(一)

    1.数据结构概念 所谓的数据结构是数据之间的关系,都是为了提高程序效率而设计的. 分为逻辑关系和物理关系两种. 逻辑关系:人为的一种逻辑思维的认为. (1)集合:在一个范围内有多个数据,数据之间没有关 ...

  8. IdentityServer Topics(3)- 定义客户端

    客户端代表可以从您的身份服务器请求令牌的应用程序. 细节有所不同,但您通常为客户端定义以下常用设置: 一个唯一的客户端ID 一个密钥,如果需要 允许与令牌服务的交互(称为授权类型) 身份或访问令牌被发 ...

  9. mysql数据库快速入门(1)

    1.数据库操作 1.1.连接mysql服务器 mysql -u root( 用户名 ) -p 1.2.退出mysql命令提示窗 exit 1.3.查看版本 SELECT VERSION(); 1.4. ...

  10. Zabbix实战-简易教程--动作(Actions)--触发器

    一.概述 我们通过接入agent,采集了大量数据,但是如果采集到的某个指标超出了我预计的范围(阈值),此时我们希望监控系统能够给予邮件或短信报警,触发器就是替你干这个活的. 触发器表达式允许定义一个什 ...