Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Котлин ( / к ɒ т л ɪ п / ) [6] является кросс-платформенным , статический типизированным , общее назначение , язык программирования с выводом типа . Котлин предназначен для полностью взаимодействовать с Java и JVM версии Котлин в стандартной библиотеке зависит от библиотеки классов Java , [7] , но логический вывод типа позволяет его синтаксис , чтобы быть более кратким. Kotlin в основном нацелен на JVM, но также компилируется в JavaScript.(например, для интерфейсных веб-приложений, использующих React [8] ) или собственный код (через LLVM ); например, для собственных приложений iOS, разделяющих бизнес-логику с приложениями Android . [9] Расходы на разработку языка несет JetBrains , в то время как Kotlin Foundation защищает торговую марку Kotlin. [10]

7 мая 2019 года Google объявил, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений для Android . В результате многие разработчики перешли на Kotlin. [11] С момента выпуска Android Studio 3.0 в октябре 2017 года Kotlin был включен в качестве альтернативы стандартному компилятору Java. Компилятор Android Kotlin по умолчанию создает байт-код Java 6 (который работает в любой более поздней JVM), но позволяет программисту выбрать целевую версию Java 8–15 для оптимизации [12] или позволяет использовать больше функций, например Java 8, связанную с Kotlin. 1.4, [13] и имеет экспериментальную поддержку класса записи для совместимости с Java 16. [14]

Поддержка Kotlin для JavaScript (то есть классической серверной части) считается стабильной в Kotlin 1.3 его разработчиками, в то время как Kotlin / JS (на основе IR) в версии 1.4 считается альфа-версией. Kotlin / Native Runtime (например, поддержка Apple) считается бета-версией. [15]

История [ править ]

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

Название происходит от острова Котлин , недалеко от Санкт-Петербурга . Андрей Бреслав упомянул, что команда решила назвать его в честь острова, точно так же, как Java была названа в честь индонезийского острова Java [18] (хотя язык программирования Java, возможно, был назван в честь кофе). [19]

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

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

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

Kotlin v1.2 был выпущен 28 ноября 2017 года. [23] В этот выпуск была недавно добавлена ​​функция совместного использования кода между платформами JVM и JavaScript (в версии 1.4 мультиплатформенное программирование является альфа- функцией [24], обновленной с «экспериментальной»). Полный стек демо было сделано с новым Котлин / JS Gradle плагин. [25] [26]

Kotlin v1.3 был выпущен 29 октября 2018 года, и в нем появились сопрограммы для асинхронного программирования.

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

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

Дизайн [ править ]

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

Точка с запятой не является обязательным условием завершения оператора ; в большинстве случаев компилятору достаточно новой строки, чтобы сделать вывод о завершении оператора. [29]

Котлин переменные декларации и списки параметров имеют типа данных приходят после имени переменного (и с толстым сепаратором), похожий на BASIC , Pascal и машинопись .

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

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

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

В Kotlin 1.3 добавлена ​​(стабильная в stdlib; определяемые пользователем контракты экспериментальные) поддержка контрактов [32] (вдохновленная парадигмой программирования Eiffel по контракту [33] )

По словам разработчиков Kotlin, вы можете вызывать код JavaScript из Kotlin, например, писать полные, типобезопасные приложения React , или писать и поддерживать полнофункциональные веб-приложения, разделяющие логику проверки с внешним интерфейсом, или вы можете «сгенерировать библиотеки из вашего кода Kotlin, которые могут использоваться как модули из любой базы кода, написанной на JavaScript или TypeScript ». [34]

Синтаксис [ править ]

Стиль процедурного программирования [ править ]

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

Основная точка входа [ править ]

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

// Привет мир! примерfun  main ()  { val  scope  =  "Мир" println ( "Привет, $ scope !" )}fun  main ( args :  Array < String > )  { for  ( arg  in  args )  { println ( аргумент ) }}

Функции расширения [ править ]

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

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

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

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

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

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

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

Объявления о разрушении [ править ]

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

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

for  (( ключ ,  значение )  на  карте )  { println ( " $ ключ : $ значение " )}

Вложенные функции [ править ]

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

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

По умолчанию занятия являются окончательными [ править ]

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

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

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

Абстрактные классы открыты по умолчанию [ править ]

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

// Здесь ключевое слово open не нужно, оно уже открыто по умолчаниюabstract  class  Animated  { // Эта виртуальная функция уже открыта по умолчанию абстрактное  развлечение  animate ()  open  fun  stopAnimating ()  {  } fun  animateTwice ()  {  }}

Классы по умолчанию общедоступны [ править ]

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

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

Применительно к объявлению верхнего уровня:

Пример:

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

Первичный конструктор и вторичные конструкторы [ править ]

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

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

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

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

Классы данных [ править ]

data classКонструкция Kotlin определяет классы, основной целью которых является хранение данных. Эта конструкция аналогична обычные классы , за исключением , что основные функции equals, toStringи hashCodeавтоматически генерируются из свойств класса. Ожидается, что в Java такие классы будут предоставлять стандартный набор таких функций. Классы данных не обязаны объявлять какие-либо методы, хотя каждый должен иметь хотя бы одно свойство. Класс данных часто пишется без тела, хотя можно дать классу данных любые методы или вторичные конструкторы, которые действительны для любого другого класса. dataИспользуется ключевое слово перед classключевым словом для определения класса данных. [36]

fun  main ( args :  Array )  { // создаем объект класса данных, как любой другой объект класса var  book1  =  Book ( «Программирование на Котлине» ,  250 ) println ( книга1 ) // вывод: Book (name = Kotlin Programming, цена = 250)} // класс данных с параметрами и их необязательными значениями по умолчанию класс  данных Book ( val  name :  String  =  "" ,  val  price :  Int  =  0 )

Интерактивная оболочка Kotlin [ править ]

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

Котлин как язык сценариев [ править ]

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

// list_folders.ktsimport  java.io.Fileval  папки  =  Файл ( args [ 0 ] ). listFiles  {  файл  ->  файл . isDirectory ()  }папки ?. forEach  {  папка  ->  println ( папка )  }

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

$ kotlinc -script list_folders.kts "path_to_folder_to_inspect"

Нулевая безопасность [ править ]

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

  • ? ( оператор безопасной навигации ) можно использовать для безопасного доступа к методу или свойству возможно нулевого объекта. Если объект имеет значение NULL, метод не будет вызываться, и выражение будет иметь значение NULL.
  • ?: ( нулевой оператор объединения), часто называемый оператором Элвиса :
весело  SayHello ( может быть :  ? Строка ,  neverNull :  Int )  { // использование оператора elvis val  имя :  String  =  возможно  ?:  "незнакомец" println ( "Привет, $ name " )}

Пример использования оператора безопасной навигации:

// возвращает null, если ...// - foo () возвращает null,// - или если foo () не равно null, но bar () возвращает null,// - или если foo () и bar () не равны null, но baz () возвращает null.// наоборот, возвращаемое значение не равно NULL тогда и только тогда, когда foo (), bar () и baz () не равны NULLfoo () ?. бар () ?. баз ()

Лямбды [ править ]

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

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

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

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

Пример сложного "hello world" [ править ]

fun  main ( args :  Array < String > )  { приветствовать  { к . место }. печать ()}// Встроенные функции высшего порядкавстроенное  веселое  приветствие ( s :  ()  ->  String )  :  String  =  приветствие  andAnother  s ()// Инфиксные функции, расширения, вывод типов, типы, допускающие значение NULL, // лямбда-выражения, помеченные этим, оператор Элвиса (? :)infix  fun  String . andAnother ( другое  :  Any? )  =  buildString () {  добавить ( это @andAnother );  добавить ( "" );  добавить ( другое  ?:  "" ) }// Неизменяемые типы, делегированные свойства, отложенная инициализация, строковые шаблоны приветствие  val от  ленивого  {  val  doubleEl :  String  =  "ll" ;  "он $ { doubleEl } o"  }// Запечатанные классы, сопутствующие объектызапечатанный  класс  для  {  сопутствующего  объекта  { val  place  =  "world" }  }// Расширения, единица измерениязабавная  строка . print ()  =  println ( это )

Инструменты [ править ]

  • IntelliJ IDEA поддерживает подключаемый модуль для Kotlin. [38] IntelliJ IDEA 15 была первой версией, которая объединила плагин Kotlin в IntelliJ Installer и обеспечила поддержку Kotlin прямо из коробки. [39]
  • JetBrains также предоставляет плагин для Eclipse . [40] [41]
  • Поддерживается интеграция с общими инструментами сборки Java, включая Apache Maven , [42], Apache Ant , [43] и Gradle . [44]
  • Android Studio (на основе IntelliJ IDEA) имеет официальную поддержку Kotlin, начиная с Android Studio 3. [45]
  • Emacs имеет режим Kotlin в репозитории пакетов Melpa.
  • У Vim есть плагин, поддерживаемый на GitHub. [46]
  • Json2Kotlin генерирует собственный код Kotlin в стиле POJO для сопоставления ответов веб-службы.

Приложения [ править ]

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

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

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

Принятие [ править ]

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

Котлин также был награжден премией O'Reilly Open Source Software Conference Breakout Award за 2019 год. [55]

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

  • Google [56]
  • Норвежская налоговая администрация [57]
  • Gradle [58]
  • Амазонка [59]
  • Квадрат [60]
  • JetBrains [61]
  • Флюс [62]
  • Аллегро [63]
  • OLX [64]
  • Шазам [65]
  • Pivotal [66]
  • Ракетное путешествие [67]
  • Meshcloud [68]
  • Заландо [69]

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

  • JetBrains [70]
  • Data2viz [71]
  • Fritz2 [72]
  • Банк Барклая [73]

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

  • DripStat [74]
  • Базовый лагерь [75]
  • Pinterest [76]
  • Coursera [77]
  • Netflix [78]
  • Убер [79]
  • Квадрат [80]
  • Trello [81]
  • Duolingo [82]
  • Corda, распределенный реестр, разработанный консорциумом известных банков (таких как Goldman Sachs , Wells Fargo , JP Morgan , Deutsche Bank , UBS , HSBC , BNP Paribas , Société Générale ), имеет более 90% кода Котлина в своей кодовой базе. [83]

См. Также [ править ]

  • Сравнение языков программирования

Ссылки [ править ]

  • Эта статья содержит цитаты из руководств по Kotlin, выпущенных под лицензией Apache 2.0.
  1. ^ "JetBrains / kotlin" . GitHub .
  2. ^ "Релиз Kotlin 1.5.0-RC · JetBrains / kotlin" . GitHub .
  3. ^ "JetBrains / kotlin" . GitHub . Проверено 29 марта 2021 года .
  4. ^ "Выпуск сборки-1.5.0-RC-487 · JetBrains / kotlin" . GitHub . Проверено 19 марта 2021 года .
  5. ^ «Предварительный просмотр новых языковых возможностей в Kotlin 1.4.30 | Блог Kotlin» . Блог JetBrains . Проверено 19 марта 2021 года .
  6. ^ "Какое правильное английское произношение Kotlin?" . 16 октября 2019 . Проверено 9 ноября 2019 .
  7. ^ "kotlin-stdlib" . kotlinlang.org . JetBrains . Проверено 20 апреля 2018 года .
  8. ^ «Kotlin для JavaScript - язык программирования Kotlin» . Котлин . Проверено 20 августа 2020 .
  9. ^ «Котлин для кроссплатформенной мобильной разработки» . JetBrains: инструменты разработчика для профессионалов и команд . Проверено 20 августа 2020 .
  10. ^ "Kotlin Foundation - язык программирования Kotlin" . Котлин .
  11. ^ a b «Kotlin теперь является предпочтительным языком Google для разработки приложений для Android» . TechCrunch . Дата обращения 8 мая 2019 .
  12. ^ "Котлин FAQ" . Kotlin позволяет вам выбрать версию JVM для выполнения. По умолчанию компилятор Kotlin / JVM создает байт-код, совместимый с Java 6. Если вы хотите использовать оптимизации, доступные в более новых версиях Java, вы можете явно указать целевую версию Java от 8 до 15. Обратите внимание, что в этом случае результирующий байт-код может не работать в более низких версиях.
  13. ^ «Что нового в Kotlin 1.4 - язык программирования Kotlin» . Котлин . Проверено 20 августа 2020 . Kotlin теперь может генерировать аннотации типов в байт-коде JVM (целевая версия 1.8+) [..] Обратите внимание, что аннотации типов из стандартной библиотеки пока не выводятся в байт-коде, поскольку стандартная библиотека скомпилирована с целевой версией 1.6.
  14. ^ «Что нового в Kotlin 1.4.30 | Kotlin» . Kotlin Help . Проверено 19 марта 2021 года .
  15. ^ «Что нового в Kotlin 1.4.30 | Kotlin» . Kotlin Help . 11 февраля 2021 . Проверено 19 марта 2021 года .
  16. ^ a b Криль, Пол (22 июля 2011 г.). «JetBrains готовит язык JVM Kotlin» . InfoWorld . Архивировано 7 сентября 2019 года . Проверено 2 февраля 2014 года .
  17. ^ Уотерс, Джон (22 февраля 2012 г.). «Kotlin становится открытым исходным кодом» . ADTmag.com . 1105 Enterprise Computing Group. Архивировано 18 февраля 2014 года . Проверено 2 февраля 2014 года .
  18. ^ Mobius (8 января 2015), Андрей Бреслав - Котлин для Android: коротко и ясно , получен 28 мая +2017
  19. Кирон Мерфи (4 октября 1996 г.). «Так почему они решили назвать это Java?» . JavaWorld . Архивировано 15 марта 2019 года . Проверено 14 октября 2017 года .
  20. ^ «Зачем JetBrains нужен Котлин» . мы ожидаем, что Kotlin будет стимулировать продажи IntelliJ IDEA
  21. ^ «Выпущен Kotlin 1.0: прагматический язык для JVM и Android | Блог Kotlin» . Blog.jetbrains.com . 15 февраля 2016 . Проверено 11 апреля 2017 года .
  22. Шафиров, Максим (17 мая 2017 г.). «Котлин на Android. Теперь официально» . Сегодня на презентации Google I / O команда Android объявила о первоклассной поддержке Kotlin.
  23. ^ «Выпущен Kotlin 1.2: совместное использование кода между платформами | Блог Kotlin» . blog.jetbrains.com . 28 ноября 2017.
  24. ^ «Мультиплатформенные проекты - язык программирования Kotlin» . Котлин . Проверено 20 августа 2020 . Работа на всех платформах - явная цель для Kotlin, но мы видим в ней предпосылку для гораздо более важной цели: совместного использования кода между платформами. Благодаря поддержке JVM, Android, JavaScript, iOS, Linux, Windows, Mac и даже встроенных систем, таких как STM32, Kotlin может обрабатывать любые компоненты современного приложения.
  25. ^ "Kotlin / kotlin-full-stack-application-demo" . Котлин. 3 апреля 2020 . Проверено 4 апреля 2020 года .
  26. ^ «Демонстрация полного стека приложения Kotlin: обновите все связанные версии для работы с выпуском 1.3.70» . youtrack.jetbrains.com . Проверено 4 апреля 2020 года .
  27. ^ «Что нового в Kotlin 1.4 - язык программирования Kotlin» . Котлин . Проверено 20 августа 2020 . В версии 1.4.0 мы немного изменили Swift API, созданный из Kotlin, в отношении способа перевода исключений.
  28. ^ "Расширенное интервью JVM Languages ​​Report с создателем Kotlin Андреем Бреславом" . Zeroturnaround.com . 22 апреля 2013 . Проверено 2 февраля 2014 года .
  29. ^ «Точка с запятой» . jetbrains.com . Проверено 8 февраля 2014 .
  30. ^ «Базовый синтаксис» . Котлин . Jetbrains . Проверено 19 января 2018 .
  31. ^ "функции" . jetbrains.com . Проверено 8 февраля 2014 .
  32. ^ «Что нового в Kotlin 1.3 - язык программирования Kotlin» . Котлин . Проверено 4 апреля 2020 года .
  33. ^ «Дизайн по контракту (DbC) соображения дизайна» . Котлин Обсуждения . 16 августа 2012 . Проверено 4 апреля 2020 года . Реализуйте полную семантику Eiffel DbC и улучшите ее.
  34. ^ «Котлин для JavaScript | Котлин» . Kotlin Help . 21 января 2021 . Проверено 19 марта 2021 года .
  35. ^ «Примеры Kotlin: Изучите программирование на Kotlin на примерах» .
  36. ^ «Введение в классы данных в Котлине» .
  37. ^ "Функции высшего порядка и лямбды" . Котлин . Jetbrains . Проверено 19 января 2018 .
  38. ^ "Kotlin :: JetBrains Plugin Repository" . Plugins.jetbrains.com . 31 марта 2017 . Проверено 11 апреля 2017 года .
  39. ^ «Что нового в IntelliJ IDEA 2017.1» . Jetbrains.com . Проверено 11 апреля 2017 года .
  40. ^ «Начало работы с Eclipse Neon - язык программирования Kotlin» . Kotlinlang.org . 10 ноября 2016 . Проверено 11 апреля 2017 года .
  41. ^ "JetBrains / kotlin-eclipse: плагин Kotlin для Eclipse" . GitHub . Проверено 11 апреля 2017 года .
  42. ^ "Использование Maven - язык программирования Kotlin" . kotlinlang.org . Дата обращения 9 мая 2017 .
  43. ^ "Использование языка программирования Ant - Kotlin" . kotlinlang.org . Дата обращения 9 мая 2017 .
  44. ^ "Использование Gradle - язык программирования Kotlin" . kotlinlang.org . Дата обращения 9 мая 2017 .
  45. ^ «Котлин и Android» . Разработчики Android .
  46. ^ "udalov / kotlin-vim: плагин Kotlin для Vim. Особенности: подсветка синтаксиса, базовые отступы, поддержка синтаксиса" . GitHub . Проверено 30 августа 2019 .
  47. ^ Lardinois, Фредерик (17 мая 2017). «Google делает Kotlin первоклассным языком для написания приложений для Android» . techcrunch.com . Проверено 28 июня 2018 .
  48. ^ «Язык программирования Kotlin: как Google использует его для устранения ошибок кода, вызывающих большинство сбоев» . ZDNet .
  49. ^ «Представляем поддержку Kotlin в Spring Framework 5.0» . Весна . Pivotal . Проверено 29 сентября 2020 года .
  50. ^ «Состояние поддержки Котлина весной» . JetBrains . Дата обращения 6 декабря 2020 .
  51. ^ «Обзор фреймворков микросервисов: взгляд на альтернативы Spring Boot» . DZone .
  52. ^ «Программирование Kotlin - Состояние экосистемы разработчиков 2020» . JetBrains . Проверено 29 сентября 2020 года .
  53. ^ "Состояние Octoverse" . Архивировано из оригинального 22 марта 2019 года . Проверено 24 июля 2019 .
  54. ^ «Опрос разработчиков Stack Overflow 2020» . Проверено 28 мая 2020 .
  55. ^ «Котлин выигрывает награду« Прорывный проект года »на OSCON '19» . Проверено 24 июля 2019 .
  56. ^ «Состояние Котлина на Android» . YouTube . Проверено 29 сентября 2020 года .
  57. ^ «KotlinConf 2019: Kotlin управляет налогами в Норвегии, авторы Ярле Хансен и Андерс Миккельсен» . YouTube . Проверено 29 сентября 2020 года .
  58. ^ "Gradle Kotlin DSL Primer" . docs.gradle.org . Проверено 29 сентября 2020 года .
  59. ^ «QLDB на Amazon» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  60. ^ "Переход на полную мультиплатформенность Kotlin" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  61. ^ "Котлесс" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  62. ^ «Использование Kotlin для внутренней разработки в Flux» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  63. ^ "Котлин в Аллегро" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  64. ^ "Гринфилд Котлин в OLX" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  65. ^ "Котлин в Шазаме" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  66. ^ «Мониторинг приложений с помощью микрометра» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  67. ^ «Взаимодействие Groovy и Kotlin в Rocket Travel» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  68. ^ «Котлин на сервере в Meshcloud» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  69. ^ «Zally - API-линтер» . Говорящий Котлин . Проверено 29 сентября 2020 года .
  70. ^ "KotlinConf 2019: Котлин в космосе Максима Мазина" . YouTube . Проверено 29 сентября 2020 года .
  71. ^ «KotlinConf 2017 - Frontend Kotlin from the Trenches, автор Гаэтан Зоритчак» . YouTube . Проверено 29 сентября 2020 года .
  72. ^ "Fritz2" . Говорящий Котлин . Проверено 29 сентября 2020 года .
  73. ^ "Разработчик Java / Kotlin - Barclays - Прага - Wizbii" . Wizbii.com . Проверено 29 сентября 2020 года .
  74. ^ «Котлин в производстве - что работает, что сломано» . Blog.dripstat.com . 24 сентября 2016 . Проверено 11 апреля 2017 года .
  75. ^ «Как мы сделали Android-приложение Basecamp 3 на 100% Kotlin - Signal v. Noise» . Сигнал против шума . 29 апреля 2017 . Дата обращения 1 мая 2017 .
  76. ^ «Droidcon NYC 2016 - Kotlin in Production» . Проверено 24 июля 2019 .
  77. ^ "Стать двуязычным @ coursera" . Проверено 24 июля 2019 .
  78. ^ "Роб Спилденнер в твиттере" . Проверено 24 июля 2019 .
  79. ^ "2017 Кто использует Котлин?" . Проверено 24 июля 2019 .
  80. ^ "квадрат / sqldelight" . Проверено 24 июля 2019 .
  81. ^ «Дэн Лью в Твиттере» . Проверено 24 июля 2019 .
  82. ^ "Duolingo в Твиттере" . Проверено 13 апреля 2020 .
  83. ^ «Kotlin 1.1 выпущен с поддержкой JavaScript, сопрограммами и многим другим» . Дата обращения 1 мая 2017 .

Внешние ссылки [ править ]

  • Официальный веб-сайт