美文网首页
Java如何实现平台无关性

Java如何实现平台无关性

作者: 叫我胖虎大人 | 来源:发表于2019-08-28 16:48 被阅读0次

通常把Java文件分为编译时运行时,通过javac命令将.java文件编译成字节码


Java源码首先被编译成字节码,再由不同平台的JVM进行解析,Java语言在不同平台上运行时不需要进行重新编译.Java虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令.

示例:

  1. 创建一个Test.java文件
/*************************************************************************
    > File Name: Test.java
    > Author: 
    > Mail: 
    > Created Time: 2019年08月28日 星期三 15时34分04秒
 ************************************************************************/
public class Test
{
    public static void main(String[] args){
        int i = 5;
        int j = 6;
        System.out.println(i + j);
    }
}
  1. 编译Java文件
# panghu @ ubuntu18 in ~/Desktop/com/test/demo [16:29:11] 
$ javac Test.java 

# panghu @ ubuntu18 in ~/Desktop/com/test/demo [16:29:13] 
$ ls
Test.class  Test.java
  1. 查看.class文件
    使用javap -c命令查看指定文件

这里可以发现一点,编译器会在未指定构造函数的时候,默认创建一个无参构造方法

注意:如果指定了package需要在对应的包下才能执行,否则会抛出找不到主类的异常.


为什么JVM不直接将源码解析成机器码去执行

  • 准备工作:
    如果直接解析成机器码去执行,每次执行都需要进行各种检查,存在一定的时间和性能上的消耗
  • 兼容性:
    可以将其他的语言解析为字节码 (如Groovy),在JVM上面执行

参考课程:https://www.imooc.com/search/?words=%E5%89%91%E6%8C%87offer

相关文章

  • Java底层知识学习笔记

    Java平台无关性如何实现?首先我们看一张图片:Java平台无关性.png (1)Java源码首先要被编译成字节码...

  • JVM——Java虚拟机架构

    Java虚拟机(Java virtualmachine)实现了Java语言最重要的特征:即平台无关性。 平台无关性...

  • JVM相关

    一 谈谈对Java的理解 平台无关性;GC;语言特性;面向对象;类库;异常处理; 二 平台无关性如何实现? 1. ...

  • Java如何实现平台无关性

    通常把Java文件分为编译时和运行时,通过javac命令将.java文件编译成字节码 示例: 创建一个Test.j...

  • Java语言有哪些特点?

    简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); 可靠性; 安全性; ...

  • java 语言有哪些特点?

    简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); 可靠性; 安全性; ...

  • JVM(四):类文件结构

    Java程序运行在Java虚拟机上,实现平台无关性。其它语言的应用程序也可以运行在Java虚拟机上,实现语言无关性...

  • Java(一)面向对象--02Java平台无关性?

    一、Java如何实现的平台无关性 平台无关(跨平台): 一种语言在计算机上的运行不受平台的约束,一次编译到处运行。...

  • Java(一)

    JVM (Java Virtual Machine), Java 虚拟机; JVM 是 Java 平台无关性实现的...

  • Java常识Tips

    1.JVM JVM(Java Virtual Machine),Java虚拟机 JVM是Java平台无关性实现的关...

网友评论

      本文标题:Java如何实现平台无关性

      本文链接:https://www.haomeiwen.com/subject/usfmectx.html