java

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.of(123, "hoge")がどんな型になるかを見てみたら、きっとList<Object>になっていて「Objectはどんな値にも対応するんですよー」みたいな説明ができると思っていたら、実際は泣くほど怖い型が出てきた。 List.of(123, "hoge")がどんな型になってるか見ると「Obje</object>…

Java 15新機能まとめ(Qiita)

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開発をする

NetBeansでJavaFXのプログラムを作る方法を解説します。 プロジェクトを作る まずはプロジェクト作成です。「Java with Maven」カテゴリの「FXML JavaFX Maven Archtype(Gluon)」を選んで「Next」を押します。 いろいろ入力する項目がでますが、とりあえずそ…

Javaを勉強するための環境設定(NetBeans版)

はじめに NetBeansを使ってJavaの勉強をはじめるという人むけの環境設定の解説です。 インストールするものは2つです。 Java環境 NetBeans Java環境のインストール NetBeansがJavaで動くのと、そもそも目的がJavaの勉強なんで、Javaのインストールが必要で…

Devoxx Belgium 2019 - Day 4

LINEでは年に1回の海外カンファレンス補助があるので、ベルギーのDevoxxに来てます。 今日はConference Daysの2日目。しかし寝坊・・・ ところで会場の向こうには風力発電が見えます。 今日聞いたセッションはこんな感じ。Ask the Java Architectが一番おも…

Devoxx Belgium 2019 - Day 3

LINEでは年に1回の海外カンファレンス補助があるので、ベルギーのDevoxxに来てます。 DevoxxはヨーロッパのJavaコミュニティで、ロンドンやパリなど各地でカンファレンスを行なっていますが、ベルギーが最大です。 毎年、Javaのびっくり発表がDevoxx Belgium…

Devoxx Belgium 2019 - Day 2

LINEでは年に1回の海外カンファレンス参加補助があるので、ベルギーのDevoxxに来ています。 (夏のJVMLSは自費です) Devoxxは月・火のDeep Dive Daysとと水・木・金のConference Daysにわかれていて、今日はDeep Dive Daysの2日目です。 https://devoxx.be/tu…

Dynamic CDSよりJava10からある自力ダンプの方が起動が速い

昨日のエントリでDynamic CDSを使いましたが、自分でダンプしたクラスデータを使うほうが速くなりました。 Java 13のDynamic CDSで想像以上に起動速度が速くなった - きしだのHatena Java 10からOpenJDKでもApp CDSが使えるようになりました。Oracle JDKでは…

Java 13のDynamic CDSで想像以上に起動速度が速くなった

Java 13で、読み込み済みのクラスデータを終了時に保存するDynamic CDSが導入されました。 https://openjdk.java.net/jeps/350 で、試してみたら結構起動速度が変わっていました。 Micronautで試してみます。 追記: Java 10でApplication Class-Data Sharing…

Vector APIを試す

Vector APIはSIMD命令をJavaから利用するためのAPIです。 Project Panamaの一部ということになっていますが、最近はなんかPanamaとは別扱いになってる気がします。 Vector APIはJEPがすでに作成されていて、感触としてはJDK 14に入りそうな勢い。 JEP 338: V…

OpenJDK Committer's Workshop 2019 - Day 2(JVMLS Day 5)

CommitterではないけどOpenJDK Committer's Workshop(OCW)に参加しています。 OpenJDK Committers’ Workshop 初日はこちら。 OpenJDK Committer's Workshop 2019 - Day 1(JVMLS Day 4) - きしだのHatena Unconference 今日もアンカンファレンス形式で行いま…

OpenJDK Committer's Workshop 2019 - Day 1(JVMLS Day 4)

JVM Language Summitが終わると、引き続いてOpenJDK Committer's Workshop(OCW)が開かれるので、コミッターではないけど参加してみました。 OpenJDK Committers’ Workshop JVMLSはこちら。 JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena JVM Lang…

JVM Language Summit 2019(JVMLS) day 3

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です。 終わったあ…

JVM Language Summit 2019(JVMLS) day 2

JVMLSに来ています。2日目。 JVM Language Summit — July 29–31, 2019 初日はこちら JVM Language Summit 2019(JVMLS) day 1 - きしだのHatena 今日はほぼ1日を通してコンパイラの話でした。 ちなみに、普通はJavaの文脈でコンパイラというとJavaソースコー…

JVM Language Summit 2019(JVMLS) day 1

JVMLSに来ています。 JVM Language Summit — July 29–31, 2019 JVMLSはJava VM Language Summitの略で、JVMで動く言語に関するイベントだったのですけど、JVM言語の話はJavaも含めて減っていて、JVMの話がメインになっています。 場所はサンタクララのOracle…

Java最新フレームワーク、Helidon、Micronaut、Quarkusをnative-imageまでまとめて試す

最近でてきたフレームワーク、Helidon、Micronaut、QuarkusをそれぞれクイックスタートからNative-Imageまでまとめて試します。

Javaスクリプト入門

みんなでJavaスクリプトに入門しましょう! クラスをちゃんと定義する それでは、まずはJavaっぽく書いてみましょう。 public class Main { public static void main(String[] args) { System.out.println("Hello!"); } } これを、任意のファイル名で保存し…

GraalVMはどれだけ遅いか

GraalVM流行ってますね。 そして、多くの人はGraalをAOTとして使うnative-imageのことだけをGraalVMと言ってたりします。 ご安心を。このエントリではGraalをJITとして使うHotSpotモードとGraalをAOTとして使うnative-imageの両方が遅いという話です。 Graal…

NetBeansからHelidonを使う

Helidonです、Helidon。 プロジェクトの作成 HelidonはMavenプロジェクト的には素直なので、Mavenはバンドルの3.3.9で大丈夫です。 プロジェクト作成もNetBeansからできます。 新規作成でjava with MavenからProject from Archetypeを選びます。 Archetypeの…

NetBeansからQuarkusを使う

Quarkusです、Quarkus。 Mavenのアップデート QuarkusのビルドにはMaven 3.5.3が必要ですが、NetBeans11にバンドルされているMavenは3.3.9なので、そのままではビルドなどができません。 ということで、Mavenの最新版をダウンロードしてどこかに解凍します。…

Windows(Cygwin)でSDKMANがうまく動かないのはcurlのせい

WindowsでCygwin使ってSDKMANを動かしてみたのですが、うまく動きませんでした。 なんかファイルをダウンロードしてるのに、ファイルがみつからないと言ってます。というか、curlがなんか文句いってますね。 $ sdk install micronaut Downloading: micronaut…

switch式の値付きbreakはyieldになる?

前のエントリではswitch式で値を返すのはbreak-withになると書いてましたが、yieldにしようぜーという議論が勃発しています。 switch式の値付きbreakはbreak-withになることがほぼ確定(追記あり) - きしだのHatena というか、JEPはすでにyieldになっています…

switch式の値付きbreakはbreak-withになることがほぼ確定(追記ありyieldになりました)

Java12でプレビューとしてswitch式が入って、Java13で正式化できるよう作業が進んでいます。 そんな中、switch式を正式化するJEPのドラフトが出ていました。 JEP draft: Switch Expressions 追記 あっというまにドラフトではなくなっています JEP 354: Switc…

QuarkusのHibernate ORM with Panacheでid不要ならPanacheEntityBaseを使う

Quarkusを試していて、Hibernate ORM with Panacheを使ってみると、ちょっとハマった。

jpackageでJavaアプリのインストーラーを作る

Javaアプリケーションのインストールパッケージを作れるjpackageが、どうもJDK13に入りそうな勢いでEarly Accessが出てたので試してみます。 jpackageは、JavaFXにあったjpackagerをベースにしたパッケージングツールです。 JEP 343: Packaging Tool EAはこ…

PostgreSQLのリアクティブアクセスをネイティブ化できなかった

とりあえずメモ的に。 R2DBCとmicronaut+reactive-pg-clientの2通りでnative-imageを試したけど、nettyまわりでだめだったという話 R2DBC リアクティブデータアクセスとしては本命? R2DBC R2DBCはセントラルリポジトリにないので、springのリポジトリを使い…

PostgreSQLへのJDBCアクセスをネイティブ化する

PostgreSQLへのJDBCアクセスがあるコードをGraalVMでネイティブイメージ化するとき、org.postgresql.core.v3.ConnectionFactoryImplの対応が必要だったのでメモ たとえばこんな感じでPostgreSQLにアクセスします。 public class Main { public static void m…

Scalaをネイティブコンパイルする

以前、Kotlinをネイティブコンパイルするという話を書いたので、今回はScalaをネイティブコンパイルしてみます。 Kotlinをネイティブコンパイルする - きしだのはてな 今回はGraalVMのnative-imageでのネイティブ化とScala Nativeでのネイティブ化を比較して…