Java和Kotlin编译基础知识

Java和Kotlin都是跨平台语言, 归功于在编译时生成的字节码与平台无关, jvm在装载字节码后即可运行。
Java和Kotlin编译基础知识

Java和Kotlin编译基础知识

Java Kotlin
编译 javac kotlinc
运行 java kotlin

Java语言使用javac编译为字节码, Kotlin使用kotlinc编译为字节码;

Java和Kotlin编译基础知识在Android Studio的安装目录下保存着Kotlin插件, Kotlin目录保证了在Android Studio里能正常编译、运行Kotlin代码;
Java和Kotlin编译基础知识Java语言会使用javac编译为.class, 并使用jre运行起来;

为了介绍Java和Kotlin的编译, 写最简单的代码来介绍原理。 代码只有一行输出Hello World;
Java和Kotlin编译基础知识

我们看HelloJava定义了package, 所以这个类的全路径(包名+类名)应该是com.brycegao.basic.HelloJava, 而classloader是通过全路径去加载类的。
Java和Kotlin编译基础知识
正确的做法是在src目录下时执行java com/brycegao/basic/HelloJava

如果类没有包名则可以在当前目录下加载类;
Java和Kotlin编译基础知识

使用javap反编译生成物, 可以看到java和kotlin生成的字节码基本一致,
Java和Kotlin编译基础知识

字节码最终被classloader加载并运行;
Java和Kotlin编译基础知识