SlideShare a Scribd company logo
なんてかんたんなJavaEE
#nds52 @civic
@civic
• twitter: @civic
今日つたえたいこと
• JavaEEのレールに乗るのも迷いがなくて良いも
のではないでしょうか?
• 薄いタイプのJavaEEもあります
(その選択が正しいとは言ってない)
JavaEEとは
JavaEEとは
• Java Enterprise Edition
• ギョーミーなJava
• Webを入り口に、いろんな機能がてんこ盛りされ
た環境
たとえば
例
「Webアプリ作りたいなー」
「ServletでHTTP処理できるよ」
「JSPをテンプレートとして
HTMLレンダリングできるよ」
例
「DBも使いたいのだけど」
「DB接続は用意してあげるね!」
「JPAというORマッパーが
あるよ!」
「JTAというトランザクション管理
が使えるよ!」
例
「タスクをジョブキューで非同期に
処理したいのだけど」
「JMSというメッセージキューが使
えるよ!」
などなど…
• JSON返すREST
→JAX-RS
• emailを送りたい
→Java Mail
• バッチ処理を……
→JBatch
• cron的に……
→Timer Service
JavaEE提供機能
参考: http://blog.arungupta.me/defaults-javaee7-platform-techtip37/)
これらが全部乗っかった
JavaEEサーバー
JavaEEサーバ
• JavaEEは仕様
• インターフェースで提供
• 各アプリからはインターフェース経由で使用
• 各種ベンダーが実装したサーバ
• Glassfish (リファレンス実装)
• WebLogic
• WildFly
• Payara
...
JavaEEコンテナでアプリが動く
いろんな使いたい機能
機能を使いたいア
プリ
デプロイ
JavaEE
サーバ
利点
• 「ORMを使いたい時はX製品」「MQを使いたい
ときはY製品」という選択を考えるときに、標準
で提供されるという第一歩がある
• 標準機能を検討
• 外部ライブラリを検討
• 自前実装を検討
(その選択が正しいとは言ってない)
とはいっても重厚すぎる
機能盛りすぎ?
• 分散処理の機能とか要らないからWebだけでよい
というニーズ
• → Web Profile
Full Profile / Web Profile
参考: https://jaxenter.com/introducing-the-java-ee-web-profile-103275.html
Web Profileでも多い!
レールに全乗っかり
しない薄いJavaEE
Micro Profile
• JSONでREST返すだけでいい!
• Micro Profile (コミュニティベース)
• JAX-RS (REST, SinatraとかFlask的な)
• CDI (DIコンテナ)
• JSON-P(JSON API)
MicroProfile デモ
(Payara MicroProfile)
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
MicroService向けの起動(Payara)
• java -jarで起動してwarファイルを渡す
• プロセスの起動=サービスの起動
java -jar payara-xxx.jar --deploy my.war
MicroService向けの起動(Payara)
• 実行可能なjarファイルの生成
• war内蔵の1ファイルで起動するサービス
$ java -jar payara-xxx.jar --deploy my.war
--outputuberjar myapp.jar
# myapp.jarのみで起動
$ java -jar myapp.jar
このぐらい薄いのならば
手軽にJavaEEを使える!
そもそも言語としてのJavaが...
JVM系言語でJavaEE
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"
}
}
まとめ
• 標準で提供される機能に乗っかるもよし
• 薄いのがよければ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

More Related Content

PPTX
第51回NDS PostgreSQLのデータ型 #nds51
PDF
20120830 DBリファクタリング読書会第三回
PPTX
Analytics Environment
PDF
便利なHerokuと active recordの 速度改善tips
PDF
JavaScriptで出来る、あんなことこんなこと
PDF
JJUG CCC 2017 Spring LT about JPA
PDF
PDF
初心者向けWordPress DB & Performance
第51回NDS PostgreSQLのデータ型 #nds51
20120830 DBリファクタリング読書会第三回
Analytics Environment
便利なHerokuと active recordの 速度改善tips
JavaScriptで出来る、あんなことこんなこと
JJUG CCC 2017 Spring LT about JPA
初心者向けWordPress DB & Performance

What's hot (20)

PDF
Phpのはなし
PPTX
Go で Unit Test をやってみた
PDF
シェル芸勉強会へようこそ
PDF
JSONB型でpostgresをNoSQLっぽく使う
PDF
⑮jQueryをおぼえよう!その1
PDF
⑳CSSでアニメーション!その1
PDF
Database smells
PPTX
Famo.usはもう試したかい?
PPTX
20151205 中国地方db勉強会 dbm_fs
PDF
ActiveRecord::Enumのススメ
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
PPTX
いまいまMySQL@OSC2016長岡
PPTX
いまいまMySQL@OSC2016島根
PPTX
altJS勉強会「Haxeすごいからみんな使え!」
PDF
今日はMongoDBの話はしない
PDF
真にスレッドセーフなHash mapとは #渋谷java
PDF
あなたが知らない リレーショナルモデル
PPTX
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
PPTX
MongoDBの可能性の話
Phpのはなし
Go で Unit Test をやってみた
シェル芸勉強会へようこそ
JSONB型でpostgresをNoSQLっぽく使う
⑮jQueryをおぼえよう!その1
⑳CSSでアニメーション!その1
Database smells
Famo.usはもう試したかい?
20151205 中国地方db勉強会 dbm_fs
ActiveRecord::Enumのススメ
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
20121206 VOYAGE LT - 名前重要って言うけどさ
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016島根
altJS勉強会「Haxeすごいからみんな使え!」
今日はMongoDBの話はしない
真にスレッドセーフなHash mapとは #渋谷java
あなたが知らない リレーショナルモデル
Hadoop Streamingを使って お好きな言語でMap☆Reduce!
MongoDBの可能性の話
Ad

Similar to 第52回なんてかんたんなJavaEE (20)

PPT
Glass fishで作ったアプリをweblogicに移植してみた
PPTX
サーバーレスでアンケートフォームを作ってみた
PDF
Javaで1から10まで書いた話(sanitized)
PDF
RealtimeTweakPickerMode
KEY
春のJavaScript祭り
PDF
第八回 #渋谷Java 最近のjava PaaS事情
PDF
Hadoop Source Code Reading #17
PDF
JavaScriptトレンド総括(2014)
PPT
Antのススメ
PDF
リレーショナルデータベースとの上手な付き合い方 long version
PDF
Play jjug2012spring
PDF
レガシーシステムのDBマイグレーションし始めた話
PDF
クライアントサイドjavascript簡単紹介
PDF
Web制作勉強会 #2
PDF
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
PDF
⑯jQueryをおぼえよう!その2
PDF
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PDF
Scalaで行うマイグレーション ~Flyway~
PDF
Javaに這いよる.NET
PDF
Dark vol4 for_slideshare
Glass fishで作ったアプリをweblogicに移植してみた
サーバーレスでアンケートフォームを作ってみた
Javaで1から10まで書いた話(sanitized)
RealtimeTweakPickerMode
春のJavaScript祭り
第八回 #渋谷Java 最近のjava PaaS事情
Hadoop Source Code Reading #17
JavaScriptトレンド総括(2014)
Antのススメ
リレーショナルデータベースとの上手な付き合い方 long version
Play jjug2012spring
レガシーシステムのDBマイグレーションし始めた話
クライアントサイドjavascript簡単紹介
Web制作勉強会 #2
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
⑯jQueryをおぼえよう!その2
PHP フィールドインジェクションに挑戦する PHP勉強会2014
Scalaで行うマイグレーション ~Flyway~
Javaに這いよる.NET
Dark vol4 for_slideshare
Ad

More from civicpg (8)

PDF
オンライン英会話のモチベーション維持!
PPTX
#nds54 ルーチンワーク自動化の話
PPTX
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
PPTX
第49回emailを安全んにつかうための心がけ
PPTX
jupyterの紹介 #nds48
PPTX
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
PPTX
私の好きなPython構文 vol.2 #nds46
PDF
Amazon SESのメール受信対応でサーバー減らせた話 #nds44
オンライン英会話のモチベーション維持!
#nds54 ルーチンワーク自動化の話
#nds53 IoTプラットフォーム・工作でスーヴィード(低温調理)
第49回emailを安全んにつかうための心がけ
jupyterの紹介 #nds48
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
私の好きなPython構文 vol.2 #nds46
Amazon SESのメール受信対応でサーバー減らせた話 #nds44

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

Editor's Notes

  • #17: TomcatやJettyはJavaEEではない。EJBやCDIなどで不足がある。