Monthly Archives: March 2017

Kotlin 1.1 リリース – JavaScriptサポート、コルーチン(coroutine)等々

本日Kotlin 1.1をリリースいたしました。これはKotlinの大きな前進になります。 Kotlin 1.1の新機能 Kotlin 1.1には数多くの言語機能の改善が含まれています。JavaScriptサポートとコルーチンは中でも大きなハイライトになります。他はタイプエイリアス、bound callable references、lambdaのdestructuringにも注目してください。新しい機能の一覧はWhat’s new ページよりご確認いただけます。(実行可能なサンプルコードを是非お試しください!)。 JavaScriptサポート Kotlinは真のフルスタック言語となることを目指しています 。Kotlin 1.1をもって言語の全機能はJVM / Android並びにJavaScriptで動作するようになりました。(JavaScriptでReflectionはご利用いただけませんが、動作するよう計画はしています。)つまり、Webアプリケーションは全てKotlinで書くことができるようになったということです。JetBrains内ではすでに知見を蓄積しつつあります。Kotlinでフルスタックを書くことについて、チュートリアルなどの資料を今後公開していく予定です。 Kotlin for JavaScriptはダイナミックタイプによって「ネイティブのJavaScript」と相互運用が可能です。またDefinitelyTyped のタイプヘッダを使って著名なライブラリを型安全に利用できます。 詳しくはドキュメント(英語)をご覧ください。 コルーチン(Coroutines) Kotilnのコルーチンを使うとノンブロッキングで非同期なコードを、プレーンで同期的なコードと同じくらいストレートに表現することが出来ます。 非同期プログラミングは大きな注目を集めていますが、ただひとつノンブロッキングコードへの移行を難しくしているのはそれがシステムに無視できない複雑さをもたらしてしまうことです。Kotlinはバージョン1.1でコルーチンを第一級市民として取り扱い、関数のサスペンドを可能にすることでこの複雑さを抑制します。コンピュテーションの表現である関数(またはラムダ)はスレッドをブロックすることなくサスペンドさせることができ、またあとで再開させられます。 技術的にはコルーチンはライトウェイトな協調マルチタスキング(ファイバーと非常に良く似ており、起動と維持、サスペンドコストがほぼかかりません)で、簡単に組み立て、カスタマイズが可能です。 JetBrainsはフレキシビリティを最大化するようコルーチンを設計しており、言語としてはわずかな仕様だけで、大部分はライブラリとして実現されています。kotlinx.coroutinesプロジェクトはRx、CompletableFuture、NIO、JavaFx、Swingを基盤としたライブラリを提供しています。似たようなライブラリはAndroidやJavaScript向けにも書けます。C#のasync/await、Pythonのgenerators/yield、Goのchannels/selectといった機能もKotlinのライブラリとして表現できます。:

詳しくはドキュメント(英語)をご覧ください。 重要なお知らせ: Kotlinのコルーチンは様々なメリットをもたらしますが、とても新しいデザインですのでとりわけ100%正しくて完成していると確信をもたらすに十分なテストが必要です。よってこの機能は実験的な機能としてオプトインフラグ(-Xcoroutines=enable)で有効化される形になっています。大幅な言語仕様の変更はない見込みですが、Kotlin 1.2で幾分APIの調整が入る可能性はあります。 ツールセット Kotlin 1.1はKotlinのツールセットにおいてメジャーリリースではありません。ツール機能が言語のリリース自体に影響を与えるべきではないと考えております。Kolin 1.0.xからは主に: メジャーIDE向けのKotlinプラグイン: IntelliJ IDEA、Android Studio、Eclipse、そしてNetBeans IntelliJ IDEAとGradleでインクリメンタルコンパイル Spring、JPA、Mockitoのコンパイラプラグイン(クラスをopenにして、引数無しコンストラクタを生成) kaptのアノテーションプロセッシング … Continue reading

Posted in Kotlin, お知らせ | Leave a comment