Olej писал(а):
- в Kotlin есть целый ряд конструкций высокого уровня, которых нет в Java и близко...
Дальше меня интересует именно тестирование таких конструкций ... по крайней мере, самых интересных.
Описания синтаксиса/семантики черпаем здесь:
Reference - оригинальная документация
Руководство по языку Kotlin - перевод этой документации
Но прежде разбираемся с терминальной (CLI) сборкой.
На примере простейшей программы:
Код: Выделить всё
fun main(args: Array<String>) {
println("Hello, World!")
}
Потому что:
- мне совершенно нет нужды в могучей среде IDEA для простейших тестов ... хотелось бы использовать простейшую терминальную сборку;
- привязка инструмента (в данном случае языка Kotlin) к реализации (в данном случае среда разработки IDEA) - плохая идея, и здесь как-раз случай проверить что это не так;
Варианты сборки (и запуска), они мне все пригодятся
...
1. То, что описано в README - сборка всего в архив jar:
Код: Выделить всё
[olej@dell tests]$ kotlinc test_fun.kt -include-runtime -d test_fun.jar
[olej@dell tests]$ java -jar test_fun.jar
Hello, World!
[olej@dell tests]$ ls -l test_fun.jar
-rw-rw-r-- 1 olej olej 865731 июн 2 23:14 test_fun.jar
2. Сборка в .class :
Код: Выделить всё
[olej@dell tests]$ kotlinc test_fun.kt -include-runtime -d xxx
[olej@dell tests]$ tree xxx
xxx
├── META-INF
│ └── main.kotlin_module
└── Test_funKt.class
1 directory, 2 files
[olej@dell tests]$ ls -l xxx/Test_funKt.class
-rw-rw-r-- 1 olej olej 972 июн 2 22:35 xxx/Test_funKt.class
Обратите внимание на размер!
Но при этом гораздо усложняется запуск приложения:
Код: Выделить всё
[olej@dell tests]$ which kotlinc
~/.sdkman/candidates/kotlin/current/bin/kotlinc
[olej@dell kotlin]$ ls -l ~/.sdkman/candidates/kotlin/
итого 4
drwxr-xr-x 1 olej olej 44 апр 27 19:33 1.1.2-2
lrwxrwxrwx 1 olej olej 44 май 25 12:31 current -> /home/olej/.sdkman/candidates/kotlin/1.1.2-2
Код: Выделить всё
[olej@dell tests]$ pwd
/home/olej/2017_WORK/own.WORK/Kotlin/tests
[olej@dell tests]$ java -classpath $HOME/.sdkman/candidates/kotlin/1.1.2-2/lib/kotlin-runner.jar:xxx Test_funKt
Hello, World!
Или так:
Код: Выделить всё
[olej@dell tests]$ cd xxx
[olej@dell xxx]$ pwd
/home/olej/2017_WORK/own.WORK/Kotlin/tests/xxx
[olej@dell xxx]$ java -classpath $HOME/.sdkman/candidates/kotlin/1.1.2-2/lib/kotlin-runner.jar:./ Test_funKt
Hello, World!