Java

Spring Boot with Vaadin 〜その4 : モーダルダイアログと永続化 〜

前回Spring Boot with Vaadin 〜その3 : Spring Loaded と Vaddinデバッグ〜 - A Memorandumの続き。 モーダルダイアログで新しい Customer を登録してみる。 モーダルダイアログ ダイアログは Window を作成して setModal(true) にするとモーダルとなる。 …

Spring Boot with Vaadin 〜その3 : Spring Loaded と Vaddinデバッグ〜

前回Spring Boot with Vaadin 〜その2 : JPA で Grid 表示〜 - A Memorandumの続き。 コード編集の度にコンパイルが面倒なので、ちょっとわき道にそれて、Spring Loaded を入れて Hot Swap が使えるようにしておく。 UIの調整はブラウザで確認しながら調整す…

Spring Boot with Vaadin 〜その2 : JPA で Grid 表示〜

前回Spring Boot with Vaadin 〜その1〜 - A Memorandumに続き、JPAで取得したデータをグリットで表示する簡単なサンプル。 面倒くさいので Groovy で書くことにする。 依存の追加 build.gradle にJPA関連の依存を追加する。 buildscript { repositories { j…

Spring Boot with Vaadin 〜その1〜

結構むかしになりますが、Spring boot の Vaadin サポートが出来てきたので簡単なチュートリアル。 プロジェクトの作成 まずは最小限のサンプルを作成します。 gradle でプロジェクト作成。 $ mkdir example-springboot-vaadin $ cd example-springboot-vaad…

Java スレッドダンプとの戯れ方

プロセスIDの取得 まずは Java のプロセスIDを取得するところから始める。jps で取得できる。 $ <JAVA_HOME>/bin/jps -l 主要なオプションは以下の通り(SunVM)。 オプション 説明 -m main メソッドに渡される引数を出力 -l アプリケーションの主要なクラスのフルパッケ</java_home>…

Wildfly Swarm で JavaEEアプリケーションを FatJAR 化する

wildfly-swarm とは JavaEE アプリケーションを Dropwizard や Spring Boot のようにコンテナごと fat JAR 化する 先日 1.0.0.Alpha4 がリリース WildFly 10.0.0.Beta1をベース 以前から要望のあった Netflix OSS サポート(Ribbon, Hystrix) Keycloak による…

sun.misc.Unsafe の魔力

sun.misc.Unsafe とは sun.misc.Unsafe はネイティブメソッドを利用して Java のメモリモデルを書き換えるAPIを公開しています。 OpenJDKのJavaDocが以下で確認できます。 http://www.docjar.com/docs/api/sun/misc/Unsafe.html sun.misc.Unsafe のインスタ…

Java8 Date and Time API の時点と時間量

Instant Instant は時系列上のある一時点を表現します。 Instant の内部では、以下のように seconds と nanos というフィールドで、ある時点からの経過時間をナノ秒の単位で保持します。 public final class Instant implements Temporal, TemporalAdjuster,…

エラトステネスの篩 vs アトキンの篩

エラトステネスの篩とアトキンの篩って実際どのぐらい違うのか気になったのでー エラトステネスの篩 倍々しながら篩から落としていくアレです。 public interface Primes { /** * Sieve of Eratosthenes. * @param upperBound upper bound * @return List of…

POI で Word ファイルの編集 〜その1〜

需要はほとんど無いとは思いますが、簡単なサンプルです。 Word ドキュメントを作成する Excel の場合と同じように、doc と docx とで別クラスを使用します。 クラス フォーマット 説明 HWPFDocument Horrible Word Processor Format 拡張子 doc の MS-Word …

Java8 の Stream 取得方法あれこれ

Iterator から Stream を得る Iterable に変換してから Stream を得ることができます。 Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Iterable<String> iterable = () -> sourceIterator; Stream<String> targetStream = StreamSupport.stream(itera</string></string></string>…

ReactiveX/RxJava の概要

RxJava は ReactiveX (Reactive Extensions) の JVM 実装で、平たく言うと非同期のイベント処理を簡素に書ける、単なるライブラリです。 "Rx = Observables + LINQ + Schedulers" などと表現されます。なんですかこれ?大げさな抽象概念を掲げすぎて意味不明…

Gradleプロジェクト作成時の init タスク

Build Init Plugin init タスクで build.gradle などをよろしく作れます。 試験的な提供なので将来が計画されていますが、Gradle 2.3 時点でどのようなになるかメモしておきます。 (2017/02/22 追記) 現在は java-application が追加されているので加えまし…

JavaFX8 を Gradle で始める

JavaFX8 を Gradle でビルドするのは色々と手間なことが多く、 (javafx-gradle plugin)https://bitbucket.org/shemnon/javafx-gradle/overviewを使うのが手っ取り早い。 現在 0.4.0 がリリースされているので、以下のような build.gradle を用意(gradleは新…

魅惑的なテスティングフレームワーク Spock (Mocking API編)

Spock では Groovy の動的な特性を生かした柔軟な Mocking テストが実現できます。 さて、前回に続いて、Spock のモック機能について見ていきましょう。 まずは公式サンプルからの例で、以下のようなイベントの Publisher と Subscriber のインタラクション…

魅惑的(Fascinating)なテスティングフレームワーク Spock

Spock とは Java と Groovy アプリケーションのテスティングと仕様フレームワーク JUnit, jMock, RSpec, Groovy, Scala, Vulcans などにインスパイアされた Groovy の DSL による可読性の高いテストコードが書ける メジャー IDE との連携も十分 強力なデータ…

JPA 2.1 の 新機能 バルクオペレーション まとめ

JPA 2.1 で Criteria API 経由での一括更新と一括削除が可能となりました。 Criteria API の変更点 JPA 2.1 では CriteriaUpdate と CriteriaDelete インターフェースが追加され、 CriteriaBuilder の createCriteriaUpdate(Class<T> targetEntity) と createCr</t>…

package 配下のクラス一覧を取得する方法いろいろ

簡単にできそうで意外と面倒な package 配下のクラス一覧を取得方法について。 Guava の ClassPath 利用 ClassPath を使えば簡単に取得できる。 ClassLoader loader = Thread.currentThread().getContextClassLoader(); Set<Class<?>> allClasses = ClassPath.from(lo</class<?>…

Minimal Embedded Tomcat

Tomcat を組み込みで扱う最小限のサンプルです。 最小限の組み込み Tomcat main から最低限の設定をして組み込みの Tomcat を起動します。 package embed; import org.apache.catalina.Context; import org.apache.catalina.servlets.DefaultServlet; import…

JPA では Read-Only の Entity は定義できない

JPA Read-Only マッピング JPA では今のところ読み込み専用で Entity を定義することはできない。 マッピングの定義で読み込み専用に定義することはできる。 @Entity public class Employee { @Id @Column(insertable=false) private int id; @Column(insert…

JPA 2.1 の 新機能 Converter まとめ

データベースのカラムと Entity の該当する属性の変換を Converter で定義できるようになりました。 Converter の使用例 Converter は以下の AttributeConverterインターフェース を実装して定義します。 public interface AttributeConverter<X,Y> { public Y co</x,y>…

JPA 2.1 の新機能 Entity Graphs まとめ

Entity Graphs とは JPA 2.1 では Entity Graph を使うことで fetch 計画を指定できるようになりました。これにより query や find で取得する対象ををカスタマイズできるようになります。同じ Entity から様々なデータの見せ方が必要で、時にはパフォーマン…

ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜Java API編〜

前回ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜導入編〜 - A Memorandum の続きで、今回は OrientDB を Java から操作する。 Java API OrientDB のコンポーネントは以下のようになっている。 データベースを操作する際には以下のAPIを利用する…

ドキュメント+グラフのハイブリットNoSQL -> OrientDB 〜導入編〜

OrientDB とは 100% Pure Java の NoSQL データベース ドキュメント指向型 と グラフ型 のデータベースを扱える ライセンスは Apache 2 license NoSQLだけど SQL が使える 組み込み/サーバのどちらもOK Github https://github.com/orientechnologies/orientd…

Java EE の標準バッチAPI -- JSR-352 Batch Applications for the Java Platform --

Java Batchとは JSR-352 Batch Applications for the Java Platform として仕様化されたバッチ処理用 API。 Java EE 7 に取り込まれた。通称 jBatch (日本のみ?)。 構造は Spring Batch とほとんど同じ。標準化されるのは良いことだ。 Job の種類と実行制御…

Gradle Copy タスクのまとめ

Copy タスク Copy タスクは Gradle の core で提供されている。 簡単な Copy タスク例は以下。 task copyConfig(type: Copy) { from 'config' into 'build/config' } gradle copyConfig でタスクを実行すると 'config' ディレクトリにあるファイルを'build/c…

gradle でファイルダウンロードを自動化する

ファイルのダウンロード ダウンロードプラグインを使うと簡単。 plugins { id 'java' id "de.undercouch.download" version "1.2" } repositories { mavenCentral() } task wrapper(type: Wrapper) { gradleVersion = '2.2.1' } task downloadAndUnzip { out…

分速で始める JavaEE 7 〜 Arquillian 〜

前回分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜 - A Memorandumの続き arquillian のテストまでやっときます。 ファイル準備 テスト用のパッケージ追加と arquillian 用の設定ファイルなどを作成しておきます。 mkdir -p src/test/java/example/servic…

分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜

前回 分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜 - A Memorandum の続き。 RESTサービス追加します。 ファイル準備 パッケージ用のディレクトリ追加とファイル作成します。 mkdir -p src/main/java/example/rest touch src/main/java/example/rest/JaxRsA…

分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜

前回の続き 秒速で始める Java EE 7 with Wildfly - A Memorandum せっかくなので wildfly の quickstart をベースに、分速で簡単なアプリにしてみます。 設定ファイル準備 最初に src 以下にディレクトリを掘っておきます。 mkdir -p src/main/java/example…