- Learn Kotlin Programming(Second Edition)
- Stephen Samuel Stefan Bocutiu
- 228字
- 2021-06-24 14:13:23
Kotlin runtime
When we compiled Hello World! and produced the JAR, we instructed the compiler to bundle in the Kotlin runtime. Why is the runtime needed? Take a closer look at the following bytecode that was generated, if you haven't already done so. To be more specific, look at line 3. It invokes a method to validate the fact that the args variable is not null; therefore, if you compile the code without asking for the runtime to be bundled in, and then try to run it, you will get an exception:
$ kotlinc HelloWorld.kt -d HelloWorld.jar $ java -jar HelloWorld.jar Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at HelloWorldKt.main(HelloWorld.kt) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
The runtime footprint is very small; at approximately 800 K, you can't argue otherwise. Kotlin comes with its own standard class library (Kotlin runtime), which is different from the Java library. As a result, you need to merge it into the resulting JAR, or provide it in the classpath, as follows:
$ java -cp $KOTLIN_HOME/lib/kotlin-runtime.jar:HelloWorld.jar HelloWorldKt
If you develop a library for the exclusive use of other Kotlin libraries or applications, then you don't have to include the runtime. Alternatively, there is a shorter path that involves passing a flag to the Kotlin compiler, as follows:
$ kotlinc -include-runtime HelloWorld.kt -d HelloWorld
The preceding code will include the runtime when assembling the final JAR file.
- 程序員修煉之道:程序設計入門30講
- Flask Blueprints
- Moodle Administration Essentials
- 從程序員到架構師:大數據量、緩存、高并發、微服務、多團隊協同等核心場景實戰
- Python高級編程
- 程序是怎樣跑起來的(第3版)
- Spring快速入門
- Clojure Reactive Programming
- 3ds Max印象 電視欄目包裝動畫與特效制作
- Mockito Essentials
- FusionCharts Beginner’s Guide:The Official Guide for FusionCharts Suite
- INSTANT LESS CSS Preprocessor How-to
- 多接入邊緣計算實戰
- 測試架構師修煉之道:從測試工程師到測試架構師(第2版)
- 深入理解Android:WebKit卷