java

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

Java11リリース! Java11がリリースされました!こちらでダウンロードできます。 http://jdk.java.net/11/ ビルドは28で、8/23にでたRC1そのままになっています。 Mark Reinhold氏の言ったとおり、最後のビルドになりましたね。 JDK 11: First Release Candi…

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 Phas…

Raw String LiteralsがJDK12のJEPに

Raw String Literals(RSL)がJDK12のJEPにProposalとして入りました。RSLはバッククオートで囲って改行やダブルクオートなどを含む文字列を表記する仕様です。 Amberで検討されているJava構文の変更 - Qiita 必要なAPIやコンパイラでの対応はすでにレビュー中…

JDK 11 RC1リリースと、Loomの継続は継続なの?疑惑

バグが2つ残っていて遅れたJDK 11 RC1が先週末にでてますね。「そして運がよければ最後の!」 by Mark Reihhold JDK 11: First Release Candidate 昨日さくらばさんがLL2018でLoomの話をしてTwitterがにぎわってから、Loomで言ってる継続はほんとに継続なの…

JDK12の最初のJEPはSwitch Expression(Preview)

JDK12に最初のJEPが入りました。 JDK 12 JEP325 Switch Expressions(Preview)です。 JEP 325: Switch Expressions (Preview) 拡張Switchについては、Qiitaでまとめていますが var a = switch(f){case 0->false;default->true;}のような書き方ができるような…

Project LoomでJavaでの継続(Continuation)を試す

Project Loomは、Javaで継続(Continuation)やFiber(軽量スレッド)、末尾呼び出し最適化なんかを実現するプロジェクトです。 OpenJDK: Loom そのLoom、ながいことどうやって動かすかもよくわからない感じだったのが、先日のJVMLSにあわせてプロトタイプが公開…

ロケールを指定してJShellを起動

J-Duser.language=enをつける C:\Users\naoki>java\jdk-10.0.1\bin\jshell -J-Duser.language=en | Welcome to JShell -- Version 10.0.1 | For an introduction type: /help intro

Java11 API Changes

JDK11 features are frozen since it was in the Rampdown phase last month. Big changes are listed in this page as JEPs. JDK 11 However there are many changes outside of JPEs in JDK 11, therefore I list up the API changes in JDK 11 as far as …

Java11でのAPI変更を雑に列挙

先月末でJDK11はRampdownフェーズに入って、機能凍結されました。 なので、今後はAPIの追加・削除・変更はほとんどないと思われます。 おそらく、機能的には現在でているea20とほとんど同じものがJava11としてリリースされることになると思います。 JDK 11 E…

Java9から三項演算子でのunboxingの挙動がJava8とは変わっている

Java9からJDK11-ea18まで、三項演算子でのunboxingの挙動がJava8とは変わっているようです。Double d = false? 1.0: new HashMap<String, Double>().get("1");yields null in #Java8, but NullPointerException in #Java10. Why?https://t.co/MUaql1vd9e— Nicolai Parlog (@n</string,>…

Java11ではjavacせずにJavaファイルが実行できるようになる

JDK11 ea18から、javacしないでもJavaファイルを実行できるようになりました。 あと、Windowsバイナリはzipファイルで提供されるようになっています。tarコマンドが提供されたとはいえ、エクスプローラーから解凍できるzipファイルになるのは ありがたい。 J…

Javaの新元号対応を試す。そして実用には問題がある。

新元号対応はNewEraという仮の元号で対応が進んでいるので、試してみました。 おそらく、実用では使えない場面がある仕様になっています。 なので、元号対応が必要そうな人は、早めに試して声をあげる必要があると思います。 ビルドする ※ 2018/6/16追記 ea1…

Java9、10でStringの+=に副作用があるバグ

Java 9、10でStringの+=にバグがあるということがStack OverFlowで報告されていました。 Why does array[idx++]+="a" increase idx once in Java 8 but twice in Java 9 and 10? - Stack Overflow どういうバグかというと「s[i++] += i + ""」のようなコー…

JShellを使ってJava2Dであそぶ

JShellを使ってJava2Dであそんでみました。楽しい。 Javaが初めての人はこちらもどうぞ。 JShellで始めるJava - Javaの世界を覗いてみる - Qiita ということで、まずjavax.swing.*をimport jshell> import javax.swing.* JFrameを用意 jshell> var f=new JFr…

GraalVMでRust動かしたりレイトレをネイティブコンパイルしたり

GraalVMが正式にリリースされました。結構話題になってますね。 GraalVMは、JavaベースJITとAoT、そしてASTエンジンTruffleの複合体です。(かな?) GraalVM ということで、Rust動かしたりJavaで書いたレイトレコードをネイティブコンパイルしたりしてみまし…

マイクロサービスフレームワークArmeriaを始める

Armeriaのチュートリアルを書いてみる https://line.github.io/armeria/index.html RESTサーバーとして使う まずは、プロジェクトを用意します。 dependencyにcom.linecorp.armeria:armeria:0.62.0を追加します。 mavenの場合、次のようなpom.xmlを用意しま…

Java10のvarをどう使うか

Java 10でvarが追加されました。が、いろいろ使い方は悩ましい気がします。 いろいろ議論をしたので、そこで考えたことをまとめておきます。 JShellでは読むことを考えなくていいのでガンガン使いましょう。 あと、OpenJDKのStyle Guidelinesも見ておくとよ…

Java 10のコンパイラバグを見つけた

予定通りにJava10が出ましたね!Javaが予定通りにリリースされることが珍しすぎたのか、関東では雪になっていたようです。 Java10の変更点についてはこちらにまとめています。 Java 10新機能まとめ - Qiita Java10のJEP以外の変更まとめ - Qiita ところで、v…

JDK 11で2つメソッドが削除されてHTTP Clientが正式に入る

JDK9でincubatedでJDK10でもincubatedなHTTP Clientが、ようやくJDK11でjava.net.httpパッケージで入るらしい。 JDK HTTP Client - JEP 321 - Update あと、 1.2からDeplicatedだったrunFinalizersOnExitメソッドが削除される。Runtime.runFinalizersOnExit…

Thymeleaf3は2より3倍速く、JDK9では3割遅くなる

Thymeleaf3がどのくらい2より速くなってるか、あとJDK9のcompact stringは有利に働くかどうか、ベンチマークを取ってみました。 結果として、Thymeleaf3は2より3倍速く、JDK9では遅くなっていて、compact stringは関係なさそうという感じ。 あと、Pebble速い…

OpenJDK/amberをビルドしてパターンマッチングの世界を体験する

ほんとはjdk10をビルドしてvarの世界を体験するエントリだったのだけど、ここでバイナリが提供されたので、Amberの話にします。 Project Amberは、Javaにパターンマッチングを導入するプロジェクトです。 varによるローカル変数型推論もAmberの一部だったの…

JUnit5で変わるテストの書き方

JUnit5が案外よさげなので、JUnit5を使うとどんな感じでテストが変わるのか考えてみます。 実際にどこが変わったかとか、使い方自体はいろいろまとめられたブログがあるし、公式ドキュメントも読みやすいのでそちらを。 http://junit.org/junit5/docs/curren…

新しいリリースモデルはJavaを使う人 全員要注目だった

9月の頭くらいに、Javaのリリースモデルが6ヶ月ごとの短期リリースになるということが発表されてました。 で、「へぇ〜」みたいな感じで見てたのですけど、JavaOneでの話を聞くと、これ結構大変なのかも、ということになってそうなので、ちょっとまとめてみ…

JavaOneサンフランシスコ 2017 5日目

さて、今日は最終日です。 「帰りの会」であるコミュニティキーノートがあったのですが、ちょっと体調がわるかったので、そのあとから。 よこな氏がカンフーマスターだったらしいので見たかったのだけど。 Introduction to Machine Learning with Apache Spa…

JavaOneサンフランシスコ 2017 4日目

水曜日は遠足の日です。去年からはAT&Tパークになってますけど。ライブとかビールとかあります。 Machine Learning for Java Developers in 45 Minutes [CON2977] 朝、8:30から来てみた。 機械学習とは何か、みたいな話をしていた。 まずCommons Mathで線形…

JavaOne サンフランシスコ 2017 3日目

JavaOne3日目です。結構本気の日ですね。 とりあえずメモ書きだけで大変なので、詳しくはあとで書く。 Enabling Java for Persistent Memory Hardware [CON7656] 頑張って9:30からのセッションに来ました。永続メモリをJavaで扱う話。Intelのセッションなの…

JavaOneサンフランシスコ2017 2日目

JavaOne、今年も来てます。昨日までのは、あとで書く。 Java EE 8: What’s New in the Java EE 8 Release [CON2661] リンダのセッション。例年は満員なんだけど。 かなり空いてる。 やはり、3年同じことを話してたら、人も来なくなるか。 JSON-BやCDIなどの…

ラムダのオブジェクトはどう作られるか

ラムダは匿名クラスのシンタックスシュガーだとか言われますけど、オブジェクトの作られ方が違いますね。 というのを検証してみます。 (jdk1.8.0_112で動かしています) ループの中でhogeにラムダを渡して、hogeでオブジェクトを表示します。 まず匿名クラス…

Javaの難しいところ

Javaをプログラム未経験者に教えるときの話。 細かいところまでちゃんと理解するための難しさではなくて、とりあえず頻出コードが読み書きできるまでの難しさの話です。細かいところまでの理解、どの言語も難しいので。 あと、ここではプログラム自体の難し…

Java9で小の月を列挙する

jshell> LocalDate.of(2017,1,31).datesUntil(LocalDate.of(2018,1,1),Period.ofMonths(1)). ...> filter(d -> d.getDayOfMonth() != 31). ...> map(LocalDate::getMonth). ...> toArray() $163 ==> Object[5] { FEBRUARY, APRIL, JUNE, SEPTEMBER, NOVEMBER…