なぜKotlinを使うのですか?


多くの開発者はKotlinを開発言語として使用している.本稿では、Kotlinはどのような言語であり、多くの開発者が使用できる利点がありますか?

Kotlinは


KotlinはJetBrans社が2011年に初めて公開した後、2016年に正式に発売したオープンソースプログラミング言語である.JVMベースの言語は、Javaと似ていますが、より簡潔な構文とより多くの機能を提供します.Javaと完全に互換性があり、JavaベースのすべてのプログラムがKotlinを使用して開発できることを意味します.どうして100%互換性があるのですか?これを理解するために、JVMがKotlin言語をどのように構築するかを見てみましょう.

Kotlinの構築プロセス


KotlinはJVM上で実行されるため、構築プロセスはJavaと似ています.
  • *.kt拡張子付き符号化ファイル
  • を作成する
    Kotlinコンパイラ
  • から*です.ktファイルをバイトコード
  • に変換する
  • JVM Kotlink変換バイトコードをマシン言語
  • に変換
    図として示します.

    KotlinコンパイラとJavaコンパイラは、Javaバイトコードのクラスファイルに変換されます.これは、Kotlinが生成したバイトコードをコンパイルすることでJavaコードを検証できることを意味します.実際,アンドロイドスタジオのようなIDEは,Kotlinを用いて記述されたコードをJavaコードにコンパイルする機能を提供している.
    Kotlinは構築中にKotlinコンパイラでJavaバイトコードを生成し、JVMでマシン言語に変換します.KotlinコンパイラはJavaバイトコードを生成するため、Javaに再コンパイルでき、Javaと完全に互換性があります.

    Kotlin言語の特徴と優位性


    Kotlinの公式サイトでは、コトリンについて話しています.
  • A modern programming language that makes developers happier.
  • どうしてそう言うのですか.Javaは20年前に発表された言語です.最初のリリースから現在に至るまで、使用中に多くの問題が発見され、修正と改善された新しいバージョンが次々と発売され、いつの間にか17のバージョンがリリースされています.Kotlinは言語を設計する際にJava言語の最初の設計時に存在する多くの問題を考慮し、開発者が言語をより簡単に、より便利に書くことができるようにした.Kotlinの特徴と長所を見てみましょう.

  • せいてきげんご
  • Kotlinコンパイル時にオブジェクトのタイプを決定します.これは静的タイプの言語です逆に、実行時にオブジェクトタイプを決定する動的タイプ言語には、Python、JavaScriptなどがあります.静的タイプの言語はコンパイル時に決定されるため、実行時に問題が発生する確率はずっと小さく、比較的安全な言語と言える.

  • 類型推論
    デフォルトでは、
  • Kotlinは、割り当てられた値を表示し、変数を宣言するときに変数のタイプが指定されていない場合でも、そのデータ型を推定します.タイプ推定は重複するコード量を減らすことができる.

  • 簡潔な言葉
  • コトリン氏によると、このソフトウェアは開発者がコードをより簡単に、より便利に書くことを目的としているという.既存のJava言語を使用して開発する際に不要なテンプレートコードを減らすことができます.最も代表的なのはdataclassです.簡単なクラスを例に、dataclassを使用するときのコード量の減少を比較してみましょう.
    //Kotlin
    data class Person(val name: String, val age: Int)
    
    //Java
    public class Person {
    	private String name;
    	private int age;
    
    	public Person(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    	
    	@Override 
    	public int hashCode() {
    		return super.hashCode();
    	}
    
    	@Override
    	public boolean equals(Object obj) {
    		return super.equals(obj);
    	}
    
    	@Override
    	public String toString() {
    		return "Person" + "name = " + name + "age = " + age;
    	}
    }
    Javaを使用すると、追加された不要なテンプレートコードがKotlinのdata classを使用しているため、より簡潔で便利に記述されていることがわかります.Kotlinは、同じコードをより簡潔に書くのに役立ちます.

  • Null safe言語
  • Javaベースのアプリケーションを開発する際には、多くのNullPointer Exceptionを体験したことがあるかもしれません.Java言語を作成する場合、Nullableは処理されず、予想外のNullの問題が多く発生します.Java 8以降でOptionalというWrapperクラスでNull CheckをサポートKotlinは開発段階でNull Safe言語を用いて開発を開始した.Kotlinは、Nullableタイプとnon-nullタイプを分離し、それぞれNull可能なタイプを指定します.Nullを予期せぬ状況で含むことを回避し、Nullによる問題を最小限に抑えるために、Nullを安全に処理する機能をサポートします.

  • コルディン

  • Kotlinは、coluceneと呼ばれる非常に強力な機能を提供し、非同期処理と効率的な同期操作に使用されます.api呼び出しやdbconnectなどのI/O操作は非同期で実行されます.以前はCalbackを使用して非同期処理を行ったり、RxJavaなどの外部プラグインを使用して非同期ロジックを処理したりしていました.
    Callbackを使用すると、コードの深さが深くなり、コールバック地獄と呼ばれます.RxJavaを使用すると、直感的でないコードと不要なStream操作が発生します.
    スレッドを使用すると、コードを順番に書くだけでなく、スレッドをより効率的に使用することでパフォーマンスを向上させることができます.簡単なコードでコードを記述する場合は、Calbackに比べてコードの可読性がどれほど良いかを見てみましょう.
    コールバックを使用する場合は、api呼び出しのコールバックメソッドの成功と失敗に対してコールバックメソッドを渡す必要があります.また、api応答が正常に受信されると、他のapiが呼び出されると、成功および失敗のコールバックが再び伝達されます.このプロセスでは、コードの深さが増すにつれて、かなり読みやすさが悪くなります.
  • fun upload() { //callback
        loading.postValue(true)
        api.prepareUpload().enqueue(object : Callback<PrepareUploadResponse>{
            override fun onResponse(call: Call<PrepareUploadResponse>, response: Response<PrepareUploadResponse>) {
                if (response.isSuccessful) {
                    val path = response.body()
                    api.upload(path).enqueue(
                        object : Callback<UploadResponse>{
                            override fun onResponse(call: Call<UploadResponse>, response: Response<UploadResponse>) {
                                if (response.isSuccessful) {
                                    loading.postValue(false)
                                    successToast.postValue(true)
                                }
                            }
                            override fun onFailure(call: Call<PrepareUploadResponse>, t: Throwable) {
                                loading.postValue(false)
                                Log.d("")
                            }
                        }
                    )
                }
            }
            override fun onFailure(call: Call<PrepareUploadResponse>, t: Throwable) {
                loading.postValue(false)
                Log.d("")
            }
        })
    }
    
    fun upload() { //coroutines
        try {
            val path = api.prepareUpload()
            val response = api.upload(path)
            loding.postValue(false)
            successToast.postValue(true)
        } catch (e: Exception) {
            loading.postValue(false)
            Log.d("")
        }
    }
    これに対して、コードコードを使用して記述されたコードを表示すると、コードを順番に記述できるため、より読みやすさが向上します.(もちろん、これは上記のコードではありません.これは、コードを連続的に記述できる点を示す例にすぎません.)読み取り可能性の向上に加えて、スレッドはsuspend関数によってスレッドをより効果的に使用することもできる.coluceneの動作をさらに理解したい場合は、次のリンクを参照してください.
  • https://kotlinlang.org/docs/coroutines-overview.html
  • また、Kotlinの公式サイトにアクセスして、関数プログラミングサポート、オブジェクト向けプログラミングサポート、マルチプラットフォームサポートなど、Kotlinが提供する機能を理解することもできます.
  • https://kotlinlang.org/
  • Kotlinを使用する理由を理解するために,Kotlinがどのように構築され,どのような特徴と利点があるかを理解した.Kotlin(Java言語と100%の相互運用性、簡潔な言語、Null Safeなど)を使用すると、多くのメリットが得られます.これらの利点により、Android開発者の60%以上がKotlin言語を使用しています.また、Android Code SniptもまずKotlinを使用して作成され、Android Studio内部でJavaからKotlinへの変換をサポートしています.まだKotlinに触れたことがないなら、Kotlinを勉強したらどうですか?