Java

JPA2.2 における persistence.xml の定義方法まとめ

はじめに persistence.xml persistence-unit provider jta-data-source non-jta-data-source mapping-file jar-file class exclude-unlisted-classes shared-cache-mode validation-mode properties タイムアウト系 property validation property schema-gen…

Gradle で始める Payara 5 〜 CDI・JPA 〜

はじめに データソースの登録 CDI の有効化 JPA の導入 Entity の作成 リポジトリの作成 サービスの作成 リソースの作成 アプリケーションの実行 まとめ はじめに 前回作成した、 blog1.mammb.com に続き、データベース処理を追加してみましょう。 データソ…

Gradle で始める Payara 5

はじめに プロジェクトの作成 Payara を組み込みモードで動かす JUL(Java Util Logger) から SLF4J への変更 buildSrc の追加 war モジュールの作成 Hello サーブレット アプリケーションのデプロイ Hello JAX-RS まとめ はじめに いまさら何故? という気は…

InaccessibleObjectException の発生原因とその対処方

リフレクションで発生する InaccessibleObjectException リフレクションを許可する リフレクションで発生する InaccessibleObjectException Java9 で導入された JavaPlatform Module System によりリフレクションを利用するフレームワークで以下のような Ina…

Java で touch する

ファイルのタイムスタンプを変えるには Files.setLastModifiedTime() が使える。 public static void touch(final Path path) throws IOException { if (Files.exists(path)) { Files.setLastModifiedTime(path, FileTime.from(Instant.now())); } else { Fi…

実行時の Java バージョン取得方法

Java8 以前 システムプロパティから java.version のキーで取得できます。 String version = System.getProperty("java.version"); Java9からは表記が変わるので注意が必要です。 Java8 まで:1.6.0_23、1.7.0、1.7.0_80、1.8.0_211 Java9 から:9.0.1、11.0…

Apache POI 4.X チートシート

はじめに 依存 ワークブックの新規作成 既存ワークブックのオープン ブックの保存 シートの作成 シートの取得 行の取得 行と列の移動 セルの取得 セルへの値設定 セル値の文字列取得 行とセルの走査 値が設定されている範囲の取得 罫線の設定 セルスタイルプ…

Apache PDFBox でテーブルを表示する

はじめに PDFBox での矩形描画 PDFBox でのテーブル描画 セルテキストの Box 表示 easytable によるテーブル表示 まとめ はじめに 前回は PDFBox による文章の Box 表示を見ました。 blog1.mammb.com PDFBox が提供する PDF 操作の API は、低レベルな操作に…

Apache PDFBox で折り返しのある文章を表示する

はじめに HelloWorld True Type Font の指定 段落文章の表示 まとめ はじめに Apache PDFBox は PDF を操作する Java ライブラリです。 PDFの作成やテキストの抽出、PDFの分割やマージなどを行うことができます。 Apache PDFBox は比較的低レベルな API セッ…

Java におけるタスクのキャンセル処理

タスクのキャンセル 単純なキャンセル可能タスク スレッドのインタラプト Future によるキャンセル Future による実行時間の制限 インタラプトできないブロッキング Socket の I/O ブロックに割り込みする まとめ タスクのキャンセル Java にはスレッドを強…

JavaFX で ace.js を使ったエディタのテキストがコピーできない

はじめに Workaround 1 Workaround 2 Workaround 3 ace.js におけるコピー処理 まとめ はじめに windows での挙動は試していませんが、MacOS 上で JavaFX の WebView を使い、ace.js を組み込んだ際にテキストのコピーが動かない事象がありました。 環境は J…

Java lambda における this 参照について

はじめに 匿名クラスの this 参照 lambda の this 参照 lambda コードの展開 lambda で自身を参照する はじめに lambda は、匿名クラスの単なる構文糖ではなく、その実現方法の違いから発生するいくつかの違いがあります。 ここでは、lambda ブロックにおけ…

JavaFX でダイアグラムを書く

はじめに マウスドラッグ可能なダイアグラムの作成 最初のダイアグラムの表示 ダイアグラムを繋ぐコネクタの作成 クラス図の表示 まとめ はじめに 前回は JavaFX の環境構築についてのポストでした。 blog1.mammb.com 今回は、JavaFX により、上記のような簡…

JavaFX の始め方(Gradle 編)

はじめに プロジェクトの作成 OpenJFX プラグインの導入 アプリケーションの実行 モジュール はじめに Java 11 からは、JavaFX が同梱されなくなったため、別途 OpenJFX を導入する必要があります。 しかし、Maven や Gradle 向けにプラグインが提供されてい…

ANTLR による構文解析の始め方

ANTLR とは ANTLR の導入 ANTLR の実行 ANTLR による構文解析 ANTLR の文法ファイルと生成ファイルの関係 まとめ ANTLR とは ANTLR (ANother Tool for Language Recognition) は構文解析器を生成するパーサジェネレータで、yacc や JavaCC などと同じ類いの…

JPA Schema Generation プロパティ

はじめに プロパティ一覧 persistence.xml での設定例 Spring Boot での設定例 はじめに JPA2.1 から標準化されたスキーマ生成プロパティですが、意外にまとまった情報が見当たらないので。 プロパティ一覧 javax.persistence.schema-generation 説明 connec…

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 へ変換(キー重複有り) 値が null 値となる場合に注意 LinkedHashMap へ変換 任意キーでグルーピング 任意キーでグルーピングしてマッピング グルーピングして集計 グループ分け Map へ変換(キー重複無し) 以下の 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…