Java
5月24日から26日にかけて、湯布院!で開催されたJavaのアンカンファレンスJOnsen 2019に参加しました。 湯布院! 温泉地らしい猥雑なところはなくて、農村に温泉宿とちょっとした目抜き通りができました、という感じです。公衆浴場もいくつかあったのですが…
5月18日に開催されたJJUG CCC 2019にスタッフとして参加&セッションで喋ってきました。これまでで最多かそれに近い、1,200人以上が参加する巨大イベントになりました。熱気がすごかった。CCCがでっかくなったということで、今回の総会では、CCCの運営を専門…
2月27日(水)に開催したJJUGナイトセミナー「JVM言語を作ろう! GraalVMで遊ぼう!」に登壇しました。セミナーの様子についてはmike-neckさんの記事をご参考ください。無茶苦茶に楽しいイベントでした。 JJUG ナイトセミナー 「JVM言語を作ろう! GraalVMで…
Java女子部で、Java SE 8から11にかけての変動について喋らせていただきました。 イベントページ スライド: Java SE 8から11で何が起きた?一気におさらいしてみよう! 特定の技術に限らない、Java SE全体の動向の話をするのははじめての経験だったので、大…
タスクの完了状態として、 1. 正常に値を戻した場合 2. 例外を投げた場合 3. まだ完了していない場合 の3種類があるとします。Haskellであれば代数的データ型、OCamlであればvariant型で表すところです。Javaは、このような型を言語としては表せませんが、Vi…
12月27日のJJUGナイトセミナーLT大会に参加しました(LT資料)。会場片付けの際、マルチスレッド処理に関して発表された @hiroga_cc さんと、ForkJoinPoolとThreadPoolExecutorの使い分けについて、少しだけおしゃべりしました。その場では頭がこんがらがっ…
11月18日に開催されたJJUG CCC 2017 Fallに、スタッフとして参加、およびセッションでしゃべってきました。一日中セッション部屋担当で、なんかアナウンスしたり、「N分前」の紙を出したり、Twitterのハッシュタグを賑わしたりしていました。 AsciiDocとPlan…
Java SE 9のモジュール・システムには、古いコードベースからの移行のために、二種類の特殊なモジュールが存在します。自動モジュール (automatic module) と、無名モジュール (unnamed module) のふたつです。自動モジュールは、典型的には、モジュール・レ…
Java SE 9のモジュール・システム(Jigsaw)はコンパイル時と実行時の両方で機能します。実行時には、Java SE 8以前から存在するクラスローダーの機構とうまく帳尻を合わせて、既存のアプリケーションを壊さないようにする必要があります。結果として、両者…
The Java SE 9 module system, or Jigsaw, works at both compile-time and run-time. At run-time, Jigsaw must work well together with the old class loader mechanism, without breaking existing applications. It has resulted odd and subtle relati…
About the library Bootiful SQL Template is an O/R mapper library which acts as a thin wrapper to Spring JdbcTemplate. The library adds following functionalities. SQL files Moderate facade methods such as forObject, forList and update Limit…
言語やライブラリによっては、printf系関数の出力がロケールに依存する場合があります。たとえば、ロケールによっては小数点がカンマで出力される場合があります。手元の各環境で調べたところ、次のとおりでした。 ロケールに依存する: POSIX, Java, Lua ロ…
Javaの正規表現で下位サロゲートコードにマッチするパターンを書くと、完全なサロゲートペアの後半16ビットにマッチしてしまうことがあります。少なくとも、次のバージョンはそのような挙動を示します。 Oracle Hotspot 1.8.0_72 OpenJDK 1.8.0_66 詳細 次の…
Regex patterns or partial patterns representing low surrogate codes wrongly match the latter half of complete surrogate pairs. At least the following JRE versions are affected. Oracle Hotspot 1.8.0_72 OpenJDK 1.8.0_66 Description The follo…
10月14日(水)のJJUGナイトセミナーでJavaのログ出力について喋りました。 Javaのログ出力: 道具と考え方 最近はFluentdやELKスタック (ElasticSearch + Logstash + Kibana) の流行で、ログの収集・可視化についてはよく語られているようです。一方で、なぜ…
渋谷JVMという集会の案内を見て、しばらく流していたのですが、実はJVM言語の集まりということが分かったので、Kinkの宣伝のためLT枠に滑り込みました。CCCの懇親会LTを使い回して、午前中には資料を完成させました。用意周到です。本編はScala, Clojure, Gr…
4月11日にJJUG CCC 2015 Springが開催されました。だいぶ遅くなりましたが、以下簡単にレポートです。午前中はほぼ受付やってました。午後はCDの部屋に張り付いて、N分前の札を出したりなんかしていました。ということで、聞いたセッションは次のとおりです…
Template Methodパターン+Factory Methodパターンのプログラムにラムダ式を適用するにはどうすれば良いのかしら、という記事を掲載していただきました。これで連載は最終回となります。以下、各回の記事です。 第1回 ラムダ式でCommandパターンで書かれたコ…
少し遅くなりましたが、Obseverパターンのプログラムはラムダ式でこんな風に書けるよ!という記事を掲載していただきました。 Observerパターンをラムダ式で置き換える 〜 オブザーバオブジェクトはラムダ式によって簡潔に生成できる 次回が最終回です。
Oracle JDKの7u2以降、GCログがローテーションできるようになりました。また、JDK8および、JDK7のPSUリリース*1である7u76では、GCログのファイル名にプロセス番号と日時が含められるようになりました。7u76以外、特に目新しい話ではありませんが、備忘のた…
Strategyパターンのプログラムはラムダ式でこんな風に書けるよ!という記事を掲載していただきました。 ラムダ式でStrategyパターンで実装されたコードをシンプルにする 〜 そこから見えてくるストラテジオブジェクトの本質 ラムダ式の記事というよりも、デ…
CodeZineで、ラムダ式を使ったJavaプログラムの設計に関する連載を始めました。オブジェクト指向言語のデザインパターンのいくつかは、ラムダ式(というか無名関数一般)を使えば、パターンを意識するまでもなく書けるよ、という内容です。初回はCommandパタ…
Javaによる関数型プログラミング ―Java 8ラムダ式とStream作者: Venkat Subramaniam,株式会社プログラミングシステム社出版社/メーカー: オライリージャパン発売日: 2014/10/24メディア: 単行本(ソフトカバー)この商品を含むブログ (3件) を見るラムダ式を…
Javaのラムダ式で再帰関数を書くのはちょっと面倒です。例として、フィボナッチ数列のN番目の項を再帰的に計算する関数(以降フィボナッチ関数)を考えます*1。次のコードはエラーになってしまいます。 IntUnaryOperator fib = n -> n <= 1 ? 1 : fib.applyA…
id:miyakawa_taku:20140609:1402320680 の続きです。Java SE 8 では Iterable インタフェースに forEach メソッドが用意されました。いわゆる内部イテレータで、通常は次のようにラムダ式をともなって使います。 List<String> list = ...; list.forEach(str -> Syste</string>…
つい先だって知ったのですが、 Java のメソッドの throws 節では型変数が使えます。 8.4.6 Method throws / Java Language Specification これによって、投げる可能性のある例外の型が使い手側で変えられるようなメソッドを書くことができます。たとえば次の…
Java SE 8 では、デフォルトメソッドが追加されたため、メソッド継承のルールが新しくなりました。以下に、 Java SE 8 でのメソッド継承のルールを一通りまとめます。 前提となる概念 型消去 (type erasure) シグネチャ (signature) サブシグネチャ (subsign…
Java 8 で導入される新しい Date & Time API に関する良い記事です。 *1 Java8の日付および時刻処理(Date/Time API(JSR-310))の紹介と利用指針 | ありえるえりあ ですが、冒頭のラムダ式に関する記述に若干の問題があります。 ひとつだけラムダ式について言…
JVM は多値が素直に扱えないよ、という話。多値とは、式が複数 (>=2) の値を結果とすることです。 Go 言語では積極的に使われているみたいです。求める結果と、エラー値を、併せて戻す、みたいに。 file, error := os.Open(name) if error != nil { return e…
7月22日の JJUG ナイトセミナーで Java SE 8 のラムダ式について喋りました。櫻庭さんが基礎。私はラムダのインスタンス化の詳細について喋りました。 2013/07/22(#jjug)JJUG Night Seminar ~ Inside Lambda (Togetter) Project Lambdaの基礎 (櫻庭さんの資…