mike-neckのブログ

JavaかJavaFXかJavaEE(なんかJava8が多め)

Java

チェッカーフレームワーク(org.jetbrains:annotation)の使い方メモ

IntelliJ IDEAとかAndroid Studioを使っている人は、メソッドの横の方に@が書かれているのを見たことがあるかと思います。 (Android Studioで実際に表示されるのかは知らないけど、ツイッターで観測している限りアンドロイダーの人で「この@Contractって何」…

Java 8u60で、Mapの初期化とかがすごい楽になってる件

夜中に8/15頃のツイートが回ってきた。 Java 8u60 adds reflection on lambda param names DSLs https://t.co/cflxFK468e Hash-Literals https://t.co/5rOCrrckcB pic.twitter.com/NEzj4X3Bt1— Benjamin Weber (@benjiweber) 2015, 8月 16 曰く Java8u60でラ…

最も正しくないOptionalの使い方

本記事ではJava8から入ったOptionalの最も正しくない使い方を解説します。 なお、これが正しいか正しくないかは読者の方の個人的なセンスにお任せします。 正しくない使い方 入力されたBeanの検証をするときに、if(condition1) { return false; } else if (c…

比較的新しいJava用のJSONライブラリーGenson

標記の件について、というわけでもないのですが、JSONPの実装ライブラリーを調べていた所、Gensonなるライブラリーがあるのを見つけました。 謳い文句としては 簡単に使えてしかもパワフル 他のJavaエコシステムとも協調性がある JSR353(JSONP)実装 JAXBとも…

KullaでJavaFXの操作を対話的にやってみる

Kullaネタ JavaFXなどのGUIのプログラムをゴリゴリと書いている時に、ふとこのオブジェクトを少し動かしたらどうなるんだろうと気になることがあります。実際にやってみようとすると、コードを書いてアプリケーションを起動して実際の動きを見て、「ああ、な…

Kullaとsidenで簡易Webサーバーを走らせてみる

JavaのREPLの話は前回したとおりです。 JavaにREPLがやってくる - mike-neckのブログmike-neck.hatenadiary.com で、この記事の最後のほうでKullaに簡易的なWebサーバーをさせてみるのもありかもしれない的なことを書いたので、実際にやってみました。ただ、…

JavaにREPLがやってくる

表記の通り、今(2015/06/26)現在KullaというプロジェクトでREPL機能が開発されていて、Java 9で(今更ながら)搭載される予定です(jshellと呼ばれるらしい)。 以前はこのJava REPLを試すのが大変だった(@zephiransasさんのブログ記事を参照)ようですが、今はか…

JJUG ナイトセミナー「Reactive Streams特集」に行ってきた #JJUG

眠いし、最近Java書いてないし、非同期とかあまりつかってないので、あまりピンとこない分野ですので、雑に書きます。 で、件の勉強会に行きました。 【東京】JJUG ナイトセミナー 「Reactive Streams特集」jjug.doorkeeper.jp 感想概要 Reactiveホゲホゲに…

#渋谷Java に行ってきた

表題のとおりです。 第十一回 #渋谷java (2015/05/30 14:00〜)shibuya-java.connpass.com で、発表してきました。 On stream-lazy-computation from mike_neck Mochida www.slideshare.net 実際のプレゼンの内容はもう少し丁寧かつ雑な資料でやりました。 Ja…

JJUG ナイトセミナー 「GS Collections 道場」行ってきた #jjug

表記のとおりです。なお、本文はハンズオンの片手間で書いています。 【東京】JJUG ナイトセミナー 「GS Collections 道場」jjug.doorkeeper.jp 勉強会の内容的には手を動かしている時間が長かったので、ツイートは少なめなので、多分トゥゲッターはないと思…

Streamパイプラインを1つ生成するのに必要なメモリを求めてみる

元になった記事はこれ。 Java 8 Streamの挙動を調べたった - mike-neckのブログmike-neck.hatenadiary.com パイプライン一つ一つがリンクドリスト状のStreamのインスタンスで構成されているということで、どれくらいの長さのストリームパイプラインを書くとO…

Javaでできることが云々

あまり火に油を注ぐようなことはしたくないし、議論されていることの内容が僕の頭で理解できるレベルを超えているので、あまり書きたくはないけど、まあ雑感という感じで。 「ScalaでできることJavaでできること以上のことはできない」的なツイートの後、ま…

Java 8 Streamの挙動を調べたった

表記の件について、JavaのListから作るStreamは操作中に変更をするとその後の挙動についてなんら結果を保証しないので、ListからStreamを作った場合は、変更をしないか、あるいは不可変なListに変換してから作るのが良いです。 と、書いておいてからなのです…

Javaラムダで竹内関数を書こう

『ふつうのHaskell』を読んでて竹内関数というのが出てきたので、それをJavaでやってみようと思った。 ちなみに竹内関数とは 竹内関数(たけうちかんすう)は、プログラミング言語処理系のベンチマークなどに使われる、再帰的に定義された関数である。 Wikip…

JUnit4.12時代のParameterized Test

JUnitに追いつこう(2周回遅れ、男子一万メートルだと2分近くの差、箱根駅伝なら4分40秒の差)という趣旨のエントリーです。 要約はこっちを見るほうが早かった JUnit 4.12の新機能紹介まとめ - うさぎ組kyon-mm.hatenablog.com JUnit4.12に追いつこう(周回遅…

Groovy2.4.3でJava8のStreamとかOptionalの演算もClosureでできるようになってた件

表記のとおりです。 Java8のFunctionalInterface群は使い勝手がよくて、そっちを主に使っていましたが、GroovyもJava8の言語仕様対応を進めてて、Groovy2.4.3から(それ以前から?)は def func = [apply: {s -> s.size()}] as Function<String, Integer> などと書かなくてもClo</string,>…

JJUG ナイトセミナー 「Javaのプログラムはどうやって動いているの」で正解者が少なかったあの問題をバイトコードから見てみる #jjug

昨日のJJUG ナイトセミナーで出題されて正解者が少なかったAnniversary.javaの問題をjavapして、どのようにコードが実行されているか見てみようというだけのエントリーです。 なお、 さくらばさん「実はこれてらだよしおも間違えました」 #jjug #てらだよし…

JJUG ナイトセミナー 「Javaのプログラムはどうやって動いているの」に行ってきた #jjug

上記のとおりです。 【東京】【初学者向け】JJUG ナイトセミナ 「Javaのプログラムはどうやって動いているの?」jjug.doorkeeper.jp ツイートが下記の通りまとめられています。 【東京】【初学者向け】JJUG ナイトセミナ 「Javaのプログラムはどうやって動い…

WildFlyでh2データベースを使う【改】

この前こんな記事書いた。 WildFlyでh2データベースを使う - mike-neckのブログmike-neck.hatenadiary.com 早速JPA使ったアプリを載せたところ(今頃!?遅っ)、次のようなよくわからんメッセージが… [2015-04-23 08:55:32,221] Artifact web: Error during a…

WildFlyでh2データベースを使う

本文が長いので、結論に急ぎたい人はこちら 経緯 JSFがよくわからんので、適当なサンプルを書いてglassfishで実行しようとしたら、 $ bin/asadmin start-domain sample Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 JVM failed to start: com.sun.enterp…

Gs-Collections code kataをブートするgradleスクリプト作った

GS Collections code kataは一回やったら終わりという感じではなくて、何度もやるみたいなことが書いてあったけど、毎回ダウンロードしてきて、解凍して、IDEで取り込んでってやるのが煩わしかったので、表記のスクリプトというか何度でもやり直しのできるや…

IntelliJ IDEAでStringJoinerを使ったtoString()のテンプレートを作った

表記の通り。 StringJoinerでtoString()を作るテンプレートが欲しかったので作った。 テンプレートは次のような感じ public String toString() { #set($i = 0) #foreach($m in $members) #if($i == 0) return new StringJoiner(", ", "$classname:[", "]") #…

Enclosedと継承を使って特定のメソッドだけAfterとか実行させない

こんなのがあったから、マジクソレス。 眠いだけなので、害意はありません。 Kotlinの話と見せかけてJUnitの話をあげとく/ 【JUnit】出来るの?かもしれない@Aftrer処理をメソッド単位でSkipする方法 http://t.co/5YBT6r3M70— やんく (@yy_yank) 2015, 3月 2…

型引数からnewしたい時のおすすめの方法をためしてみた

数日前になぎせさんがツイッターで 型引数からその型のオブジェクトを作りたいときにはSupplierを渡すのがおすすめです 的なことをつぶやいていたので、試しにやってみた。 (どのツイートだったか探してたけど見つからなかったことは秘密です) 【2015/03/11 …

Java 8 で追加された StringJoiner が意外と便利っぽい

表記のとおりです。 java.util.StringJoinerはString.join(CharSequence, CharSequence...)などで用いられているクラスですが、そのまま使ってもなかなか便利そうです。 StringJoiner.metaClass.define { leftShift = {Object o -> delegate.add(o.toString(…

Servlet3.1のファイルアップロードが思いの外簡単だった件

こんにちわ、みけです。 Servlet3.0のファイルアップロードを触ったことがなかったので、ためしにさわってみました。 作ろうとしたもの ファイルをアップロードできる 送信できるファイルのサイズは1Mまで 送られてきたファイルの名前はyyyy-MM-dd-hh-mm-ss-…

【書評】『Javaプログラマーなら習得しておきたいJava SE8実践プログラミング』

こんにちわ、みけです。 つい先日に二章の書評を書きましたが、『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』の全体の書評です。 前提 書評というのは書くのが難しいと思っています。というのも、書評を書く人のコンテキストと書…

ラムダでいろいろやってたら、コンパイラーのバグにハマった件

こんにちわ、みけです。 表題の件ですが、すでにOpenJDKにバグ登録されて、ステータスがfixedになっているのですが、 まあしらなかったのでハマってしまいました。 JDK-8054210 NullPointerException when compiling specific code. バグの出るコード例 タイ…

JavaOne2014報告会Tokyoに参加してきた #j1jp

こんにちわ、みけです。 JavaOne 2014 サンフランシスコ報告会 Tokyoが 昨日(2014/10/18)開催されたので行ってきました。 詳細な内容は@kikutaro_さんが書いていますし、togetterにツイートのまとめなどがありますので、僕は適当なポエムを綴ります。 基調講…

【書評】Java SE8 実践プログラミング - 2章のみ

こんにちわ、みけです。 数々の技術書の翻訳で有名な柴田芳樹さんが 『Java SE8 実践プログラミング』 の書評を募集していたので、応募しました。 現在の進捗はこんな感じですが、 1章「ラムダ式とは」(未読) 2章「ストリームAPIの使い方」(読了) 3章「ラム…