zoukankan      html  css  js  c++  java
  • 直面Java 第003期

    。 问:什么是平台无关性,Java是如何做到平台无关的? 解: 大家说的都很对,看来大家对这个概念掌握的很可以。我简单总结一下。 跨平台指的是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行。 平台无关有两种:源代码级和目标代码级。 我们常说的跨平台,或者平台无关,指的就是目标代码,或者说是软件交付件跨平台。 C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。但是,关键是要重新编译。可是,一般软件交付都是给你个成品,对于C或者C++开发出的软件,只能运行在某个平台的。没有源码,怎么编译。 Java编译出来的是字节码,去到哪个平台都能用,只要有那个平台的JDK就可以运行,所以,Java程序的最大优势就是平台无关。对于Java,交付的就是一堆jar包或者war包,只要系统上有个Java虚拟机,就可以直接运行,这不就是跨平台了么。 我们使用的C、C++还有Java等高级语言,都需要最终被编译成机器语言,才能被计算机执行。 C语言和C++语言的编译过程是把源代码编译生成机器语言。这样机器可以直接执行。但是不同系统对同一段“机器语言”的处理结果可能是不一样的,原因可能有很多,比如CPU的指令集不同的。C语言不能实现跨平台运行,就是因为它编译出来的文件的格式,只适用于某种cpu,其他cpu无法识别。 那么Java是如何实现跨平台的呢? 我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。这种字节码文件需要经过JVM虚拟机,然后翻译成机器语言,才能被机器执行。 那么,由于我们可以在不同的操作系统上安装不同的JVM,而JVM封装了所有对于.class文件的处理,即JVM帮我们把字节码翻译成机器语言的过程中就已经充分考虑到对应平台的特性了。比如,一个.class文件,在不同机器上最终生成的机器语言可能是不同的,但是这种不同不需要我们关心,JVM会保证他可以正常运行,完整的表达正确的程序语义。

    出处:https://www.cnblogs.com/my-liu/ 简介:每天都在进步,每周都在总结,架构师的修罗之路!你的一个点赞,一句留言,就可以让博主开心一笑,充满动力! 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    oracle执行完shutdown immediate后登陆不上了怎么办
    软件工程实践2017第一次作业-准备
    工作准备
    第二次作业——个人项目实战
    第一次作业-准备
    软件工程实践第二次作业-个人项目实战
    软件工程实践第一次作业-准备
    关于在git添加远程地址的过程中遇到的问题
    在配置github中遇到的一些问题
    软件工程实践第一次作业--准备
  • 原文地址:https://www.cnblogs.com/my-liu/p/9893082.html
Copyright © 2011-2022 走看看