僕はJavaも好きなので、ISUCON4予選問題のJava実装を作ってみました。
フレームワークには最近Java界隈で話題のSpring Bootを使っています。

ISUCON興味あるんだけど、Java実装が無かったので参加しなかったという方や、Spring Bootに興味がある方はぜひ試してみてください!
MySQLのCREATE文やINSERT文も含まれていますので、アプリを動かすだけであればローカル環境で動きます。

 

ソース

GitHubに置いてます

 

アプリケーションの起動方法

アプリケーションサーバが組み込まれるので、サーバにTomcatなどをインストール・設定する必要はありません。
Java8をインストールして、jarファイルを実行するだけです。
(アプリケーションのビルドにはMavenを使います)

ビルド

$ mvn clean package

実行

$ java -jar /path/to/java-spring-boot-1.0.0.jar

 

初期スコア

Ruby実装と比較してみました。

Ruby実装

12:19:25 type:info      message:launch benchmarker
12:19:25 type:warning   message:Result not sent to server because API key is not set
12:19:25 type:info      message:init environment
12:19:35 type:info      message:run benchmark workload: 1
12:20:35 type:info      message:finish benchmark workload: 1
12:20:40 type:info      message:check banned ips and locked users report
12:20:59 type:report    count:banned ips        value:3
12:20:59 type:report    count:locked users      value:2552
12:20:59 type:info      message:Result not sent to server because API key is not set
12:20:59 type:score     success:5750    fail:0  score:1242

Java Spring Boot実装

12:09:15 type:info      message:launch benchmarker
12:09:15 type:warning   message:Result not sent to server because API key is not set
12:09:15 type:info      message:init environment
12:09:24 type:info      message:run benchmark workload: 1
12:10:24 type:info      message:finish benchmark workload: 1
12:10:29 type:info      message:check banned ips and locked users report
12:10:48 type:report    count:banned ips        value:7
12:10:48 type:report    count:locked users      value:2569
12:10:48 type:info      message:Result not sent to server because API key is not set
12:10:48 type:score     success:6980    fail:0  score:1508

 

レギュレーションなど

レギュレーション、当日マニュアル、AMI情報などは README.md を参照してください。
運営の方の解説と講評もあります。
ISUCON4 予選問題の解説と講評 & AMIの公開