makotan _at_ gmail dot com

DIとAOPが面倒になったは良いけど、結局どれにするんだ?

OSSとしては出尽くした気はするのでまとめてみた

プロダクト DIコンテナ 通信部分 Annotation 特徴
Spring MVC Spring Servlet 独自Annotation オールインワン
JAX-RS CDI/Spring Servlet JavaEEのAnnotation CDIかSpringとの組み合わせが事実上必須、複数の実装から選べる
Ninja Guice Servlet Annotationなし オールインワン
MSF4J DIなし netty JavaEEのAnnotation
SparkFramework DIなし Servlet(Jetty) 独自Annotation
RESTX DIなし Servlet JavaEEのAnnotation
Vert.x DIなし netty Annotation無し 全力でasync


DIの有無、通信部分、Annotationあたりがやっぱり特徴的だなぁ〜と思ったので比較してみた
Spring MVCJAX-RSは黒魔術が出やすいのでさくっと除外して

JAX-RSのAnnotationを使うMSF4J,RESTX

MSF4Jを使うならServletでの運用は諦める、ただし現在企業がバックに付いてる安心感はある(いつ捨てられるかも不明だけどね)。ただ、欲しい機能が用意されてる
RESTXを使うなら開発が停止する可能性を考慮する必要がある

Ninja,Spark,Vertx


Ninja(WebFramework)
Spark
Vert.x(OSS)


とりあえず非常に個人的な結論

マイクロサービスで作るという点と、あらゆる標準準拠への圧力が皆無な点と、今回はパフォーマンス重視な部分の開発なので・・・
Vert.xを第一候補に、MSF4Jを横目に眺めながら、Sparkのバージョンアップを気長に待つ
サービスを作るときにどれを選択するかはまたその時考える