java

JFRをBigQuery/Metabaseのオレオレダッシュボードで可視化する

JDK Flight Recorderを皆さん使っていますか? JDK 9からAPIが整備されJDK 11からOpenJDKに寄贈されたので商用ライセンスを持っていなくても本番で自由に使えるようになりました。新しいJFRではJMC以外のツールとも連携できるので今回はBigQuery/Metabaseと…

JDK Flight Recorderのアーキテクチャ概要

はじめに JFRにおける「イベント」 イベントタイプとサンプリング データフォーマット 循環バッファとデータフロー リポジトリとJFRファイル名 JFRの開始とJFRファイルダンプ まとめ 参考 はじめに JDK Flight Recorder(JFR)はJavaで利用できる常時本番適用…

Oracle Code One 2019に参加してきました

JDKの新機能と進捗 GraalVM Jakarata EEとEclipse MicroProfile ExadataとPersistence Memory Oracle Cloudの戦略 まとめ ブログに書くの忘れてましたが、去年に引き続き今年もOracle Code One/Oracle Open Worldに参加してきました。 すでにキーノートとか…

サーバレスなバッチを管理するためのKudaを作成しました

概要 こちらの記事でも書いたのですが、小さなバッチを運用するにはCloud Runのようなコンテナベースのサーバレス環境はとても向いています。 バッチサーバとしてインスタンスを常駐しておく必要が無いのでコスト面でも有利ですし、横にスケールさせやすいと…

Serverless時代のJavaEEコンテナ - Quarkus

はじめに JavaEEコンテナの世代と移り変わり Quarkus まとめ 参考 はじめに Quarkusをご存知ですか? Redhat社が出した爆速のJavaEEコンテナです。 Publickeyの記事でも紹介されていますがGraalVMのnative-imageでコンパイルされるため、JAX-RSやCDI、JPAや1…

Oracle Code One 2018に参加してきました

JavaOneには結局ついぞ参加する機会がなかった私ですが、Oracle Code Oneになったのを契機にというかたまたまサンフランシスコ近辺に住んでるので参加してきました! 紆余曲折あって会社のブース展示とかの手伝いもしてたので、セッションを十全に回れた訳で…

JavaでのUT作成基準を整理してみた

チームが小さいとよしなにですむのだけど、大人数になってくると明文化しとかないと結局テストが書かれないのでUTの作成基準とかを整理してみた。 自分のチームで使う想定のイメージで書いてみたけど、体制やプロダクトの性質によっても変わってくるだろうし…

Java8を便利にするためのSF(少しFunctional)なライブラリJL2を作ってみた

Java8をもう少しだけ便利に使うための少しFunctionalなライブラリを書いてみました。 github.com Java8からStream APIが増えて随分コーディングが楽になったんですが、まだまだ不満があります。 その一つが多値を扱うTupleが無いこと。StreamAPIでmapを使っ…

Javaの分散トレーシングとかAPMとか実行時ログとか

メモ的まとめ APM blog.takipi.com www.itcentralstation.com http://www.hawkular.org/hawkular-apm/www.hawkular.org github.com 分散トレーシング http://zipkin.io/zipkin.io http://opentracing.io/opentracing.io ログ系 builder.japan.zdnet.com docs…

問い:Java 8のStream APIは業務でどんな時に使うの? 答え:あなたがfor文使いたい時

※ サンプルがJDK7までとJDK8までで意味が変わっていてわかりにくいという指摘があったので、少し直しました。 ※ boxedを使う書き方だと無駄なAutoboxingが走るとの指摘を頂きましたのでmapToObjを利用するように変えました。 Java8の目玉機能の一つにStream …

Java Day Tokyo 2014に参加してきました

勉強会はブログに参加記事を書くまでが勉強会だと以前習ったので、昨日参加してきたJava Day Tokyoの感想とか書いときます。 Java SE 8がちょうどでたばかりということもあって、今回はほとんどのセッションがJava8祭りでした。 https://oj-events.jp/public…

Macで複数バージョのJavaを切り替えたい

JDK8でたよーって、ことで色々触っている今日このごろ。 やっぱラムダ式とか使えるようになって大分普通になった感じ。 で、ここで問題になるのがまだ全面的にJava8に移行したわけでもないのでJava7とどう共存して環境を切り替えるか。たぶん、Java使ってい…

Javaを使うメリットはありますか? はい、それはもちろんあるに決まってます!

/.Jに聞け:Javaを使うメリットは? | スラッシュドット・ジャパン デベロッパー え、ありますよね? Webアプリに限っても。 というか、上げてるデメリットが現代的じゃないなぁ... 個人的には少数精鋭チームを作れてないならJavaはかなり有りな選択だと思っ…

JUnitで現在時刻が関わるテストを解いてみた

これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd に書いてある問題がUnitTestを書いていく上での教材にとても良さそうだったので、…

レガシーコードも年末に向けて大掃除! - jMockitを使おう

さて、今年もあと僅かになりましたが、この1年間で溜まりに溜まったコードの負債を大掃除してみませんか? レガシーコードだから書くのが大変? プロダクト側を改修したいけどそもそもテストが無いから改修が怖い? ですよねー。 なのでjMockitを使って既存…

Java Mission Control + Flight RecorderをGlassFish4で使ってみた

Java SE 7 Update 40が先日でました。なんとこの子はついに待望のFlight Recorder(ちゃんとした版)が実装されたのですよ! 本番環境の障害調査用にと個人的にはJRockitの機能がHotspotに統合されるHotRockitプロジェクトで一番注目してた機能でした。 一応…

Java向けの障害解析ツールHeapStatsをGlassFishに入れてみた

こちらで紹介されているJava向けの障害解析ツールHeapStatsが便利そうなので導入してみた。 HeapStats で GlassFish 4 障害解析 #glassfishjp from Yuji Kubota 環境はGlassFish3.1 + JDK7 + CentOS 6.3(32bit) まずは、運用環境にrpmを使ってインストール. …

JavaでHTTPアクセスを記録/再生してテスト時に使える、Betamaxを試してみた

id:ikikko さんのこちらの記事を参考にJavaでHTTPアクセスを記録/再生してテスト時に使える、Betamaxを試してみました。 このBetamaxというのはその名の通り、テープに記録/再生するものなわけですが、その対象が映像ではなくHTTPアクセスだと言うことです。…

GlassFishの監視JMXを取得してみた - その2

その1でGlassFishのリソースをJRuby使ってJMX経由を取得するサンプルを書いたので、 それを元にmongodbに放り込むスクリプトを作ってみた。 https://github.com/koduki/glassfish_monitor まだ、エラーハンドリングとか全然書いてないけど、とりあえずは動く…

GlassFishの監視JMXを取得してみた - その1

いくつかのシステムをGlassFishで運用しているんだけど、障害があった時とか、アクセスと負荷の相関とかを統計出来るように、監視オプションを有効にしてみた。 単に、それだけだと、管理コンソールでリアルタイムに現在のステータスがわかるだけで嬉しくな…

JPAでちょっと嵌った話。

最近、JPAを使うことがあったのですが、慣れてなくて結構ハマってしまいました。 高機能だし、面倒なことを簡単に書ける素敵な感じなのですが、普通のことを普通にかけない残念ちゃんでもあります。 メモがてら嵌ったこと書いてきます。表題は当時の気持ちで…

Androidでレガシーコードを書き続けないためのたった1つの方法

答え:テストできるように作る 周りでAndroid開発してる話を聞くのですが、どうもテストがしづらかったり、修正が大変だったりする模様。ここを直してあそこがバグるみたいな。 本屋で参考になりそうな本を探すも、入門系かリファレンス系が殆どで、「どうい…

StAXとDOMのパフォーマンスを計測してみた

今まで、javaでXMLを利用するときは専らDOM系、必要に応じてSAXにチューニングしてたんだけど、今さらながらStAXを使ってみた。 StAXはpull型のパーサーで比較的記述製が高く、かつ高速と評判。試しに書いてみたけど、少なくともJDKの素のDOMと比べるなら記…

JavaEEでもTDD - JPA編 - 2

こっちの続きです。 環境構築はできたと思うので、本命のTDD入ります。まだの人は前回の記事見るか、githubからできたものをを落としてください。 1. 記事の投稿をしよう! まずは、記事の投稿機能を実装します。現在、ArticleにはIdしか存在しないので、タ…

JavaEEでもTDD - JPA編 - 1

JavaEEでUnitTest書く方法はモックを使うとかglassfish-embedded使うとか色々合ったわけですが、先日コンテナ非依存のテストツールであるArquillianがJBossより正式リリースしたので、試して見ることにしました。まずは、こないだ痛い目を見たのでJPA周りをT…

コーディングのアンチパターンを自分なりにまとめてみた

コードレビューをしてると「なんじゃこりゃぁ!?」というコードにまれに出くわします。既存のコードとの兼ね合いでなってる場合は、致し方無くても、新規コードまで真似するのは良くないですよね。 そろそろ新人エンジニアの中には「はじめてのこーでぃんぐ…

BufferedReaderのIterableなラッパーを書いてみた

XMLやらJSONやら構造化テキスト万歳の時代だけど、レガシーなシステムとの連携や何より作成のしやすさでCSVを扱う機会はまだまだ多いですよね。 で、自分が扱うCSVは大抵「Header」「Body」「Footer」に分かれます。このFooterが曲者。 Listにしてしまえば、…

JPA 2.0を触ってみた。

iBatisの開発もほぼ終了しちゃったので、検証がてらJPAを触ってみた。どうせ、JavaEE6は使ってるし、これが使えるならベスト。 Hibarnateをはるか昔に使ったことはあるのだけど、基本的なところは変わらずっぽいかな。 もちろん、細かいところは大きく変わっ…

PKUを久しぶりに解いてみる

後輩の教育向け & 自分のリハビリ(+英語学習)のためにPKUの問題を解いていくことにした。 まずは超かんたんなところということで、Numeral System(2685)あたりを。 昔といたことがあるはずな上に、基本レベルだというのに解くのに30分くらいかかってしまった…