Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第52回なんてかんたんなJavaEE

3,101 views

Published on

薄いJavaEEについて

Published in: Technology
  • Be the first to comment

第52回なんてかんたんなJavaEE

  1. 1. なんてかんたんなJavaEE #nds52 @civic
  2. 2. @civic • twitter: @civic
  3. 3. 今日つたえたいこと • JavaEEのレールに乗るのも迷いがなくて良いも のではないでしょうか? • 薄いタイプのJavaEEもあります (その選択が正しいとは言ってない)
  4. 4. JavaEEとは
  5. 5. JavaEEとは • Java Enterprise Edition • ギョーミーなJava • Webを入り口に、いろんな機能がてんこ盛りされ た環境
  6. 6. たとえば
  7. 7. 例 「Webアプリ作りたいなー」
  8. 8. 「ServletでHTTP処理できるよ」 「JSPをテンプレートとして HTMLレンダリングできるよ」
  9. 9. 例 「DBも使いたいのだけど」
  10. 10. 「DB接続は用意してあげるね!」 「JPAというORマッパーが あるよ!」 「JTAというトランザクション管理 が使えるよ!」
  11. 11. 例 「タスクをジョブキューで非同期に 処理したいのだけど」
  12. 12. 「JMSというメッセージキューが使 えるよ!」
  13. 13. などなど… • JSON返すREST →JAX-RS • emailを送りたい →Java Mail • バッチ処理を…… →JBatch • cron的に…… →Timer Service
  14. 14. JavaEE提供機能 参考: http://blog.arungupta.me/defaults-javaee7-platform-techtip37/)
  15. 15. これらが全部乗っかった JavaEEサーバー
  16. 16. JavaEEサーバ • JavaEEは仕様 • インターフェースで提供 • 各アプリからはインターフェース経由で使用 • 各種ベンダーが実装したサーバ • Glassfish (リファレンス実装) • WebLogic • WildFly • Payara ...
  17. 17. JavaEEコンテナでアプリが動く いろんな使いたい機能 機能を使いたいア プリ デプロイ JavaEE サーバ
  18. 18. 利点 • 「ORMを使いたい時はX製品」「MQを使いたい ときはY製品」という選択を考えるときに、標準 で提供されるという第一歩がある • 標準機能を検討 • 外部ライブラリを検討 • 自前実装を検討 (その選択が正しいとは言ってない)
  19. 19. とはいっても重厚すぎる
  20. 20. 機能盛りすぎ? • 分散処理の機能とか要らないからWebだけでよい というニーズ • → Web Profile
  21. 21. Full Profile / Web Profile 参考: https://jaxenter.com/introducing-the-java-ee-web-profile-103275.html
  22. 22. Web Profileでも多い!
  23. 23. レールに全乗っかり しない薄いJavaEE
  24. 24. Micro Profile • JSONでREST返すだけでいい! • Micro Profile (コミュニティベース) • JAX-RS (REST, SinatraとかFlask的な) • CDI (DIコンテナ) • JSON-P(JSON API)
  25. 25. MicroProfile デモ (Payara MicroProfile)
  26. 26. JAX-RS @Path("hello") public class HelloResource { @GET public String hello(@QueryParam("name")String name){ return "Hello " + name; } } $ curl http://localhost:8080/api/hello?name=civic Hello civic
  27. 27. MicroService向けの起動(Payara) • java -jarで起動してwarファイルを渡す • プロセスの起動=サービスの起動 java -jar payara-xxx.jar --deploy my.war
  28. 28. MicroService向けの起動(Payara) • 実行可能なjarファイルの生成 • war内蔵の1ファイルで起動するサービス $ java -jar payara-xxx.jar --deploy my.war --outputuberjar myapp.jar # myapp.jarのみで起動 $ java -jar myapp.jar
  29. 29. このぐらい薄いのならば 手軽にJavaEEを使える!
  30. 30. そもそも言語としてのJavaが...
  31. 31. JVM系言語でJavaEE
  32. 32. JVM系言語 @Path("hello") class HelloResource { @GET fun hello(): String{ return "Hello World" } } @Path("hello") class HelloResource { @GET def String hello(){ return "Hello World" } } @Path("hello") class HelloResource { @GET def hello(): String = { return "Hello World" } }
  33. 33. まとめ • 標準で提供される機能に乗っかるもよし • 薄いのがよければMicroProfileもある • 言語はJVM系言語を使うもよし 参考 • Payara Server http://www.payara.fish • JavaEEの概要 http://www.oracle.com/technetwork/jp/java/javaee/overview/index.html • ソースコード https://github.com/civic/payara-examples

×