Java における value objects
   1 min read
Java 標準 API のドキュメントには、 "値ベース・クラス" というページがあります: https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/doc-files/ValueBased.html 機械翻訳っぽくて分かりづらい箇所もあるので、併せて
Hello Project Panama, on Java17
   4 min read
はじめに Hello Project Panama – 発火後忘失 で、 Project Panama (リンク1, リンク2) の機能を利用して、 Java から Rust を呼び出してみました。 当時(Java14)は Project Panama 用にビルド
SWTのFindWindowはもはや存在しない
   1 min read
元ネタ: 古い Eclipse の起動時に UnsatisfiedLinkError が発生する - スタック・オーバーフロー いにしえのJava世界では、Win32APIにアクセスするためにSWTを利用し
List#contains(null)は使わないほうが良い
   1 min read
List(などのコレクション)が要素に null を含むかどうかの判定に、 contains(null) を利用すると NullPointerException が発生することがあります。 リファレンスには次のようにあります
CompletableFuture覚え書き
   1 min read
CompletableFuture の一連の非同期処理 ほげAsync は、デフォルトでは ForkJoinPool.commonPool() という ExecutorService で実行されます。 そしてこの ExecutorService のワーカスレッドはデーモンスレッドであるため、非デ
Hello, JSF
   2 min read
はじめに JSFを少し触ってみようと思ったのですが、もはやロストテクノロジーでどう始めるのかすらドキュメントを探すのが大変… 今回はかろうじてこ
Maven Enforcer Pluginの実行をスキップする
   1 min read
とあるMavenプロジェクトを mvn clean install しようとしたところ、次のエラーになり正常終了しませんでした。 [WARNING] Rule 0: org.apache.maven.plugins.enforcer.BannedRepositories failed with message: Current maven session contains banned repository urls, please double check your pom or settings.xml: central
finalと実質finalの違い
   1 min read
https://ja.stackoverflow.com/a/63099/2808 を見ていて気づいたのですが、 実質final というのは脳内(コンパイラ)で final を補完してくれる、というような処理が行われるわけではないのですね
Hello Project Panama
   3 min read
追記: Hello Project Panama, on Java17 に Java17 版を記載しました。 はじめに 今個人的にすごく知りたいのはこちらです。ご回答よろしくお願いします!!!! 動的確保したメモリー
LINE Messaging API を試してみる
   2 min read
準備 Spring Boot セットアップ https://start.spring.io/ でテンプレートを作成して次の依存関係を追加します。 <dependency> <groupId>com.linecorp.bot</groupId> <artifactId>line-bot-spring-boot</artifactId> <version>2.7.0</version> </dependency> リポジトリ: https://github.com/line/line-bot-sdk-java/tree/master/line-bot-spring-boot Heroku セットアップ 今回は linebotbeta というアプリケーション
SimpleDateFormat もこれもうわかんねぇな
   1 min read
結果 1.8 H 11 平成 環境 1.8 java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) 11 openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode) コード import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Date; import java.util.Locale; public class Main { public static void main(final String[] args) {
%s に null を渡したらどうなるんだっけ
   1 min read
こたえ 文字列 null が出力される。 コード final String text = null; System.out.printf("%s", text); 参考 java.util.Formatter For category General, Character, Numberic, Integral and Date/Time conversion, unless otherwise specified, if the argument arg is null, then the result is “null”. リンク先の表にある通り、 s はカテゴリ&q
DateTimeFormatter とかこれもうわかんねぇな
   1 min read
コード import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; public class App { private static String format(final LocalDate date, final String pattern) { return date.format(DateTimeFormatter.ofPattern(pattern, Locale.JAPAN)); } public static void main(final String[] args) { final LocalDate today = LocalDate.of(2019, 6, 4); System.out.println(format(today, "M")); System.out.println(format(today, "MM")); System.out.println(format(today, "MMM")); System.out.println(format(today, "MMMM")); System.out.println(format(today, "MMMMM")); System.out.println(format(today, "MMMMMM")); } } 結果 パターン 結果 M 6 MM 06 MMM 6 月
Hibernate で CHAR を String にマップする
   1 min read
例えば、生 JDBC でchar型カラムのクエリを書くとString型にマップされます final Connection connection = DriverManager.getConnection(...); final Statement statement = connection.createStatement(); final ResultSet resultSet = statement.executeQuery("select char_column from foo_table"); // java.lang.String resultSet.getMetaData().getColumnClassName(1); が、Hibernate
OpenJDK11をWindowsで自前ビルドする
   3 min read
Java の有償化ってより身近なところでは GPL 化と言った方が現状に即してるな、と思っています。 それはともかく、何となく OpenJDK をデバッグ情報付きでビルドした
M2_HOMEは不要
   1 min read
M2_HOME は削除されました。 MNGSITE-283 Remove M2_HOME from documentation MNG-5607 Don’t use M2_HOME in mvn shell/command scripts anymore 3.5.0 リリースノート “Based on problems in using M2_HOME related to different Maven versions installed and to simplify things, the usage of M2_HOME has been removed and is not supported any more MNG-5823, MNG-5836, MNG-5607.” (変更 commit) 敢え
Undertow上でJSF実現
   1 min read
手順 FacesInitializer#onStartupでやっていることを自力で書く 標準パス(WEB-INF/classes)に無いので、M
Tomcat上でJSF実現
   1 min read
非 JavaEE なサーブレットコンテナ上で JSF を実行するように変更する手順。 TL;DR Mojarra を依存関係に含める JSF リソースを javax.faces.webapp.FacesServlet にマップするよう web.xml で設定する 実装例 https://github.com/yukihane/hello-jsf/tree/feature/server/tomcat feature/server/tomcat ブラ
Building Java Project
   6 min read
はじめに 他者が作成したプログラムにちょっと変更を加えて使いたい その言語は未経験だけれど、コードの変更自体は検索したり周辺コードのコピペで何と