~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 627CEA5EB61444397C4FB1BEF8EFD5FD__1716311160 ✰
Заголовок документа оригинал.:
✰ Kotlin (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Котлин (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Kotlin_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/62/fd/627cea5eb61444397c4fb1bef8efd5fd.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/62/fd/627cea5eb61444397c4fb1bef8efd5fd__translat.html ✰
Дата и время сохранения документа:
✰ 11.06.2024 06:10:43 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 May 2024, at 20:06 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Котлин (язык программирования) — Википедия Jump to content

Котлин (язык программирования)

Из Википедии, бесплатной энциклопедии

Котлин
Парадигма Мультипарадигма : объектно-ориентированная , функциональная , императивная , блочная , декларативная , универсальная , рефлексивная , параллельная.
Разработано JetBrains
Разработчик JetBrains
Впервые появился 22 июля 2011 г .; 12 лет назад ( 22 июля 2011 )
Стабильная версия
2.0.0 [1]  Отредактируйте это в Викиданных/ 21 мая 2024 г .; 14 дней назад ( 21 мая 2024 г. )
Дисциплина набора текста Предполагаемый , статичный , сильный
Платформа
ТЫ Кросс-платформенный
Лицензия Лицензия Апач 2.0
Расширения имен файлов .kt, .kts, .kexe, .club
Веб-сайт на тренировке .org Отредактируйте это в Викиданных
Под влиянием
Под влиянием
V (Vlang)

Котлин ( / ˈ k ɒ t l ɪ n / ) [2] — это кроссплатформенный язык статически типизированный программирования общего назначения уровня высокого с выводом типов . Kotlin разработан для полной совместимости с Java , а JVM Kotlin для версия стандартной библиотеки зависит от библиотеки классов Java . но вывод типа позволяет сделать его синтаксис более кратким. Kotlin в основном ориентирован на JVM, но также компилируется в JavaScript (например, для веб-приложений, использующих 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.3, либо через бэкэнд на основе промежуточного представления , который был объявлен стабильным с версии 1.8. Kotlin/Native (например, поддержка Apple Silicon ) считается бета-версией, начиная с версии 1.3. [8] [9]

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

2D-изображение талисмана Котлина
3D-изображение талисмана Котлина

Имя [ править ]

Название происходит от острова Котлин , российского острова в Финском заливе , недалеко от Санкт-Петербурга . Андрей Бреслав , бывший ведущий дизайнер 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]

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

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

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

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

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

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

Код 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 в стиле интерполяция строк Поддерживается . Вывод типа также поддерживается.

// Привет, мир!   пример 
 fun   main  ()   { 
     valscope   args   =   "World" 
     (  "  Hello  $  scope  !  ) 
 } 

 fun   main  (  :  (   Array  <String>  println  }  )   { 
     for   arg  ,   in   args  ) 
         println  (  arg  ) 
 " 

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

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

пакет   MyStringExtensions 

 fun   String  .   LastChar  ():   Char   =   get  (  length   -   1  ) 

 >>>   println  (  "Kotlin"  (  .lastChar  )) 

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

 функции расширения 
// Перегрузка оператора '+' с использованием оператора   fun   Point  .   плюс  (  другое  :   Точка  ):   Точка   { 
     возврат   Точка  (  x   +   др  .  x  ,   y   +   др  .  y  ) 
 } 

 >>>   val   p1   =   Point  (  10  ,   20  ) 
 >>>   val   p2   =   Point  (  30  ,   40  ) 
 > >>   println  (  p1   +   p2  ) 
 Точка  (  x  =  40  ,   y  =  60  ) 

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

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

fun   main  (  args  :   Array  <String>  )  =  println   {  
     val   list   )   listOf  (  :  ,   *  args  ) 
     }  (  list  » 
 « args 

Объявления о деструктуризации [ править ]

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

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

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

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

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

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

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

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

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

// открытие класса означает, что этот класс разрешит производным классам 
 open   class   MegaButton   { 

     // no-open для функции означает, что 
     // полиморфное поведение отключено, если функция переопределена в производном классе 
     fun   отключить  ()   {   ...   } 

     // открыть для функции означает, что 
     // полиморфное поведение разрешено, если функция переопределена в производном классе 
     open   fun   animate  ()   {   ...   } 
 } 

 class   GigaButton  :   MegaButton  ()   { 

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

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

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

 требуется, оно уже открыто по умолчанию 
 {   //   Эта   виртуальная 

     по 
     Animated   Ключевое   .  class 
  
     слово   также  //  не   open   умолчанию 

     здесь   Abstract  уже   открыта   функция 
 . 

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

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

При применении к члену класса:

Ключевое слово Видимость
public (по умолчанию) Повсюду
internal Внутри модуля
protected Внутри подклассов
private Внутри класса

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

Ключевое слово Видимость
public (по умолчанию) Повсюду
internal Внутри модуля
private Внутри файла

Пример:

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

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

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

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

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

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

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

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

Объявление закрытого интерфейса и класса:

запечатанный   интерфейс   Expr 
 запечатанный   класс   Job 

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

запечатанный   класс   транспортного средства 
 данных   Класс   Car  (  val   BrandName  :   String  ,   val   Owner  :   String  ,   val   color  :   String  ):   Vehicle  () 
 class   Bike  (  val   BrandName  :   String  ,   val   Owner  :   String  ,   val   color  :   String  ):   Vehicle  () 
 class   Tractor  (  val   BrandName  :   String  ,   val   Owner  :   String  ,   val   color  :   String  ):   Vehicle  () 
 val   kiaCar   =   Автомобиль  (  «KIA»  ,   «John»  ,   «Blue»  ) 
 val   hyundaiCar   =   Автомобиль  (  «Hyundai»  ,   «Britto»  ,   "Зеленый"  ) 

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

Котлин data classКонструкция определяет классы, основной целью которых является хранение данных. Эта конструкция аналогична обычным классам, за исключением того, что ключевые методы equals, hashCode и toString автоматически генерируются из свойств класса.

Предыстория [ править ]

Ожидается, что в Java классы предоставляют реализации определенных стандартных методов, чтобы они правильно функционировали с методами и классами, предоставляемыми стандартной библиотекой. Реализация Java по умолчанию, которую каждый класс наследует от основы иерархии классов. Object— реализует эти методы только с учетом идентификатора экземпляра объекта (обычно его адреса в виртуальной памяти ). [39] [40] Это проблема, поскольку крайне важно

(a) иметь информацию о состоянии объекта в его строковом представлении ( toString) и

(б) определить, похожи ли два объекта ( equals и hashCode). Реализации последних двух также должны согласовываться друг с другом и, следовательно, реализовываться вместе, то есть, когда одна из них изменяется, другая также должна быть изменена, чтобы соответствовать. Реализация этой функциональности также повышает эффективность стандартных алгоритмов, которые полагаются на ее правильное поведение. [41] И наоборот, неправильные реализации могут даже вызвать ошибки. [39]

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

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

$ kotlinc-jvm 
 введите:help за помощью;   :quit for quit 
 >>>  2   +   2 
 4 
 >>>  println  (  «Привет, мир!»  ) 
 Привет, мир! 

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

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

// list_folders.kts 
 import   java.io.File 
 valfolders   =   [   File  (  args  ]  0  )  .   listFiles   {   файл   ->   файл  .   isDirectory  ()   } 
 папки  ?.   forEach  (  ::  println  ) 

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

$   kotlinc   -script   list_folders.kts   "path_to_folder_to_inspect" 

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

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

  • ?. ( оператор безопасной навигации ) можно использовать для безопасного доступа к методу или свойству, возможно, нулевого объекта. Если объект имеет значение NULL, метод не будет вызываться, а выражение будет иметь значение NULL. Пример:
// возвращает значение null, если... 
 // - foo() возвращает значение null, 
 // - или если foo() не равно нулю, но bar() возвращает значение null, 
 // - или если foo() и bar() равны ненулевое значение, но baz() возвращает значение null. 
  // наоборот, возвращаемое значение не равно нулю тогда и только тогда, когда foo(), bar() и baz() не равны нулю 
 foo  ()  ?.   бар  ()  ?.   баз  () 
fun   SayHello  (  возможно  :   String?,  NeverNull   :  Int   )  {   // 
     использование оператора Элвиса 
     val   name  :   String   =   Maybe   ?:   "stranger" 
     println  (  "Hello  $  name  "  ) 
 } 

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

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

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

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

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

Пример «Привет, мир» [ править ]

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

fun   main  ()   { 
     println  (  «Привет, мир!»  ) 
     // Привет, мир! 
  } 

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

  • Android Studio (на базе IntelliJ IDEA) имеет официальную поддержку Kotlin, начиная с Android Studio 3. [43]
  • Поддерживается интеграция с распространенными инструментами сборки Java, включая Apache Maven , [44] Апач Муравей , [45] и Градл . [46]
  • Emacs есть режим Kotlin. В репозитории пакетов MELPA
  • JetBrains также предоставляет плагин для Eclipse . [47] [48]
  • IntelliJ IDEA имеет поддержку плагинов для Kotlin. [49] IntelliJ IDEA 15 была первой версией, которая включала плагин Kotlin в установщик IntelliJ и обеспечивала поддержку Kotlin «из коробки». [50]
  • Gradle : Kotlin имеет бесшовную интеграцию с Gradle, популярным инструментом автоматизации сборки. Gradle позволяет вам эффективно создавать, автоматизировать и управлять жизненным циклом ваших проектов Kotlin. [51]

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

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

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

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

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

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

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

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

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

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

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

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

  • Эта статья содержит цитаты из руководств по Kotlin, выпущенных под лицензией Apache 2.0.
  1. ^ «Выпуск Kotlin 2.0.0 (Репозиторий)» .
  2. ^ «Как правильное английское произношение слова Kotlin?» . 16 октября 2019 года. Архивировано из оригинала 9 ноября 2019 года . Проверено 9 ноября 2019 г.
  3. ^ «Kotlin для JavaScript — язык программирования Kotlin» . Котлин . Архивировано из оригинала 16 августа 2020 года . Проверено 20 августа 2020 г.
  4. ^ «Kotlin для кроссплатформенной мобильной разработки» . JetBrains: инструменты разработчика для профессионалов и команд . Архивировано из оригинала 19 августа 2020 года . Проверено 20 августа 2020 г.
  5. ^ «Kotlin Foundation — язык программирования Kotlin» . Котлин . Архивировано из оригинала 29 декабря 2019 года . Проверено 16 декабря 2019 г.
  6. ^ Перейти обратно: а б Лардинуа, Фредерик (7 мая 2019 г.). «Теперь Kotlin является предпочтительным языком Google для разработки приложений для Android» . ТехКранч . Архивировано из оригинала 7 мая 2019 года . Проверено 8 мая 2019 г.
  7. ^ «Часто задаваемые вопросы по Котлину» . Архивировано из оригинала 2 июня 2021 года . Проверено 2 апреля 2023 г. Kotlin позволяет вам выбрать версию JVM для выполнения. По умолчанию компилятор Kotlin/JVM создает байт-код, совместимый с Java 8. Если вы хотите использовать оптимизации, доступные в более новых версиях Java, вы можете явно указать целевую версию Java от 9 до 19. Обратите внимание, что в этом случае полученный байт-код может не работать в более ранних версиях.
  8. ^ «Стабильность компонентов Kotlin» . Котлин . 21 мая 2021 года. Архивировано из оригинала 29 июля 2021 года . Проверено 29 июля 2021 г.
  9. ^ «Kotlin 1.5.0 — первый большой релиз 2021 года» . Котлин . 4 мая 2021 года. Архивировано из оригинала 12 августа 2021 года . Проверено 29 июля 2021 г.
  10. ^ Mobius (8 January 2015), Андрей Бреслав — Kotlin для Android: коротко и ясно , archived from the original on 12 April 2023 , retrieved 28 May 2017
  11. ^ Кирон Мерфи (4 октября 1996 г.). «Так почему же они решили назвать его Java?» . JavaWorld . Архивировано из оригинала 15 марта 2019 года . Проверено 14 октября 2017 г.
  12. ^ Мерриам-Вебстер (8 июня 2023 г.). «Определение и значение Java» . www.merriam-webster.com . Архивировано из оригинала 4 июля 2023 года . Проверено 3 июля 2023 г.
  13. ^ Перейти обратно: а б Криль, Пол (22 июля 2011 г.). «JetBrains готовит язык JVM Kotlin» . Инфомир . Архивировано из оригинала 7 сентября 2019 года . Проверено 2 февраля 2014 г.
  14. ^ Уотерс, Джон (22 февраля 2012 г.). «Kotlin становится открытым исходным кодом» . ADTmag.com . 1105 Группа корпоративных вычислений. Архивировано из оригинала 18 февраля 2014 года . Проверено 2 февраля 2014 г.
  15. ^ «Зачем JetBrains нужен Kotlin» . 2 августа 2011 г. Архивировано из оригинала 16 августа 2023 г. . Проверено 11 февраля 2018 г. мы ожидаем, что Kotlin будет стимулировать продажи IntelliJ IDEA
  16. ^ "тест · JetBrains/kotlin@3e4dce3" . Гитхаб . Архивировано из оригинала 17 октября 2022 года . Проверено 17 октября 2022 г.
  17. ^ «Выпущен Kotlin 1.0: прагматический язык для JVM и Android | Блог Kotlin» . Блог.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: совместное использование кода между платформами | Блог Kotlin» . blog.jetbrains.com . 28 ноября 2017 г. Архивировано из оригинала 24 мая 2023 г. . Проверено 29 ноября 2017 г.
  20. ^ «Мультиплатформенные проекты — язык программирования Kotlin» . Котлин . Архивировано из оригинала 18 августа 2020 года . Проверено 20 августа 2020 г. Работа на всех платформах — явная цель Kotlin, но мы рассматриваем ее как предпосылку для гораздо более важной цели: совместного использования кода между платформами. Благодаря поддержке JVM, Android, JavaScript, iOS, Linux, Windows, Mac и даже встроенных систем, таких как STM32, Kotlin может обрабатывать любые компоненты современного приложения.
  21. ^ "Kotlin/kotlin-full-stack-application-demo" . Котлин. 3 апреля 2020 г. Архивировано из оригинала 14 сентября 2020 г. . Проверено 4 апреля 2020 г.
  22. ^ «Демонстрация полного стека приложения Kotlin: обновите все задействованные версии для работы с выпуском 1.3.70» . youtrack.jetbrains.com . Архивировано из оригинала 2 августа 2020 года . Проверено 4 апреля 2020 г.
  23. ^ «Выпущен Kotlin 1.1 с поддержкой JavaScript, сопрограммами и многим другим» . Архивировано из оригинала 4 июня 2023 года . Проверено 1 мая 2017 г.
  24. ^ «Что нового в Kotlin 1.4 — язык программирования Kotlin» . Котлин . Архивировано из оригинала 8 июня 2023 года . Проверено 20 августа 2020 г. В версии 1.4.0 мы немного изменили Swift API, сгенерированный из Kotlin, в отношении способа трансляции исключений.
  25. ^ «Что нового в Котлин 1.7.0 | Котлин» . Котлин в помощь . Архивировано из оригинала 20 июня 2022 года . Проверено 20 июня 2022 г.
  26. ^ Пол Крилл (12 января 2023 г.). «Kotlin 1.8.0 добавляет рекурсивное копирование и удаление для каталогов» . Архивировано из оригинала 8 июля 2023 года . Проверено 8 марта 2022 г.
  27. ^ Сара Хаггарти (6 июля 2023 г.). «Выпущен Kotlin 1.9.0» . Архивировано из оригинала 28 июля 2023 года . Проверено 6 июля 2023 г.
  28. ^ Github (21 мая 2024 г.). «Котлин 2.0.0» . Архивировано из оригинала 21 мая 2024 года . Проверено 21 мая 2024 г.
  29. ^ «Расширенное интервью JVM Languages ​​Report с создателем Kotlin Андреем Бреславом» . Zeroturnaround.com . 22 апреля 2013 г. Архивировано из оригинала 15 января 2019 г. . Проверено 2 февраля 2014 г.
  30. ^ «Точки с запятой» . www.jetbrains.com . Архивировано из оригинала 23 декабря 2015 года . Проверено 8 февраля 2014 г.
  31. ^ «Типы движутся вправо» . Середина . 16 июля 2020 года. Архивировано из оригинала 22 мая 2023 года . Проверено 6 ноября 2021 г.
  32. ^ «Роман Елизаров — новый руководитель проекта Kotlin» . Котлин-блог . ДжетБрэйнс. 19 ноября 2020 года. Архивировано из оригинала 20 января 2022 года . Проверено 7 ноября 2021 г.
  33. ^ «Основной синтаксис» . Котлин . Джетмозги. Архивировано из оригинала 29 января 2021 года . Проверено 19 января 2018 г.
  34. ^ «функции» . www.jetbrains.com . Архивировано из оригинала 23 ноября 2015 года . Проверено 8 февраля 2014 г.
  35. ^ «Что нового в Kotlin 1.3 — язык программирования Kotlin» . Котлин . Архивировано из оригинала 22 августа 2023 года . Проверено 4 апреля 2020 г.
  36. ^ «Аспекты проектирования по контракту (DbC)» . Котлинские обсуждения . 16 августа 2012 года. Архивировано из оригинала 5 апреля 2023 года . Проверено 4 апреля 2020 г. Реализуйте полную семантику Eiffel DbC и улучшите ее.
  37. ^ «Котлин для JavaScript | Котлин» . Котлин в помощь . 21 января 2021 года. Архивировано из оригинала 14 июля 2023 года . Проверено 19 марта 2021 г.
  38. ^ «Примеры Kotlin: изучите программирование на Kotlin на примерах» . Архивировано из оригинала 18 ноября 2021 года . Проверено 13 апреля 2019 г.
  39. ^ Перейти обратно: а б Эрик, Мартин, изд. (8 января 2024 г.). «Контракты Java Equals() и hashCode()» . Баелдунг . Архивировано из оригинала 19 ноября 2023 года . Проверено 8 апреля 2024 г. По умолчанию класс Object определяет методы .equals() и .hashCode(). В результате каждый класс Java неявно имеет эти два метода. [...] Реализация методаquals() по умолчанию в классе Object сравнивает идентичность объекта. [...] Второй критерий контракта .hashCode() имеет важное последствие: если мы переопределим метод равенства(), мы также должны переопределить метод hashCode(). [...] Мы ожидали бы, что myTeamLeader вернет «Энн», но с текущим кодом этого не происходит. Если мы хотим использовать экземпляры класса Team в качестве ключей HashMap, нам необходимо переопределить метод hashCode(), чтобы он соответствовал контракту; равные объекты возвращают один и тот же хэш-код.
  40. ^ «Объект (Платформа Java SE 8)» . docs.oracle.com . Архивировано из оригинала 7 апреля 2024 года . Проверено 8 апреля 2024 г. Насколько это практически возможно, метод hashCode, определенный классом Object, возвращает разные целые числа для разных объектов. (Обычно это реализуется путем преобразования внутреннего адреса объекта в целое число, но этот метод реализации не требуется языком программирования Java™.)
  41. ^ «HashMap (платформа Java SE 8)» . docs.oracle.com . Архивировано из оригинала 8 апреля 2024 года . Проверено 8 апреля 2024 г. Эта реализация обеспечивает постоянную производительность основных операций (получение и размещение), при условии, что хеш-функция правильно распределяет элементы по сегментам.
  42. ^ «Функции высшего порядка и лямбды» . Котлин . Джетмозги. Архивировано из оригинала 22 января 2021 года . Проверено 19 января 2018 г.
  43. ^ «Котлин и Android» . Android-разработчики . Архивировано из оригинала 4 октября 2023 года . Проверено 19 июня 2017 г.
  44. ^ «Использование Maven — языка программирования Kotlin» . kotlinlang.org . Архивировано из оригинала 3 ноября 2016 года . Проверено 9 мая 2017 г.
  45. ^ «Использование языка программирования Ant – Kotlin» . kotlinlang.org . Архивировано из оригинала 3 ноября 2016 года . Проверено 9 мая 2017 г.
  46. ^ «Использование Gradle — языка программирования Kotlin» . kotlinlang.org . Архивировано из оригинала 9 ноября 2016 года . Проверено 9 мая 2017 г.
  47. ^ «Начало работы с Eclipse Neon — языком программирования Kotlin» . Котлинланг.org . 10 ноября 2016 г. Архивировано из оригинала 18 мая 2023 г. . Проверено 11 апреля 2017 г.
  48. ^ «JetBrains/kotlin-eclipse: плагин Kotlin для Eclipse» . Гитхаб. Архивировано из оригинала 16 февраля 2016 года . Проверено 11 апреля 2017 г.
  49. ^ «Kotlin :: Репозиторий плагинов JetBrains» . Плагины.jetbrains.com . 31 марта 2017 г. Архивировано из оригинала 25 июня 2023 г. Проверено 11 апреля 2017 г.
  50. ^ «Что нового в IntelliJ IDEA 2017.1» . Jetbrains.com . Архивировано из оригинала 3 октября 2023 года . Проверено 11 апреля 2017 г.
  51. ^ «Грейдл | Котлин» . Котлин в помощь . Архивировано из оригинала 8 апреля 2024 года . Проверено 8 апреля 2024 г.
  52. ^ Лардинуа, Фредерик (17 мая 2017 г.). «Google делает Kotlin первоклассным языком для написания приложений для Android» . techcrunch.com . Архивировано из оригинала 22 мая 2017 года . Проверено 28 июня 2018 г.
  53. ^ «Язык программирования Kotlin: как Google использует его для устранения ошибок в коде, которые вызывают большинство сбоев» . ЗДНет . Архивировано из оригинала 6 апреля 2023 года . Проверено 6 декабря 2020 г.
  54. ^ «Представляем поддержку Kotlin в Spring Framework 5.0» . Весна . Ключевой. 4 января 2017 года. Архивировано из оригинала 23 августа 2023 года . Проверено 29 сентября 2020 г.
  55. ^ «Состояние поддержки Kotlin весной» . ДжетБрэйнс . 14 августа 2020 года. Архивировано из оригинала 7 июня 2023 года . Проверено 6 декабря 2020 г.
  56. ^ «Обзор фреймворков микросервисов: взгляд на альтернативы Spring Boot» . ДЗона . Архивировано из оригинала 21 мая 2023 года . Проверено 6 декабря 2020 г.
  57. ^ «Программирование на Kotlin — состояние экосистемы разработчиков в 2020 году» . ДжетБрэйнс . Архивировано из оригинала 5 апреля 2023 года . Проверено 29 сентября 2020 г.
  58. ^ «Состояние Октоверса» . Архивировано из оригинала 22 марта 2019 года . Проверено 24 июля 2019 г.
  59. ^ «Опрос разработчиков Stack Overflow 2020» . Архивировано из оригинала 4 июня 2020 года . Проверено 28 мая 2020 г.
  60. ^ «Kotlin получил награду «Прорыв года» на OSCON '19» . 18 июля 2019 года. Архивировано из оригинала 17 мая 2022 года . Проверено 24 июля 2019 г.
  61. ^ «Котлин в Аллегро» . Говорящий Котлин . Октябрь 2018. Архивировано из оригинала 1 июня 2023 года . Проверено 29 сентября 2020 г.
  62. ^ «QLDB на Amazon» . Говорящий Котлин . 30 июня 2020 года. Архивировано из оригинала 1 июня 2023 года . Проверено 29 сентября 2020 г.
  63. ^ «Будущее Jira Software на базе Kotlin» . YouTube . Архивировано из оригинала 1 сентября 2023 года . Проверено 1 сентября 2023 г.
  64. ^ «Переход на полную мультиплатформенность Kotlin» . Говорящий Котлин . 14 апреля 2020 года. Архивировано из оригинала 5 апреля 2023 года . Проверено 29 сентября 2020 г.
  65. ^ "квадрат/sqldelight" . Гитхаб . Архивировано из оригинала 20 июня 2019 года . Проверено 24 июля 2019 г.
  66. ^ «Использование Kotlin для серверной разработки в Flux» . Говорящий Котлин . 14 августа 2019 года. Архивировано из оригинала 1 июня 2023 года . Проверено 29 сентября 2020 г.
  67. ^ «Состояние Kotlin на Android» . YouTube . Архивировано из оригинала 15 января 2023 года . Проверено 29 сентября 2020 г.
  68. ^ «Gradle Kotlin DSL Primer» . docs.gradle.org . Архивировано из оригинала 18 августа 2023 года . Проверено 29 сентября 2020 г.
  69. ^ «Котлесс» . Говорящий Котлин . 30 января 2020 года. Архивировано из оригинала 5 апреля 2023 года . Проверено 29 сентября 2020 г.
  70. ^ «Kotlin на серверной части Meshcloud» . Говорящий Котлин . 28 февраля 2018 года. Архивировано из оригинала 6 апреля 2023 года . Проверено 29 сентября 2020 г.
  71. ^ «KotlinConf 2019: Kotlin управляет налогами в Норвегии, Ярле Хансен и Андерс Миккельсен» . YouTube . Архивировано из оригинала 10 апреля 2023 года . Проверено 29 сентября 2020 г.
  72. ^ «Гринфилд Котлин в OLX» . Говорящий Котлин . 24 августа 2018 года. Архивировано из оригинала 1 июня 2023 года . Проверено 29 сентября 2020 г.
  73. ^ «Мониторинг приложений с помощью микрометра» . Говорящий Котлин . 14 июня 2018 года. Архивировано из оригинала 1 апреля 2023 года . Проверено 29 сентября 2020 г.
  74. ^ «Взаимодействие Groovy и Kotlin в Rocket Travel» . Говорящий Котлин . 14 мая 2018 года. Архивировано из оригинала 5 апреля 2023 года . Проверено 29 сентября 2020 г.
  75. ^ «Котлин в Шазаме» . Говорящий Котлин . 29 июля 2018 года. Архивировано из оригинала 1 апреля 2023 года . Проверено 29 сентября 2020 г.
  76. ^ «Zally — API-линтер» . Говорящий Котлин . 29 января 2018 года. Архивировано из оригинала 6 апреля 2023 года . Проверено 29 сентября 2020 г.
  77. ^ «Разработчик Java/Kotlin — Barclays — Прага — Wizbii» . Wizbii.com . Проверено 29 сентября 2020 г.
  78. ^ «KotlinConf 2017 — Frontend Kotlin from the Trenches от Гаэтана Зоричака» . YouTube . Архивировано из оригинала 10 апреля 2023 года . Проверено 29 сентября 2020 г.
  79. ^ «Фриц2» . Говорящий Котлин . 14 сентября 2020 года. Архивировано из оригинала 6 апреля 2023 года . Проверено 29 сентября 2020 г.
  80. ^ «KotlinConf 2019: Kotlin в космосе от Максима Мазина» . YouTube . Архивировано из оригинала 9 апреля 2023 года . Проверено 29 сентября 2020 г.
  81. ^ «Как мы сделали Android-приложение Basecamp 3 на 100% Kotlin — Signal v. Noise» . Сигнал против шума . 29 апреля 2017 года. Архивировано из оригинала 1 августа 2018 года . Проверено 1 мая 2017 г.
  82. ^ «Стать двуязычным @coursera» . 26 апреля 2018 года. Архивировано из оригинала 15 января 2023 года . Проверено 24 июля 2019 г.
  83. ^ «Kotlin в производстве — что работает, что сломано» . Блог.dripstat.com . 24 сентября 2016 г. Архивировано из оригинала 1 июля 2019 г. Проверено 11 апреля 2017 г.
  84. ^ «Дуолинго в Твиттере» . Архивировано из оригинала 16 марта 2023 года . Проверено 13 апреля 2020 г.
  85. ^ «Роб Спилденнер в Твиттере» . Архивировано из оригинала 25 декабря 2022 года . Проверено 24 июля 2019 г.
  86. ^ «Droidcon NYC 2016 — Kotlin в производстве» . YouTube . Архивировано из оригинала 14 апреля 2023 года . Проверено 24 июля 2019 г.
  87. ^ «Дэн Лью в Твиттере» . Архивировано из оригинала 2 мая 2023 года . Проверено 24 июля 2019 г.
  88. ^ «Измерение производительности сборки Kotlin в Uber» . 30 апреля 2019 года. Архивировано из оригинала 5 июня 2023 года . Проверено 6 марта 2024 г.

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

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 627CEA5EB61444397C4FB1BEF8EFD5FD__1716311160
URL1:https://en.wikipedia.org/wiki/Kotlin_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Kotlin (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)