java
「プロになるJava」では、かなり最初のほうでゼロによる除算を行って例外の説明をしています。 jshell> 3/0 | 例外java.lang.ArithmeticException: / by zero | at (#1:1) JShellでゼロ除算を行ったときの例外は、その場で発生しているためスタックトレース…
Javaには関数型インタフェースがたくさん用意されてるのだけど、なにがあってなにがないのかとかわかりにくいのでまとめている。 ここの最後にまとめていたのだけど、検索しづらいので独立させた https://nowokay.hatenablog.com/entry/20130824/1377300917 …
List.of(123, "hoge")がどんな型になるかを見てみたら、きっとList<Object>になっていて「Objectはどんな値にも対応するんですよー」みたいな説明ができると思っていたら、実際は泣くほど怖い型が出てきた。 List.of(123, "hoge")がどんな型になってるか見ると「Obje</object>…
Java 15が9/15にリリースされています。 概要 http://openjdk.java.net/projects/jdk/15/ 仕様 http://openjdk.java.net/projects/jdk/15/spec/ 参照実装 http://jdk.java.net/15/ それぞれの機能については、こちらのQiitaにまとめています。 Java 15新機能…
NetBeansでJavaFXのプログラムを作る方法を解説します。 プロジェクトを作る まずはプロジェクト作成です。「Java with Maven」カテゴリの「FXML JavaFX Maven Archtype(Gluon)」を選んで「Next」を押します。 いろいろ入力する項目がでますが、とりあえずそ…
はじめに NetBeansを使ってJavaの勉強をはじめるという人むけの環境設定の解説です。 インストールするものは2つです。 Java環境 NetBeans Java環境のインストール NetBeansがJavaで動くのと、そもそも目的がJavaの勉強なんで、Javaのインストールが必要で…
LINEでは年に1回の海外カンファレンス補助があるので、ベルギーのDevoxxに来てます。 今日はConference Daysの2日目。しかし寝坊・・・ ところで会場の向こうには風力発電が見えます。 今日聞いたセッションはこんな感じ。Ask the Java Architectが一番おも…
LINEでは年に1回の海外カンファレンス補助があるので、ベルギーのDevoxxに来てます。 DevoxxはヨーロッパのJavaコミュニティで、ロンドンやパリなど各地でカンファレンスを行なっていますが、ベルギーが最大です。 毎年、Javaのびっくり発表がDevoxx Belgium…
LINEでは年に1回の海外カンファレンス参加補助があるので、ベルギーのDevoxxに来ています。 (夏のJVMLSは自費です) Devoxxは月・火のDeep Dive Daysとと水・木・金のConference Daysにわかれていて、今日はDeep Dive Daysの2日目です。 https://devoxx.be/tu…
昨日のエントリでDynamic CDSを使いましたが、自分でダンプしたクラスデータを使うほうが速くなりました。 Java 13のDynamic CDSで想像以上に起動速度が速くなった - きしだのHatena Java 10からOpenJDKでもApp CDSが使えるようになりました。Oracle JDKでは…
Java 13で、読み込み済みのクラスデータを終了時に保存するDynamic CDSが導入されました。 https://openjdk.java.net/jeps/350 で、試してみたら結構起動速度が変わっていました。 Micronautで試してみます。 追記: Java 10でApplication Class-Data Sharing…
Vector APIはSIMD命令をJavaから利用するためのAPIです。 Project Panamaの一部ということになっていますが、最近はなんかPanamaとは別扱いになってる気がします。 Vector APIはJEPがすでに作成されていて、感触としてはJDK 14に入りそうな勢い。 JEP 338: V…
CommitterではないけどOpenJDK Committer's Workshop(OCW)に参加しています。 OpenJDK Committers’ Workshop 初日はこちら。 OpenJDK Committer's Workshop 2019 - Day 1(JVMLS Day 4) - きしだのHatena Unconference 今日もアンカンファレンス形式で行いま…
JVM Language Summitが終わると、引き続いてOpenJDK Committer's Workshop(OCW)が開かれるので、コミッターではないけど参加してみました。 OpenJDK Committers’ Workshop JVMLSはこちら。 JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena JVM Lang…
JVMLSに来ています。3日目。 JVM Language Summit — July 29–31, 2019 2日目まではこちら。 JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena JVM Language Summit 2019(JVMLS) day 2 - きしだのHatena 今日は3つのセッションとLTです。 終わったあ…
JVMLSに来ています。2日目。 JVM Language Summit — July 29–31, 2019 初日はこちら JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena 今日はほぼ1日を通してコンパイラの話でした。 ちなみに、普通はJavaの文脈でコンパイラというとJavaソースコー…
JVMLSに来ています。 JVM Language Summit — July 29–31, 2019 JVMLSはJava VM Language Summitの略で、JVMで動く言語に関するイベントだったのですけど、JVM言語の話はJavaも含めて減っていて、JVMの話がメインになっています。 場所はサンタクララのOracle…
最近でてきたフレームワーク、Helidon、Micronaut、QuarkusをそれぞれクイックスタートからNative-Imageまでまとめて試します。
みんなでJavaスクリプトに入門しましょう! クラスをちゃんと定義する それでは、まずはJavaっぽく書いてみましょう。 public class Main { public static void main(String[] args) { System.out.println("Hello!"); } } これを、任意のファイル名で保存し…
GraalVM流行ってますね。 そして、多くの人はGraalをAOTとして使うnative-imageのことだけをGraalVMと言ってたりします。 ご安心を。このエントリではGraalをJITとして使うHotSpotモードとGraalをAOTとして使うnative-imageの両方が遅いという話です。 Graal…
Helidonです、Helidon。 プロジェクトの作成 HelidonはMavenプロジェクト的には素直なので、Mavenはバンドルの3.3.9で大丈夫です。 プロジェクト作成もNetBeansからできます。 新規作成でjava with MavenからProject from Archetypeを選びます。 Archetypeの…
Quarkusです、Quarkus。 Mavenのアップデート QuarkusのビルドにはMaven 3.5.3が必要ですが、NetBeans11にバンドルされているMavenは3.3.9なので、そのままではビルドなどができません。 ということで、Mavenの最新版をダウンロードしてどこかに解凍します。…
WindowsでCygwin使ってSDKMANを動かしてみたのですが、うまく動きませんでした。 なんかファイルをダウンロードしてるのに、ファイルがみつからないと言ってます。というか、curlがなんか文句いってますね。 $ sdk install micronaut Downloading: micronaut…
前のエントリではswitch式で値を返すのはbreak-withになると書いてましたが、yieldにしようぜーという議論が勃発しています。 switch式の値付きbreakはbreak-withになることがほぼ確定(追記あり) - きしだのHatena というか、JEPはすでにyieldになっています…
Java12でプレビューとしてswitch式が入って、Java13で正式化できるよう作業が進んでいます。 そんな中、switch式を正式化するJEPのドラフトが出ていました。 JEP draft: Switch Expressions 追記 あっというまにドラフトではなくなっています JEP 354: Switc…
Quarkusを試していて、Hibernate ORM with Panacheを使ってみると、ちょっとハマった。
Javaアプリケーションのインストールパッケージを作れるjpackageが、どうもJDK13に入りそうな勢いでEarly Accessが出てたので試してみます。 jpackageは、JavaFXにあったjpackagerをベースにしたパッケージングツールです。 JEP 343: Packaging Tool EAはこ…
とりあえずメモ的に。 R2DBCとmicronaut+reactive-pg-clientの2通りでnative-imageを試したけど、nettyまわりでだめだったという話 R2DBC リアクティブデータアクセスとしては本命? R2DBC R2DBCはセントラルリポジトリにないので、springのリポジトリを使い…
PostgreSQLへのJDBCアクセスがあるコードをGraalVMでネイティブイメージ化するとき、org.postgresql.core.v3.ConnectionFactoryImplの対応が必要だったのでメモ たとえばこんな感じでPostgreSQLにアクセスします。 public class Main { public static void m…
以前、Kotlinをネイティブコンパイルするという話を書いたので、今回はScalaをネイティブコンパイルしてみます。 Kotlinをネイティブコンパイルする - きしだのはてな 今回はGraalVMのnative-imageでのネイティブ化とScala Nativeでのネイティブ化を比較して…