radioc@?

レディオキャットハテナ

【勉強会メモ】【大阪】LINE Developer Meetup #31

line.connpass.com

  • 日時:2018/03/30(金) 18:30 〜 21:30
  • 場所:TKPガーデンシティ大阪梅田

京都に新オフィスを設立予定のLINEの勉強会。今回は大阪で開催されました。

Javaとモバイル

Javaは古くからモバイルアプリの開発に使われてきた言語ですが、その変遷は意外と奥深く、色々な背景があったりします。断面的にはスポットが当たることがあっても時系列に並べてまとめられる機会は意外と少ないので新鮮でした。懇親会でも改めて経緯を知れるのは良い機会だったという話を参加者同士でしました。

Metal Framework

Apple独自のグラフィックAPIの話でした。古くからOpenGLが使われてきましたがMetalはApple専用に開発されたことで処理速度やメモリ共有の面で使いやすく高パフォーマンスが実現できるということのようです。残念ながらこの分野はあまり詳しくないので多くは語れません。

KotlinでDSL

Kotlinで手軽にDSLを扱うことができて、従来のUI周りのXMLで書く部分をコーディングしやすく可読性を高める手法がデモを交えて紹介されました。コードと一緒に扱うことで交互に背景色を変えるなどの動的な制御もリーダブルかつ簡単に実現できます。XMLがカオスになる危険を回避できるかわりにUIのコードがビジネスロジックと混ざってカオスになる危険は出てきそうなので、そのあたりをうまく設計する必要はありそうだと感じました。


New Java Things Mobile Developer Should Know

LINE Fukuoka: きしだ なおきさん

Javaとモバイル

1992 Green Project CPUやOSに依存しない

  • 1999 Java ME
  • CLDC…携帯電話やディスプレイを持たないデバイス向け
  • MIDP…EZアプリ、S!アプリ
  • Doja…iアプリ
  • CDC…Blu-rayプレイヤーなどのディスプレイにつなぐデバイス向け

↑ここまでけっこう安定していた

Java SE8 Compact Profile

JavaSE自体がモバイルで使えるようになった

Compact Profile 1〜3、Full Profile

Java9

  • Javaモジュール化
  • 必要なモジュールだけで実行環境が作れる
  • Java 8のCompact Profileもモジュール化の途中成果物

リリースサイクルの変更

  • 毎年3月と9月(秋分の日と春分の日の前後)
  • パッチなどの提供は次のリリースまで
  • 3年ごとにLTS

Java10

  • 2018年3月
  • ローカル変数型推論
    • var strs = List.of("aa", "bb")
  • Dockerへの対応
  • GCのモジュール化

Java11

  • 2018年9月
  • Oracle JDKとOpenJDKは同一バイナリになる
  • Oracle JDKは無償提供されなくなる
  • JavaFXJDKにバンドルされなくなる
  • HTTP Client API
  • switch式(?)

半年単位でJavaの言語仕様もかわっていく

Javaのモバイル対応への私感

  • モバイル専用プラットフォームの必要性が薄れている
    • モジュール化
    • バイス性能の進化

モバイル用の実行環境が必要なくなる

AndroidJava

Apache Harmony

Androidとは

Harmonyの挫折

Dalvik VM

  • レジスタマシンベースのVM
  • devファイルを実行
  • javac->dx

Android Runtime(ART)への移行

  • 2014年
  • Dalvik VMは少ないメモリやシングルコア向きだった
  • AoT(Ahead of Time)コンパイラ
    • dexファイルをネイティブ実行ファイルに事前コンパイル

ライブラリをOpenJDKに

  • 2011年Harmonyプロジェクト終了
  • 2016年Androidの標準ライブラリをOpenJDKに変更することを発表
  • Java 8 Date Time APIなど導入

Java8の言語仕様を導入

  • 2014年Jackツールチェーンの発表
  • jack
  • 2017年Jackツールチェーン廃止
    • 既存.classツールが利用できない
  • desugar
    • javac->desugar->dx

Ocaleの訴訟

Javaのモバイル実行環境

Javaのモバイルフレームワーク

まとめ

Lets have a look at Apple's Metal Framework

LINE Kyoto: Freddy Vogelさん

英語だったのと元々あまり詳しくない分野の話のため詳しいメモはありません。話を聞きながら参考にしたサイトをいくつか載せておきます。

Metal

Apple's Metal Framework

History

※参考

engineering.linecorp.com

qiita.com

Create your DSL with Kotlin

LINE Kyoto: Freddie Wangさん

※こちらも英語だったので詳しいメモはありませんがデモアプリの説明が中心でした。

What's DSL

  • Improve
  • Flexible design
  • Code readability

SQL, Gradle, Regular Expression

Kotlin DSL in real world

Main features in Kotlin

デモ用アプリ

github.com

まとめ

  • Very easy to create custom DSL with Kotlin
  • We can use DSL to write readable , maintainable code very easy