Java和Kotlin编译基础知识
Java和Kotlin都是跨平台语言, 归功于在编译时生成的字节码与平台无关, jvm在装载字节码后即可运行。
Java | Kotlin | |
---|---|---|
编译 | javac | kotlinc |
运行 | java | kotlin |
Java语言使用javac编译为字节码, Kotlin使用kotlinc编译为字节码;
在Android Studio的安装目录下保存着Kotlin插件, Kotlin目录保证了在Android Studio里能正常编译、运行Kotlin代码;
Java语言会使用javac编译为.class, 并使用jre运行起来;
为了介绍Java和Kotlin的编译, 写最简单的代码来介绍原理。 代码只有一行输出Hello World;
我们看HelloJava定义了package, 所以这个类的全路径(包名+类名)应该是com.brycegao.basic.HelloJava, 而classloader是通过全路径去加载类的。
正确的做法是在src目录下时执行java com/brycegao/basic/HelloJava
如果类没有包名则可以在当前目录下加载类;
使用javap反编译生成物, 可以看到java和kotlin生成的字节码基本一致,
字节码最终被classloader加载并运行;