This project demonstrates sharing runtime independent code between different Kotlin's runtimes (Java/Android/JavaScript). It uses Gradle build engine.
It uses new support for multiplatform modules with plugin kotlin-multiplatform.
Applications are built using features available from Kotlin 1.2 regarding multiplatform modules - see this blog posts:
- Kotlin 1.2 Released: Sharing Code between Platforms
- Webinar recording: Developing Multiplatform Projects in Kotlin 1.2
Older implementation that didn't use kotlin-multiplatform plugin and various hacks was moved to old-multiplatform branch.
Oldest implementation that used various hacks was moved to old-multiplatform branch.

- writes Hello Kotlin!
- calculates first 1000 prime numbers (this part is shared between runtimes) and prints them
It's the Gradle multiple modules project.
hello_android_app- Android application module, it's compiled to DEX bytecode, it produces APK file upon buildhello_js_browser_app- application transpiled for frontend JavaScript, packed in WebPack, it's only statically served by Node.jshello_js_node_app- console application transpiled to Node.js JavaScripthello_jvm_app- console application compiled to Java bytecode for JVM, produces JAR that can be executed by eg. Oracle JVMhello_lib- multiplatform library project, with shared and platform specific codecommonMain- shared Kotlin source code, platform independent codecommonTest- shared tests, platform independent testsjsMain- JavaScript runtimes platform dependent codejsTest- JavaScript runtimes specific testsjvmMain- Java runtime platform dependent codejvmTest- Java runtime specific testsandroidMain- Android runtime platform dependent codeandroidTest- Android runtime specific tests
- prime number calculation is platform independent, single code shared for all platforms
- text output on screen is platform dependent
- Android - it's done by adding with TextView to layout
- Frontend JavaScript - it adds element in DOM of HTML page
- Node.js JavaScript - uses
console.log() - JVM - uses
System.out.println()
Note: Ordinary console output can be done by println() function from Kotlin Standard Library.
It was checked only under Linux Mint, probably there won't be any problems with most Unix-like environments.
You can use Android Studio to run the application. To build from command line, you can use
# ./gradlew hello_android_app:build
and APK file is located in your build/outputs/apk directory.
# ./gradlew hello_jvm_app:build
You can than run the JAR file using java -jar hello_jvm_app.jar command from build/libs directory.
# ./gradlew hello_js_browser_app:build
Webpack allows to host site directly from Gradle by
# ./gradlew hello_js_browser_app:run
It will run locally on http://localhost:8088/.
# ./gradlew hello_js_node_app:build
You can execute it in hello_js_node_app directory by:
# node ./app.js
# ./gradlew tasks --all
Do whathever you want with this.



