java
OpenXavaという、JPAエンティティだけ定義すればCRUDな画面を作ってくれるローコードフレームワークがあるので、試してみました。 Javaわかる人には手軽に使えてよさそう。 https://www.openxava.org/ OpenXavaプロジェクトの作成 Maven Archetypeが用意され…
サーブレットで面倒なのはTomcatとの付き合いです。 Spring BootでSpring Webを使うと組み込みTomcatが動くので、Tomcatのことを気にしなくてよくなりますね。 そこでサーブレット動かすと勉強しやすいんでは、と思ったので試してみます。 まず、spring init…
研修がはじまるという画像でサーブレットJSPの本が並んでて、サーブレットを最初に勉強させるのをやめてあげてほしいと思った話。 オブジェクト指向もそうなんだけど、現状で使わなくなっているにもかかわらず情報更新がされずオブジェクト指向やサーブレッ…
みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近はIDEでmain[tab]と入力すれば補完してくれるとはいえ、コードを読むときには目に入ってきたりしますね。 そんなパブリックスタティックヴォイドメインの呪文から…
リクルートスタッフィングさんのメディア、itstaffing エンジニアスタイルでJavaの連載をはじめました。 知っておきたいJavaの話:Javaとは何か? - itstaffing エンジニアスタイル ある程度Javaを使えるけど最近の事情を追ってないなぁという人にむけて、い…
Java 16でVector APIがIncubatorとして追加されたけど、IDEでの利用方法がなかなかネットにないので、まとめ。 Mavenプロジェクトを前提に。 pom.xmlの/project/build/pluginsの下にコンパイラプラグインを追加。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-</artifactid></plugin>…
こちらにまとめています。 Java 20新機能まとめ - Qiita
OpenAIでGPTを使ったAPIにembeddingというのがあって、これを使うと文章同士の距離がとれるので、近いエントリを取得したり文章から検索したりができるということで、試してみました。 思いのほかちゃんと動きました。おそらく、GPTで一番実用的なんじゃない…
某オープンチャットでPOIを使わずにExcelファイルをダウンロードという質問が来ていて、まあそこでは「POI使いましょう」ってなったのだけど、結局XMLファイルなので出力対象が決まってればそんなに難しくないのではと思ったのでやってみました。 流れとして…
ChatGPTは2021年9月までのWebテキストで学習しているので2022年の知識を持っておらず、ワールドカップ2022年大会の優勝者を知らなかったりします。 BingではWeb検索と組み合わせることで解決しているので、それを自分で作ってしまえばいいのでは、とやってみ…
指定したURLの記事本文を取ってくる処理がほしいなぁと思って、しかしいろいろ考えるのは面倒と思ったけど、少なくともJavaで簡単に使えるものがなさそうなので実装した。 参考にしたのはこちら。 HTMLからの本文自動抽出 - アドファイブ日記(ミラー版) テ…
JobRunrという、バッチ処理とかバックグラウンドタスクとかを試してみたんだけど、よくわからない・・・ https://www.jobrunr.io/en/ dependencyにはjobrunrと、あと何かJSONパーサーを入れます。ここではjacksonにしてますが、GSONかyassonでもいいぽい。 <dependency> <groupId></groupid></dependency>…
昨日のエントリでは歌詞と画像を生成したのだけど、歌詞を生成する部分のプロンプトを変えて、エンジンにCodexを使うとコードを生成できます。 GPTを呼び出す部分はこんな感じ String prompt = "//Java\n" + text.getText().trim().lines() .map("// %s%n"::…
やっぱ自分でもさわってみんとあかんということで、OpenAIを使ったプログラムを書いてみました。 とりあえず、テキストと画像を生成します。 JavaのAPI使ってみます。中身はRetrofit。 https://github.com/TheoKanning/openai-java MavenやGradleでこんな感…
Javaのバイトコードを操作するツールとしてはASMやJavassistがありますが、SourceBuddyはコンパイル・バイトコード生成を行うツールです。 バイトコード操作を行いたい場合、既存バイトコードの変更を行う必要はなくて、実行時に新規クラスを生成できれば十…
ちょっとJavaのインストールについて調べてみました2023年版。 Javaにはディストリビューションがたくさんあるので、目につくインストーラーをWindowsで全部ためしてみました。 初心者が勉強するためにJavaをインストールするというときにどれを使うのが手軽…
なんかJakarta NoSQLというのが出ていて素敵そうだったので試してみた。 サポートしているデータベースがこんな感じで、このあたりを統一的に扱えると便利そう。 http://www.jnosql.org/docs/supported_dbs.html NoSQLといっても色々あって単一APIでは難しい…
Java2DデモというのはJava 5までJDKに添付、Java 8までは別途ダウンロードで提供されていたJava2Dのデモです。 Java2D Demo!#java #java2d pic.twitter.com/jAMih8ep9j— きしだൠ(K1S) (@kis) 2022年12月9日 久しぶりに動かそうと思ってJava 5をインストール…
Javaのメモリ確保指定のオプションで、最大メモリは-Xmx、初期メモリは-Xmsで指定します。 -XmxのほうはMemory maXimumかなーと感じるのだけど、-Xmsのほうはminimumでもないしなんだろーと思いながら「まぁ気にしてもしかたない」と25年くらい放置してたわ…
Javaでは複数の定数をまとめて扱う型としてenum(列挙型)が用意されています。 これはこれで便利なのですが物足りないところもあって、それがSealedクラスなどを使うことで解決できるようになるので、解説します。 enum型 enumは状態やデータ区分を表すのによ…
インスタンスとオブジェクトは混同しがちで区別がようわからんになりがちです。 とりあえず某所で説明したものを再構成します。 ※2022/12/10追記: クラスに対するのはインスタンスになるべき(たとえばクラス変数とインスタンス変数)なので、ちょっと修正する…
Java 11から単一ソースファイルのJavaプログラムをコンパイルなしで直接javaコマンドで実行できるようになっているので、紹介動画を作りました。 例えば次のようなJavaプログラムをHello.javaという名前で保存したとします。 public class Main { public sta…
Shockwaveだったかダウンロードするexe形式だったか忘れたけど、Night Birdというデモがあって気に入って、Javaを始めたときに目コピでアプレットとして実装したことがあった。1996年くらいだと思う。 ちなみに目コピというのは、動きを見て実装することなの…
みんなから愛された「あなたとJAVA」の役割が終わったようです。 「Java」で検索するとjava.comのサイトがひっかかるのですが、このサイトは古いまま放置されていて、Javaの学習を始める人にとっての罠になっていました。 https://www.java.com/ja/ 「あなた…
最近のフレームワークにはナントカStarterが用意されていて、簡単に最初のプロジェクトを作れるようになっています。 Java EE/Jakarta EEの場合、コンテナを起動してデプロイするという2段階だったりして、最初に動かすところまでが大変でした。 そういう問…
また「プロになる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<Object>になっていて「Objectはどんな値にも対応するんですよー」みたいな説明ができると思っていたら、実際は泣くほど怖い型が出てきた。 List.of(123, "hoge")がどんな型になってるか見ると「Obje</object>…