oinume journal

Scratchpad of what I learned

Java

会社の本番環境をJava8で動かそうとしたらNewRelicでエラーが出た

そろそろJava8でコード書きたい ↓ まずはJVMをJava8で動かさないと...!(JVMに問題があった時に詰む) ↓ 本番のJVMをJava8にした ↓ 起動時にNewRelic入れてるサーバでエラーが出た ↓ 対応に数ヶ月かかるかもしれないとのこと\(^o^)/ (←イマココ) 出たエラー…

JVM Operation Casual Talks #1でLTとパネルディスカッションしてきた

JVM Operation Casual Talks #1でLTとパネルディスカッションしてきました(togetterまとめ)。 運用に効く!JVMオプション三選 from Kazuhiro Oinuma この日登壇した人でJVM好きな人っていたんだろうか?っていうぐらいLL寄りな人が多かった印象だった。パネ…

Make Javas VM's GC log human readable with -XX:+PrintGCDateStamps

I use Java VM's option -XX:+PrintGCTimeStamps in order to output time in GC log of Java VM , Just like this. TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m \ -XX:+UseConcM…

MacでOracle JDKをインストールする

最近MacにJDKをインストールすることが多いんだけど(脆弱性がよく見つかる)、インストールされるディレクトリがどこだか覚えられらなくなってきたのメモ。 インストール Oracle からMac版の jdk-7uXX-macosx-x64.dmg のファイルを選んでダウンロードする。ん…

JRebelを使ってJava開発時のサーバの再起動をなくす

JRebelというソフトウェアを使うと、JavaでWebアプリケーションを開発する時に、ソースの修正→サーバ再起動 or 再ディプロイ がいらなくなるよーという話。 ライセンス 商用で使う場合はちゃんとライセンスを購入する必要があるけど、Socialという謎ライセン…

Jettyでシンボリックリンクを有効にする

最近Jettyと戯れている。Tomcatに比べてちょっと扱いづらいところが可愛らしい。 Jettyはセキュリティ的な理由でAlias(Symbolic Link)をデフォルトでは無効にしている。でもsymlink使いたいんですよあたしゃ。というわけで、調べた結果web.xmlに下記を追加す…

JVMのオススメ起動オプション

なんか秘伝のタレみたいになってきたので後世のために共有。 前提 Webアプリケーションを想定 TomcatなりJettyなりがListenするポートは外部からはアクセスできない ※-Xms -Xmx -Xmn あたりは搭載しているメモリ容量によって変える、-XX:MaxPermSize -XX:Per…

JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする

English version JVMでGCのログ出すじゃないですか。んで、その時↓みたいに -XX:+PrintGCTimeStamps っていうオプションを指定するじゃないですか。 TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:Ma…

commons-langのEqualsBuilderの速度

Javaの有名なライブラリでcommons-langというのがある。この中にEqualsBuilderというequals()メソッドを簡単に実装するための便利クラスがある(HashCodeBuilder, ToStringBuilderというクラスもある)。使い方はこんな感じ。 @Override public boolean equals…

FreeMarkerで余計な改行が入らないようにする

JavaのテンプレートエンジンとしてFreeMarkerがある。テンプレートエンジンって割とみたいに書くことで余計な改行が入らないようになるじゃないですか。このFreeMarkerではどうするの?っていうのを同僚の人に教えてもらったので、ググれるようにまとめてお…

log-back.xml内で変数を使って環境差異を吸収する

変数と言ってもJavaなのでプロパティなのですが。 ${app.home}/app.log %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ↑のような感じでlog-back.xmlを定義。 java -Dapp.home=/var/log/app ... のようにシステムプロパティ定義してあげると、lo…

JavaのString.format()とStringBuilder#append()の文字列結合速度比較

Javaで文字列を結合するときは一般的にはStringBuilderを使うけど、個人的には結合後の文字列がより直感的になるString.format() が好き。ただ、ソースを見ると明らかにString.format()は遅そうなのでベンチを取ってみた。 1万回ループを実行した場合の結果…

Eclipseの覚えておきたいショートカットキーとTips

こんにちは。最近仕事ではめっきりJavaばっかり書いていて、そろそろ大嫌いなEclipseを使い始めて3ヶ月以上経ったので、今まで得たノウハウの一部をまとめておこうかと。 Eclipseで覚えておきたいショートカットキー とりあえず自分が日常的に使っているもの…