java

Javaのプログラムはコンパイルなしで動かせます

Java 11から単一ソースファイルのJavaプログラムをコンパイルなしで直接javaコマンドで実行できるようになっているので、紹介動画を作りました。 例えば次のようなJavaプログラムをHello.javaという名前で保存したとします。 public class Main { public sta…

Night Bird

Shockwaveだったかダウンロードするexe形式だったか忘れたけど、Night Birdというデモがあって気に入って、Javaを始めたときに目コピでアプレットとして実装したことがあった。1996年くらいだと思う。 ちなみに目コピというのは、動きを見て実装することなの…

さよなら「あなたとJAVA」

みんなから愛された「あなたとJAVA」の役割が終わったようです。 「Java」で検索するとjava.comのサイトがひっかかるのですが、このサイトは古いまま放置されていて、Javaの学習を始める人にとっての罠になっていました。 https://www.java.com/ja/ 「あなた…

Jakarta EE StarterでJava EE/Jakarta EEを始める

最近のフレームワークにはナントカStarterが用意されていて、簡単に最初のプロジェクトを作れるようになっています。 Java EE/Jakarta EEの場合、コンテナを起動してデプロイするという2段階だったりして、最初に動かすところまでが大変でした。 そういう問…

Java力をあげるための指針

また「プロになるJava」の宣伝か、と思われるので、今回は「プロになるJava」の宣伝は自粛します。 Java力をあげるためには最適な「プロになるJava」がオススメなんですが、そうするとこのエントリもこのあたりで終わってしまうので、今回は自重します。 と…

「メソッドのシグネチャ」はJava言語とJava仮想マシンで違う

「プロになるJava」でシグネチャのことを次のように説明しています。 メソッドの名前と受け取る引数、戻り値の種類をあわせたものを シグネチャ といいます。 戻り値は含まないのでは?という話になり、結論から言えば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になっています…