java语言为什么具有平台无性

  首先解释一下什么叫做平台无关性:平台无关性即对每种数据类型在不同的操作系统中都分配固定长度,例如,int类型数据总是占据32个位(4个字节),而C/C++却不然。

  知道了平台无关性后下面我们简单说一下java为什么能够"Write Once,Run Anywhere"如下是java程序运行的过程:

    • 编译
      将Java代码翻译成Java字节码。

    • Java编译器
      将Java源文件(.java)翻译成Java字节码文件(.class )。
      javac Welcome.java //将Java源代码翻译成Java字节码,并且生成.class文件
      java Welcome //运行字节码

    • JVM java虚拟机
      解释Java字节符的程序。不是物理机器。
      所以Java字节码可以在不同的硬件平台和操作系统上运行,只要安装了JVM(不同的操作系统对应不同的jvm)

    • 类加载器(class loader)
      将类的字节码加载到内存中的程序。
      在执行一个Java程序时,JVM首先会用一个称为类加载器的程序将类的字节码加载到内存中。如果程序中使用了其他类,类加载程序会在需要它们之前动态地加载他们。当加载该类后,JVM使用一个成为字节码验证器(bytecode verifier)的程序来检验字节码的合法性,确保字节码不会违反Java的安全规范

    • 总的来说:每个操作系统对应的JVM会自动去弥补java程序在不同操作系统之间的“差异”,以达到“一致性”。

猜你喜欢

转载自www.cnblogs.com/a5137/p/9725166.html