stringtranslate.com

Kotlin (язык программирования)

Kotlin ( / ˈ k ɒ t l ɪ n / ) [ 2]кроссплатформенный , статически типизированный , высокоуровневый язык программирования общего назначения с выводом типов . Kotlin разработан для полного взаимодействия с Java , а версия JVM стандартной библиотеки Kotlin зависит от библиотеки классов Java , но вывод типов позволяет сделать его синтаксис более лаконичным. Kotlin в основном нацелен на JVM, но также компилируется в JavaScript (например, для веб-приложений frontend, использующих React ) [3] или в машинный код через LLVM (например, для нативных приложений iOS , разделяющих бизнес-логику с приложениями Android ). [4] Расходы на разработку языка несет JetBrains , в то время как Kotlin Foundation защищает торговую марку Kotlin. [5]

7 мая 2019 года Google объявила, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений Android . [6] С момента выпуска Android Studio 3.0 в октябре 2017 года Kotlin был включен в качестве альтернативы стандартному компилятору Java. Компилятор Android Kotlin по умолчанию создает байт-код Java 8 (который работает в любой более поздней JVM), но позволяет программисту выбрать Java 9 до 20 для оптимизации [7] или предоставляет больше функций; имеет поддержку взаимодействия классов двунаправленных записей для JVM, представленную в Java 16, считающуюся стабильной с Kotlin 1.5.

Kotlin поддерживает веб с помощью Kotlin/JS через промежуточный бэкэнд на основе представления , который был объявлен стабильным с версии 1.8, выпущенной в декабре 2022 года. Kotlin/Native (например, для поддержки Apple Silicon ) был объявлен стабильным с версии 1.9.20, выпущенной в ноябре 2023 года. [8] [9]

История

Двухмерное изображение талисмана Kotlin
3D-изображение талисмана Kotlin

Имя

Название происходит от острова Котлин , российского острова в Финском заливе , недалеко от Санкт-Петербурга . Андрей Бреслав, бывший ведущий дизайнер Kotlin, упомянул, что команда решила назвать его в честь острова, так же как язык программирования Java был назван в честь индонезийского острова Ява [10] (хотя, как говорят, название языка было навеяно «java» — американским сленговым словом для кофе, [11] которое само по себе произошло от названия острова). [12]

Разработка

В июле 2011 года JetBrains представила Project Kotlin, новый язык для JVM, который находился в разработке в течение года. [13] Руководитель JetBrains Дмитрий Жемеров сказал, что большинство языков не обладают функциями, которые они искали, за исключением Scala . Однако он сослался на медленное время компиляции Scala как на недостаток. [13] Одна из заявленных целей Kotlin — компилировать так же быстро, как Java. В феврале 2012 года JetBrains открыла исходный код проекта под лицензией Apache 2. [14]

JetBrains надеялась, что новый язык будет способствовать продажам IntelliJ IDEA . [15]

Первая фиксация в репозитории Kotlin Git была сделана 8 ноября 2010 года. [16]

Kotlin 1.0 был выпущен 15 февраля 2016 года. [17] Это считается первым официально стабильным релизом, и JetBrains взяла на себя обязательство по долгосрочной обратной совместимости, начиная с этой версии.

На конференции Google I/O 2017 компания Google объявила о первоклассной поддержке Kotlin на Android . [18]

Kotlin 1.2 был выпущен 28 ноября 2017 года. [19] Функция совместного использования кода между платформами JVM и JavaScript была добавлена ​​в этот релиз (мультиплатформенное программирование на данный момент является бета- функцией [20], улучшенной с «экспериментальной»). Была сделана полнофункциональная демонстрация с новым плагином Kotlin/JS Gradle. [21] [22]

Kotlin 1.3 был выпущен 29 октября 2018 года, добавив поддержку сопрограмм для использования с асинхронным программированием. [23]

7 мая 2019 года Google объявила, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений для Android. [6]

Kotlin 1.4 был выпущен в августе 2020 года, в том числе с некоторыми небольшими изменениями в поддержке платформ Apple, т. е. во взаимодействии Objective-C / Swift . [24]

Kotlin 1.5 был выпущен в мае 2021 года.

Kotlin 1.6 был выпущен в ноябре 2021 года.

Kotlin 1.7 был выпущен в июне 2022 года, включая альфа- версию нового компилятора Kotlin K2 . [25]

Kotlin 1.8 был выпущен в декабре 2022 года, 1.8.0 был выпущен 11 января 2023 года. [26]

Kotlin 1.9 был выпущен в июле 2023 года, 1.9.0 был выпущен 6 июля 2023 года. [27]

Kotlin 2.0 был выпущен в мае 2024 года, 2.0.0 был выпущен 21 мая 2024 года. [28]

Дизайн

Руководитель разработки Андрей Бреслав заявил, что Kotlin разработан как объектно-ориентированный язык промышленного уровня и «лучший язык», чем Java , но при этом полностью совместимый с кодом Java, что позволяет компаниям постепенно мигрировать с Java на Kotlin. [29]

Заимствуя из Scala , точки с запятой необязательны в качестве завершающего признака оператора ; в большинстве случаев для компилятора достаточно новой строки , чтобы сделать вывод о том, что оператор завершен. [30]

Заимствуя из Scala , объявления переменных и списки параметров Kotlin имеют тип данных , указанный после имени переменной (и с разделителем двоеточием ), подобно Ada , BASIC , Pascal , TypeScript и Rust . Это, согласно статье Романа Елизарова, текущего руководителя проекта, приводит к выравниванию имен переменных и более приятно для глаз, особенно когда есть несколько объявлений переменных подряд, и один или несколько типов слишком сложны для вывода типа или должны быть объявлены явно для понимания людьми. [31] [32]

Заимствуя из Scala , переменные в Kotlin могут быть доступны только для чтения, объявлены с помощью ключевого слова val , или изменяемы , объявлены с помощью ключевого слова var . [33]

Заимствуя из Scala , члены класса по умолчанию являются открытыми, а сами классы по умолчанию являются окончательными , что означает, что создание производного класса невозможно, если базовый класс не объявлен с ключевым словом open .

В дополнение к классам и функциям-членам (которые эквивалентны методам) объектно-ориентированного программирования, Kotlin также поддерживает процедурное программирование с использованием функций . [34] Функции и конструкторы Kotlin поддерживают аргументы по умолчанию , списки аргументов переменной длины , именованные аргументы и перегрузку по уникальной сигнатуре. Функции-члены класса являются виртуальными, т. е. отправляются на основе типа времени выполнения объекта, для которого они вызываются.

Kotlin 1.3 добавил поддержку контрактов, [35] которые стабильны для деклараций стандартной библиотеки, но все еще экспериментальны для деклараций, определяемых пользователем. Контракты вдохновлены парадигмой программирования Design by Contract [36] Эйфеля .

После ScalaJS, код Kotlin может быть транспилирован в JavaScript , что позволяет обеспечить взаимодействие между кодом, написанным на двух языках. Это может быть использовано либо для написания полных веб-приложений на Kotlin, либо для совместного использования кода между бэкендом Kotlin и фронтендом JavaScript. [37]

Синтаксис

Процедурный стиль программирования

Kotlin ослабляет ограничение Java, позволяющее статическим методам и переменным существовать только внутри тела класса. Статические объекты и функции могут быть определены на верхнем уровне пакета без необходимости в избыточном уровне класса. Для совместимости с Java Kotlin предоставляет аннотацию JvmName, которая указывает имя класса, используемое при просмотре пакета из проекта Java. Например, @file:JvmName("JavaClassName").

Основная точка входа

Как и в C , C++ , C# , Java и Go , точкой входа в программу Kotlin является функция с именем «main», которой может быть передан массив, содержащий любые аргументы командной строки . Это необязательно, начиная с Kotlin 1.3. [38] Поддерживается интерполяция строк в стиле Perl , PHP и Unix shell . Также поддерживается вывод типов .

// Привет, мир! примервесело главное () {   область действия = "Мир"    println ( "Привет, $ scope !" )}fun main ( args : Array < String > ) {    для ( аргумент в аргументах )    println ( аргумент )}

Расширение функций

Подобно C#, Kotlin позволяет добавлять функцию расширения к любому классу без формальностей создания производного класса с новыми функциями. Функция расширения имеет доступ ко всем открытым интерфейсам класса, которые она может использовать для создания нового интерфейса функции для целевого класса. Функция расширения будет выглядеть точно так же, как функция класса, и будет показана в проверке автодополнения кода функций класса. Например:

пакет MyStringExtensions забавная строка.lastChar ( ) : Char = получить ( длина - 1 )      >>> println ( "Kotlin" .lastChar ( )) 

Помещая предыдущий код на верхний уровень пакета, класс String расширяется и включает функцию lastChar, которая не была включена в исходное определение класса String.

// Перегрузка оператора '+' с использованием функции расширенияоператор fun Point . plus ( other : Point ): Point {      Точка возврата ( x + other.x , y + other.y )      }>>> значение p1 = Точка ( 10 , 20 )     >>> значение p2 = Точка ( 30 , 40 )     >>> println ( p1 + p2 )   Точка ( x = 40 , y = 60 ) 

Функции области действия

В Kotlin есть пять функций области видимости, которые позволяют изменять область видимости в контексте объекта . Функции области видимости — это let, run, with, apply, и also. [39]

Распаковка аргументов с помощью оператора распространения

Подобно Python, оператор распространения звездочка (*) распаковывает содержимое массива в виде отдельных аргументов функции, например:

fun main ( args : Array < String > ) {     список значений = listOf ( "аргументы: " , * аргументы )     println ( список )}

Деструктуризация деклараций

Деструктурирующие объявления разлагают объект на несколько переменных одновременно, например, объект с двухмерными координатами может быть деструктурирован на два целых числа x и y .

Например, Map.Entryобъект поддерживает деструктуризацию для упрощения доступа к его полям ключа и значения:

для (( ключ , значение ) в карте )     println ( " $ ключ : $ значение " )

Вложенные функции

Kotlin позволяет объявлять локальные функции внутри других функций или методов.

класс Пользователь ( val id : Int , val name : String , val address : String )          забавно сохранитьUserToDb ( пользователь : Пользователь ) {    забавная проверка ( пользователь : Пользователь , значение : Строка , fieldName : Строка ) {        require ( value . isNotEmpty ()) { "Невозможно сохранить пользователя ${ user . id } : пусто $ fieldName " }    }  проверить ( пользователь , пользователь . имя , "Имя" )    проверить ( пользователь , пользователь.адрес , " Адрес " )   // Сохранить пользователя в базе данных ...}

Занятия по умолчанию являются окончательными.

В Kotlin, чтобы вывести новый класс из базового типа класса, базовый класс должен быть явно помечен как «открытый». Это отличается от большинства объектно-ориентированных языков, таких как Java, где классы открыты по умолчанию.

Пример базового класса, открытого для создания из него нового подкласса:

// открыто для класса означает, что этот класс будет разрешать производные классыоткрытый класс MegaButton {    // no-open для функции означает, что // полиморфное поведение отключено, если функция переопределена в производном классе отключить веселье () { ... }     // открытие функции означает, что // полиморфное поведение разрешено, если функция переопределена в производном классе открыть забавную анимацию () { ... }     }класс GigaButton : MegaButton () {    // Явное использование ключевого слова override, необходимое для переопределения функции в производном классе переопределить fun animate () { println ( "Giga Click!" ) }      }

Абстрактные классы открыты по умолчанию.

Абстрактные классы определяют абстрактные или "чисто виртуальные" функции-заполнители, которые будут определены в производном классе. Абстрактные классы открыты по умолчанию.

// Ключевое слово open здесь не нужно, по умолчанию он уже открытабстрактный класс Анимированный {    // Эта виртуальная функция также уже открыта по умолчанию абстрактный веселый анимационный ()    открыть забавный stopAnimating () { }     весело animateTwice () { }   }

Классы по умолчанию общедоступны.

Kotlin предоставляет следующие ключевые слова для ограничения видимости объявлений верхнего уровня, таких как классы, и членов класса: public, internal, protected, и private.

Применительно к члену класса:

Применительно к декларации верхнего уровня:

Пример:

// Класс виден только текущему модулювнутренний открытый класс TalkativeButton {     // метод виден только текущему классу личное веселье yell () = println ( "Эй!" )     // метод виден текущему классу и производным классам защищенный веселый шепот () = println ( "Давайте поговорим!" )    }внутренний класс MyTalkativeButton : TalkativeButton () {     весело произносить () = супер . шепот ()   }MyTalkativeButton (). utter ()

Первичный конструктор против вторичных конструкторов

Kotlin поддерживает спецификацию «первичного конструктора» как часть самого определения класса, состоящего из списка аргументов, следующего за именем класса. Этот список аргументов поддерживает расширенный синтаксис стандартных списков аргументов функций Kotlin, который позволяет объявлять свойства класса в первичном конструкторе, включая атрибуты видимости, расширяемости и изменяемости. Кроме того, при определении подкласса свойства в суперинтерфейсах и суперклассах могут быть переопределены в первичном конструкторе.

// Пример класса, использующего синтаксис первичного конструктора// (Для этого класса требуется только один конструктор)открытый класс BaseUser ( открытая переменная isSubscribed : Boolean )     открытый класс PowerUser ( защищенное значение nickname : String , окончательное переопределение var isSubscribed : Boolean = true ): BaseUser ( isSubscribed ) { }              

Однако в случаях, когда для класса требуется более одного конструктора, можно определить более общий конструктор с использованием синтаксиса вторичного конструктора , который очень похож на синтаксис конструктора, используемый в большинстве объектно-ориентированных языков, таких как C++, C# и Java.

// Пример класса, использующего синтаксис вторичного конструктора// (для этого класса требуется более одного конструктора)класс Контекст класс AttributeSet открытый класс View ( ctx : Context ) {    конструктор ( ctx : Context , attr : AttributeSet ): этот ( ctx )    }класс MyButton : Вид {     // Конструктор №1 конструктор ( ctx : Контекст ) : супер ( ctx ) {      }  // Конструктор №2 конструктор ( ctx : Context , attr : AttributeSet ) : super ( ctx , attr ) {        // ... }}

Закрытые классы

Запечатанные классы и интерфейсы ограничивают иерархии подклассов, что означает больший контроль над иерархией наследования.

Декларация герметичного интерфейса и класса:

герметичный интерфейс Expr  запечатанный класс Работа  

Все подклассы запечатанного класса определяются во время компиляции. После компиляции модуля, имеющего запечатанный класс, к нему не могут быть добавлены новые подклассы. Например, запечатанный класс в скомпилированном jar-файле не может быть подклассифицирован.

Запечатанный класс Транспортное средство  класс данных Car ( val brandName : String , val owner : String , val color : String ): Vehicle ()           класс Велосипед ( val brandName : String , val owner : String , val color : String ): Транспортное средство ()          класс Трактор ( val brandName : String , val owner : String , val color : String ): Транспортное средство ()          val kiaCar = Автомобиль ( «KIA» , «Джон» , «Синий» )     val hyundaiCar = Автомобиль ( «Hyundai» , «Britto» , «Зеленый» )     

Классы данных

Конструкция Kotlin data classопределяет классы, чьей основной целью является хранение данных, аналогичные типам Java . Как и типы recordJava record, конструкция похожа на обычные классы, за исключением того, что ключевые методы equalsи автоматически генерируются из свойств класса, в отличие от записей, классы данных открыты для наследования.hashCodetoString

Интерактивная оболочка Kotlin

$ kotlinc-jvm введите :help для справки; :quit для выхода >>> 2  +  2 4 >>> println ( "Привет, мир!" ) Привет, мир!

Kotlin как скриптовый язык

Kotlin также может использоваться как язык сценариев. Скрипт — это исходный файл Kotlin с расширением .kts и исполняемым исходным кодом в области действия верхнего уровня:

// список_папок.ktsимпорт java.io.Файл val folders = Файл ( args [ 0 ] ) .listFiles { файл -> файл .isDirectory ( ) }        папки ?. forEach ( :: println )

Скрипты можно запускать, передавая -scriptопцию и соответствующий файл скрипта компилятору.

$  kotlinc  -script  list_folders.kts "путь_к_папке_для_проверки" 

Нулевая безопасность

Kotlin различает типы данных, допускающие и не допускающие значение null. Все объекты, допускающие значение null, должны быть объявлены с постфиксом "?" после имени типа. Операции с объектами, допускающими значение null, требуют от разработчиков особого внимания: перед использованием значения необходимо выполнить проверку на значение null, либо явно, либо с помощью операторов Kotlin, безопасных для значений null:

// возвращает ноль, если...// - foo() возвращает ноль,// - или если foo() не равен нулю, но bar() возвращает ноль,// - или если foo() и bar() не равны нулю, но baz() возвращает ноль.// наоборот, возвращаемое значение не равно null тогда и только тогда, когда foo(), bar() и baz() не равны nullfoo () ? .bar () ? .baz ()
весело sayHello ( может быть : String? , neverNull : Int ) {      // использование оператора Элвиса имя значения : Строка = может быть ?: "незнакомец"       println ( "Привет, $ имя " )}

Лямбды

Kotlin обеспечивает поддержку функций высшего порядка и анонимных функций , или лямбда-выражений . [40]

// следующая функция принимает лямбда-функцию f и выполняет f, передавая ей строку "lambda"// обратите внимание, что (String) -> Unit указывает лямбда-выражение с параметром String и возвращаемым типом Unitfun executeLambda ( f : ( String ) -> Unit ) {      ф ( "лямбда" )}

Лямбда-выражения объявляются с помощью фигурных скобок { } . Если лямбда-выражение принимает параметры, они объявляются внутри фигурных скобок и сопровождаются оператором -> .

// следующий оператор определяет лямбда-выражение, которое принимает один параметр и передает его функции printlnval l = { c : Есть? -> println ( c ) }         // лямбда-выражения без параметров можно просто определить с помощью { }val l2 = { print ( "нет параметров" ) }     

Пример "Привет, мир"

(Взято и объяснено по ссылке https://kotlinlang.org/docs/kotlin-tour-hello-world.html.)

весело главное () {   println ( "Привет, мир!" ) // Привет, мир!}

Инструменты

Приложения

Когда Kotlin был объявлен официальным языком разработки Android на Google I/O в мае 2017 года, он стал третьим языком, полностью поддерживаемым для Android, после Java и C++. [50] По состоянию на 2020 год Kotlin является наиболее широко используемым языком на Android, по оценкам Google, 70% из 1000 лучших приложений в Play Store написаны на Kotlin. У самой Google есть 60 приложений, написанных на Kotlin, включая Maps и Drive. Многие приложения Android, такие как Google Home, находятся в процессе миграции на Kotlin и, следовательно, используют как Kotlin, так и Java. Kotlin на Android считается полезным из-за его безопасности нулевого указателя , а также из-за его функций, которые делают код более коротким и читаемым. [51]

В дополнение к своему заметному использованию на Android, Kotlin набирает обороты в серверной разработке. Spring Framework официально добавил поддержку Kotlin с версии 5 4 января 2017 года. [52] Для дальнейшей поддержки Kotlin Spring перевел всю свою документацию на Kotlin и добавил встроенную поддержку многих специфичных для Kotlin функций, таких как сопрограммы. [53] В дополнение к Spring, JetBrains выпустил Kotlin-first фреймворк под названием Ktor для создания веб-приложений. [54]

В 2020 году JetBrains обнаружила в ходе опроса разработчиков, использующих Kotlin, что 56% использовали Kotlin для мобильных приложений, а 47% — для веб-бэкенда. Чуть более трети всех разработчиков Kotlin заявили, что переходят на Kotlin с другого языка. Большинство пользователей Kotlin ориентировались на Android (или иную платформу JVM), и только 6% использовали Kotlin Native. [55]

Принятие

В 2018 году Kotlin был самым быстрорастущим языком на GitHub, с числом разработчиков, выросшим в 2,6 раза по сравнению с 2017 годом. [56] Это четвертый по популярности язык программирования по данным опроса разработчиков Stack Overflow 2020 года. [57]

Kotlin также был удостоен награды O'Reilly Open Source Software Conference Breakout Award за 2019 год. [58]

Многие компании/организации использовали Kotlin для бэкэнд-разработки:

Некоторые компании/организации использовали Kotlin для веб-разработки:

Ряд компаний публично заявили об использовании Kotlin:

Смотрите также

Ссылки

  1. ^ "Выпуск Kotlin 2.0.20 (Репозиторий)".
  2. ^ «Как правильно произносится Kotlin на английском?». 16 октября 2019 г. Архивировано из оригинала 9 ноября 2019 г. Получено 9 ноября 2019 г.
  3. ^ "Kotlin for JavaScript - Kotlin Programming Language". Kotlin . Архивировано из оригинала 16 августа 2020 . Получено 20 августа 2020 .
  4. ^ "Kotlin для кроссплатформенной мобильной разработки". JetBrains: Developer Tools for Professionals and Teams . Архивировано из оригинала 19 августа 2020 г. Получено 20 августа 2020 г.
  5. ^ "Kotlin Foundation - Kotlin Programming Language". Kotlin . Архивировано из оригинала 29 декабря 2019 . Получено 16 декабря 2019 .
  6. ^ ab Lardinois, Frederic (7 мая 2019 г.). «Kotlin теперь является предпочтительным языком Google для разработки приложений для Android». TechCrunch . Архивировано из оригинала 7 мая 2019 г. Получено 8 мая 2019 г.
  7. ^ "Kotlin FAQ". Архивировано из оригинала 2 июня 2021 г. . Получено 20 августа 2024 г. Kotlin позволяет вам выбрать версию JVM для выполнения. По умолчанию компилятор Kotlin/JVM создает байт-код, совместимый с Java 8. Если вы хотите использовать оптимизации, доступные в более новых версиях Java, вы можете явно указать целевую версию Java от 9 до 21. Обратите внимание, что в этом случае полученный байт-код может не работать на более ранних версиях.
  8. ^ "Stability of Kotlin Components". Kotlin . 21 мая 2021 г. Архивировано из оригинала 29 июля 2021 г. Получено 29 июля 2021 г.
  9. ^ "Kotlin 1.5.0 – первый большой релиз 2021 года". Kotlin . 4 мая 2021 г. Архивировано из оригинала 12 августа 2021 г. Получено 29 июля 2021 г.
  10. ^ Мобиус (8 января 2015 г.), Андрей Бреслав — Kotlin для Android: коротко и ясно, заархивировано из оригинала 12 апреля 2023 г. , получено 28 мая 2017 г.
  11. Кирон Мерфи (4 октября 1996 г.). «Так почему же они решили назвать его Java?». JavaWorld . Архивировано из оригинала 15 марта 2019 г. Получено 14 октября 2017 г.
  12. ^ Merriam-Webster (8 июня 2023 г.). «Определение и значение Java». www.merriam-webster.com . Архивировано из оригинала 4 июля 2023 г. . Получено 3 июля 2023 г. .
  13. ^ ab Krill, Paul (22 июля 2011 г.). "JetBrains готовит язык JVM Kotlin". InfoWorld . Архивировано из оригинала 7 сентября 2019 г. . Получено 2 февраля 2014 г. .
  14. ^ Уотерс, Джон (22 февраля 2012 г.). «Kotlin Goes Open Source». ADTmag.com . 1105 Enterprise Computing Group. Архивировано из оригинала 18 февраля 2014 г. Получено 2 февраля 2014 г.
  15. ^ "Почему JetBrains нужен Kotlin". 2 августа 2011 г. Архивировано из оригинала 16 августа 2023 г. Получено 11 февраля 2018 г. Мы ожидаем, что Kotlin будет стимулировать продажи IntelliJ IDEA
  16. ^ "test · JetBrains/kotlin@3e4dce3". GitHub . Архивировано из оригинала 17 октября 2022 г. Получено 17 октября 2022 г.
  17. ^ "Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog". Blog.jetbrains.com . 15 февраля 2016 г. Архивировано из оригинала 24 января 2018 г. Получено 11 апреля 2017 г.
  18. Шафиров, Максим (17 мая 2017 г.). «Kotlin на Android. Теперь официально». Архивировано из оригинала 29 мая 2023 г. . Получено 18 мая 2017 г. Сегодня на конференции Google I/O команда Android объявила о первоклассной поддержке Kotlin.
  19. ^ "Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog". blog.jetbrains.com . 28 ноября 2017 г. Архивировано из оригинала 24 мая 2023 г. Получено 29 ноября 2017 г.
  20. ^ "Multiplatform Projects - Kotlin Programming Language". Kotlin . Архивировано из оригинала 18 августа 2020 г. . Получено 20 августа 2020 г. Работа на всех платформах является явной целью Kotlin, но мы рассматриваем это как предпосылку для гораздо более важной цели: совместного использования кода между платформами. Благодаря поддержке JVM, Android, JavaScript, iOS, Linux, Windows, Mac и даже встроенных систем, таких как STM32, Kotlin может обрабатывать любые и все компоненты современного приложения.
  21. ^ "Kotlin/kotlin-full-stack-application-demo". Kotlin. 3 апреля 2020 г. Архивировано из оригинала 14 сентября 2020 г. Получено 4 апреля 2020 г.
  22. ^ "Демонстрация приложения полного стека Kotlin: обновление всех задействованных версий для работы с выпуском 1.3.70". youtrack.jetbrains.com . Архивировано из оригинала 2 августа 2020 г. . Получено 4 апреля 2020 г. .
  23. ^ "Kotlin 1.1 Released with JavaScript Support, Coroutines and more". Архивировано из оригинала 4 июня 2023 г. Получено 1 мая 2017 г.
  24. ^ "Что нового в Kotlin 1.4 - Язык программирования Kotlin". Kotlin . Архивировано из оригинала 8 июня 2023 г. . Получено 20 августа 2020 г. В версии 1.4.0 мы немного изменяем API Swift, сгенерированный из Kotlin, в отношении способа перевода исключений.
  25. ^ "Что нового в Kotlin 1.7.0 | Kotlin". Справка по Kotlin . Архивировано из оригинала 20 июня 2022 г. Получено 20 июня 2022 г.
  26. ^ Пол Крилл (12 января 2023 г.). «Kotlin 1.8.0 добавляет рекурсивное копирование, удаление для каталогов». Архивировано из оригинала 8 июля 2023 г. Получено 8 марта 2022 г.
  27. ^ Сара Хаггарти (6 июля 2023 г.). "Kotlin 1.9.0 Released". Архивировано из оригинала 28 июля 2023 г. Получено 6 июля 2023 г.
  28. Github (21 мая 2024 г.). "Kotlin 2.0.0". Архивировано из оригинала 21 мая 2024 г. Получено 21 мая 2024 г.
  29. ^ "JVM Languages ​​Report расширенное интервью с создателем Kotlin Андреем Бреславом". Zeroturnaround.com . 22 апреля 2013 г. Архивировано из оригинала 15 января 2019 г. Получено 2 февраля 2014 г.
  30. ^ "Точки с запятой". jetbrains.com . Архивировано из оригинала 23 декабря 2015 . Получено 8 февраля 2014 .
  31. ^ "Типы движутся вправо". Medium . 16 июля 2020 г. Архивировано из оригинала 22 мая 2023 г. Получено 6 ноября 2021 г.
  32. ^ "Роман Елизаров — новый руководитель проекта Kotlin". Блог Kotlin . JetBrains. 19 ноября 2020 г. Архивировано из оригинала 20 января 2022 г. Получено 7 ноября 2021 г.
  33. ^ "Basic Syntax". Kotlin . Jetbrains. Архивировано из оригинала 29 января 2021 г. Получено 19 января 2018 г.
  34. ^ "functions". jetbrains.com . Архивировано из оригинала 23 ноября 2015 . Получено 8 февраля 2014 .
  35. ^ "Что нового в Kotlin 1.3 - Язык программирования Kotlin". Kotlin . Архивировано из оригинала 22 августа 2023 года . Получено 4 апреля 2020 года .
  36. ^ "Design by Contract (DbC) design considerations". Обсуждения Kotlin . 16 августа 2012 г. Архивировано из оригинала 5 апреля 2023 г. Получено 4 апреля 2020 г. Реализовать полную семантику Eiffel DbC и улучшить ее.
  37. ^ "Kotlin for JavaScript | Kotlin". Справка по Kotlin . 21 января 2021 г. Архивировано из оригинала 14 июля 2023 г. Получено 19 марта 2021 г.
  38. ^ "Kotlin Examples: Learn Kotlin Programming By Example". Архивировано из оригинала 18 ноября 2021 г. Получено 13 апреля 2019 г.
  39. ^ "Функции области действия | Kotlin". Справка по Kotlin . Получено 10 августа 2024 г.
  40. ^ "Higher-Order Functions and Lambdas". Kotlin . Jetbrains. Архивировано из оригинала 22 января 2021 г. Получено 19 января 2018 г.
  41. ^ "Kotlin and Android". Разработчики Android . Архивировано из оригинала 4 октября 2023 г. Получено 19 июня 2017 г.
  42. ^ "Использование Maven – языка программирования Kotlin". kotlinlang.org . Архивировано из оригинала 3 ноября 2016 г. Получено 9 мая 2017 г.
  43. ^ "Использование Ant – языка программирования Kotlin". kotlinlang.org . Архивировано из оригинала 3 ноября 2016 г. Получено 9 мая 2017 г.
  44. ^ "Использование Gradle – языка программирования Kotlin". kotlinlang.org . Архивировано из оригинала 9 ноября 2016 г. Получено 9 мая 2017 г.
  45. ^ «Начало работы с Eclipse Neon – язык программирования Kotlin». Kotlinlang.org . 10 ноября 2016 г. Архивировано из оригинала 18 мая 2023 г. Получено 11 апреля 2017 г.
  46. ^ "JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse". GitHub. Архивировано из оригинала 16 февраля 2016 г. Получено 11 апреля 2017 г.
  47. ^ "Kotlin :: JetBrains Plugin Repository". Plugins.jetbrains.com . 31 марта 2017 г. Архивировано из оригинала 25 июня 2023 г. Получено 11 апреля 2017 г.
  48. ^ "Что нового в IntelliJ IDEA 2017.1". Jetbrains.com . Архивировано из оригинала 3 октября 2023 г. Получено 11 апреля 2017 г.
  49. ^ "Gradle | Kotlin". Справка по Kotlin . Архивировано из оригинала 8 апреля 2024 г. Получено 8 апреля 2024 г.
  50. ^ Лардинуа, Фредерик (17 мая 2017 г.). «Google делает Kotlin первоклассным языком для написания приложений Android». techcrunch.com . Архивировано из оригинала 22 мая 2017 г. . Получено 28 июня 2018 г. .
  51. ^ "Язык программирования Kotlin: как Google использует его для устранения ошибок кода, вызывающих большинство сбоев". ZDNet . Архивировано из оригинала 6 апреля 2023 г. . Получено 6 декабря 2020 г. .
  52. ^ "Введение в поддержку Kotlin в Spring Framework 5.0". Spring . Pivotal. 4 января 2017 г. Архивировано из оригинала 23 августа 2023 г. Получено 29 сентября 2020 г.
  53. ^ "Состояние поддержки Kotlin весной". JetBrains . 14 августа 2020 г. Архивировано из оригинала 7 июня 2023 г. Получено 6 декабря 2020 г.
  54. ^ "Обзор фреймворков микросервисов: взгляд на альтернативы Spring Boot". DZone . Архивировано из оригинала 21 мая 2023 г. Получено 6 декабря 2020 г.
  55. ^ "Kotlin Programming - The State of Developer Ecosystem 2020". JetBrains . Архивировано из оригинала 5 апреля 2023 г. Получено 29 сентября 2020 г.
  56. ^ "The state of the Octoverse". Архивировано из оригинала 22 марта 2019 года . Получено 24 июля 2019 года .
  57. ^ "Stack Overflow Developer Survey 2020". Архивировано из оригинала 4 июня 2020 г. Получено 28 мая 2020 г.
  58. ^ "Kotlin выигрывает награду Breakout Project of the Year на OSCON '19". 18 июля 2019 г. Архивировано из оригинала 17 мая 2022 г. Получено 24 июля 2019 г.
  59. ^ "Kotlin at Allegro". Talking Kotlin . Октябрь 2018. Архивировано из оригинала 1 июня 2023 года . Получено 29 сентября 2020 года .
  60. ^ "QLDB at Amazon". Talking Kotlin . 30 июня 2020 г. Архивировано из оригинала 1 июня 2023 г. Получено 29 сентября 2020 г.
  61. ^ "Будущее программного обеспечения Jira на базе Kotlin". YouTube . Архивировано из оригинала 1 сентября 2023 г. Получено 1 сентября 2023 г.
  62. ^ "Going Full Kotlin Multiplatform". Talking Kotlin . 14 апреля 2020 г. Архивировано из оригинала 5 апреля 2023 г. Получено 29 сентября 2020 г.
  63. ^ "square/sqldelight". GitHub . Архивировано из оригинала 20 июня 2019 . Получено 24 июля 2019 .
  64. ^ "Использование Kotlin для бэкенд-разработки в Flux". Talking Kotlin . 14 августа 2019 г. Архивировано из оригинала 1 июня 2023 г. Получено 29 сентября 2020 г.
  65. ^ "State of Kotlin on Android". YouTube . Архивировано из оригинала 15 января 2023 г. Получено 29 сентября 2020 г.
  66. ^ "Gradle Kotlin DSL Primer". docs.gradle.org . Архивировано из оригинала 18 августа 2023 г. Получено 29 сентября 2020 г.
  67. ^ "Kotless". Talking Kotlin . 30 января 2020 г. Архивировано из оригинала 5 апреля 2023 г. Получено 29 сентября 2020 г.
  68. ^ "Kotlin на бэкенде в Meshcloud". Talking Kotlin . 28 февраля 2018 г. Архивировано из оригинала 6 апреля 2023 г. Получено 29 сентября 2020 г.
  69. ^ "KotlinConf 2019: Kotlin Runs Taxes in Norway by Jarle Hansen & Anders Mikkelsen". YouTube . Архивировано из оригинала 10 апреля 2023 г. Получено 29 сентября 2020 г.
  70. ^ "Greenfield Kotlin at OLX". Talking Kotlin . 24 августа 2018 г. Архивировано из оригинала 1 июня 2023 г. Получено 29 сентября 2020 г.
  71. ^ "Мониторинг приложений с помощью Micrometer". Talking Kotlin . 14 июня 2018 г. Архивировано из оригинала 1 апреля 2023 г. Получено 29 сентября 2020 г.
  72. ^ "Groovy and Kotlin Interop at Rocket Travel". Talking Kotlin . 14 мая 2018 г. Архивировано из оригинала 5 апреля 2023 г. Получено 29 сентября 2020 г.
  73. ^ "Kotlin at Shazam". Talking Kotlin . 29 июля 2018 г. Архивировано из оригинала 1 апреля 2023 г. Получено 29 сентября 2020 г.
  74. ^ "Zally - An API Linter". Talking Kotlin . 29 января 2018 г. Архивировано из оригинала 6 апреля 2023 г. Получено 29 сентября 2020 г.
  75. ^ "Java/Kotlin Developer - Barclays - Прага - Wizbii". Wizbii.com . Получено 29 сентября 2020 г. .
  76. ^ "KotlinConf 2017 - Frontend Kotlin from the Trenches by Gaetan Zoritchak". YouTube . Архивировано из оригинала 10 апреля 2023 г. Получено 29 сентября 2020 г.
  77. ^ "Fritz2". Talking Kotlin . 14 сентября 2020 г. Архивировано из оригинала 6 апреля 2023 г. Получено 29 сентября 2020 г.
  78. ^ "KotlinConf 2019: Kotlin in Space by Maxim Mazin". YouTube . Архивировано из оригинала 9 апреля 2023 г. . Получено 29 сентября 2020 г. .
  79. ^ "Как мы сделали приложение Basecamp 3 для Android на 100% на Kotlin – Signal против Noise". Signal против Noise . 29 апреля 2017 г. Архивировано из оригинала 1 августа 2018 г. Получено 1 мая 2017 г.
  80. ^ "Becoming bilingual@coursera". 26 апреля 2018 г. Архивировано из оригинала 15 января 2023 г. Получено 24 июля 2019 г.
  81. ^ «Kotlin in Production – What works, What’s broken». Blog.dripstat.com . 24 сентября 2016 г. Архивировано из оригинала 1 июля 2019 г. Получено 11 апреля 2017 г.
  82. ^ "Duolingo on Twitter". Архивировано из оригинала 16 марта 2023 г. Получено 13 апреля 2020 г.
  83. ^ "Роб Шпильденнер в твиттере". Архивировано из оригинала 25 декабря 2022 г. Получено 24 июля 2019 г.
  84. ^ "Droidcon NYC 2016 - Kotlin in Production". YouTube . Архивировано из оригинала 14 апреля 2023 г. . Получено 24 июля 2019 г. .
  85. ^ "Dan Lew on Twitter". Архивировано из оригинала 2 мая 2023 года . Получено 24 июля 2019 года .
  86. ^ "Измерение производительности сборки Kotlin в Uber". 30 апреля 2019 г. Архивировано из оригинала 5 июня 2023 г. Получено 6 марта 2024 г.

Внешние ссылки