Java

普通の 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チューニングで最初に検討するのがコンパイラの選択となる。 ただ、近年は階層的コンパイルが有効になっていたり、プラットフォーム別で適した…

Java7 と Java8 ランタイム配備の違い、または如何にして CurrentVersion has value '1.8', but '1.7' is required エラーが起こるか

はじめに JDK7(あるいはそれ以前の)インストール時の挙動 JDK8(あるいはそれ以降の)インストール時の挙動 Java Runtime Environment \ CurrentVersion Windows サービス起動する Java アプリの場合話しがややこしくなる Java7 と Java8 では MaxTenuringThre…

NetBeans の JDK は netbeans.conf で設定する

単なるメモ。 JDKの設定 NetBeans自身の JDK は以下の定義ファイルで変更する。 C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf # Default location of JDK: # (set by installer or commented out if launcher should decide) # # It can be overridde…

20行ぐらいでリッチなテキストエディタをJavaFXで

Nashorn スクリプトで作る Ace Editor とは 50行ぐらいでファイル処理 実行 Nashorn スクリプトで作る ace.js として以下のスクリプトを作成します。 #!/usr/bin/jjs -fx var html = "" + "<html><head>" + "<style type='text/css' media='screen'>" + " #editor { position: absolute; top: 0; right: 0; bott</style></head></html>…

Java におけるタイプセーフとジェネリクスの微妙な関係

はじめに 当たり前な話 ジェネリック型の継承関係 共変(covariant)の問題点 共変(covariant) が妥当なケース 反変 (contravariant) の問題点 反変 (contravariant) が妥当なケース ここまでのまとめ ジェネリクスが不変だと、、 ジェネリクスに共変性を持た…

知らなくても困らない Javaクラスのバイトコードの読み方

クラスファイルの中身 クラスファイルの構造 javap コマンド javap 出力の概要 型とメソッドの読み方 オペランドスタック コンストラクタの実行 加算メソッド invoke 系命令 条件判断 for ループ まとめ 普段使いでは困ることはないですが、昨今はバイトコー…

Java8 lambda の裏舞台は、きっとあなたが考えているより強かだ

前回、Stream の裏舞台について見てみました。 blog1.mammb.com ついでなので、今回は Lambda 式の裏舞台について見てみましょう。 はじめに 有名な話ではありますが、以下の匿名クラスを含むコードをコンパイルすると、2つのクラスファイルが生成されます。…

Java8 Stream の裏舞台は、きっとあなたが考えているより忙しない

Java9 も出た昨今でいまさらですが、Stream パイプラインが裏でどのように動いているのかをコードを交えて紹介します。 以下の単純な例を元に、内部処理を追っていきましょう。 Arrays.asList("a", "b", "c") .stream() // (1) Stream の生成 .filter(String…

JavaEE Code探索 その3 〜 トランザクション属性 〜

前回はEJBにおけるトランザクションの開始と終了の流れを見てきました。 blog1.mammb.com 今回は、トランザクション属性による動作を少しだけみてみましょう。 はじめに 最初のトランザクション 次のトランザクション トランザクションのサスペンド REQUIRES…

JavaEE Code探索 その2 〜 トランザクション 〜

前回は Glassfish 4.1.2 のソースコードを元にして EJB のメソッド呼び出しの概要を見ました。 blog1.mammb.com 今回は、この流れの中でトランザクションの開始と終了について見ていきます。 前回と同様に今回の説明のために不要な箇所は大幅に省略または改…

JavaEE Code探索 その1 〜 EJB コール 〜

Glassfish のソースコードを元に、リモートEJBコールがどのように処理されていくかを説明します。 トラブルシュートにはどうしてもソースコードを読む必要がありますし、設定の問題なのかバグなのかの切り分けも容易になります。手っ取り早いし確実です。 そ…

Kotlin を Gradle でビルドする minimal サンプル

Gradle プロジェクトの準備 ソースファイルの作成 ビルド&実行 ビルドスクリプトをKotlinで書く Gradle プロジェクトの準備 init タスクでプロジェクト準備します(gradle は導入済みの前提)。 $ mkdir kotlin-example $ cd kotlin-example $ gradle init kot…

Gradle で評価時の依存を定義するには evaluationDependsOn を使う

Gradle のマルチプロジェクトで、ビルドスクリプトの評価順序を定義するには evaluationDependsOn を使う。 ビルド成果物の依存は dependencies タスク間の実行時依存関係は dependsOn 評価時の依存は evaluationDependsOn ビルド成果物の依存は dependencie…

10年の長きに渡り Java の可変長引数を過信していた話

可変長引数のループで ヌルポ発生 普通の呼び出し なんだ!? これ 念のため どうしても null を渡したい場合 まとめ 可変長引数のループで ヌルポ発生 先日とあるプロジェクトで、可変長引数を for - each している箇所でヌルポになっていた。 実際にはずっと…

Collectors.toMap() は第3引数を意識してください

リストからマップを作る時に使う以下のコード Map<String, String> phoneBook = people.stream() .collect(Collectors.toMap(Person::getName, Person::getAddress); なつかしい以下のコードとは挙動が異なります。 Map<String, String> phoneBook = new HashMap<>(); for (Person p : people</string,></string,>…

Arrays.asList() は単なる配列のラッパを返すだけなので、要素の追加も削除もできません

いつまでたっても間違いが無くなりません。 以下のようにListの初期化で多用するArrays.asList()。 List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); Arrays.asList() が返すインスタンスは、java.util.Arrays$ArrayList であって、java.util.ArrayL</string>…

Spring Petclinic を JavaEE MVC 1.0 (JSR-371) で作る 〜 その2 〜

前回 blog1.mammb.com の続きです。 TemplateEngineProducer JAX-RS Application Fragments コントローラ Owner 検索 Owner 編集 使いにくい点 まとめ TemplateEngineProducer Ozark で Thymeleaf を使えるように org.thymeleaf.TemplateEngine の Producer …

Spring Petclinic を JavaEE MVC 1.0 (JSR-371) で作る 〜 その1 〜

はじめに モデル 構成 Payara 起動クラス persistence.xml web.xml ベースエンティティ Owner Pet Visit Repository OwnerRepository の実装 PetRepository の実装 VisitRepository の実装 まとめ はじめに Spring MVC ベースのサンプル・アプリケーション S…

JavaEE Model-View-Controller API 1.0 - JSR 371 の基礎

Java EE の MVC1.0 (Model-View-Controller API 1.0 - JSR 371)、Early Draft Review 2 時点のまとめです。 Jersey MVC と同じように JAX-RS の上に乗っかる形となっているため、ほとんどは JAX-RS と同じで、コントローラメソッドに @Controller 付けて戻り…

JavaEE8 - MVC 1.0 (Ozark M2) で Thymeleaf を使う

Thymeleaf の Extension ViewEngine の選択 Fragments が上手く動かない Thymeleaf の Extension は作った方が早い JavaEE8 で仕様検討が進んでいる MVC1.0 (Model-View-Controller API 1.0 - JSR 371) の参照実装である Ozark は既に M2 が出ていて簡単に試…

Java 上の JavaScript エンジン Nashorn で Java ライブラリを使う

Nashorn スクリプトから外部 Java ライブラリを使うのは意外と面倒です。 Nashorn の基本的な使い方は以下を参照ください。 blog1.mammb.com ここでは、Nashorn スクリプトから Ivy を使い、外部の Java ライブラリを使う方法を紹介します。 クラスパス の指…

Java の標準ロギングAPI JUL(ava.util.logger) を少しマシにする

JUL に対する不満 JUL の設定 システムプロパティでログフォーマットを変える logging.propertiesでログフォーマットを変える ログレベルの表記を無理やり変える ログレベルの表記を素直に変える Formatter を作る 日付フォーマット レベル名称 呼び出し元を…

MXBean から取得できる情報あれこれ

Java Management Extensions の主要どころの簡単なまとめです。 RuntimeMXBean CompilationMXBean OperatingSystemMXBean MemoryMXBean MemoryPoolMXBean ThreadMXBean ClassLoadingMXBean GarbageCollectorMXBean サンプル Java1.6 時代のCPU使用率 Runtime…

Java の上の JavaScript エンジン Nashorn の基本

Nashorn とは Java から Nashorn を使う Java オブジェクトを渡す JavaScript の関数を Java から呼び出す JavaScript のオブジェクトを Java から呼び出す JavaScript 内で Java クラスを利用する JavaScript と Java の型 文字列 数値 配列 リストとマップ…