apeescape2.com
  • メイン
  • 計画と予測
  • プロジェクト管理
  • 設計プロセス
  • ライフスタイル
バックエンド

バックエンド開発のためのKotlinの使用:簡単な概要

2017年5月にGoogleがKotlinをAndroid開発の公用語にすることを発表したため、ネイティブのAndroid開発者にKotlinを紹介する必要はありません。それ以来、新しくて光沢のあるAndroidアプリを開発するための主要な言語の選択肢として、多くの注目を集めています。これはJavaの多くの問題点を解決するため、新しいアプリはほとんどJavaで記述され、古いアプリはJavaで書き直されています。

アプリケーションのフロントエンド側で優れていることは間違いありません。Kotlinについて最初に言及したとき、ほとんどの人はそれをAndroidOSに関連付けています。ただし、この記事では、バックエンド言語としてのKotlinについて説明し、Androidホビープロジェクト用に高速で信頼性の高い非同期のKotlinバックエンドを作成する方法について説明します。この記事の範囲外であるため、プロジェクトの内容については説明しません。むしろ、Kotlinを選択した理由と、Kotlinがサーバー側アプリケーションまたはRESTAPIを作成するための優れた言語であると考える理由を説明することに焦点を当てます。

なぜKotlinなのですか?

旅の最初に戻りましょう。私は常に起業家精神を持っていました。この道の最初のステップは、自分で何かを作ることだと思いました。大きなものも、世界を変えるものも、私や家族や友人が使える小さなものもありません。合理的なアイデアを思いついた後、私はすぐにそれに飛び込んで、それを実装し始めました。プロジェクトの開始時に最初に行うことは、ツールを選択することです。結局のところ、適切なツールのセットは、長期的には多くの時間とお金を節約することができます。だからこれは私がしたことです。



私は主にJava開発者です。私はJavaとSpringを使用していくつかのバックエンドシステムとRESTAPIを作成しましたが、これら2つはそのようなことを行うための優れたツールだと思います。 Java自体は包括的な言語ですが、Springと組み合わせると、実装できないものは何もありません。

しかし、スープには小さな髪が1本しかありません。冗長性。 Springと最新バージョンのJavaはそれを大いに助けますが、それでも多くの定型コードを処理する必要があります。そして、かつて偉大な男が私に言ったように、最も安全で、最も信頼性が高く、バグのないコードは、書き留められていないコードです。たとえば、次の簡単なJavaクラスを考えてみましょう。

ゼロからangularjsアプリを構築する
public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }

私の意見では、これは単に「2つの読み取り専用フィールドを持つクラスが必要です」と言うための多くのコードです。最悪の部分は、コンストラクターとメソッドが自動生成されたことです。それでも、プルリクエストを確認するときは、プルリクエストを常に確認します。これは、プルリクエストが必要かどうかがわからないためです。確かに、これはLombokのようなサードパーティのライブラリで短縮できますが、箱から出してこれを実行できたらいいのではないでしょうか。 Kotlinでこれとまったく同じクラスを見てみましょう。

class Person( val name: String, val age: Int )

間違いなく短くてシンプルです。を使用するため、変数は最終的なものです。 時間 キーワード;コンストラクターとゲッターはコンパイル時に生成されます。不変の人物オブジェクトを使用したくない場合は、簡単に変更できます 時間 に どこ 、そして出来上がり、私たちには変更可能な人がいます、そして私たちがしなければならないのはただ1文字を変えることです。

単純なJavaPOJOクラスで2番目に好きな部分は、オーバーライドされたequals()です。およびhashCode()。これらはほとんどの場合再び自動生成されますが、念のため、常に確認する必要があります。良いニュースは、Kotlinがこれも処理できることです。 classを変更するだけですdata classに移動すると、equals()が得られますおよびhashCode()箱から出して。

data class Person( val name: String, val age: Int )

つまり、私はJavaが大好きですが、プロジェクトのために最小限の実行可能な製品をできるだけ早く作成したかったのです。そして、ソフトウェア開発の場合、これを達成する最も簡単な方法は、より少ないコードを書くことです。したがって、バックエンド開発のためのより良い言語を探し続けました。この考えを念頭に置いて、私は最初にNode.jsに移行しました。これにはいくつかの重要な利点があります。数行でExpressサーバーが稼働しており、ポート8080でリッスンし、次のように応答します。 'こんにちは世界' getリクエストを送信するたび。

C ++でプログラミングする方法を学ぶ
let express = require('express') let app = express(); app.get('/', (req, res) => res.send('Hello World!')); app.listen(8080);

簡単、シンプル、そして高速。世の中で最も人気のあるプログラミング言語の1つに期待するものです。私はJavaScriptでの作業を楽しんでおり、少しの間、適切なツールを見つけたと思いましたが、JavaScriptが動的に型指定されているという事実に悩まされました。誤解しないでください。動的型付けはフロントエンドで優れていると思いますが、私の経験では、静的型付けされたバックエンドを使用すると、型の不一致が原因でサーバーが実行時にクラッシュする可能性が低くなるという確信が得られます。 。ここで正直に言うと、バックエンドが数十万人のユーザーにサービスを提供している場合、それが実際に発生することは望ましくありません。ただし、Node.jsは、非同期のコードとサービスを簡単に記述できるという、私が維持したい1つの優れた機能を提供しました。

これらの要件を念頭に置いて、KotlinAndroidバックエンドをKotlinでも作成することにしました。

Kotlin:簡単な概要

Kotlinは、これまで聞いたことがない人のために、オブジェクト指向プログラミングと関数型プログラミングの両方をサポートする、オープンソースの静的に型付けされたプログラミング言語です。 C#、Java、またはScalaと同様の構文と概念を提供し、主にJVMを対象としていますが、JavaScriptまたはネイティブコードを対象とするバリアントもあります。 Kotlin / JVMがJavaバイトコードにコンパイルされるという点でJavaと非常に似ているため、JVMのバックグラウンドを持つバックエンドエンジニアにとって、Kotlinは簡単に把握できます。

そのように 公式ページ Kotlinの目的は、独自のものではなく、何十年にもわたる言語開発からインスピレーションとベストプラクティスを引き出すことです。これは、任意のJava IDEまたはコマンドラインから使用できますが、個人的には、 IntelliJ 。それは積極的に維持され、アップグレードされます ジェットブレインズ チームであり、有料バージョンの購入について心配する必要はありません。Kotlinを使い始めたばかりの場合は、IntelliJのコミュニティバージョンがあらゆるニーズに対応します。私が指摘したいKotlinの3つの最も重要な側面は、a)簡潔(ボイラープレートコードを大幅に削減)、b)安全(1つには、nullポインター例外を回避するために構築されている)、およびcです。 )相互運用可能(JVM、Android、またはブラウザー用の既存のライブラリーを活用できます)。

Kotlinコルーチン

誰もがユーザーに迅速にサービスを提供するサービスを望んでいます。サーバーの最大容量に到達するために最初にできることは、マルチスレッドアプリケーションを用意することです。 Javaはそれでかなり面倒です。 Javaを学ぶとき、最初に、マルチスレッドアプリケーションが必要な場合は、Threadクラスを拡張するか、Runnableインターフェイスを実装する必要があることを学びます。初心者は(もしあれば)違いが何であるかを実際に理解することはありませんが、混乱を増すために、startメソッドを使用せずに、常にrunメソッドでスレッドを開始するように指示されます。または待って、それは逆でしたか?結局のところ、それは問題ではありません。とにかく手動でスレッドを開始するべきではありません。コストがかかりすぎて、スレッドプールを使用します。単純ですが、そうではありません。

スタートアップのための資金調達

幸い、Kotlinにはコルーチンと呼ばれるさらに単純なソリューションがあります。簡単に言えば、コルーチンを使用すると、非常に流暢な方法で非同期の非ブロッキングコードを記述できます。中心的なアイデアは、一時停止できる機能を持つことです。つまり、ある時点で計算を一時停止し、後で再開することができます。最良の部分は、非ブロッキングコードを作成する場合、プログラミングモデルは実際には変更されないため、非ブロックコードを作成することは、基本的にブロッキングコードを作成することと同じです。 2つの例を見てみましょう。

fun sendRequest(): Int { /* do some heavy work */ return 1; }

この例は、ブロッキング機能を示しています。このコードスニペットを実行するスレッドは、関数が戻るまで他の作業を行いません。APIまたはデータベース呼び出しの場合、数秒かかる可能性があります。別のサービスを待っている間はスレッドをブロックしたくないので、この関数を非ブロック関数に変えましょう。

suspend fun sendRequest(): Int { /* do some heavy work */ return 1; }

この例は、メソッドを一時停止可能な非ブロッキング関数に変換する方法を示しています。これは、簡単にするために、重い作業が単純な場合delay()を意味します。の関数呼び出し 10 秒、実行中のスレッドはその間他のタスクで作業を続け、10秒が経過すると関数の実行を再開します。 1つのキーワードで実現される優れた非ブロッキングコード。

node js express rest api

Ktorとの非同期サービス

REST APIの作成に関しては、組み込みサーバーの起動やリクエストの解析など、いくつかの追加の手順を実行する必要があります。もちろん、手動で実行する必要はありません。 JavaにはSpringBootがあり、これにより作業が非常に簡単になります。幸い、KotlinにはKtorと呼ばれるフレームワークがあります。 Ktorは、非同期サーバーを構築するためのWebフレームワークです。そのように ウェブサイト Ktorは「使いやすく、楽しく、非同期」であると述べています。さて、楽しみは主観的なものなので、それを証明したくはありませんが、使いやすく非同期であることが証明されているスニペットを見てみましょう。

fun main() { embeddedServer(Tomcat, 8080) { routing { get { call.respond('Hello world!') } } }.start(wait = true) }

上記の例は、組み込みTomcatサーバーで実行され、ポート8080でリッスンし、「Helloworld!」と非同期で応答する完全に機能するKotlinKtorサーバーを示しています。リクエストを取得します。これらすべてを10行未満のコードで実行できます。

Ktorは明らかにこれ以上のことを行うことができます。 Ktorのすべての機能を紹介するには独自の記事が必要ですが、とりわけ、ログインと認証が簡単になります。 Ktorがサーバー側で実行できることとその構成方法の詳細を読む ここに 。

バックエンドでのKotlinのその他の利点

私が指摘したい最初の利点は、KotlinでJavaライブラリを使用できることです。私を信じてください。あなたの生活を楽にする、Java用のすばらしいサードパーティライブラリがたくさんあります。仕事を完璧にこなすオープンソースのすぐに使えるライブラリがあるのに、なぜ独自の実装を書くのでしょうか。これらをKotlinで使用すると、問題なく動作します。

ゲシュタルト理論は、

KotlinとKtorのもう1つの大きな利点は、使用できる広範なテストライブラリとフレームワークです。 JunitフレームワークはKotlinの魅力のように機能し、Ktorはこれに独自のテストライブラリを追加して、エンドツーエンドのテストと統合テストをすぐに作成できるようにします。アプリケーション全体を実行し、ライブアプリケーションと同じようにリクエストを処理できるカスタムテストエンジンを使用できます。

結論

前に述べたように、私は主にJavaバックエンド開発者であり、背後にいくつかのサーバー側アプリケーションとRESTAPIがあります。私はJavaでのプログラミングが大好きですが、あらゆる仕事に最適で、あらゆる問題を解決できる最高の言語やフレームワークは1つもないと思います。私のアプローチは、できるだけ多くのツールに精通し、問題が発生したときに、その特定の問題を完璧に解決できる最適なツールを選択することです。

Kotlinサイトが述べているように、Kotlinの目的は一意ではありません。代わりに、何十年にもわたる言語開発からインスピレーションとベストプラクティスを引き出しています。バックエンド開発に関しては、Kotlin、Coroutines、Ktorが素晴らしいトリオを作って仕事をしていると思います。 Kotlinとプログラミング言語としてのその有用性についてもっと読むことができます ここに 。

基本を理解する

コルーチンは非同期ですか?

はい。コルーチンは非同期で動作するスレッドであり、必要に応じて一時停止され、後で再起動されます。これらは、バックエンドで高レベルのパフォーマンスを実現するために使用できます。

Kotlinはバックエンド言語ですか?

厳密にフロントエンドまたはバックエンドに分類できるプログラミング言語はほとんどありませんが、Kotlinには、バックエンドプログラミングに簡単に使用できる静的型付けなどの特性があります。

Kotlinはバックエンドに適していますか?

コルーチンなどの高性能機能とJavaライブラリを利用する機能のおかげで、Kotlinはバックエンド開発のための優れた言語になります。

コルーチンはスレッドですか?

はい。コルーチンは、実行可能および一時停止可能なスレッドです。これらは、アプリケーションが複数のユーザーアクティビティを同時に管理するのに役立ちます。

進化する絵文字:メッセージングの新しい顔のためのデザイン

Uiデザイン

進化する絵文字:メッセージングの新しい顔のためのデザイン
StoryBrandフレームワークを使用してより良いホームページを設計する

StoryBrandフレームワークを使用してより良いホームページを設計する

Uxデザイン

人気の投稿
国際的に拡張する方法:グローバルな製品設計
国際的に拡張する方法:グローバルな製品設計
電子メール感情分析ボットを構築する方法:NLPチュートリアル
電子メール感情分析ボットを構築する方法:NLPチュートリアル
Gulp:サイトの速度を最大化するためのWeb開発者の秘密兵器
Gulp:サイトの速度を最大化するためのWeb開発者の秘密兵器
BlackBerryに何が起こったのか:ゾンビストックまたはカムバックキング?
BlackBerryに何が起こったのか:ゾンビストックまたはカムバックキング?
グラス・スティーガル法:その廃止は金融危機を引き起こしたか?
グラス・スティーガル法:その廃止は金融危機を引き起こしたか?
 
非従来型のデータストレージに関するデータエンジニアガイド
非従来型のデータストレージに関するデータエンジニアガイド
iOSで無限ランナーを構築する方法:Cocos2D、自動化など
iOSで無限ランナーを構築する方法:Cocos2D、自動化など
Unity with MVC:ゲーム開発をレベルアップする方法
Unity with MVC:ゲーム開発をレベルアップする方法
正確な財務モデルを構築するためのステップバイステップガイド
正確な財務モデルを構築するためのステップバイステップガイド
PhalconPHP:高負荷のRESTfulAPIのソリューション
PhalconPHP:高負荷のRESTfulAPIのソリューション
人気の投稿
  • ObjectiveCとSwiftの違い
  • アンドロイドはUIスレッドで実行されます
  • 処理中のゲームの作り方
  • 拡張現実と複合現実
  • 次のうち、トークンベースの認証の例はどれですか?
  • グラス・スティーガル法の廃止は金融危機を引き起こしませんでした
カテゴリー
Uxデザイン 革新 その他 製品ライフサイクル 収益性と効率性 ブランドデザイン プロジェクト管理 Uiデザイン 投資家と資金調達 分散チーム

© 2021 | 全著作権所有

apeescape2.com