zoukankan      html  css  js  c++  java
  • 跨平台理论杂记

    1,
    JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

    而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。

    JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。

    注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。

    所以,运行Java程序必须有JVM的支持,因为编译的结果不是机器码,必须要经过JVM的再次翻译才能执行。即使你将Java程序打包成可执行文件(例如 .exe),仍然需要JVM的支持。

    注意:跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。

    来自 <http://blog.csdn.net/u014683605/article/details/46620055>
    2,
    所谓跨平台,就是理论上你写了一份代码,在任何平台上执行都会得到相同的结果。java和C#这些能跨平台的语言其实并没有编译成本地代码,而是编译成中间语言,然后通过不同平台的JVM或.net framework实现在不同平台上运行。C语言为什么可以在window和Linux上都能执行?因为系统开发者在开发系统的时候均遵循了C语言规范,所以可以做到,但是你在Windows下编译C生成的.exe文件,你是没有可能在Linux下运行的,反之亦然。

    来自 <http://tieba.baidu.com/p/2989247025>
    3,动态与静态语言
    动态类型语言:在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动 态类型语言。很多脚本语言vbscrīpt,javascrīpt也是这类语言。看下面javascrīpt代码:
    function add(a,b){
    return a+b;
    }
    add(1,2);
    add('1',2);


    静态类型语言:相反静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:java,c#,c,c++等等。
    public int add(int a,int b){
    return a+b;
    }
    而Dynamic Programming Language (动态编程语言)指在程序运行过程中可以改变数据类型的结构,对象的函数,变量可以被修改删除
    网上有人说 类型检查和改变结构 是静态语言和动态语言两个区别点

  • 相关阅读:
    Text Link Ads 注册[赚钱一]
    Linux文件系统中的链接
    C++虚函数和纯虚函数(1)
    Android init reading tips
    Android上GDB的使用
    What is prelink?
    Linux fork哪些被继承,哪些不被继承
    为什么x86 Linux程序起始地址是从0x08048000开始的?
    Android应用开发的插件化 模块化
    C++拷贝构造函数(深拷贝、浅拷贝)
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/5926209.html
Copyright © 2011-2022 走看看