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

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

JVM Language Summitに行く-Day0 移動日

JVM Language Summitという、JVM言語の開発者が集まるイベントがSanta ClaraのOracle Campusであるのですけど、毎年おもしろそうな発表ばっかりで、一度行きたいと思っていたので行くことにしました。 ただ、時期が時期だけにSanJose空港行きの飛行機がちょ…

VR180カメラでVRを撮るのにハマりまくっている。みんなも買おう

先日Oculus Goを買って、360channelで鈴木咲がネクタイ締めてくれる3D動画を見たりして、VRおもしれーとハマっていました。 で、そういうの撮れるデバイスあるかなーと思ったら、VR180という規格をGoogleが作っていて、それに対応したカメラをLenovoやシャオ…

ロケールを指定して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…

福岡でおいしいビールが飲める店

という検索語で調べても、おまえ行ってないだろーとか単なるプロモーションだろーみたいなのしか出ないので、まとめておきます。 おいしいレストランでビールも3種類くらいあるよ、というのは載せてません。 あと、夏で暑いから、という理由でビールを飲みた…

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 + ""」のようなコー…

Javaのライセンスの現状をまとめた

なんか、「Javaが有償化された」「無償サポートがなくなった」「Oracleと契約するかJavaをやめるか」のような話がちらほら流れるようになってきて、事実とは異なってたり誤解があったり状況が妥当に伝わってない気がするなと思ったので、現状についてまとめ…

JShellを使ってJava2Dであそぶ

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

Hyper-Vで仮想スイッチを作るとWavesのオーディオプラグインが死ぬ

Hyper-Vで仮想スイッチを作るとWavesのライセンスが無効になってしまいます。 どうも、WavesのライセンスはMACアドレスと結びつけているようで、Hyper-Vで別のMacアドレスのネットワークができることで別デバイスと認識されてしまうらしい。 Waves License C…

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…

NetBeansのJDK10対応がマージされた

リリースは まだですが、NetBeansのmasterブランチにJDK10対応がマージされました。 割と早くから作業は されてたのですけど、このプルリクにまとめられて、ようやくマージされました。 Merge jdk18_3 ("var" support) branch to master by jlahoda · Pull R…

8コアのPCを組んでベンチマークとったらだいぶ強い

年末くらいにパソコンが逝ってしまっていたので、8コアi7-7820Xで新しくPCを組みましたん。8コアもクアッドチャネルもNVMeも強い! CPUファンでかいっす。 インテル Intel CPU Core i7-7820X 3.6GHz 11Mキャッシュ 8コア/16スレッド LGA2066 BX80673I77820X …

Apache NetBeans 9 betaが出ていた

Apacheに移管されたNetBeans 9のbetaが出ていました。通常なら、betaが出たくらいではブログにしないのだけど、今回はApacheへの移行にかなり苦労されていたようなので、移行して初の成果物公開記念ということでエントリを書きます。 全体的には、今回はApac…

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…

10年間のプログラミングの変化といえばクラウド、型推論、リアクティブ

この10年間のプログラミングの変化、というのが流れてきたのだけど、個人的にはクラウド、型推論付き静的型、リアクティブかなぁという風に思ってます。 クラウド(とスマホ) 2008年にGoogle App Engineが出たり、最初のHadoopサミットが行われたり、ちょうど…

正月からMSXのZ80アセンブラを書いていた

あけましておめでとうございます。 どこぞに、正月3日に起こった出来事が1年を決めるという話が流れてましたが、そうすると今年は1年、夜中にZ80アセンブラを書いて昼間寝る感じになるんでしょうか・・・ 書いてたのは、こんな感じで誤差拡散でカラーテー…

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

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

電子工作たのしー!ブラウザ上で回路シミュレーション。Arduinoも簡単

ブレッドボードを使った練習回路をちょっといじろうと思って、たぶんいいツールがあるはずだと探してたら、ブラウザで回路シミュレーションできるTinkercad circuitというのをみつけました。 https://www.tinkercad.com/circuits もともとはサンハヤトのキッ…

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

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

成田から福岡への飛行機で見た夜景がどこだったか調べてみた

サンフランシスコの帰りに、成田から福岡の飛行機からずっと夜景が見えてて写真を撮っていたので、どこだったか場所を特定してみました。 思いのほか時間がかかってしまった。 名古屋を超えたあたり。四日市周辺 これが名古屋だと思っていたのだけど、名古屋…

Windowsが起動しなくなったら結局 電源が壊れてた話

Windows 10でjdk10をビルドしようと思って、Visual Studio Express 2010とかインストールしようと思ってたら、VC++9.0が入らないっていいだして、2度目のインストールを試してみたところ、再起動したらWindowsが起動しなくなった。 なんかセットアップに失…

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

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