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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王新年 中级黑马   /  2013-12-4 22:25  /  6052 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA是怎样实现平台无关性?

7 个回复

倒序浏览
假如java是电器,JVM虚拟机就是插板,平台就是不同的地方用电器你得插插板。

就是说电器(java),无论在家或者寝室(各种系统)都能用,你只要插插板(JVM)就行了.
当然电压高低(系统不同)使用不同插板(JVM)就行了,和电器(java)无关.

这就是java和系统平台的无关性

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报 1 0
当使用java编译器编译java程序的时候,生成的是与平台无关的字节码,这些字节码不面向任何具体的平台,只面向JVM(java虚拟机).不同平台上的JVM是不同的,但他们都提供了相同的接口.因此只要为不同平台实现了相应的JVM,编译后的java字节码就可以在该平台上运行了.简单来说,JVM就是一个中转站,可以把它当做一个翻译官,就像一个不会说英文的人,你只要请一个翻译官,你一样可以和外国人交流.JVM就相当于这个翻译官了.

评分

参与人数 1黑马币 +3 收起 理由
简★零度 + 3

查看全部评分

回复 使用道具 举报
java平台无关性准确的说应该是说java的跨平台性。首先要理解java源程序运行的原理:
        java源文件(.java)->字节码文件->二进制码
        经历过了编译、解释两个阶段,我们平时使用的javac是编译,java是执行(jvm解释)

        
      如上图显示的,实现跨平台的就在于每个操作系统有对于的java虚拟机。
      相同的源程序提交给不同的JVM(java虚拟机)以在不同平台上运行的效果。


评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
从操作系统上sun公司为苹果、微软、linux开发了jvm虚拟机,jvm就是一个用c开发出来的比较智能的程序
能将特定字节码指令转译交给操作系统处理。jvm并不完全通用,如jni.Toolkit.getDefaultToolkit和大家都知道的绝对路径问题window c:\   linux /data
从程序上sun公司精简各个操作系统的某谢特有的功能,用自己的基本功能来实现,如果不能实现的有些也给了但不常用

评分

参与人数 1黑马币 +3 收起 理由
简★零度 + 3

查看全部评分

回复 使用道具 举报
首先,Java提供了JDK,供开发人员进行java开发,开发出的Java文件本身并不具备平台无关的特性。Java文件编译后,生成的class二进制文件。

SUN提供了各个平台下的JRE:Windows下的,Linux下的,UNIX下的。编译后的class文件,就在各个平台下的jre上运行了。

简单的说,就是因为jre的存在。

评分

参与人数 1黑马币 +3 收起 理由
简★零度 + 3

查看全部评分

回复 使用道具 举报
不同的操作系统平台中有相应的java虚拟机,相同的源程序可以在这些不同的虚拟机上编译运行!意思就是说java源程序是跨平台的,但是不同平台的虚拟机不是跨平台的!java的这种跨平台性有助于开发的简便性,也是java非常有名的特性。

评分

参与人数 1黑马币 +3 收起 理由
简★零度 + 3

查看全部评分

回复 使用道具 举报
{:soso_e152:}新手认为:
用java语言开发来的程序,是用JDK开发的,只能在JRE上运行的。在目前主流操作系统中,他们都不具备JRE这样的运行环境,因为他们都不是java语言开发出来的操作系统。JVM就能模拟这样不同操作系统的相同JRE运行环境,这样就能运行java程序。但JVM不是跨平台的,Windows操作系统下开发的JVM不能在Linux操作系统中运行。解释的不专业的地方也希望有专业人士纠正!谢谢!

评分

参与人数 1黑马币 +3 收起 理由
简★零度 + 3

查看全部评分

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