-
Build and Run
$ ./gradlew :shared:jvmRun
$ ./gradlew :shared:jvmDistZip
$ ./gradlew :backend:jvm:run
$ ./gradlew :backend:jvm:build
$ ./gradlew :backend:jvm:jdeprscan
$ ./gradlew :backend:jvm:printModuleDeps
$ ./gradlew :benchmark:benchmark
-
GraalVM Native Image
$ sdk u java graalvm-ce-dev
$ ./gradlew :backend:jvm:nativeCompile
$ backend/jvm/build/native/nativeCompile/jvm
$ ./gradlew :backend:jvm:run -Pagent
$ curl http://localhost:8080/shutdown
$ ./gradlew :backend:jvm:metadataCopy
-
Containers
$ docker run \
-it \
--rm \
--pull always \
--workdir /app \
--publish 8080:8080 \
--publish 8081:8081 \
--name kotlin-mpp-playground \
--mount type=bind,source=$(pwd),destination=/app,readonly \
openjdk:28-ea-slim /bin/bash -c "printenv && backend/jvm/build/libs/jvm"
$ ./gradlew :backend:jvm:jibDockerBuild
$ docker run -it --rm --name jvm -p 8080:8080 -p 9898:9898 sureshg/jvm
$ docker stats
-
OpenTelemetry
$ brew install ymtdzzz/tap/otel-tui
$ otel-tui
$ docker run \
-it --rm \
-p 8123:8123 \
-p 8081:8080 \
-p 4317:4317 \
-p 4318:4318 \
--name clickstack \
--ulimit nofile=262144:262144 \
clickhouse/clickstack-local:latest
$ open http://localhost:8081/search
$ docker run -it --rm \
--name jvm \
-p 8080:8080 \
-p 9898:9898 \
sureshg/jvm:latest
$ curl -v -X GET http://localhost:8080/trace
$ curl -v -X POST http://localhost:8080/loglevel/dev.suresh.http/debug
$ curl -v -X POST http://localhost:8080/loglevel/reset
-
JVM Agents
$ ./gradlew :backend:agent:jfr:build
$ backend/agent/jfr/build/libs/jfr
$ ./gradlew :backend:agent:otel:build
-
AOT Cache
$ java --enable-preview \
-XX:+UseZGC \
-XX:+UseCompactObjectHeaders \
-XX:AOTCacheOutput=app.aot \
-jar backend/jvm/build/libs/jvm-all.jar
$ java --enable-preview \
-XX:+UseZGC \
-XX:+UseCompactObjectHeaders \
-XX:AOTCache=app.aot \
-jar backend/jvm/build/libs/jvm-all.jar
$ jcmd jvm System.map
-
Tests
$ ./gradlew :backend:jvm:test -PktorTest
$ ./gradlew :backend:jvm:test -Pk8sTest
$ ./gradlew :backend:jvm:jvmRun -DmainClass=dev.suresh.lang.SysCallKt --quiet
-
ABI Validation & Missing Targets
$ ./gradlew :shared:updateKotlinAbi
$ ./gradlew :shared:checkKotlinAbi
$ ./gradlew :shared:kmpMissingTargets
$ open shared/build/reports/kmp-missing-targets.md