java

GPTでテキストからJavaコードを生成する

昨日のエントリでは歌詞と画像を生成したのだけど、歌詞を生成する部分のプロンプトを変えて、エンジンにCodexを使うとコードを生成できます。 GPTを呼び出す部分はこんな感じ String prompt = "//Java\n" + text.getText().trim().lines() .map("// %s%n"::…

OpenAIのGPTとDALL·Eでテーマから歌詞と画像を生成する

やっぱ自分でもさわってみんとあかんということで、OpenAIを使ったプログラムを書いてみました。 とりあえず、テキストと画像を生成します。 JavaのAPI使ってみます。中身はRetrofit。 https://github.com/TheoKanning/openai-java MavenやGradleでこんな感…

SourceBuddyでJavaクラスを動的生成する

Javaのバイトコードを操作するツールとしてはASMやJavassistがありますが、SourceBuddyはコンパイル・バイトコード生成を行うツールです。 バイトコード操作を行いたい場合、既存バイトコードの変更を行う必要はなくて、実行時に新規クラスを生成できれば十…

Javaのインストール2023年版

ちょっとJavaのインストールについて調べてみました2023年版。 Javaにはディストリビューションがたくさんあるので、目につくインストーラーをWindowsで全部ためしてみました。 初心者が勉強するためにJavaをインストールするというときにどれを使うのが手軽…

Jakarta NoSQLを試す(動かない)

なんかJakarta NoSQLというのが出ていて素敵そうだったので試してみた。 サポートしているデータベースがこんな感じで、このあたりを統一的に扱えると便利そう。 http://www.jnosql.org/docs/supported_dbs.html NoSQLといっても色々あって単一APIでは難しい…

Java2Dデモを最新JDKで動かす

Java2DデモというのはJava 5までJDKに添付、Java 8までは別途ダウンロードで提供されていたJava2Dのデモです。 Java2D Demo!#java #java2d pic.twitter.com/jAMih8ep9j— きしだൠ(K1S) (@kis) 2022年12月9日 久しぶりに動かそうと思ってJava 5をインストール…

Javaの-XmsはMemory Startingの略?

Javaのメモリ確保指定のオプションで、最大メモリは-Xmx、初期メモリは-Xmsで指定します。 -XmxのほうはMemory maXimumかなーと感じるのだけど、-Xmsのほうはminimumでもないしなんだろーと思いながら「まぁ気にしてもしかたない」と25年くらい放置してたわ…

enumの使い方のおさらいと高機能enumとしてのSealedクラス

Javaでは複数の定数をまとめて扱う型としてenum(列挙型)が用意されています。 これはこれで便利なのですが物足りないところもあって、それがSealedクラスなどを使うことで解決できるようになるので、解説します。 enum型 enumは状態やデータ区分を表すのによ…

インスタンスとオブジェクトの違い

インスタンスとオブジェクトは混同しがちで区別がようわからんになりがちです。 とりあえず某所で説明したものを再構成します。 ※2022/12/10追記: クラスに対するのはインスタンスになるべき(たとえばクラス変数とインスタンス変数)なので、ちょっと修正する…

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