Kotlin

Программные средства разработки

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 12:40

Kotlin
Kotlin (Ко́тлин) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется также в JavaScript и на другие платформы через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт[4].

Авторы ставили целью создать язык более лаконичный и типобезопасный, чем Java, и более простой, чем Scala[4]. Следствием упрощения по сравнению со Scala стали также более быстрая компиляция и лучшая поддержка языка в IDE[5].
Язык разрабатывается с 2010 года, публично представлен в июле 2011[3]. Исходный код реализации языка был открыт в феврале 2012[6]. В феврале был выпущен milestone 1, включающий плагин для IDEA. В июне — milestone 2 с поддержкой Android[7]. В декабре 2012 года вышел milestone 4, включающий, в частности, поддержку Java 7[8].

В феврале 2016 года вышел официальный релиз-кандидат версии 1.0[9], а 15 февраля 2016 года — релиз 1.0[10]. 1 марта 2017 вышел релиз 1.1[11].

В мае 2017 года компания Google сообщила, что инструменты языка Kotlin основанные на JetBrains IDE будут по стандарту включены в Android Studio 3.0 — официальный инструмент разработки для ОС Android[12].
Позиционируется разработчиками как объектно-ориентированный язык промышленного уровня, а также как язык, который сможет заменить Java. При этом язык полностью совместим с Java, что позволяет разработчикам постепенно перейти с Java на Kotlin. В частности, в Android язык интегрируется с помощью Gradle, что позволяет для существующего Android-приложения внедрять новые функции на Kotlin без переписывания приложения целиком.
Синтаксис языка похож на Pascal, TypeScript, Haxe, PL/SQL, F#, Go и Scala, C++, Java, C# и D. При объявлении переменных и параметров, типы данных указываются после названия (разделитель двоеточие). Точка с запятой как разделитель операторов является не обязательной, также как в Scala и Groovy, в большинстве случаев перевода строки достаточно чтобы компилятор понял, что выражение закончилось. Кроме объектно-ориентированного подхода, Kotlin также поддерживает процедурный стиль с использованием функций. Как и в языках C/C++/D, точкой входа в программе является функция "main", которая принимает массив параметров командной строки. Программы на Kotlin также поддерживают Perl и Unix/Linux shell стиль интерпретации строк. Kotlin также поддерживает вывод типов.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 12:46

Изображение
Руководство по языку Kotlin
Здесь мы собираем ресурсы по Котлину и переводим документацию. Сообщество открыто для новых участников - любого кто может переводить и проверять перевод. Редактирование текста происходит похожим на википедию образом, с той лишь разницей, что тексты и структура меню хранятся в GIT.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 12:58

Сайт проекта Kotlin (англ.)
Try online

Код: Выделить всё

/**
 * We declare a package-level function main which returns Unit and takes
 * an Array of strings as a parameter. Note that semicolons are optional.
 */

fun main(args: Array<String>) {
    println("Hello, world!")
}
USE
IntelliJ IDEA
Bundled with Community Edition or IntelliJ IDEA Ultimate
USE
Android Studio
Bundled with Studio 3.0, plugin available for earlier versions
USE Eclipse
Install the plugin from the Eclipse Marketplace
STANDALONE Compiler
Use any editor and build from the command line
Working with the Command Line Compiler
Downloading the compiler
Every release ships with a standalone version of the compiler. We can download it from GitHub Releases. The latest release is 1.1.2-2.
Manual Install
Unzip the standalone compiler into a directory and optionally add the bin directory to the system path. The bin directory contains the scripts needed to compile and run Kotlin on Windows, OS X and Linux.
SDKMAN!
An easier way to install Kotlin on UNIX based systems such as OS X, Linux, Cygwin, FreeBSD and Solaris is by using SDKMAN!. Simply run the following in a terminal and follow any instructions:

Код: Выделить всё

   $ curl -s https://get.sdkman.io | bash
Next open a new terminal and install Kotlin with:

Код: Выделить всё

   $ sdk install kotlin

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 13:42

Olej писал(а): Working with the Command Line Compiler
Downloading the compiler
Every release ships with a standalone version of the compiler. We can download it from GitHub Releases. The latest release is 1.1.2-2.
Manual Install
Unzip the standalone compiler into a directory and optionally add the bin directory to the system path. The bin directory contains the scripts needed to compile and run Kotlin on Windows, OS X and Linux.

Код: Выделить всё

[olej@dell Tools]$ ls -l kotlin-compiler-1.1.2-2.zip 
-rw-rw-r-- 1 olej olej 30085191 май 25 13:37 kotlin-compiler-1.1.2-2.zip

Код: Выделить всё

[olej@dell kotlinc]$ cd ~/kotlinc

[olej@dell kotlinc]$ ls -l
итого 4
drwxr-xr-x 1 olej olej  168 апр 27 19:20 bin
-rw-r--r-- 1 olej olej    7 апр 27 19:20 build.txt
drwxr-xr-x 1 olej olej 1258 апр 27 19:33 lib
drwxr-xr-x 1 olej olej   64 апр 27 19:20 license

[olej@dell kotlinc]$ du -hs
32M     .

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 16:11

Olej писал(а):
SDKMAN!
An easier way to install Kotlin on UNIX based systems such as OS X, Linux, Cygwin, FreeBSD and Solaris is by using SDKMAN!. Simply run the following in a terminal and follow any instructions:

Код: Выделить всё

   $ curl -s https://get.sdkman.io | bash
Next open a new terminal and install Kotlin with:

Код: Выделить всё

   $ sdk install kotlin
Я не знаю (к стыду своему) что такое SDKMAN! (и с этим стоит отдельно разобраться) ... но:

Код: Выделить всё

[olej@dell ~]$ curl -s https://get.sdkman.io | bash
                                                               		         
Thanks for using...                                            		         
                                                               		         
                                                               		         
     SSSSSSSSSSSSSSS DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
   SS:::::::::::::::SD::::::::::::DDD    K:::::::K    K:::::K                  
  S:::::SSSSSS::::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::S     SSSSSSSDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S:::::S              D:::::D    D:::::DKK::::::K  K:::::KKK                  
  S:::::S              D:::::D     D:::::D K:::::K K:::::K                     
   S::::SSSS           D:::::D     D:::::D K::::::K:::::K                      
    SS::::::SSSSS      D:::::D     D:::::D K:::::::::::K                       
      SSS::::::::SS    D:::::D     D:::::D K:::::::::::K                       
         SSSSSS::::S   D:::::D     D:::::D K::::::K:::::K                      
              S:::::S  D:::::D     D:::::D K:::::K K:::::K                     
              S:::::S  D:::::D    D:::::DKK::::::K  K:::::KKK                  
  SSSSSSS     S:::::SDDD:::::DDDDD:::::D K:::::::K   K::::::K                  
  S::::::SSSSSS:::::SD:::::::::::::::DD  K:::::::K    K:::::K                  
  S:::::::::::::::SS D::::::::::::DDD    K:::::::K    K:::::K                  
   SSSSSSSSSSSSSSS   DDDDDDDDDDDDD       KKKKKKKKK    KKKKKKK                  
                                                                               
                                                                               
                      mmmmmmm    mmmmmmm     aaaaaaaaaaaaa  nnnn  nnnnnnnn     
                    mm:::::::m  m:::::::mm   a::::::::::::a n:::nn::::::::nn   
                   m::::::::::mm::::::::::m  aaaaaaaaa:::::an::::::::::::::nn  
                   m::::::::::::::::::::::m           a::::ann:::::::::::::::n 
                   m:::::mmm::::::mmm:::::m    aaaaaaa:::::a  n:::::nnnn:::::n 
                   m::::m   m::::m   m::::m  aa::::::::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma::::a    a:::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::ma:::::aaaa::::::a  n::::n    n::::n 
                   m::::m   m::::m   m::::m a::::::::::aa:::a n::::n    n::::n 
                   mmmmmm   mmmmmm   mmmmmm  aaaaaaaaaa  aaaa nnnnnn    nnnnnn 
            								                                     
            								                                     
                                                 Now attempting installation...
                                                                               
Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime the config file...
Download script archive...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100 20838  100 20838    0     0  11718      0  0:00:01  0:00:01 --:--:-- 11718
Extract script archive...
Install scripts...
Set version to 5.5.9+231 ...
Attempt update of bash profiles...
Updated existing /home/olej/.bash_profile
Updated existing /home/olej/.bashrc
Attempt update of zsh profiles...
Created and initialised /home/olej/.zshrc



All done!


Please open a new terminal, or run the following in the existing one:

    source "/home/olej/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!
После чего :!:

Код: Выделить всё

[olej@dell ~]$ tail -n3 .bashrc
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/olej/.sdkman"
[[ -s "/home/olej/.sdkman/bin/sdkman-init.sh" ]] && source "/home/olej/.sdkman/bin/sdkman-init.sh"
Т.е. использовать это можно только в последующих сессиях запуска bash!

Код: Выделить всё

[olej@dell ~]$ sdk install kotlin

Downloading: kotlin 1.1.2-2

In progress...

######################################################################## 100,0%

Installing: kotlin 1.1.2-2
Done installing!


Setting kotlin 1.1.2-2 as default.

Код: Выделить всё

[olej@dell ~]$ echo $PATH
/home/olej/.sdkman/candidates/kotlin/current/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/olej/.local/bin:/home/olej/bin

Код: Выделить всё

[olej@dell Yandex]$ tree ~/.sdkman/candidates/kotlin/1.1.2-2
/home/olej/.sdkman/candidates/kotlin/1.1.2-2
├── bin
│   ├── kotlin
│   ├── kotlin.bat
│   ├── kotlinc
│   ├── kotlinc.bat
│   ├── kotlinc-js
│   ├── kotlinc-js.bat
│   ├── kotlinc-jvm
│   └── kotlinc-jvm.bat
├── build.txt
├── lib
│   ├── allopen-compiler-plugin.jar
│   ├── android-extensions-compiler.jar
│   ├── kotlin-annotation-processing.jar
│   ├── kotlin-ant.jar
│   ├── kotlin-build-common-test.jar
│   ├── kotlin-compiler-client-embeddable.jar
│   ├── kotlin-compiler.jar
│   ├── kotlin-daemon-client.jar
│   ├── kotlin-jslib.jar
│   ├── kotlin-jslib-sources.jar
│   ├── kotlin-preloader.jar
│   ├── kotlin-reflect.jar
│   ├── kotlin-runner.jar
│   ├── kotlin-runtime.jar
│   ├── kotlin-runtime-sources.jar
│   ├── kotlin-script-runtime.jar
│   ├── kotlin-script-runtime-sources.jar
│   ├── kotlin-stdlib.jar
│   ├── kotlin-stdlib-js.jar
│   ├── kotlin-stdlib-js-sources.jar
│   ├── kotlin-stdlib-sources.jar
│   ├── kotlin-test.jar
│   ├── kotlin-test-js.jar
│   ├── noarg-compiler-plugin.jar
│   ├── sam-with-receiver-compiler-plugin.jar
│   └── source-sections-compiler-plugin.jar
└── license
    ├── LICENSE.txt
    ├── NOTICE.txt
    └── third_party
        ├── args4j_LICENSE.txt
        ├── asm_license.txt
        ├── closure-compiler_LICENSE.txt
        ├── dart_LICENSE.txt
        ├── jshashtable_license.txt
        ├── json_LICENSE.txt
        ├── maven_LICENSE.txt
        ├── pcollections_LICENSE.txt
        ├── prototype_license.txt
        ├── rhino_LICENSE.txt
        ├── scala_license.txt
        ├── trove_license.txt
        └── trove_readme_license.txt

4 directories, 50 files

Код: Выделить всё

[olej@dell Yandex]$ which kotlin
~/.sdkman/candidates/kotlin/current/bin/kotlin

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 16:16

Т.е. и 1-й (GitHub) и 2-й (SDKMAN!) работает (и с достаточно подобным результатом)...

Тестируем:

Код: Выделить всё

[olej@dell Kotlin]$ cat hello.kt 
fun main(args: Array<String>) {
    println("Hello, World!")
}

Код: Выделить всё

[olej@dell Kotlin]$ kotlinc hello.kt -include-runtime -d hello.jar

[olej@dell Kotlin]$ ls
hello.jar  hello.kt

Код: Выделить всё

[olej@dell Kotlin]$ java -jar hello.jar
Hello, World!
Компиляция в библиотеку, без прикомпилированной исполнимой части, для создания модульных программ:

Код: Выделить всё

[olej@dell Kotlin]$ kotlinc hello.kt -d hello.jar

[olej@dell Kotlin]$ ls -l
итого 8
-rw-rw-r-- 1 olej olej 1138 май 25 16:23 hello.jar
-rw-rw-r-- 1 olej olej   63 май 25 13:52 hello.kt

Код: Выделить всё

[olej@dell Kotlin]$ kotlin -classpath hello.jar HelloKt
Hello, World!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 16:55

Теперь, разобравшись (по самым верхам) с установкой и использованием инструментария Kotlin (онлайн Интернет и CLI варианты для Linux), можно перейти к справочным источникам по самому языку Kotlin...

Books:
Изображение

Изображение

Изображение

Изображение

Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 25 май 2017, 17:01

Olej писал(а):можно перейти к справочным источникам по самому языку Kotlin...
Полная редакция оригинальной документации от разработчиков: Reference.

Немного о Kotlin
20 февраля 2016 в 08:25
Две главных особенности котлина, на мой взгляд, это его простота и полная совместимость с Java. Котлин создавался компанией, которая делает очень много продуктов на Java и которая хорошо разбирается в современных инструментах разработки. Запрос на новый язык витает в воздухе давно, но сделать такой язык, который бы позволил взять (огромную) готовую кодовую базу Java, обычных Java-разработчиков, дать им новый инструмент и бесшовно (но более эффективно) продолжать разработку — такого инструмента до появления котлина не существовало. Создатели нового языка, на мой взгляд, очень хорошо почувствовали потребности бизнеса и разработчиков: бизнесу дали возможность увеличить эффективность разработчиков, а разработчикам дать современный инструмент для разработки. И когда я говорю о «современном инструменте», я, конечно, имею ввиду не только компилятор, но и поддержку в IDE, без которой лично моя деятельность разработчика мне видится совсем немыслимой.
В итоге: простота позволяет использовать язык почти любому Java-разработчику, который готов потратить полчаса на то, чтобы посмотреть туториал или спецификацию языка, обратная совместимость же позволяет использовать язык в уже существующем проекте.
Почему следует полностью переходить на Kotlin
вчера в 19:01
Хочу рассказать вам о новом языке программирования, который называется Kotlin, и объяснить, почему вам стоит использовать его в своём следующем проекте. Раньше я предпочитал Java, но в последний год пишу на Kotlin везде, где только можно. И в данный момент я не представляю себе ситуации, в которой лучше было бы выбрать Java.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 28 май 2017, 20:41

Перевожу некоторые главы оригинальной документации Kotlin.
Эти переводы документации вы можете найти здесь: Руководство по языку Kotlin.
Это единственно доступное описание (пока?) на русском языке, но этого описание недостаточно в качестве учебника по языку, это может рассматриваться только как "Справочник по языку".

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Kotlin

Непрочитанное сообщение Olej » 29 май 2017, 14:37

Официально каналом обсуждения Kotlin от JetBrains (разработчика) является корпоративный месенжер Slack.
Для того, чтобы получить доступ, нужно:
- обратиться на WEB Slack интерфейс: http://slack.kotlinlang.org/ ...
- вписать свой мэйл
- получить на почту инвайт (приглашение)
- войти в чат...
- пройти несколько страниц подтверждений...
- выбрать интересующий канал обсуждений...
В частности, русскоязычный канал пользователей здесь: https://kotlinlang.slack.com/messages/C2X2LMYQ2/
Первые 2 картинки показывают этот ресурс через WEB-браузер.
Последняя картинка показывает тот же ресурс (русскоязычный канал) в автономном клиенте Slack.
Вложения
jb0.png
jb.png
sl3.png

Ответить

Вернуться в «Инструменты программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя