Jump to content

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

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

Котлин ( / ˈkɒtlɪn ɒtlɪ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. Вывод типа также поддерживается.

// Hello, World! example
fun main() {
    val scope = "World"
    println("Hello, $scope!")
}

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

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

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

package MyStringExtensions

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

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

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

// Overloading '+' operator using an extension function
operator fun Point.plus(other: Point): Point {
    return Point(x + other.x, y + other.y)
}

>>> val p1 = Point(10, 20)
>>> val p2 = Point(30, 40)
>>> println(p1 + p2)
Point(x=40, y=60)

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

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

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

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

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

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

for ((key, value) in map)
    println("$key: $value")

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

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

class User(val id: Int, val name: String, val address: String)
    
fun saveUserToDb(user: User) {
    fun validate(user: User, value: String, fieldName: String) {
        require(value.isNotEmpty()) { "Can't save user ${user.id}: empty $fieldName" }
    }
    
    validate(user, user.name, "Name") 
    validate(user, user.address, "Address")
    // Save user to the database 
    ...
}

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

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

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

// open on the class means this class will allow derived classes
open class MegaButton {

    // no-open on a function means that 
    //    polymorphic behavior disabled if function overridden in derived class
    fun disable() { ... }

    // open on a function means that
    //    polymorphic behavior allowed if function is overridden in derived class
    open fun animate() { ... }
}

class GigaButton: MegaButton() {

    // Explicit use of override keyword required to override a function in derived class
    override fun animate() { println("Giga Click!") } 
}

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

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

// No need for the open keyword here, it’s already open by default
abstract class Animated {

    // This virtual function is already open by default as well
    abstract fun animate()
  
    open fun stopAnimating() { }

    fun animateTwice() { }
}

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

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

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

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

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

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

Пример:

// Class is visible only to current module
internal open class TalkativeButton {
    // method is only visible to current class 
    private fun yell() = println("Hey!")
    // method is visible to current class and derived classes
    protected fun whisper() = println("Let's talk!")
}
internal class MyTalkativeButton: TalkativeButton() {
    fun utter() = super.whisper()
}
MyTalkativeButton().utter()

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

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

// Example of class using primary constructor syntax
// (Only one constructor required for this class)
open class BaseUser(open var isSubscribed: Boolean)
open class PowerUser(protected val nickname: String, final override var isSubscribed: Boolean = true):BaseUser(isSubscribed) { }

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

// Example of class using secondary constructor syntax
// (more than one constructor required for this class)
class Context
class AttributeSet
open class View(ctx:Context) {
    constructor(ctx: Context, attr: AttributeSet): this(ctx)
}
class MyButton : View {
    // Constructor #1 
    constructor(ctx: Context) : super(ctx) { 
    } 
    // Constructor #2
    constructor(ctx: Context, attr: AttributeSet) : super(ctx, attr) {
        // ... 
    }
}

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

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

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

sealed interface Expr
sealed class Job

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

sealed class Vehicle
data class 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 = Car("KIA", "John", "Blue")
val hyundaiCar = Car("Hyundai", "Britto", "Green")

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

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

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

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

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

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

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

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

$ kotlinc-jvm
type :help for help; :quit for quit
>>> 2 + 2
4
>>> println("Hello, World!")
Hello, World!

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

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

// list_folders.kts
import java.io.File
val folders = File(args[0]).listFiles { file -> file.isDirectory() }
folders?.forEach(::println)

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

$ kotlinc -script list_folders.kts "path_to_folder_to_inspect"

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

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

  • ?. ( оператор безопасной навигации ) можно использовать для безопасного доступа к методу или свойству, возможно, нулевого объекта. Если объект имеет значение NULL, метод не будет вызываться, а выражение будет иметь значение NULL. Пример:
// returns null if...
// - foo() returns null,
// - or if foo() is non-null, but bar() returns null,
// - or if foo() and bar() are non-null, but baz() returns null.
// vice versa, return value is non-null if and only if foo(), bar() and baz() are non-null
foo()?.bar()?.baz()
  • ?: ( оператор объединения значений NULL ) — это бинарный оператор, который возвращает первый операнд, если он не равен NULL, в противном случае — второй операнд. Его часто называют оператором Элвиса из-за его сходства со смайликом, изображающим Элвиса Пресли.
fun sayHello(maybe: String?, neverNull: Int) {
    // use of Elvis operator
    val name: String = maybe ?: "stranger"
    println("Hello $name")
}

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

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

// the following function takes a lambda, f, and executes f passing it the string "lambda"
// note that (String) -> Unit indicates a lambda with a String parameter and Unit return type
fun executeLambda(f: (String) -> Unit) {
    f("lambda")
}

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

// the following statement defines a lambda that takes a single parameter and passes it to the println function
val l = { c : Any? -> println(c) }
// lambdas with no parameters may simply be defined using { }
val l2 = { print("no parameters") }

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

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

fun main() {
    println("Hello, world!")
    // Hello, world!
}

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

  • Android Studio (на базе IntelliJ IDEA) имеет официальную поддержку Kotlin, начиная с Android Studio 3. [43]
  • Поддерживается интеграция с распространенными инструментами сборки Java, включая Apache Maven , [44] Апач Муравей , [45] и Градл . [46]
  • В репозитории пакетов MELPA Emacs есть режим Kotlin.
  • 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» . Ютуб . Архивировано из оригинала 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» . Ютуб . Архивировано из оригинала 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 управляет налогами в Норвегии, Ярле Хансен и Андерс Миккельсен» . Ютуб . Архивировано из оригинала 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 от Гаэтана Зоричака» . Ютуб . Архивировано из оригинала 10 апреля 2023 года . Проверено 29 сентября 2020 г.
  79. ^ «Фриц2» . Говорящий Котлин . 14 сентября 2020 года. Архивировано из оригинала 6 апреля 2023 года . Проверено 29 сентября 2020 г.
  80. ^ «KotlinConf 2019: Kotlin в космосе от Максима Мазина» . Ютуб . Архивировано из оригинала 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 в производстве» . Ютуб . Архивировано из оригинала 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://arc.ask3.ru/arc/aa/62/fd/627cea5eb61444397c4fb1bef8efd5fd.html
Заголовок, (Title) документа по адресу, URL1:
Kotlin (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)