Java

Maven Central Repository への公開手順(Gradle版)

はじめに sonatype で JIRAアカウント作成 New Project の issue 登録 GnuPG の導入 GnuPG による鍵の生成 公開鍵を鍵サーバへ登録 秘密鍵をエクスポート Gradle プラグインの導入 build.gradle の設定 リポジトリへの公開 まとめ はじめに Maven Central Re…

Set や Map のキーを前方一致の Like 検索する

はじめに NavigableSet NavigableMap まとめ はじめに 入力項目の自動補完(auto complete)などで、前方一致の Like 検索を行いたい場合があります。 Set や Map は、key または key-value のデータ構造なので、これらの用途には向いたものではありませんが、…

Quarkus 1.1 で追加されたテンプレートエンジン Qute

はじめに Qute とは プロジェクトの作成 Hello Qute Qute テンプレートの文法 Template Extension Methods まとめ はじめに マイクロサービス・アプリケーション・フレームワークである Quarkus の バージョン 1.1 が 2019年12月17日にリリースされました。 …

Java でリストを逆順にイテレートする

はじめに ListIterator による逆順イテレート ListIterator ユーティリティを利用した逆順イテレート DescendingIterator による逆順イテレート はじめに 以下のようなリストを逆順で末尾からイテレートしたいケースがあります。 List<String> list = Arrays.asList(</string>…

Java Stream でよく使う Map 変換

Map へ変換(キー重複無し) Map へ変換(キー重複有り) LinkedHashMap へ変換 任意キーでグルーピング グルーピングして集計 グループ分け Map へ変換(キー重複無し) 以下の Item のリストを id をキーにした Map に変換します。 List<Item> list = Arrays.asList( n</item>…

Vaadin と Spring Boot で作る 「Javaだけ」 Web アプリケーション

はじめに プロジェクトの作成 最初のアプリケーション 画面レイアウトの設計 レイアウト構築の概要 レイアウトの実装 エンティティの準備 アカウント一覧コンポーネントの作成 アカウント一覧のフィルタリング AccountService の追加 アカウント編集フォーム…

Java Beans の大罪 〜 getter/setter を捨てて美しきオブジェクトの世界で生きよ〜

まえがき はじめに Java Beans の誕生 サーバサイドの台頭 Struts と BeanUtilsの興起 Enterprise JavaBeans ORM の台頭 getter/setter は良くない習慣です なぜ getter/setter は悪なのか 悪の囁きに対する処方箋 まとめ まえがき 以下のコードを見てくださ…

Quarkus の始め方 〜 Gradle 編 〜

はじめに Project Starter アプリケーションの起動 プロジェクトの構成 ネイティブ・ビルド ネイティブバイナリの実行 JVM モードのコンテナ作成 RestAssured によるテスト まとめ はじめに クラウドネイティブなアプリケーションフレームワークである Quark…

JUnit5 Jupiter による Parameterized Test の使い方

はじめに JUnit5 の導入 CsvSource による Parameterized Test Parameterized Test の型変換 ArgumentsAccessor で引数をまとめて受け取る ArgumentConverter で任意のオブジェクトを受け取る ArgumentsAggregator で複雑なインスタンスを扱う MethodSource …

REST と RESTful と RESTish について

はじめに REST とは RESTful とは RESTish とは まとめ はじめに REST と RESTful 、さらに最近では RESTish という用語についてのまとめです*1。 REST とは REST(REpresentational State Transfer)という言葉が何を指すかは、かなり発散する話題です。 元と…

Quarkus で Panache を使ったアプリケーション作成

はじめに Panache とは Panache の利用準備 Entity の定義 Entity の操作 永続化 IDによる検索 一覧取得 ソート 件数取得 削除 Stream 操作 ページング ページの取得 件数の取得 メソッドチェーン クエリー Entity メソッド トランザクション ロック カスタ…

Quarkus で JPA を使ったアプリケーション作成

はじめに プロジェクトの作成 Entity の作成 サービスの作成 リソースの作成 データベースの起動 アプリケーションの起動 登録レコードの確認 まとめ はじめに 以下では Quarkus による JAX-RS を使った簡単なアプリケーションを作成しました。 blog1.mammb.…

Quarkus による初めてのアプリケーション作成

Quarkus とは このガイド アーキテクチャ プロジェクト作成 エンドポイント リソースの作成 開発モードで起動 インジェクションの利用 機能テスト パッケージング Quarkus とは Red Hat が作っている、最近流行りのマイクロサービス向けの Java アプリケーシ…

Amazon Corretto 11

Amazon Corretto Amazon 提供の無償利用可能な JDK Corretto 8 の LTS は四半期ごと、最短でも 2023 年 6 月まで更新予定 Corretto 11 の LTS は四半期ごと、最短でも 2024 年 8 月まで更新予定 Corretto 11 brew でインストール $ brew cask install corret…

Java デバッグオプション (JDWP)

JVMのデバッグを有効にするには Javaデバッグワイヤプロトコル(JDWP)エージェントを有効にします。 デバッグを有効にした場合、オーバーヘッドが生じることに加え、セキュリティ上の問題となる場合がありますので、本番環境では使用してはなりません。 Java5…

「Spring Boot で persist()」 のあらすじ

はじめに 題材 トランザクションインタセプタ リポジトリの save() 呼び出し 永続化イベント トランザクションの commit コミット前処理の flush() ActionQueue の実行 まとめ はじめに フレームワークも成熟しており、中身の動作を意識することも少なくなっ…

Java 言語でつくるインタプリタ 〜パーサ#3〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

Java 言語でつくるインタプリタ 〜パーサ#2〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

Java 言語でつくるインタプリタ 〜パーサ#1〜

Java 言語でつくるインタプリタ 「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go…

Java 言語でつくるインタプリタ 〜レキサー〜

「Go 言語でつくるインタプリタ」では、Monkey という小さな言語のインタプリタを Go で実装する過程が書かれています。 あくまで教育目的として、字句解析〜構文解析〜評価 までをシンプルな実装で丁寧に解説しています。 Go言語でつくるインタプリタ作者:T…

Java Stream におけるソートのお作法

ソート対象 昔ながらのソート Lambda を利用した冗長なソート Java8 Stream における正しいソート thenComparing による複合キーのソート ソート条件の指定 null コンパレータ Map のソート まとめ ソート対象 以下のような id と name プロパティを持った I…

Micronaut で Hello World するだけしてみる

Micronaut とは Quick Start アプリケーションの作成 実行 Micronaut とは マイクロサービスベース用のフルスタックフレームワーク 低フットプリント JVMベースで、Java・Kotlin・Groovy などで書ける GraalVM の native image の実験的サポートがある コン…

AdoptOpenJDK のインストール

Mac mini 2018 が来たのでセットアップ Homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Homebrew version $ brew --version Homebrew 1.8.2 Homebrew/homebrew-core (git revision 4d0d; …

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring Boot DevTools で Automatic Restart 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の5回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 Bootstrap と Thymeleaf でページネーション 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の4回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 登録・更新処理と Bean Validataion 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の3回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring Data JPA でデータベースアクセス 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 の2回目です。 目次 Spring MVC で Hello World Spring Data JPA でデータベースアクセス 登録・更新処理と …

普通の Spring Boot 2.0 Web Applicatrion 〜 Spring MVC で Hello World 〜

Spring Boot 2 で、なるべく標準的なやり方で、トラディショナルな Spring MVC による Web Application を作成するチュートリアルを数回に分けて。 Web Application 作成の流れを、細か過ぎる説明は省き、ざっくりと一通り見ていきます。 目次 Spring MVC で…

Java EE Spec 一覧

Java EE Spec Version JSR リリース JavaEE1.3 JSR-58 2001年9月 JavaEE1.4 JSR-151 2003年11月 JavaEE5 JSR-244 2006年5月 JavaEE6 JSR-316 2009年12月 JavaEE7 JSR-342 2013年5月 JavaEE8 JSR-366 2017年9月 バージョン一覧 太字が前バージョンからの変更…

JVM主要オプション

コンパイラフラグ GC戦略 GCログ ヒープ関連 設定しておきたい Java 起動オプション まとめ コンパイラフラグ JVMチューニングで最初に検討するのがコンパイラの選択となる。 ただ、近年は階層的コンパイルが有効になっていたり、プラットフォーム別で適した…