ベンチマークフレームワークがJDK12に、とかIBMがRed Hatを買収とか

Oracle Code Oneとかいろいろあってワタワタしてる間に、いろいろありました。1ヶ月にしては いろいろなかったとも言える。

JDK 11.0.1リリース

スケジュールどおりJDK 11.0.1が出てますね。
http://jdk.java.net/11/

Oracle Code One 2018終了

Oracle Code One 2018終了しました。しかし来年の予定が正式には いまだに出ていない。。。

IBMRed Hatを買収

OpoenJDKに積極的にコミットし、JBoss/WildflyとWebSphere/Libertyのような競合製品をもつ2社がひとつになるという、Java的には とても興味がある買収です。
その観点でまとめた記事。
https://www.javacodegeeks.com/2018/10/ibm-acquire-hat-java-oriented-first-look.html

Java11対応 SpringBoot 2.1がリリース

これでJava11対応がやりやすくなりました。
https://spring.io/blog/2018/10/30/spring-boot-2-1-0

JMHベースのベンチマークフレームワークがJDK12に

JDK12は機能があまり増えないなーと思ってたら、ベンチマークフレームワークが入りそう。
http://openjdk.java.net/jeps/230

Oracle Code One - day 4

ということでOracle Code One最終日。4日は短い。

The Future of Java SE[DEV6323]

Java SEの今後という話。

寝坊したので、入ったときにはJEP 11やJEP 12の話をしてました。--enable-previewってJEP12だったんだ、という気づきがあった。
JEP 11: Incubator Modules
JEP 12: Preview Language and VM Features
あとはProject PortlaとかLoom、Amber、Valhalla、Skaraの話を。

More Java Community Insider Secrets[DEV6051]

キャプテンアメリカがいると聞いて。


一緒に写真とってもらった

Project Panama's Foreign API[DEV6075]

PanamaのJFFIの話。ネイティブ呼び出しが楽に、速くなるよ、と。
最前列に日本のこわいひとたちが陣取っていました


そしてOpenGLを呼び出すデモ。

Code One弁当

ごはん。食べれた。ダイエットじゃないペプシも取れたし。

Yes, JavaScript Is Faster Than Java(When You Use GraalVM)![DEV5706]

Graal VMJavaScriptを動かすと速くなるよという話なのだけど、なんか淡々とデモしはじめてGraal.JSの仕組みとか話さなさそうなので撤退

Using Java CompletionStage in Asynchronous Programming[DEV4798]

CompletionStageの使い方、というセッションなんだけど、ADBA(Asynchronous DataBase Access)の説明だった
早めに終わったので、JSのほうに戻ってみたけど、やっぱ淡々とデモやってたので、抜けて正解だったなと思った。しかし、戻らずに@yusukeのTwitter4Jのほうに行くのが正解だったと思う。

Kotlin as a Modernized Java[DEV5452]

Functional Exception Handling in Javaが満席だったし他の人も聞いてたので、Kotlinの話へ。

Javaが201X年にデザインされていたら、という話だったので、聞きやすかった。

GraalVM: Vision and Roadmap[DEV5580]

GraalVMのロードマップ知りたいなーと思ったら、ふつうにGraalVMの現状の機能説明してて、結局ロードマップの話はなかった・・・


しかし、身振りが大きい。

Stephenさんの家でバーベキュー

おわったら、みんなでStephen Chinさんの家でバーベキュー。


Cero_tはタコ焼がかり。


結局テーブルが溶けてたので、石の上で。しかし人件費の高いたこ焼きだ。


肉は自動でぐるぐるされていました。


肉もタコ焼もビールもおいしかった。やはりヨーロッパビールが赤道越えずに輸入できるのは いいな。

ホテルの近くのバー

いままでずっと気になってたのだけど、佐々木さんと来てみた。


タップもたくさんあって、すごくよかった


ゲームもある。


なんか来てるお客さんとちょっと会話する機会があったけど、とてもいい人ばかりだった。
また来年も来よう。

Oracle Code One - Day 3

JavaOneから名前が変わったOracle Code Oneに来てます。
3日目ですが、2日目にふたつセッションを持ってしまってその準備で余裕がなかったので、セッションに出るのはここからでした。ふたつ(120分+45分)は無理だったー

Production-Time Profiling and DIagnostics on the JVM[DEV4507]

JCMDやFright Recoder、Mission Controlなどでプロファイリングなどを行うセッションでした

Code One弁当

時間がちょっと空いたスキに弁当。照り焼きビーフとなんか麺

展示

展示もちょっと見ます。


ブロックチェーンビールなどというものがあります。あとで飲もうと思った。

MicroProfile and Jakarta EE: What's Next?[DEV5439]

MicroProfileの機能やJakarta EEの今後を紹介するセッション。
しかし、人がいないのが驚きだった。15人かな。

Programming Modern Storage Devices with JDK10[DEV5058]

Direct I/Oを使ってファイルシステムキャッシュを迂回したらCassandraのスループットが2倍になったよ、という話と、Remote Direct Memory Access(RDMA)を使う話。
Direct I/OはJDK10で動くけど、RDMAのほうはまだJEPドラフト。

休憩

次にとるセッションでよさげなのがなかったので堂島庵でうどん。うどんおいしい。


しかし今回どこに行っても水がおいしくないし、ホテルのシャワーは変なにおい。なんだろうと思ったら、杉山さん曰く、今年は山火事がすごくて水がなくなっているのだと。


会場にもどります。会場前の警備のひとかっこいい


そして展示にあったビールを飲もうと思ったらすでに終わっていたのですけど、アイスもってる人がいるなーと探してみたら無限ダッツあった!

Instant Startup and Low Footprint for Java[DEV5705]

起動を早くするというタイトルだったのだけどGraalVMでネイティブバイナリを作るという話でした。
AOTかー、ああね、みたいな感じ

Keynote: Groundbreakers: The Code Avengers [KEY6651]

そしてキーノートです


最初はIBMのターン。AdoptOpenJDKがどうのとか話してました。
Tシャツのロゴ、Eye-Bee-Mってことですね。


コミュニティによる寸劇は、今年はAvengers
キャプテンアメリカは、「ドイツ語なまりだけど?」ってつっこまれてました。あとドンキ。


みんなで写真をとって終了

コンサート

水曜はAT&Tパークでコンサートの日です。今年は一眼レフのようなでかいレンズのカメラは禁止で、櫻庭さんが嘆いていた。


野球場のグランドでコンサートやってます


そしてビール


月が出てて夜景がきれい


コンサートはBECKでした。今年は簡単に一番前までいけた。


ということで終了

2つのJEPがJDK12のproposalに追加とかOpenJDKのLTSとか

サボってる間にもいろいろあったのでまとめておきます。

2つのJEPがJDK12のproposalに追加

新たにJEPがふたつ追加されました。
JEP 340: One AArch64 Port, Not Two
JEP 341: Default CDS Archives

JDK12のリリーススケジュールが正式に発表

最初のProposalではRC Phaseは1/31だったのですが、Rampdown Phase 2が2週間しかないのは短すぎないかという指摘があって、修正されたものが正式に発表されました。

2018/12/13 Rampdown Phase One (fork from main line)
2019/01/17 Rampdown Phase Two
2019/02/07 Release-Candidate Phase
2019/03/19 General Availability

JDK 12

Microsoft、Azul SystemsがAzure上でのLTSに言及

Azureで利用するためであればZulu Enterpriseのビルドを無償で提供すると、MicrosoftとAzulが発表しました。
Microsoft and Azul Systems bring free Java LTS support to Azure | Blog | Microsoft Azure

Red HatのOpenJDKサポート方針について

Red Hatは2023年までOpenJDK 8を顧客向けにサポートすることを表明していましたが、この際にUpstream firstポリシーに基づいて、OpenJDK8のクリティカルなバグやセキュリティの修正について行われ続けるということをブログに書いています。
The future of Java and OpenJDK updates without Oracle support - RHD Blog

AdoptOpenJDKでOpenJDK11が正式公開

AdoptOpenJDKでOpenJDK 11のビルドが正式にダウンロードできるようになっています。
https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot


また、MacではHomebrew-caskを使ってOpenJDK 11がインストールできるようになったようです。

$ brew cask install adoptopenjdk

JDK12のeaにString.align、String.indentが追加

Raw String Litearals(RSL)で便利なメソッドとしてalignやindentが追加されています。
特にalignは、RSLを使ったコードをみやすくインデントしたときに追加される余分な空白をなんとかするために便利です。
RSLの最中にインデントするとこんな感じで余分な空白が入ります。

jshell> var s = `
   ...>         test
   ...>         test
   ...>         `
s ==> "\n        test\n        test\n        "


これを、先頭に入るべき空白の数を指定して調整することができます。

jshell> var s = `
   ...>         test
   ...>         test
   ...>         `.align(0)
s ==> "test\ntest\n"


元はこれを言語仕様として対処しようとしていたのですが、やはり落とし所が難しかったようで、メソッドとしての実装になりました。

Java11、JavaFX11リリース!Java12EAにはRSLが入った

Java11リリース!

Java11がリリースされました!こちらでダウンロードできます。
http://jdk.java.net/11/


ビルドは28で、8/23にでたRC1そのままになっています。
Mark Reinhold氏の言ったとおり、最後のビルドになりましたね。
JDK 11: First Release Candidate


Oracle JDKも開発・評価・テスト用にこちらでダウンロードできます。ただし、本番運用には使えないライセンスになっているのでご注意を。
https://www.oracle.com/technetwork/java/javase/downloads/index.html


主な変更点としては、Java EE・CORBAモジュールが削除されたこと、HTTP Client APIが標準になったこと、単一ソースファイルのJavaコードをjavaコマンドで実行できるようになったこと、GCとしてZGC・Epsillon GCが入ったこと、などがあげられます。
JDK 11


APIの変更についてはこちらを。
Java11でのAPI変更を雑に列挙 - きしだのはてな

OpenJFX11リリース

JavaFXのオープン実装であるOpenJFXも数日前に11がリリースされています。
JavaFX

Java12 ea12にRaw String Literalsが実装された

Java12 ea12にはRaw String Literals(RSL)が実装されました。
http://jdk.java.net/12/


indentやalignといったメソッドもStringクラスに追加されています。
ただし、Raw String Literalsを使うには--enable-previewをつける必要があります。

メソッドボディに関するJEP

メソッドボディをラムダのように書けるJEPが提案されています。
JEP draft: Concise Method Bodies

int twice(int x) -> x * 2;

のように書けるようにするものです。
メソッド参照の場合は

String toString(Foo f) = f::toString;

のような感じ。
移譲を書きやすくなりそうです。

JDK12は3/19リリース。あとOpenJDKのGithubリポジトリができた

9/25のJDK11リリースまで1週間となりました。

JDK12のスケジュール提案

そんな中、JDK12のスケジュールの提案が出てますね。2019/3/19リリースの予定です。

  2018/12/13  Rampdown Phase One
  2019/01/17  Rampdown Phase Two
  2019/01/31  Release-Candidate Phase
  2019/03/19  General Availability

Proposed schedule for JDK 12

OpenJDKのGithubリポジトリができた

ところで、OpenJDKのソース管理はMercurialで行われ、レビューはメーリングリストで行われています。
これをGitに移行してGithubを使ってみようという流れが起きています。
OpenJDK Commiter's Workshopでも長い時間をとって議論が行われていましたが、Mercurialリポジトリサイズが大きな問題になっていたように思います。


このプロジェクトはSkaraという名前になってます。
Call for Discussion: New Project: Skara -- investigating source code management options for the JDK sources
メーリングリストもできていますね。
skara-dev Info Page


ということで、まずはGithubリポジトリができました。
openjdk/jdk: Read-only mirror of http://hg.openjdk.java.net/jdk/jdk

Raw String Literalsが正式にJEPに入った

Raw String Literalsは正式にJEPに入りました。まだコードは取り込まれてないけど。
JEP proposed to target JDK 12: 326: Raw String Literals (Preview)

ランダムな向きのベクトルを生成する

ちょっと、ランダムな向きのベクトルを生成する必要があったので調べてみた。
さすがStackOverFlow。すぐあった。
正規分布で各要素を得て正規化すればいいということらしい。
distribution - random unit vector in multi-dimensional space - Stack Overflow


詳しい説明は ここを見ろってあったけど、よくわからない・・・
Hypersphere Point Picking -- from Wolfram MathWorld


とりあえずJavaのコードのように書くとこう。

var r = new Random();
return new Vector3D(r.nextGaussian(),
                    r.nextGaussian(),
                    r.nextGaussian()).normalize();