A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝亚平 黑马帝   /  2011-11-28 18:51  /  3111 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郝亚平 于 2011-11-29 13:13 编辑

思考几个问题:
1.Java虚拟机是用什么语言编写的?假如是用Java开发的,那么,如何验证?
2.假如说JVM都是用Java编写的,那么,既然,Java具有平台无关性,为什么Windows,Linux,Mac上面的Java虚拟机还要分别独立编写,不能共用同样的Java代码?
3.Java虚拟机具体指什么?

个人所问,求解?

10 个回复

倒序浏览
1 不太清楚

2 java具有平台无关性是建立在jvm基础上的, jvm等于一个中间件, 建立起java应用程序与操作系统的桥梁,所有的.class文件只有jvm才读得懂,jvm起到一个翻译作用,举个例子,一个中国人,只会说中文,但他想去美国、法国去旅游,所以他找了个翻译,这个翻译会中文、法文、英文,这样他就可以用中文通过翻译来与这些国家的进行交流。 在这里,java应用程序就是中国人,而美国、法国等于windows、linux 等操作系统,而这个翻译就是JVM。  因为各个操作系统为应用程序提供的API不同,所以我们编写的应用程序为了实现可移植性是不可能直接去和操作系统对话的。另外java属于解释型语言,所以.class可以被不同的JVM解释。

3java虚拟机就是.class运行的平台,跟操作系统一样。我们的程序通过操作系统来对计算机硬件对话,而JVM则使我们的JAVA程序可以与操作系统来进行对话

评分

参与人数 1技术分 +1 收起 理由
admin + 1 尽心尽力了,加分!

查看全部评分

回复 使用道具 举报
java之所以跨平台的原因就是安装了java虚拟机,而真正跨平台的不是java源程序,而是.class字节码文件。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
肯定不是Java语言写的。应该是C语言写的。因为底层开发语言都是C语言。个人见解。。。。。。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘涛 黑马帝 2011-11-28 21:59:59
报纸
回复 使用道具 举报
刘涛 黑马帝 2011-11-28 22:01:44
地板
虚拟机  虚拟机 虚拟机 。。。你想想你在Windows下用虚拟机装linux
鄙人认为应该原理差不多
回复 使用道具 举报
刘涛 黑马帝 2011-11-28 22:28:33
7#

度娘不给力
回复 使用道具 举报
刘涛 黑马帝 2011-11-28 22:28:55
8#
回复 使用道具 举报
刘涛 黑马帝 2011-11-28 22:31:29
9#
回复 使用道具 举报
刘涛 黑马帝 2011-11-28 22:35:05
10#
百度贴不上图 QZONE贴不上图 黑马贴图不显示
天啊

评分

参与人数 1技术分 +1 收起 理由
admin + 1 辛苦了!

查看全部评分

回复 使用道具 举报
郝亚平 黑马帝 2011-11-29 13:10:35
11#
本帖最后由 郝亚平 于 2011-11-29 13:12 编辑

1.第一个问题修正一下子:
      实质上应该问的是: Java开发工具(java.exe,javac.exe等)是用什么开发的?如果是用Java开发,那么,如何验证。(这个才是自己的本初意思。)
      思路:如果是Java开发的程序,其运行肯定是离不开JRE,所以,只需要验证一下子Java开发工具程序的运行是否对JRE存在依赖性就可以了。。如果存在对JRE的依赖性,说明Java开发工具就是采用Java语言开发的了。自己验证过了,结果就是。Java开发工具就是用Java语言编写的。

2.从提问中得到的收获:
     1>. 纠正了自己的一个错觉: 经常使用java命令启动jvm,于是导致自己以为jvm就是Java开发工具了。于是,就有了上面的第三个提问了。看来自己是曲解了。
     2>.  exe是可执行程序,不是JVM,JVM更像是一个具备完备功能的系统,Windows下的JVM是用C语言开发的。



评分

参与人数 1技术分 +2 收起 理由
admin + 2 问题已解决,加分!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马