美文网首页
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如何实现平台无关性

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