Kotlin(プログラミング言語)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Kotlin
Kotlinロゴ2021.svg
パラダイムマルチパラダイムオブジェクト指向機能的必須ブロック構造化宣言型ジェネリックリフレクティブコンカレント
によって設計されたジェットブレインズ
デベロッパージェットブレインズ
初登場2011年7月22日; 10年前 (2011-07-22
安定リリース
1.6.0 [1] ウィキデータでこれを編集する / 2021年11月16日; 15日前 (202111月16日
プレビューリリース
ビルド-1.6.20-dev-107 / 2021年8月26日; 3ヶ月前 (2021-08-26
規律の入力推測静的強い
プラットホーム
OSクロスプラットフォーム
ライセンスApacheライセンス2.0
ファイル名拡張子.kt、.kts、.ktm
Webサイトkotlinlang .org ウィキデータでこれを編集する
に影響を受けた

Kotlin/ K ɒ T Lのɪ N /[2]クロスプラットフォーム静的に型付けされた汎用 プログラミング言語型推論。 Kotlinはと完全に相互運用できるように設計されたJava、およびJVMのKotlinのバージョンの標準ライブラリが依存するJavaクラスライブラリ[3]が、型推論が可能に構文がより簡潔であることを。 Kotlinは主にJVMを対象としていますが、JavaScriptにコンパイルすることもできます(たとえば、React [4]を使用するフロントエンドWebアプリケーションの場合)またはネイティブコードLLVM経由)。たとえば、Androidアプリビジネスロジック共有するネイティブiOSアプリの場合。[5]言語開発の費用はJetBrainsが負担し、KotlinFoundationはKotlinの商標を保護しています。[6]

2019年5月7日、Googleは、Kotlinプログラミング言語がAndroidアプリ開発者に推奨される言語になったことを発表しました[7]のリリース以来のAndroid Studioの2017年10月では3.0、Kotlinは、標準のJavaコンパイラの代替として含まれています。 AndroidKotlinコンパイラはデフォルトでJava8バイトコードを生成します(これは後のJVMで実行されます)が、プログラマーは最適化のためにJava 9を最大16までターゲットにすることを選択でき、[8]またはより多くの機能を許可します。Java 16で導入されたJVMの双方向レコードクラス相互運用性サポートがあり、Kotlin1.5の時点で安定していると見なされています。

新しいKotlin / JS(IR)はバージョン1.5.30の時点でベータ版ですが、JavaScript(つまり、従来のバックエンド)への直接コンパイルに対するKotlinのサポートは、開発者によってKotlin1.3以降安定していると見なされています。Kotlin / JVM(IR)およびKotlin / JS(IRベース)の新しい最適化された実装は、バージョン1.4で導入されました。Kotlin / JVM(IR)は、バージョン1.5リリースの時点で安定していると見なされます。Kotlin / Native(Appleシリコンサポートなど)は、バージョン1.3以降ベータ版と見なされています。[9] [10]

歴史

Kotlinマスコットの2D画像
Kotlinマスコットの3D画像

2011年7月、JetBrainsは、1年間開発されていたJVMの新しい言語であるProjectKotlinを発表しました。[11] JetBrainsのリーダーであるDmitryJemerovは、Scalaを除いて、ほとんどの言語には探していた機能がないと述べました。しかし、彼はScalaのコンパイル時間が遅いことを欠点として挙げました[11] Kotlinの目標の1つは、Javaと同じくらい速くコンパイルすることです。 2012年2月、JetBrainsはApache2ライセンスの下でプロジェクトをオープンソース化しました[12]

この名前は、サンクトペテルブルク近くのコトリン島由来しています。Andrey Breslavは、JavaがインドネシアのJava島にちなんで名付けられたように、チームが島にちなんで名前を付けることにしたと述べました[13](プログラミング言語Javaはおそらく島にちなんで名付けられたコーヒーにちなんで名付けられました)。[14]

JetBrainsは、新しい言語がIntelliJIDEAの売上を促進することを期待しています。[15]

Kotlin v1.0は2016年2月15日にリリースされました。[16]これは最初の公式に安定したリリースであると考えられており、JetBrainsはこのバージョンから長期的な下位互換性を約束しています。

で、GoogleのI / O 2017、Googleが上Kotlinのための第一級のサポートを発表しましたアンドロイドを[17]

Kotlinv1.2は2017年11月28日にリリースされました。[18] JVMとJavaScriptプラットフォーム間のコード共有機能がこのリリースに新たに追加されました(バージョン1.4以降、マルチプラットフォームプログラミングは「実験的」からアップグレードされアルファ機能[19]です)。フルスタックのデモは、新しいKotlin / JSのGradleプラグインで行われています。[20] [21]

Kotlin v1.3は2018年10月29日にリリースされ、非同期プログラミング用のコルーチンをもたらしました。

2019年5月7日、Googleは、Kotlinプログラミング言語がAndroidアプリ開発者に推奨される言語になったことを発表しました。[7]

Kotlin v1.4は2020年8月にリリースされました。たとえば、Appleのプラットフォームのサポート、つまりObjective-C / Swiftの 相互運用機能に若干の変更が加えられています。[22]

Kotlinv1.5は2021年5月にリリースされました。

Kotlinv1.6は2021年11月にリリースされました。

デザイン

開発リーダーのAndreyBreslavは、Kotlinは産業用の強力なオブジェクト指向言語であり、Javaよりも「優れた言語」であるように設計されていますが、Javaコードと完全に相互運用できるため、企業はJavaからKotlinに段階的に移行できると述べています。 。[23]

セミコロンは、ステートメント ターミネータとしてオプションです。ほとんどの場合コンパイラがステートメントが終了したと推測するに改行で十分です[24]

Kotlinの変数宣言とパラメーターリストでは、BASICPascalTypeScriptRust同様にデータ型が変数名の後に(コロン区切りで)付いています。これは、現在のプロジェクトリーダーであるRoman Elizarovの記事によると、変数名の整列につながり、特に連続する変数宣言がいくつかあり、1つ以上の型が複雑すぎて型推論できない場合、または人間の読者が理解できるように、明示的に宣言する必要があります。[25] [26]

Kotlinの変数は読み取り専用にすることができ、と宣言したvalのキーワード、または可変で宣言され、VaRのキーワード。[27]

クラスメンバーはデフォルトでパブリックであり、クラス自体はデフォルトでfinalです。つまり、基本クラスがopenキーワードで宣言されていない限り、派生クラスの作成は無効になります

オブジェクト指向プログラミングクラスメンバー関数(メソッドに相当)に加えて、Kotlin関数を使用した手続き型プログラミングもサポートしています[28] Kotlin関数(およびコンストラクター)はデフォルトの引数可変長の引数リスト、名前付き引数、および一意の署名によるオーバーロードをサポートします。クラスメンバー関数は仮想です。つまり、呼び出されたオブジェクトの実行時型に基づいてディスパッチされます。

Kotlin 1.3は、コントラクトのサポートを追加します(stdlibで安定、ユーザー定義のコントラクトは実験的)[29]コントラクトによるEiffelの 設計[30]プログラミングパラダイムに触発された

Kotlinの開発者によると、KotlinからJavaScriptコードを呼び出すことができます。たとえば、完全なタイプセーフなReactアプリケーションを作成したり、フロントエンドと検証ロジックを共有するフルスタックWebアプリケーションを作成して維持したりできます。または、「Kotlinコードからライブラリを生成することもできます。 JavaScriptまたはTypeScriptで記述された任意のコードベースのモジュールとして使用できます[31]

構文

手続き型プログラミングスタイル

Kotlinは、静的メソッドと変数がクラス本体内にのみ存在することを許可するというJavaの制限を緩和します静的オブジェクトと関数は、冗長なクラスレベルを必要とせずに、パッケージのトップレベルで定義できます。Javaとの互換性のために、KotlinはJvmName、パッケージがJavaプロジェクトから表示されるときに使用されるクラス名を指定するアノテーションを提供しますたとえば、@file:JvmName("JavaClassName")

メインエントリポイント

以下のようにCC ++C#、Java、およびゴーエントリポイントKotlinのにプログラムがどの含む配列渡すことができ、「メイン」という名前の関数であり、コマンドライン引数を。Kotlin 1.3以降、これはオプションです。[32] PerlPHP、およびUnixシェルスタイルの文字列補間がサポートされています。型推論もサポートされています。

// こんにちは世界!
楽しい メイン() {
    val  scope  =  "World"
    println "こんにちは、$スコープ!" 
}

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

拡張機能

C#と同様に、Kotlinでは、新しい関数を使用して派生クラスを作成する形式がなくても、任意のクラスに拡張関数追加できます。拡張関数は、クラスのすべてのパブリックインターフェイスにアクセスできます。これを使用して、ターゲットクラスへの新しい関数インターフェイスを作成できます。拡張関数は、クラスの関数とまったく同じように表示され、クラス関数のコード補完検査で表示されます。例えば:

パッケージ MyStringExtensions

楽しい 文字列lastChar (): シャア =  GET 長さ -  1 

>>> のprintln "Kotlin" lastChar ())

上記のコードをパッケージの最上位に配置することにより、Stringクラスが拡張され、StringクラスlastCharの元の定義に含まれていなかっ関数が含まれるようになります。

//拡張関数を使用して '+'演算子をオーバーロードします
演算子 楽しい ポイントプラスその他 ポイント): ポイント {
    リターン ポイントX  + その他X  Y  + その他Y 
}

>>> ヴァル P1  = ポイント10  20 
>>> ヴァル P2  = ポイント30  40 
>>>  println p1  +  p2 
ポイントx = 40  y = 60 

スプレッド演算子を使用して引数を解凍します

Pythonと同様に、スプレッド演算子のアスタリスク(*)は、配列の内容を関数へのコンマ区切りの引数として解凍します。

fun  main args  Array < String >  { 
    val  list  =  listOf "args:"  * args 
    println リスト
}

破壊宣言

非構造宣言は、オブジェクトがされるかもしれない座標、例えばA 2D、一度に複数の変数にオブジェクトを分解する非構造二つの整数、x及びyに。

たとえば、Map.Entryオブジェクトは、キーフィールドと値フィールドへのアクセスを簡素化するための破棄をサポートしています。

for  ((key  value  in  map 
    println " $ key $ value " 

入れ子関数

Kotlinを使用すると、ローカル関数を他の関数またはメソッド内で宣言できます。

クラス User val  id  Int  val  name  String  val  address  String 
    
fun  saveUserToDb user  User  {
    fun  validate user  User  value  String  fieldName  String  {
        必要isNotEmpty ()) {  "ユーザー保存することはできません$ {ユーザーID } :空の$ fieldNameに"  }
    }
    
    検証ユーザー ユーザー名前 "名前"  
    検証ユーザー ユーザーアドレス "アドレス" 
    //ユーザーをデータベースに保存します 
    ..。
}

クラスはデフォルトでfinalです

Kotlinでは、基本クラスタイプから新しいクラスを派生させるには、基本クラスを明示的に「オープン」としてマークする必要があります。これは、クラスがデフォルトで開かれているJavaなどのほとんどのオブジェクト指向言語とは対照的です。

そこから新しいサブクラスを派生させるために開かれている基本クラスの例。

//クラスで開くということは、このクラスが派生クラスを許可することを意味します
オープン クラス MegaButton   {

    //関数を開かないということは、 
    //派生クラスで関数がオーバーライドされた場合、ポリモーフィックな動作は無効になります
    fun  disable () {  ...  }

    //関数で開くとは、
    //派生クラスで関数がオーバーライドされた場合に許可されるポリモーフィックな動作
    open  fun  animate () {  ...  }
}

クラス GigaButton  MegaButton  {

    //派生クラスの関数をオーバーライドするために必要なoverrideキーワードの明示的な使用
    オーバーライド 楽しい アニメーション() {  printlnの"ギガクリック!"  } 
}

抽象クラスはデフォルトで開いています

抽象クラスは、派生クラスで定義される抽象または「純粋な仮想」プレースホルダー関数を定義します。抽象クラスはデフォルトで開いています。

//ここではopenキーワードは必要ありません、デフォルトですでに開いています
抽象 クラス Animated  {

    //この仮想関数はデフォルトでもすでに開いています
    抽象的な 楽しい アニメート()
  
    open  fun  stopAnimating () {  }

    楽しい animateTwice () {  }
}

クラスはデフォルトで公開されています

Kotlinは、クラスなどのトップレベルの宣言のために可視性を制限するために、次のキーワードを提供し、クラスのメンバーのための:publicinternalprotected、およびprivate

クラスメンバーに適用する場合:

キーワード 可視性
public (ディフォルト) どこにでも
internal モジュール内
protected サブクラス内
private クラス内

トップレベルの宣言に適用する場合:

キーワード 可視性
public (ディフォルト) どこにでも
internal モジュール内
private ファイル内

例:

//クラスは現在のモジュールにのみ表示されます
内部 オープン クラス TalkativeButton   Focusableの {
    //メソッドは現在のクラスにのみ表示されます 
    private  fun  yell () =  println "Hey!" 

    //メソッドは現在のクラスと派生クラスに表示されます
    保護された 楽しい ささやき() =  println "話しましょう!" 
}

一次コンストラクターと二次コンストラクター

Kotlinは、クラス名に続く引数リストで構成される、クラス定義自体の一部としての「プライマリコンストラクタ」の指定をサポートしています。この引数リストは、Kotlinの標準関数引数リストの拡張構文をサポートします。これにより、可視性、拡張性、可変性の属性など、プライマリコンストラクターでのクラスプロパティの宣言が可能になります。さらに、サブクラスを定義するときに、スーパーインターフェイスとスーパークラスのプロパティをプライマリコンストラクターでオーバーライドできます。

//プライマリコンストラクタ構文を使用したクラスの例
//(このクラスに必要なコンストラクターは1つだけです)
オープン クラスの パワーユーザー
    保護された val ニックネーム 文字列 
    最終的 オーバーライド VAR  isSubscribed  ブール =  
   ユーザー(...) {
    ..。
}

ただし、クラスに複数のコンストラクターが必要な場合は、セカンダリコンストラクター構文と呼ばれるより一般的なコンストラクターを使用できます。これは、C ++、C#、Javaなどのほとんどのオブジェクト指向言語で使用されるコンストラクター構文によく似ています。

//二次コンストラクタ構文を使用したクラスの例
//(このクラスには複数のコンストラクターが必要です)
クラス MyButton   表示 {

    //コンストラクタ#1 
    コンストラクターctx  コンテキスト  スーパーctx  { 
        //..。 
    } 
  
    //コンストラクタ#2
    コンストラクターctx  Context  attr  AttributeSet   super ctx  attr  { 
        //..。 
    }
}

封印されたクラス

封印されたクラスとインターフェースはサブクラス階層を制限します。つまり、継承階層をより細かく制御できます。

封印されたインターフェースとクラスの宣言:

密閉型 インターフェース Expr
封印された クラスの 仕事

封印されたクラスのすべてのサブクラスは、コンパイル時に定義されます。封印されたクラスを持つモジュールのコンパイル後に、新しいサブクラスを追加することはできません。たとえば、コンパイルされたjarファイル内の封印されたクラスはサブクラス化できません。

密閉 クラス 車両
データ クラス Car val  brandName  String  val  owner  String  val  color  String ): Vehicle ()
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" 

データクラス

Kotlinのdata class構成は、データの保存を主な目的とするクラスを定義します。この構築物は、主要な機能があること以外は、通常のクラスに似ているequalstoStringと、hashCode自動的にクラスのプロパティから生成されています。Javaでは、このようなクラスは、これらのような標準的な関数の組み合わせを提供することが期待されています。データクラスはメソッドを宣言する必要はありませんが、各クラスには少なくとも1つのプロパティが必要です。多くの場合、データクラスは本文なしで記述されますが、他のクラスに有効なメソッドまたはセカンダリコンストラクタをデータクラスに与えることは可能です。dataキーワードが前に使用されたclassデータクラスを定義するキーワード。[33]

fun  main args  Array  {
    //他のクラスオブジェクトと同じようにデータクラスオブジェクトを作成します
    var  book1  =  Book "Kotlinプログラミング"  250 
    println book1 
    //出力:Book(name = Kotlin Programming、price = 250)
}
     
//パラメータとそのオプションのデフォルト値を持つデータクラス
データ クラス Book val  name  String  =  ""  val  price  Int  =  0 

Kotlinインタラクティブシェル

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

スクリプト言語としてのKotlin

Kotlinはスクリプト言語としても使用できます。スクリプトは、トップレベルの実行可能コードを含むKotlinソースファイル(.kts)です。

// list_folders.kts
 java.io.Fileをインポートします
val  folder  =  File 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セーフ演算子を提供します。

楽しい sayHello 多分 文字列? neverNull  Int  {
    //エルビス演算子の使用
    val  文字列 = 多分 ?: "見知らぬ人"
    println "Hello $ name " 
}

安全なナビゲーション演算子の使用例:

//次の場合はnullを返します...
// --foo()はnullを返し、
//-またはfoo()がnull以外であるが、bar()がnullを返す場合、
//-またはfoo()とbar()がnull以外の場合、baz()はnullを返します。
//その逆、foo()、bar()、baz()がnull以外の場合に限り、戻り値はnull以外になります
foo ()?。バー()?。バズ()

ラムダ

Kotlinは、高階関数無名関数またはラムダのサポートを提供します[34]

//次の関数はラムダfを受け取り、fを実行して文字列「lambda」を渡します
//(String)-> Unitは、StringパラメーターとUnit戻り型を持つラムダを示すことに注意してください
fun  executeLambda f  String  ->  Unit  {
    f "ラムダ" 
}

ラムダは中括弧{}を使用して宣言されますラムダがパラメーターを受け取る場合、それらは中括弧内で宣言され、その後に->演算子が続きます

//次のステートメントは、単一のパラメーターを受け取り、それをprintln関数に渡すラムダを定義します
val  l  =  {  c   任意ですか? ->  println c  }
//パラメータのないラムダは、{}を使用して簡単に定義できます
val  l2  =  {  print "パラメータなし"  }

複雑な「HelloWorld」の例

fun  main args  Array < String >  {
    挨拶 {
        場所
    }。印刷()
}

//インライン高階関数
インライン 楽しい 挨拶s  () -> 文字列  文字列 = 挨拶 andAnother  s ()

//関数、拡張機能、型推論、null許容型、 
//ラムダ式、これとラベル付け、エルビス演算子(?:)
中置 楽しい 文字列andAnother other   Any? =  buildString () 
{{ 
    追加this @andAnother );  追加"" );  追加その他 ?: ""  
}

//不変の型、委任されたプロパティ、遅延初期化、文字列テンプレート
ヴァル 挨拶 によって 遅延 { ヴァル doubleEl  文字列 =  「LL」 "彼は$ { doubleEl } o"  }

//封印されたクラス、コンパニオンオブジェクト
密封された クラス への { コンパニオン オブジェクト { valの 場所 =  「世界」}  }

//拡張機能、ユニット
楽しい 文字列print () =  println this 

ツール

  • IntelliJ IDEAは、Kotlinのプラグインをサポートしています。[35] IntelliJ IDEA 15は、KotlinプラグインをIntelliJインストーラーにバンドルし、Kotlinサポートをすぐに提供する最初のバージョンでした。[36]
  • JetBrainsは、Eclipse用のプラグインも提供します[37] [38]
  • Apache Maven[39] Apache Ant[40]Gradleなどの一般的なJavaビルドツールとの統合がサポートされています。[41]
  • Android Studio (IntelliJ IDEAに基づく)は、Android Studio3以降でKotlinを公式にサポートしています。[42]
  • EmacsのMelpaパッケージリポジトリにはKotlinモードがあります。
  • VimにはGitHubで管理されているプラ​​グインがあります。[43]
  • Json2Kotlin、Webサービス応答マッピング用のPOJOスタイルのネイティブKotlinコードを生成します。

アプリケーション

Kotlinが2017年5月にGoogleI / O公式のAndroid開発言語として発表されたとき、KotlinはJavaとC ++に加えて、Androidで完全にサポートされる3番目の言語になりました。[44] 2020年の時点で、Kotlinは依然としてAndroidで最も広く使用されており、GoogleはPlayストアの上位1000個のアプリの70%がKotlinで作成されていると推定しています。 Google自体には、マップやドライブなど、Kotlinで記述された60個のアプリがあります。 Googleのホームなどの多くのAndroidアプリは、Kotlinに移行中のため、KotlinとJavaの両方を使用します。 Android上のKotlinは、nullポインターの安全性と、より短く、より読みやすいコードを作成する機能の点で有益であると見なされています。[45]

Kotlinは、Androidでの顕著な使用に加えて、サーバー側の開発で注目を集めています。春のフレームワークは、正式に1月4日2017年にバージョン5でKotlinのサポートを追加しました[46]春はKotlinにそのすべてのドキュメントを翻訳し、内蔵の多くKotlin固有のサポートはコルーチンなどの機能を追加しました、さらなる支持Kotlinへ。[47] Springに加えて、JetBrainsは、Webアプリケーションを構築するためのKtorと呼ばれるKotlin初のフレームワークを作成しました。[48]

2020年、JetBrainsは、Kotlinを使用する開発者の調査で、56%がモバイルアプリにKotlinを使用し、47%がWebバックエンドに使用していることを発見しました。すべてのKotlin開発者の3分の1強が、別の言語からKotlinに移行していると述べています。ほとんどのKotlinユーザーはAndroid(またはJVM上)をターゲットにしており、Kotlin Nativeを使用しているのはわずか6%でした。[49]

採用

2018年、KotlinはGitHubで最も急速に成長している言語であり、2017年と比較して2.6倍の開発者がいます。[50] 2020 Stack Overflow Developer Surveyによると、4番目に愛されているプログラミング言語です。[51]

Kotlinは、2019年のO'Reillyオープンソースソフトウェアカンファレンスブレイクアウトアワードも受賞しました。[52]

多くの企業/組織がバックエンド開発にKotlinを使用しています。

一部の企業/組織は、Web開発にKotlinを使用しています。

  • ジェットブレインズ[67]
  • Data2viz [68]
  • フリッツ2 [69]
  • バークレイズバンク[70]

多くの企業が、Kotlinを使用していると公に述べています。

も参照してください

参考文献

  • この記事には、Apache2.0ライセンスの下でリリースされたKotlinチュートリアルからの引用が含まれています。
  1. ^ https://github.com/JetBrains/kotlin/releases
  2. ^ 「Kotlinの正しい英語の発音は何ですか?」2019年10月16日2019年11月9日取得
  3. ^ "kotlin-stdlib"kotlinlang.orgJetBrains 2018年4月20日取得
  4. ^ 「JavaScript用のKotlin-Kotlinプログラミング言語」Kotlin 2020年8月20日取得
  5. ^ 「クロスプラットフォームモバイル開発のためのKotlin」JetBrains:プロフェッショナルおよびチーム向けの開発者ツール2020年8月20日取得
  6. ^ 「KotlinFoundation-Kotlinプログラミング言語」Kotlin
  7. ^ a b 「Kotlinは現在、Androidアプリ開発でGoogleが推奨する言語です」TechCrunch 2019年5月8日取得
  8. ^ 「KotlinFAQ」2021年8月26日取得Kotlinでは、実行するJVMのバージョンを選択できます。デフォルトでは、Kotlin / JVMコンパイラはJava8互換のバイトコードを生成します。新しいバージョンのJavaで利用可能な最適化を利用する場合は、ターゲットのJavaバージョンを9から16まで明示的に指定できます。この場合、結果のバイトコードは下位バージョンでは実行されない可能性があります。
  9. ^ 「Kotlinコンポーネントの安定性」Kotlin2021年5月21日2021年7月29日取得
  10. ^ 「Kotlin1.5.0–2021年の最初のビッグリリース」Kotlin2021年5月4日2021年7月29日取得
  11. ^ a b オキアミ、ポール(2011年7月22日)。「JetBrainsはJVM言語Kotlinを準備します」InfoWorld2019年9月7日にオリジナルからアーカイブされました2014年2月2日取得
  12. ^ ウォーターズ、ジョン(2012年2月22日)。「Kotlinがオープンソースになります」ADTmag.com1105エンタープライズコンピューティンググループ。2014年2月18日にオリジナルからアーカイブされました2014年2月2日取得
  13. ^ Mobius(2015年1月8日)、АндрейБреслав—KotlinдляAndroid:короткоиясно2017年5月28日取得
  14. ^ キーロンマーフィー(1996年10月4日)。「それで、なぜ彼らはそれをJavaと呼ぶことにしたのですか?」JavaWorld2019年3月15日にオリジナルからアーカイブされました2017年10月14日取得
  15. ^ 「JetBrainsがKotlinを必要とする理由」KotlinがIntelliJIDEAの販売を促進することを期待しています
  16. ^ 「Kotlin1.0がリリースされました:JVMおよびAndroid用の語用論的言語| Kotlinブログ」Blog.jetbrains.com2016年2月15日2017年4月11日取得
  17. ^ シャフィロフ、マキシム(2017年5月17日)。「Android上のKotlin。現在は公式です」本日、Google I / O基調講演で、AndroidチームはKotlinのファーストクラスのサポートを発表しました。
  18. ^ 「Kotlin1.2のリリース:プラットフォーム間でのコードの共有| Kotlinブログ」blog.jetbrains.com2017年11月28日。
  19. ^ 「マルチプラットフォームプロジェクト-Kotlinプログラミング言語」Kotlin 2020年8月20日取得Kotlinの明確な目標はすべてのプラットフォームでの作業ですが、プラットフォーム間でコードを共有するという、はるかに重要な目標の前提と見なしています。JVM、Android、JavaScript、iOS、Linux、Windows、Mac、さらにはSTM32などの組み込みシステムをサポートすることで、Kotlinは最新のアプリケーションのすべてのコンポーネントを処理できます。
  20. ^ 「Kotlin / kotlin-full-stack-application-demo」Kotlin。2020年4月3日2020年4月4日取得
  21. ^ 「Kotlinフルスタックアプリのデモ:1.3.70リリースで動作するように関連するすべてのバージョンを更新します」youtrack.jetbrains.com 2020年4月4日取得
  22. ^ 「Kotlin1.4の新機能-Kotlinプログラミング言語」Kotlin 2020年8月20日取得1.4.0では、例外の変換方法に関して、Kotlinから生成されたSwiftAPIをわずかに変更します。
  23. ^ 「JVM言語レポートはKotlinの作成者であるAndreyBreslavとのインタビューを延長しました」Zeroturnaround.com2013年4月22日2014年2月2日取得
  24. ^ 「セミコロン」jetbrains.com 取り出される8年2月2014
  25. ^ 「タイプは右に移動しています」ミディアムミディアム2021年11月6日取得
  26. ^ 「RomanElizarovはKotlinの新しいプロジェクトリーダーです」KotlinブログJetBrains 2021年11月7日取得
  27. ^ 「基本構文」Kotlinジェットブレインズ2018年1月19日取得
  28. ^ 「関数」jetbrains.com 取り出される8年2月2014
  29. ^ 「Kotlin1.3の新機能-Kotlinプログラミング言語」Kotlin 2020年4月4日取得
  30. ^ 「契約による設計(DbC)の設計上の考慮事項」Kotlinディスカッション2012年8月16日2020年4月4日取得Eiffel DbCの完全なセマンティクスを実装し、それを改善します。
  31. ^ 「JavaScript用のKotlin | Kotlin」Kotlinヘルプ2021年1月21日2021年3月19日取得
  32. ^ 「Kotlinの例:例によってKotlinプログラミングを学ぶ」
  33. ^ 「Kotlinのデータクラスの紹介」
  34. ^ 「高階関数とラムダ」Kotlinジェットブレインズ2018年1月19日取得
  35. ^ 「Kotlin :: JetBrainsプラグインリポジトリ」Plugins.jetbrains.com2017年3月31日2017年4月11日取得
  36. ^ 「IntelliJIDEA2017.1の新機能」Jetbrains.com 2017年4月11日取得
  37. ^ 「EclipseNeon入門–Kotlinプログラミング言語」Kotlinlang.org2016年11月10日2017年4月11日取得
  38. ^ 「JetBrains / kotlin-eclipse:Eclipse用のKotlinプラグイン」GitHub 2017年4月11日取得
  39. ^ 「Mavenの使用–Kotlinプログラミング言語」kotlinlang.org 2017年5月9日取得
  40. ^ 「Antの使用–Kotlinプログラミング言語」kotlinlang.org 2017年5月9日取得
  41. ^ 「Gradleの使用–Kotlinプログラミング言語」kotlinlang.org 2017年5月9日取得
  42. ^ 「KotlinとAndroid」Android開発者
  43. ^ "udalov / kotlin-vim:Vim用のKotlinプラグイン。機能:構文の強調表示、基本的なインデント、Syntasticのサポート"GitHub 2019年8月30日取得
  44. ^ ラルディノア、フレデリック(2017年5月17日)。「GoogleはKotlinをAndroidアプリを作成するためのファーストクラスの言語にします」techcrunch.com 2018年6月28日取得
  45. ^ 「Kotlinプログラミング言語:ほとんどのクラッシュの原因となるコードバグを潰すためにGoogleがどのように使用しているか」ZDNet
  46. ^ 「SpringFramework5.0でのKotlinサポートの紹介」Pivotal 2020年9月29日取得
  47. ^ 「春のKotlinサポートの状態」JetBrains 2020年12月6日取得
  48. ^ 「マイクロサービスフレームワークのレビュー:SpringBootの代替案の考察」DZone
  49. ^ 「Kotlinプログラミング-開発者エコシステム2020の状態」JetBrains 2020年9月29日取得
  50. ^ 「オクトバースの状態」2019年3月22日にオリジナルからアーカイブされまし2019年7月24日取得
  51. ^ 「StackOverflowDeveloperSurvey2020」2020年5月28日取得
  52. ^ 「KotlinはOSCON'19でBreakoutProject of theYear賞を受賞しました」2019年7月24日取得
  53. ^ 「Android上のKotlinの状態」YouTube 2020年9月29日取得
  54. ^ 「KotlinConf2019:KotlinはJarle Hansen&AndersMikkelsenによってノルウェーで税金を徴収しますYouTube 2020年9月29日取得
  55. ^ 「GradleKotlinDSL入門書」docs.gradle.org 2020年9月29日取得
  56. ^ 「AmazonのQLDB」Kotlinを話します。2020年9月29日取得
  57. ^ 「完全なKotlinマルチプラットフォームに移行する」Kotlinを話します。2020年9月29日取得
  58. ^ 「Kotless」Kotlinを話します。2020年9月29日取得
  59. ^ 「Fluxでのバックエンド開発にKotlinを使用する」Kotlinを話します。2020年9月29日取得
  60. ^ 「アレグロのコトリン」Kotlinを話します。2020年9月29日取得
  61. ^ 「OLXのGreenfieldKotlin」Kotlinを話します。2020年9月29日取得
  62. ^ 「ShazamのKotlin」Kotlinを話します。2020年9月29日取得
  63. ^ 「マイクロメータによるアプリケーション監視」Kotlinを話します。2020年9月29日取得
  64. ^ 「ロケット旅行でのGroovyとKotlinの相互運用」Kotlinを話します。2020年9月29日取得
  65. ^ 「MeshcloudのバックエンドのKotlin」Kotlinを話します。2020年9月29日取得
  66. ^ 「Zally-APIリンター」Kotlinを話します。2020年9月29日取得
  67. ^ 「KotlinConf2019:MaximMazinによるKotlininSpace」YouTube 2020年9月29日取得
  68. ^ 「KotlinConf2017-GaetanZoritchakによるトレンチからのフロントエンドKotlin」YouTube 2020年9月29日取得
  69. ^ 「Fritz2」Kotlinを話します。2020年9月29日取得
  70. ^ 「Java / Kotlin開発者-バークレイズ-プラハ-Wizbii」Wizbii.com 2020年9月29日取得
  71. ^ 「本番環境でのKotlin–何が機能し、何が壊れているか」Blog.dripstat.com2016年9月24日2017年4月11日取得
  72. ^ 「Basecamp3のAndroidアプリを100%Kotlin –Signalv。Noiseにした方法」信号v。ノイズ2017年4月29日2017年5月1日取得
  73. ^ 「DroidconNYC2016-Kotlin inProduction」2019年7月24日取得
  74. ^ 「bilingual @ courseraになる」2018年4月26日2019年7月24日取得
  75. ^ 「ツイッターのロブSpieldenner」2019年7月24日取得
  76. ^ 「2017Kotlinを使用しているのは誰ですか?」2017年2月7日2019年7月24日取得
  77. ^ "square / sqldelight" 2019年7月24日取得
  78. ^ 「TwitterのDanLew」2019年7月24日取得
  79. ^ 「TwitterのDuolingo」2020年4月13日取得
  80. ^ 「JavaScriptサポート、コルーチンなどでリリースされたKotlin1.1」2017年5月1日取得

外部リンク