关于java和虚拟机等的疑问
发布网友
发布时间:2023-07-25 21:44
我来回答
共4个回答
热心网友
时间:2024-11-24 06:20
“java虚拟机”这个词可以指不少意思,它可以指
1)“java虚拟机的规范”,
2)“某个平台上java虚拟机规范的实现”
3)“某个正在运行的java虚拟机实例”
你说的“java因为有了虚拟机可以在任何平台上运行”的意思和2)更靠近,java可以在某个平台上运行是因为在这个平台上java虚拟机规范被实现了。如果是新开发的电脑操作系统,上面没有实现java虚拟机规范,那java还是不可以在其上运行。而“那么微软为什么不开发一套属于c++或者c#的虚拟机”的意思却和1)更接近,所以因果关系其实不成立的。
微软当然可以在除Windows平台的其他平台上也开发c++或c#的虚拟机实现,但是这一来要投资,二来和微软卖Windows操作系统的目标冲突,它当然就不会干这种事了。另外.net规范在其他平台上的实现也是存在的,叫Mono,但是没有Windows下的实现那么好。
热心网友
时间:2024-11-24 06:20
1、java能够夸平台并不是只因为有虚拟机
2、如果想成为跨平台的语言,那必然会牺牲执行效率,所以C++和java各自有不同的领域。(各有优点)。
3、这一点我解释以上两条,并做简单的介绍。
语言大体分2种,a、编译型 b、解释型
A、编译型语言(c c++ 等)
直接把源文件编译成适合 特定平台(如windows) 使用的机器码,故而不能跨平台。
B、解释型语言(Ruby python 等)
有针对 不同平台 的解释器(解释出来的机器码也由于平台的不同而不同),通过解释器,把源文件逐行解释,并立即运行。由于每次解释都要进行一次编译,故而降低了效率。
C、关于java,可以说既是编译,也是解释的语言
java编译源文件了吗?编译了。。。但不是编译成机器码,而是编译成 字节码(.class结尾的文件,java特有)。这种 字节码 计算机还不认识,谁认识呢?就是你说的虚拟机(JVM),是不同平台的JVM直接解释运行字节码的。
热心网友
时间:2024-11-24 06:21
火车上无聊,发表下我的看法咯。java跨平台是不假,但是是以运行效率为代价的。c和c++以高效闻名,而c#是微软的,他希望所有的程序都运行在windows上,他基本是不会跨平台的。希望能帮到你了追问不是有很多的企业级开发技术都是采用java吗,为什么他们宁愿选择跨平台降低效率而采用java?
热心网友
时间:2024-11-24 06:21
自己想想就知道了
微软为什么要跨平台呢 他自己有操作系统 为什么要把自己的东西运行在别人的操作系统上面呢
商人嘛
你所说的很多企业为什么使用java
第一java是跨平台的
第二从运行可移植性强
第三安全性方面考虑