CLOVER🍀

That was when it all began.

Java

Jacksonで、JSONをコンテナ型(ListやMapなど)のような型引数を持ったクラスにデシリアライズする

これは、なにをしたくて書いたもの? Jacksonを使ってJSONをデシリアライズする時に、ObjectMapper#readValueをよく使うわけですが。そういえば、自分で 書いている時にListやMapといったジェネリックな型にデシリアライズしたことがないな、と思い。 工夫が…

Jacksonで、入力として型変換できない値を渡したら?

これは、なにをしたくて書いたもの? JSONの読み書きにはJacksonをよく使いますが、マッピング先のクラスのプロパティに、そのまま設定できない値を指定した場合 (たとえば数字ではない文字列をintのフィールドに設定しようとする)、どうなるんだっけ?と…

Jackson Text Dataformats Moduleを使って、CSVファイルの読み書きをしてみる

これは、なにをしたくて書いたもの? これまでCSVを読み書きするのに、OpenCSV、Super CSVなどを使ってきたのですが、JacksonでもCSVファイルの読み書きが できることはなんとなく知っていたものの使ったことがありませんでした。 ちょっと試してみようかな…

システムコンポーネント(CPU、メモリ、ディスク、ネットワーク等)のレイテンシとタイムスケールなどなど

これは、なにをしたくて書いたもの? CPUサイクルに対してメモリアクセスのレイテンシ比とか、メモリアクセスとディスクアクセスのレイテンシ比がどこかに まとまっていたな、と時々思いながら、どこにあるか忘れて探すことになるので。 各リソースアクセス…

ThreadPoolExecutorの設定項目を確認する

これは、なにをしたくて書いたもの? 今までConcurrency Utilitiesで提供されるスレッドプールを使ってきたことはあったのですが、その設定内容をちゃんと 見てきていなかったので今回見てみようかなと。 具体的には、ThreadPoolExecutorを見ていこうと思い…

Azure Functions(Java)のTimerTriggerをローカルで動かしてみる

これは、なにをしたくて書いたもの? 前に、Azure FunctionsのHttpTriggerをローカルで動かしてみました。 Azure Functions(Java)をローカルで動かしてみる - CLOVER 今回は、TimerTriggerを動かしてみたいと思います。 TimerTrigger TimerTriggerは、Azur…

Azure Functions(Java)をローカルで動かしてみる

これは、なにをしたくて書いたもの? Azure Functionsはローカルでも多少動かせるようなので、Javaで試してみようかな、と思いまして。 どういった雰囲気なのか、まずは知ってみようというのが目的です。 お題 Azure Functions(Java)を、HTTPトリガーとし…

JavaでAES(ECB/CBC)を使う

これは、なにをしたくて書いたもの? こちらのエントリを書いていて、「JavaでAESを使う時のコードを全然覚えてないな」と思いまして。 MessageDigestに"SHA"とか、Cipherに"AES"とだけ指定した場合、どうなるの? - CLOVER メモしておこうかな、と。 環境 …

MessageDigestに"SHA"とか、Cipherに"AES"とだけ指定した場合、どうなるの?

これは、なにをしたくて書いたもの? このあたりを見ていて https://github.com/openjdk/jdk11u/blob/jdk-11.0.9.1%2B1/src/java.base/share/classes/sun/security/provider/SecureRandom.java#L96-L116 digest = MessageDigest.getInstance("SHA"); Message…

OpenJDKのソースコードリポジトリは、どれを見ればいい?

これは、なにをしたくて書いたもの? 自分の使い方というと、最新のJavaや開発中のJavaの情報を追うというよりも、リリースされてから(今のご時世だとLTS) ちょっと間を空けて使い始めることが多いです。 で、以前はOpenJDKのソースリポジトリを見ることは…

SecureRandomのアルゴリズムなどに関する情報をちゃんと見る

これは、なにをしたくて書いたもの? Javaの暗号用の乱数ジェネレーター(RNG / Random Number Generator)として、とてもよく使われるSecureRandomですが。 SecureRandom (Java SE 11 & JDK 11 ) ここで指定されるアルゴリズムなどの情報を、あんまりちゃん…

Vert.x Core、Vert.x Webで遊ぶ

これは、なにをしたくて書いたもの? そろそろ、Vert.xも少し知っておいた方がいいのかなーと思いまして。 試してみようかなと。 Vert.xとは Vert.xは、イベント駆動、ノンブロッキング、複数の言語による開発が可能なフレームワークです。 Eclipse Vert.x …

Cloud Native Buildpacksで遊んでみる(Java)

これは、なにをしたくて書いたもの? 前に、Spring BootのCloud Native Buildpacksサポートで遊んでみました。 Spring BootのCloud Native Buildpacksサポートを試す - CLOVER 今回は、Cloud Native Buildpacksそのものに焦点を当てて見てみようかな、と。 C…

環境変数JAVA_TOOL_OPTIONSで、Java VM引数を指定する(-XX:VMOptionsFileも加えて)

これは、なにをしたくて書いたもの? 以前、OpenJDKのイメージで遊んでいた時に、JAVA_TOOL_OPTIONSという環境変数が使われているのを見て。 $ docker container run -it --rm adoptopenjdk/openjdk11:latest java -version Picked up JAVA_TOOL_OPTIONS: -X…

Java 11のガベージ・コレクション・チューニングガイドを読む

Java 8以降になってAPIドキュメント以外をあまり見ていなかったのですが、いろんなドキュメントが見やすくなって いるんだなぁと。 JDK 11ドキュメント - ホーム で、こちらのドキュメントがちょっと気になりまして。 ガベージ・コレクションのチューニング…

Javaソースコードでライブラリ依存関係を解決しつつスクリプトとして実行する、JBangを試す

これは、なにをしたくて書いたもの? JBangという、Javaプログラムをスクリプト的に実行できるツールがあると知りまして。 ちょっと気になる分野なので、試してみることにしました。 JBang JBangは、Javaプログラムをスクリプトのように実行できるツールです…

jcmd(jstack)を使わずに、スレッドダンプを取得する

これは、なにをしたくて書いたもの? jcmdやjstackなどを使わずに、Javaアプリケーションのスレッドダンプを取得する方法を、自分でも試しておこうかなと。 ThreadMXBean#dumpAllThreads​とThread#getAllStackTraces やり方としては、ThreadMXBeanやThreadク…

Jib Maven Pluginで、Dockerコンテナイメージを作る

これは、なにをしたくて書いたもの? 以前、Jib Coreを使ってDockerイメージを作ってみました。 Jib Coreで、Dockerコンテナイメージを作ってみる - CLOVER これでJibの基本的なところはわかった…ことにして、今度はJib Maven Pluginを使ってDockerイメージ…

Jib Coreで、Dockerコンテナイメージを作ってみる

これは、なにをしたくて書いたもの? そういえば、Jibというものがあったけど、全然使ったことがないなと思い、1度試しておこうかなと。 Javaアプリケーションを自動的にコンテナイメージにビルドするツール「Jib」がバージョン1.0に到達 - Publickey Jib、…

Javaのコマンドラインアプリケーション向けのフレームワーク、picocliで遊ぶ

これは、なにをしたくて書いたもの? ちょっと前から、picocliというJavaでのコマンドラインアプリケーション向けのフレームワークがあるのが気になっていまして。 picocli - a mighty tiny command line interface これまでJavaのコマンドラインアプリケー…

Distroless Dockerイメージ(OpenJDK)を試す

これは、なにをしたくて書いたもの? 前々から、DistrolessというDockerイメージが気になっていて、ちょっと試して見ることにしました。 GitHub - GoogleContainerTools/distroless: Language focused docker images, minus the operating system. Base Ima…

TF-IDFを実装してみる(Java)

これは、なにをしたくて書いたもの? ちょっとTF-IDFをちゃんと見てみたくなりまして。 せっかくなので、1度自分で実装してみようかな、と。 TF-IDF TF-IDFは、文書中に含まれる単語の重要度を評価する手法のひとつです。 tf-idf - Wikipedia tf-idfについて…

Sentry JavaのLogbackインテグレーションを試す

これは、なにをしたくて書いたもの? Sentryには、各種言語向けのライブラリがあります。 Platforms - Docs Java用のライブラリもあり、 Integrations - Docs この中にLogback用のライブラリが提供されているので、こちらを使って遊んでみることにしました。…

OWASP Dependency-Check Maven Pluginで、依存ライブラリの脆弱性情報を確認する

これは、なにをしたくて書いたもの? OWASP Dependency-Check Maven Pluginという、依存ライブラリの脆弱性情報を確認できるプラグインがあるということを知りまして。 dependency-check-maven – Usage ちょっと、こちらを試してみようかなと。 OWASP Depend…

GraalVMでネイティブイメージを作る時に、リソースファイルを含めるようにする

これは、なにをしたくて書いたもの? GraalVMを使ってネイティブイメージを作る時に、リソースの取得(Class.getResourceやClass.getResourceAsStream)に 制限があるという話なのですが。 このあたりに書かれている内容を実践すると、それが可能になるよう…

GraalVMでネイティブイメージを作った時の、コマンドライン引数の扱いを確認する

これは、なにをしたくて書いたもの? こちらの資料を見ていて、「あれ?ネイティブイメージでのヒープサイズってどうやって指定するんだろう?」と思いまして。 Quarkus入門 - 見習いプログラミング日記 SubstrateVMのヒープ設定 / Quarkus入門 GraalVM(Sub…

RESTEasy+Undertowで作ったアプリケーションを、GraalVMでネイティブイメージにしてみる

これは、なにをしたくて書いたもの? 以前に、簡単なJavaアプリケーションをGraalVM(Substrate VM)を使ってネイティブイメージにしてみたのですが、 もう少しライブラリなどを使った複雑な(?)ものをネイティブイメージにしてみようと思いまして。 で、…

Ubuntu Linux 18.04 LTSに、OpenJDK 11をインストールする

Ubuntu Linux 18.04 LTSで、やっと本当に(※)OpenJDK 11が使えるようになったみたいなので、インストールしたいと思います。 ※後述 openjdk-lts package : Ubuntu 環境。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Descripti…

Native Image Maven Pluginを使って、GraalVMでネイティブイメージを作る

これは、なにをしたくて書いたもの? こちらのエントリを見て、GraalVMでネイティブイメージを作るMavenプラグインがあるというので、試してみようかと。 Simplifying native-image generation with Maven plugin and embeddable configuration – Logico Ins…

GraalVMで作ったネイティブイメージを、デバッグしてみたい?

これは、なにをしたくて書いたもの? 先日、GraalVMを使ってJavaアプリケーションをネイティブイメージにして遊んでみました。 GraalVMをインストールして、Javaアプリケーションからネイティブイメージを作って遊ぶ - CLOVER ところで、こうやってネイティ…