新しいメジャーリリースのプレビュー版であるKotlin 1.3-M1について調べてみました。

■Coroutines are graduating to stable
 コルーチンが1.1で導入されて以来大幅に改善され安定化しました。
 注目すべき機能はこちら
 KT-16908 Support callable references to suspending functions
 KT-18559 Serializability of all coroutine-related classes

■Capturing 'when' subject in a variable
  KT-17981 Type parameter for catch parameter possible when exception is nested in generic, but fails in runtime
  次のような書き方ができるようになります。※when (val response = executeRequest())みたいなことが記述ができるようになりました。
  
  fun Request.getBody() =
      when (val response = executeRequest()) {
          is Success -> response.body
          is HttpError -> throw HttpException(response.status)
      }

■Nested declarations in annotation classes
 アノテーションクラスはボディを持つことができませんでしたが、コンパニオンオブジェクトを含むネストされたクラス、インタフェース、およびオブジェクトを持てるようになりました。
 次のようにアノテーションを別のアノテーションにネストすることが可能なるとのこと。

  annotation class Outer(val param: Inner) {
      annotation class Inner(val value: String)
  }

■他の変更点が気になりましたら、以下を参照してください。
  https://blog.jetbrains.com/kotlin/2018/07/see-whats-coming-in-kotlin-1-3-m1/


 

2018/09/25にリリース予定のJava11の新機能となります。

 

■Features

 181: Nest-Based Access Control

 309: Dynamic Class-File Constants

 315: Improve Aarch64 Intrinsics

 318: Epsilon: A No-Op Garbage Collector

 320: Remove the Java EE and CORBA Modules

 321: HTTP Client (Standard)

 323: Local-Variable Syntax for Lambda Parameters

 324: Key Agreement with Curve25519 and Curve448

 327: Unicode 10

 328: Flight Recorder

 329: ChaCha20 and Poly1305 Cryptographic Algorithms

 330: Launch Single-File Source-Code Programs

 331: Low-Overhead Heap Profiling

 332: Transport Layer Security (TLS) 1.3

 333: ZGC: A Scalable Low-Latency Garbage Collector

    (Experimental)

 335: Deprecate the Nashorn JavaScript Engine

 336: Deprecate the Pack200 Tools and API

 

 

上記の中で、気になるFeaturesをいくつかピックアップします。

 

■JEP 321: HTTP Client (Standard)

JDK9でインキュベータモジュールとして加わり、JDK10で更新のあったHTTPクライアントAPIが標準化対応されました。

・HTTP/2対応

・Reactive Streamによるノンブロッキング対応

 

■JEP 330: Launch Single-File Source-Code Programs

javacでコンパイルせずにjavaファイルが実行できるようになります。

------------------------------------------------------

public class Main {

  public static void main(String[] args) {

    System.out.println("Hello!!");

  }

}

------------------------------------------------------

コマンド実行(コンパイル+実行)

> java Main.java

  Hello!!

------------------------------------------------------

 

■JEP 323: Local-Variable Syntax for Lambda Parameters

ローカル変数の統一の観点から暗黙的に型指定されるラムダ式の仮引数でも ‘var’ が使えるようになりました。メソッドの仮引数などのその他の変数宣言は対象外。

(例)

  (var x, var y) -> x.process(y)

  以下と同等

  (x, y) -> x.process(y)

 

ただし、以下はNG

(例)

  (var x, y) -> x.process(y)

  (var x, int y) -> x.process(y)

 

 

7月の帰社日後の飲み会は、東大赤門すぐ近くにある『本郷三丁目 料理人 江川

全室禁煙で店内はゆっくりと寛げるように席数が少なめに配置されているお店です。

 

今回は、7月から入社した社員の歓迎会兼で行いました。

IT業界未経験の20代の方ですが、非常に優秀なエンジニアになると期待しています!

 

以下、4500円のコースとなります。(画質が悪いかもしれません・・・)

 

 

 

 

 

ちょっと量が物足りない感じもしましたが、味は非常に美味しかったです。