サーバーサイドKotlin
Kotlinは、サーバーサイドアプリケーションの開発に非常に適しています。既存のJavaベースのテクノロジースタックとの完全な互換性を維持しつつ、簡潔で表現豊かなコードを記述でき、学習曲線もスムーズです。
- 表現力: Kotlinの革新的な言語機能、例えば型安全なビルダーやデリゲートプロパティのサポートは、強力で使いやすい抽象化の構築に役立ちます。
- スケーラビリティ: Kotlinのコルーチンのサポートは、少ないハードウェア要件で多数のクライアントにスケールするサーバーサイドアプリケーションの構築に役立ちます。
- 相互運用性: KotlinはすべてのJavaベースのフレームワークと完全に互換性があるため、慣れ親しんだテクノロジースタックを使用しながら、よりモダンな言語のメリットを享受できます。
- 移行: Kotlinは、大規模なコードベースをJavaからKotlinへ段階的に移行することをサポートします。システムの古い部分はJavaのままにして、新しいコードはKotlinで書き始めることができます。
- ツール: 一般的な優れたIDEサポートに加え、KotlinはIntelliJ IDEA Ultimateのプラグインで、フレームワーク固有のツール(SpringやKtorなど)を提供します。
- 学習曲線: Java開発者にとって、Kotlinを始めるのは非常に簡単です。Kotlinプラグインに付属する自動Java-Kotlin変換ツールが、最初のステップをサポートします。Kotlin Koansは、一連のインタラクティブな演習を通して主要な言語機能をガイドします。KtorのようなKotlinに特化したフレームワークは、大規模なフレームワークに見られる隠れた複雑さを伴わない、シンプルで分かりやすいアプローチを提供します。
Kotlinでのサーバーサイド開発向けフレームワーク
Kotlin向けのサーバーサイドフレームワークの例をいくつか示します。
Springは、バージョン5.0以降、Kotlinの言語機能を活用してより簡潔なAPIを提供しています。オンラインプロジェクトジェネレーターを使用すると、Kotlinで新しいプロジェクトを素早く生成できます。
Ktorは、JetBrainsが開発した、KotlinでWebアプリケーションを作成するためのフレームワークで、高いスケーラビリティのためにコルーチンを利用し、使いやすくイディオマティックなAPIを提供します。
Quarkusは、Kotlinの使用に対するファーストクラスのサポートを提供します。このフレームワークはオープンソースであり、Red Hatによってメンテナンスされています。QuarkusはKubernetes向けにゼロから構築されており、増加し続ける何百もの最高品質のライブラリを活用することで、一貫性のあるフルスタックフレームワークを提供します。
JVM上でリアクティブなWebアプリケーションを構築するためのフレームワークであるVert.xは、完全なドキュメントを含むKotlin用の専用サポートを提供しています。
kotlinx.htmlは、WebアプリケーションでHTMLを構築するために使用できるDSLです。JSPやFreeMarkerのような従来のテンプレートシステムに代わるものとして機能します。
Micronautは、モジュール式でテストしやすいマイクロサービスやサーバーレスアプリケーションを構築するための、最新のJVMベースのフルスタックフレームワークです。多くの便利な組み込み機能が付属しています。
http4kは、純粋なKotlinで書かれた、Kotlin HTTPアプリケーション向けの小さなフットプリントを持つ関数型ツールキットです。このライブラリはTwitterの「Your Server as a Function」論文に基づいており、HTTPサーバーとクライアントの両方を、組み合わせ可能なシンプルなKotlin関数としてモデル化することを表しています。
Javalinは、WebSockets、HTTP/2、非同期リクエストをサポートする、KotlinおよびJava向けの非常に軽量なWebフレームワークです。
永続化の選択肢には、直接JDBCアクセス、JPA、そしてJavaドライバーを介したNoSQLデータベースの使用があります。JPAの場合、kotlin-jpaコンパイラプラグインが、Kotlinでコンパイルされたクラスをフレームワークの要件に適合させます。
NOTE
その他のフレームワークはhttps://kotlin.link/で見つけることができます。
Kotlinサーバーサイドアプリケーションのデプロイ
Kotlinアプリケーションは、Amazon Web Services、Google Cloud Platformなど、Java Webアプリケーションをサポートするあらゆるホストにデプロイできます。
HerokuにKotlinアプリケーションをデプロイするには、Heroku公式チュートリアルを参照してください。
AWS Labsは、AWS Lambda関数を記述するためにKotlinを使用する方法を示すサンプルプロジェクトを提供しています。
Google Cloud Platformは、KtorとApp EngineおよびSpringとApp Engineの両方で、GCPにKotlinアプリケーションをデプロイするための一連のチュートリアルを提供しています。さらに、Kotlin Springアプリケーションをデプロイするためのインタラクティブなコードラボもあります。
サーバーサイドでKotlinを使用している製品
Cordaは、主要銀行によってサポートされ、完全にKotlinで構築されているオープンソースの分散型台帳プラットフォームです。
JetBrainsでのライセンス販売および検証プロセス全体を担当するシステムであるJetBrains Accountは、100% Kotlinで記述されており、2015年からプロダクション稼働中で、重大な問題は発生していません。
Chess.comは、チェスと、世界中のこのゲームを愛する何百万ものプレイヤーに特化したウェブサイトです。Chess.comは、複数のHTTPクライアントのシームレスな構成のためにKtorを使用しています。
Adobeのエンジニアは、サーバーサイドアプリ開発にKotlinを、Adobe Experience Platformでのプロトタイプ作成にKtorを使用しています。これにより、組織はデータサイエンスと機械学習を適用する前に、顧客データを一元化および標準化できます。
次のステップ
- 言語についてより深く掘り下げるには、このサイトのKotlinドキュメントとKotlin Koansをご覧ください。
- Kotlinコルーチンを使用するフレームワークであるKtorで非同期サーバーアプリケーションを構築する方法を探ってみましょう。
- "Micronaut for microservices with Kotlin"のウェビナーを視聴し、MicronautフレームワークでKotlin拡張関数を使用する方法を示す詳細なガイドをご覧ください。
- http4kは、完全な形式のプロジェクトを生成するためのCLIと、GitHub、Travis、Herokuを使用して単一のbashコマンドで完全なCDパイプラインを生成するためのスターターリポジトリを提供します。
- JavaからKotlinに移行したいですか?JavaとKotlinで文字列の一般的なタスクを実行する方法を学びましょう。