Java

Effective Java 新旧比較

超小ネタですが、Effective Java の 第2版 と 第3版 を見出しレベルで比較してみました。細かい言い回しの変更は含んでいません。というか、はじめに と付録の 第2版に対応する項目 を見ればだいたい新しい項目は把握できると思われます。が、そこをあえて項…

Java EE (Jakarta EE) 周りの名称や用語のメモ

Java EE (Jakarta EE) 周りで似たような名称や用語によく出会うので、簡単に調べてまとめてみました。個々の詳細や比較については書いてません。また、間違ってる箇所があるかもしれません。他にもいろいろあるので随時追記していこうと思います。たぶん。 J…

JJUGナイトセミナー「JDK 11リリース記念:今知っておくべきJDK 11の重要ポイント」に行ってきた #jjug

先日、JJUGナイトセミナー「JDK 11リリース記念:今知っておくべきJDK 11の重要ポイント」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(詳しくは資料をご参照ください) Java Is Still Free Java Is Still Free の翻訳がつ…

GFUG の「各ベンダーのJDKリリースモデル特集!」に行ってきた #glassfish_jp

先日、GFUG の「各ベンダーのJDKリリースモデル特集!」に行ってきました。簡単に所感をまとめます。 glassfish.doorkeeper.jp メモから抜粋。 Azul Systems - Your Long Term Java Partner Microsoft は Azul 製品の最初のユーザー Zing Java ランタイム Ja…

JJUGナイトセミナー「緊急特集!Javaの無償版はなくならないぞ!」に行ってきた #jjug

JJUGナイトセミナー「Java SE 10 / JDK10 リリース特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます) JDK:新しいリリースモデル解説 JDK: 新しいリリースモデル解説 from オラクルエ…

JJUGナイトセミナー「Java SE 10 / JDK10 リリース特集」に行ってきた #jjug

先日、JJUGナイトセミナー「Java SE 10 / JDK10 リリース特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます ⇒ 2018/03/29 追加しました) JDKリリースモデル変更について 5/17 Java Day…

Spring の @Validated と Bean Validation の javax.validation.groups.Default と groups について

実際の挙動がイメージとちょっと違うのでメモる。 パターン1 バリデーショングループのインタフェースで javax.validation.groups.Default を継承しないパターン。 interface Group {} @NotNull private String foo; @NotNull(groups = Group.class) private…

JJUG CCC 2017 Fall に行ってきた #jjug_ccc

簡単に所感をまとめます。セッション資料はどこかで公開されるはず。 www.java-users.jp Selenide or Geb? あなたはそのときどちらを使う? Selenide Java製WebDriverラッパー DSLによるjQueryライクなセレクタ IDEの補完を活用できる Ajaxなどの非同期処理…

今さらながら Selenide を使ってみる

今さらながら使ってみたけどいい感じ / Selenide: concise UI tests in Java https://t.co/IDTaRXqICV— kntmr (@knt_mr) 2017年10月5日 簡易なテストページを作って試してみました。 サンプルコード 以下、備忘録。 各ブラウザの WebDriver をダウンロードし…

JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきた #jjug

先日、JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます) 実運用して分かった Rabbit MQ の良いところ・気をつけること オープンソー…

java.lang.IllegalArgumentException: Comparison method violates its general contract!

自作の Comparator でリストをソートしたら初めて見るエラーメッセージが。 java.lang.IllegalArgumentException: Comparison method violates its general contract! 再現コード ※Java 1.8.0_92 です。 なかなか再現できずいろいろ試した結果、以下のように…

Spring で Bean Validation のエラーメッセージにフィールド名を埋め込む

エラーメッセージにフィールド名を埋め込む方法を調べたときのメモ。タイトルには Bean Validation と書いていますが、正確には Spring が提供する機能らしい。 調べたときのサンプルコードはこちら。 github.com バリデーション用のアノテーションは以下の…

Oracle 認定資格デジタルバッジ

8月から Oracle 認定資格を保有していることを証明する電子証明書『デジタルバッジ』の提供が開始されたようです。保有資格をオンラインで公開できるものらしい。 education.oracle.com というわけで、Oracle Certified Java Programmer のデジタルバッジを…

Oracle Certified Java Programmer, Gold SE 8 認定資格

1Z0-809-JPN - Java SE 8 Programmer II を受験しました。 結果: 合格 / 正解率 72% (合格ライン: 65%) という訳で『Oracle Certified Java Programmer, Gold SE 8 認定資格』を取得しました。 「中上級者向け資格」とあるので、Java の開発案件を数年程度や…

java.util.function パッケージのインタフェースサマリー (用途別)

公式ドキュメントにインタフェースのサマリーが記載されているが、アルファベット順でイマイチ読み辛いので用途別に並べる。 java.util.function (Java Platform SE 8) Supplier インタフェース インタフェース 説明 抽象メソッド Supplier<T> 結果のサプライヤ</t>…

HttpServletRequest#isRequestedSessionIdFromCookie は初回アクセスのときは false を返す

JSESSIONID とか Cookie とか URL リライティングに関連する備忘録。 ※Servlet API 3.x の話です。 レガシーな Web アプリのちょっとしたリプレース中なんですが、携帯サイトがなくなったり、サイト自体が SSL アクセスされるようになったりしたので、セッシ…

Bean Validation の initialize でアノテーションの属性値をインスタンス変数に保持する件

Bean Validation の isValid は、実装によってスレッドの安全性が保証されるべきって書いてあるけど、initialize でアノテーションのパラメータをインスタンス変数に保持するのはダメなの?という話。 https://t.co/M4uQGmFMuZ— kntmr (@knt_mr) 2017年2月21…

JMockit の部分モックを試す

JMockit の部分モックを試してみる。このあたりの API はバージョンによって変更や削除となることがあるため要注意。ちなみに今回試したバージョンは以下。 JMockit 1.30 JUnit 4.12 gist.github.com メソッドをモック化する場合は、Expectations の中でモッ…

java.io.InputStream を複数のファイル読み込みで共有しない

java.util.zip.ZipOutputStream による ZIP アーカイブについて調べてたら、以下のようなコードを見かけました。(適当に抜粋してます) gist.github.com 単純に、ディレクトリ配下のファイルを commons-io で取得して、ZIP にアーカイブするコードです。これ…

Spring Boot + Spring Batch + Java 6 でバッチを実装した話

今回、Spring Boot + Spring Batch + Java 6 でバッチを実装する機会があったので、もろもろを備忘録としてまとめる。 開発環境 Spring Tool Suite v3.8.3 を使用。Spring Starter Project からプロジェクトを作成する。 Java Version 1.6 Spring Boot 1.4.3…

Apache HttpClient の HttpRequestRetryHandler でリトライをカスタマイズするサンプル

Apache HttpClient の DefaultHttpRequestRetryHandler は ConnectTimeoutException のときはリトライしない - kntmr-blog これの続き。 雑ですが、HttpRequestRetryHandler でリトライをカスタマイズするサンプルを書いてみました。ついでにリトライの間隔…

Apache HttpClient の DefaultHttpRequestRetryHandler は ConnectTimeoutException のときはリトライしない

Apache HttpClient はデフォルトで3回リトライする機能を持っています。しかし、コネクションタイムアウト (ConnectTimeoutException) のときはリトライしません。すべてドキュメントに書いてあることなんですが、そのあたりを調べたときのメモ。 ※以下は Ap…

JJUG CCC 2016 Fall に行ってきた

JJUG CCC 2016 Fall に行ってきました。簡単に所感をまとめます。 [CCC2016Fall]Be a great engineer! #jjug_ccc #ccc_a1 // Speaker Deck 「こんなセッションを聞きに来てる時点でダメ」とのこと 技術の本質を考える 適材適所で使い分ける 技術には必ずニー…

djUnit を Eclipse 4.5 (mars) と Maven2 で使えるようにする

djUnit 自体、2011年頃から更新されていないため、もはや需要がないかもしれませんが、必要に迫られて調べました。 Eclipse 4.5 (mars) Eclipse 4.x 以降ではプラグインの仕組みが変更されているようで、古い形式のプラグインが動作しません。よって、古い形…

Oracle Java Archive

Java SE (JDK/JRE) アーカイブページ Oracle Java Archive | Oracle Technology Network | Oracle

JMockit で System.currentTimeMillis を Mock 化する

JMockit で java.util.Calendar のメソッドを Mock 化する - kntmr-blog 上記のエントリでは java.util.Calendar#getTimeInMillis を Mock 化してミリ秒を取得する例を挙げましたが、そもそもミリ秒を取得するだけなら java.lang.System#currentTimeMillis …

Oracle Certified Java Programmer, Silver SE 8 認定資格

1Z0-808-JPN - Java SE 8 Programmer I を受験しました。 結果: 合格 / 正解率 92% (合格ライン: 65%) という訳で『Oracle Certified Java Programmer, Silver SE 8 認定資格』を取得しました。 受験対象は「開発初心者向け」とあるので、Java の開発案件を1…

InputStream のカスタム Matcher

なんとなく思い付きで書いた java.io.InputStream のオレオレ Matcher です。あまり使い道はなさそう...。(単純にカスタム Matcher を書いてみたかっただけ) InputStream を byte 配列に読み込んで Arrays.equals で比較します。読み込んだ配列をメンバに保…

JMockit の Mock 化する方法あれこれ

JMockit で java.util.Calendar のメソッドを Mock 化する - kntmr-blog これの続き。 以下、テスト対象クラスとして単純に文字列を連結して返すだけのクラスを用意。 public class FooService { BarService barService; public String execute(String arg) …

JMockit で java.util.Calendar のメソッドを Mock 化する

必要に迫られて調べました。 JMockit 1.26 JUnit 4.12 以下は java.util.Calendar#getTimeInMillis の場合。 final long expected = 1234567890000L; new MockUp<Calendar>() { @Mock public long getTimeInMillis() { return expected; } }; long actual = Calendar.g</calendar>…