SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Oracle Code One 2018」レポート

「Java is Still Free」――Javaのサポート問題へ終止符、迎える4つの進化【Oracle Code One 2018 Java Keynote】


  • X ポスト
  • このエントリーをはてなブックマークに追加

4つのプロジェクトの詳細解説(2)

(3)Project Panama

 CやC++のネイティブコード(コンパイル後のライブラリ)などをJavaから容易に呼び出せるようにする仕様の追加です。これまで同等の処理をJNI(Java Native Interface)と呼ばれるインタフェース仕様により実現していましたが、使い勝手やパフォーマンス面などに課題がありました。

 デモではCで書かれたヘッダファイルから定義を抽出してJavaのInterfaceを自動生成し、それを経由してCのネイティブコードを実行する実装の紹介がありました(JEP 191)。

jextractというコマンドを1行実行するだけで、Cのヘッダファイルから定義を読み込み生成されたInterfaceの内容
jextractというコマンドを1行実行するだけで、Cのヘッダファイルから定義を読み込み生成されたInterfaceの内容
生成されたInterface(unistd.class)の定義を利用し、Cライブラリのシステムコール「getpid()」を実行するプログラム
生成されたInterface(unistd.class)の定義を利用し、Cライブラリのシステムコール「getpid()」を実行するプログラム

(4)Project Valhalla

 型定義に関するパフォーマンス向上や型の拡張などを行うプロジェクトです。Javaの型定義はプリミティブ型と参照型に分かれますが、後者は常に値の参照を挟むため、パフォーマンス面で弱く、性能の求められる使用局面で課題となるケースがあります。そこで、参照を挟まない独自の型定義を実現するのがここで紹介された仕様です。

 型定義は、従来通り実装したクラスに「value」というキーワードを付与するだけで実現できます(JEP 169)。行われたデモでは、キーワード設定有無のみの違いを持つ実装がそれぞれ実行され、平均処理速度で10倍以上の違いが計測されました。

従来型実装(左)とValhallaで検討されている仕様(右)のイメージ比較。参照を挟むという冗長性が解消される
従来型実装(左)とValhallaで検討されている仕様(右)のイメージ比較。参照を挟むという冗長性が解消される
このように「class」の前に「value」をつけた場合と、つけない場合(従来型実装)で実装内容を同一とし、実行時間を比較
このように「class」の前に「value」をつけた場合と、つけない場合(従来型実装)で実装内容を同一とし、実行時間を比較
それぞれのBenchmark 1行目にある平均処理速度で見ると、従来型(上)の約3626msに対し、「value」をつけた実装(下)では約296msと10倍以上の差が
それぞれのBenchmark 1行目にある平均処理速度で見ると、従来型(上)の約3626msに対し、「value」をつけた実装(下)では約296msと10倍以上の差が

Java Keynote総評

 Java SE 9及びJava EE 8のリリースやリリースモデルの変更、そしてEE4Jの発足(Java EEのEclipse Foundationへの移管プロジェクト)など激動であった昨年のJavaOne 2017と比較し、リリースモデルのおさらいやプロジェクトの進捗状況を説明した今年のキーノートは、地に足の着いた内容であったと表現できるでしょう。Javaユーザーとしては、リリースモデル変更への誤解を解くメッセージを盛り込んだことで、現状理解が進むことを期待できる内容でもありました。

 また、最も時間を割いて説明された進行中の各プロジェクト詳細も、素直に使いやすく便利になると感じる仕様であり、今後もJavaを使い続けるうえで、進化し続ける安心感を得られるものでした。プログラマーとしては最適な実装をしていくために、各プロジェクトのアップデート状況を引き続きキャッチアップしていく必要があるでしょう。それはつまり、Javaという言語とともに、我々と我々のアプリケーションが進化していくという未来につながる。そんな実感を得られるキーノートでした。

次回予告

 さて、次回のレポートでは、本キーノートのモデレーターを務めたGeorges氏への特別インタビューの内容をお届けします。この秋にリリースされた初のLTSであるJava 11への手ごたえや、Java 8を使い続けることの是非といったJavaユーザーとしての疑問をぶつけた他、AdoptOpenJDKやJakarta EEなどOracle外部のコミュニティについての率直な質問についても回答をいただいています。ぜひ次回もあわせてお読みください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「Oracle Code One 2018」レポート連載記事一覧

もっと読む

この記事の著者

西野 大介(SOMPOホールディングス株式会社)(ニシノ ダイスケ)

 SOMPOホールディングス株式会社デジタル戦略部(SOMPO Digital Lab)勤務。損保ジャパン日本興亜グループにおける先進技術の研究開発を担当。過去には基幹システムの開発にも従事し、SoR/SoE双方の開発において幅広い経験を持つ。本業以外では、CodeZineの連載をはじめ、国内/海外の各種カンファレンスへの登壇や企業向けの講演にてテクノロジー情報を幅広く提供している。主な登壇実績:IBM THINK(米ラスベガス)、Java Day Tokyo、IBM THINK Ja...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11258 2018/12/17 23:51

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング