SlideShare a Scribd company logo
1 of 32
Java EE
パフォーマンスTips
2015/09/16
帰ってきた GlassFish Users Group Japan 勉強会
上妻 宜人 (あげつま のりと)
上妻 宜人 - あげつま のりと
• SIer勤務
• 技術サポート部隊に所属
• Java / Java EE トラブルシューティング
• はてな 見習いプログラミング日記
本日のテーマ
Java EEレイヤ毎の性能Tips
Presentation
Business
Logic
Repository
• JSF
• JAX-RS
• ....
• EJB
• CDI
• JPA/JDBC
• 外部API呼出
• ファイル I/O
Java EEパフォーマンスTips
• プレゼンテーション層 (JSF)
• #1 古いmojarraを使わない (JAVASERVERFACES-2494対策)
• ビジネス層 (EJB/CDI)
• #2 DIはEJBではなくCDIを使う
• #3 @Asynchronous利用時はスレッドプールに注意
• データアクセス層 (JPA)
• #4 JPAのexecuteBatch設定を忘れない
#1 古いmojarraを使わない
(JAVASERVERFACES-2494対策)
#1 古いmojarraを使わない
• JSF参照実装mojarraには、かつて性能バグがあった
• JAVASERVERFACES-2494
(https://java.net/jira/browse/JAVASERVERFACES-2494)
• JSFタグ (UIComponent) が増えると遅くなる問題
• 2.1.22, 2.2.1 で修正
• GlassFish4.0 が該当。4.1でFix。
GlassFish4.0 と Payara4.1 で実測
• 大量のJSFタグがポイント
• 1000, 3000, 5000 タグで GlassFish4.0 と Payara4.1 比較
<h:body>
<h1>JSF Many Component 1000</h1>
<h:form>
<h:outputText value="#{testBean.name}"/>
<h:outputText value="#{testBean.name}"/>
<h:outputText value="#{testBean.name}"/>
<h:outputText value="#{testBean.name}"/>
<h:outputText value="#{testBean.name}"/>
... 以降大量のoutputTextを繰り返す
タグ数が多い場合は注意
• GlassFish4.0: レスポンスタイムが徐々に低下
• Payara4.1.153 : 5000タグで150ミリ秒
0
1000
2000
3000
4000
5000
1000 2000 3000 4000 5000
レスポンスタイム(ミリ秒)
JSFタグ数
GlassFish 4.0
(mojarra2.2.0)
Payara 4.1.153
(mojarra2.2.11)
マシン情報:
MacBook Air corei5 1.7GHz
JDK1.8.0_60
mojarraは色々な所で使われている
• GlassFish
• 4.0は影響あり。 4.1以降で修正。
• Payaraは4.1ベースなので影響なし。
• WildFly
• 8.0.0と8.1.0は影響あり。 8.2以降で修正。
Java EEパフォーマンスTips
• プレゼンテーション層 (JSF)
• #1 古いmojarraを使わない (JAVASERVERFACES-2494対策)
• ビジネス層 (EJB/CDI)
• #2 DIはEJBではなくCDIを使う
• #3 @Asynchronous利用時はスレッドプールに注意
• データアクセス層 (JPA)
• #4 JPAのexecuteBatch設定を忘れない
#2 DIはEJBではなくCDIを使う
#2 DIはEJBではなくCDIを使う
• Java EE6 CDI が導入。
• Java EE7 より beans.xml なしでデフォルト有効化。
• Java EE5 まではEJB間でのみDIが利用可。
@Inject
private StockService service;
@Dependent
public class StockService {
// ...
}
EJBのループ呼び出しによるオーバヘッド
• EJBのループ呼び出しは性能上悩みの種だった
• 万単位以上のループのみオーバヘッド顕在化
• 見つかった時には試験期間の後半
実際に測っている
• Payara4.1.152でBeanをループ呼び出し
• EJB と CDI Bean を呼び出して比較
// EJB
@Stateless
public class EJBBean {
public String echo(String s) {
return s;
}
}
// CDI
@ApplicationScoped
public class CDIBean {...}
// Client
@Inject
EJBBean ejb;
for (int i = 0; i < loop; i++) {
ejb.echo(String.valueOf(i));
}
CDIはほとんどオーバヘッドがない
271
907
2953
1 8 15
10000 50000 100000
EJB @Stateless CDI @ApplicationScoped
ループ呼び出し回数
単位: ミリ秒
マシン情報:
MacBook Air corei5 1.7GHz
JDK1.8.0_60, Payara4.1.153
@Transactionalもループで呼び出してみた
• @Transactinal 宣言的トランザクション (Java EE7 〜)
• ついうっかり、ループで呼び出される状況を想定
@ApplicationScoped
@Transactional
public class StockService {
public void put(Stock s) {
// 更新系処理 ...
}
public void search(Criteria c) {
// 参照系処理 ...
}
}
@Transactionalはループで呼ばないこと
• @Transactional の実体はインターセプタ。
• ループ呼出しコストは高い。
271 907 2953
1 8 151909
8822
32761
10000 50000 100000
EJB @Stateless
CDI @ApplicationScoped
CDI @ApplicationScoped & @Transactional
ループ呼び出し回数
マシン情報:
MacBook Air corei5 1.7GHz
JDK1.8.0_60, Payara4.1.153
単位: ミリ秒
#3 @Asynchronous利用時は
EJBスレッドプールに注意
#3 @Asynchronous利用時はEJBスレッドプールに注意
• @Asynchronousの振り返り
• EJB3.1 (Java EE6) で導入
• シンプルに非同期タスク処理が実装できる
@Stateless
public class AsyncBean {
@Asynchronous
public Future<String> async() {
return new AsyncResult<>("done”);
}
}
GlassFishデフォルトは多重度が増えない
• 以下の非同期EJBの呼び出しは、16多重で止まる
• GlassFish4 EJBスレッドプールのデフォルト上限が16
• Performance Tuning Guideにも言及がなく、ハマる
@Inject
private AsyncBean async;
public void callAsyncEjb() {
IntStream.range(0, 100)
.forEach(i -> async.async());
}
“EJB Container” のプロパティを追加
• 固有の入力欄はなく、プロパティとして設定
• thread-core-pool-size : 最小プールサイズ
• thread-max-pool-size : 最大プールサイズ
Java EEパフォーマンスTips
• プレゼンテーション層 (JSF)
• #1 古いmojarraを使わない (JAVASERVERFACES-2494対策)
• ビジネス層 (EJB/CDI)
• #2 DIはEJBではなくCDIを使う
• #3 @Asynchronous利用時はスレッドプールに注意
• データアクセス層 (JPA)
• #4 JPAのexecuteBatch設定を忘れない
#4. JPAのexecuteBatch設定を忘れない
• JDBC利用時はexecuteBatchを皆意識する
• JPAを使い始めると、何故か忘れやすい
• JPA内部で自動的に最適化されている淡い期待
• しかし、EclipseLinkもHibernateもバッチ更新デフォルト無効
EclipseLink のバッチ書き込み設定
• persistence.xml に設定
• eclipselink.jdbc.batch-writing = jdbc (default: none)
• eclipselink.jdbc.batch-writing.size = ... (default: 100)
<persistence-unit name="PostgresPU">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/postgresDS</jta-data-source>
<properties>
<property name="eclipselink.jdbc.batch-writing" value="jdbc"/>
<property name="eclipselink.jdbc.batch-writing.size" value="100"/>
...
Payara4.1で実際に測ってみる
• PostgreSQLに100, 1000, 1万レコードのINSERT
• JDBCを加えてO/Rマッパー遅い疑惑も検証
• #1. JDBC executeBatch
• #2. JPA batch-writing=jdbc (バッチ有効化)
• #3. JPA batch-writing=none (バッチ無効化)
測定結果
• INSERT 100レコード でも十分な効果がある
• JDBCと比較して、JPA(EclipseLink) は1〜2割遅い
• 1万行であれば、ORMコストはそれほど大きくない
40 128 122375 169 14891243
9023
58247
100レコード 1000レコード 10000レコード
JDBC executeBatch EclipseLink (batch-writing=jdbc) EclipseLink (batch-writing=none)
単位: ミリ秒
マシン情報:
MacBook Air corei5 1.7GHz
JDK1.8.0_60, Payara4.1.153, PostgreSQL9.3
まとめ
#1 古いmojarraを使わない
GlassFish4.1以上 or Payaraを使う
(mojarra2.1.22, 2.2.1 以上)
#2 DIはEJBではなくCDIを使う
過ループ時のEJBのオーバヘッドは大きい
@Transactionalループ呼び出しに注意
#3 @Asynchronous利用時は
EJBスレッドプールに注意
EJBコンテナの以下プロパティを忘れずに設定
thread-core-pool-size, thread-max-pool-size
#4 JPAのexecuteBatch設定を忘れない
EclipseLink/Hibernateデフォルトはバッチ無効
persistence.xml
eclipselink.jdbc.batch-writing=jdbc

More Related Content

What's hot

Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定
Tatsuya Akashi
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
 

What's hot (20)

Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
知っているようで知らないPAMのお話
知っているようで知らないPAMのお話知っているようで知らないPAMのお話
知っているようで知らないPAMのお話
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 

Viewers also liked

Welcome back, GlassFish!
Welcome back, GlassFish!Welcome back, GlassFish!
Welcome back, GlassFish!
Yumi Hiraoka
 
JPA説明会
JPA説明会JPA説明会
JPA説明会
Ryo Asai
 
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjpJSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
Toshiaki Maki
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
Kunimasa Noda
 

Viewers also liked (20)

Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
Webデザイナーの私がMicrosoft Azureを使うようになったワケ
Webデザイナーの私がMicrosoft Azureを使うようになったワケWebデザイナーの私がMicrosoft Azureを使うようになったワケ
Webデザイナーの私がMicrosoft Azureを使うようになったワケ
 
「もしかして」「私たち」「「入れ替わってるー! 」」〜Java女子部がRuby on Railsやってみた編〜
「もしかして」「私たち」「「入れ替わってるー! 」」〜Java女子部がRuby on Railsやってみた編〜「もしかして」「私たち」「「入れ替わってるー! 」」〜Java女子部がRuby on Railsやってみた編〜
「もしかして」「私たち」「「入れ替わってるー! 」」〜Java女子部がRuby on Railsやってみた編〜
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷JavaTomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
 
Welcome back, GlassFish!
Welcome back, GlassFish!Welcome back, GlassFish!
Welcome back, GlassFish!
 
Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2 Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2
 
Oracle talk 20131213
Oracle talk 20131213Oracle talk 20131213
Oracle talk 20131213
 
JPA説明会
JPA説明会JPA説明会
JPA説明会
 
Introduction to Wildfly 8 - Marchioni
Introduction to Wildfly 8 -  MarchioniIntroduction to Wildfly 8 -  Marchioni
Introduction to Wildfly 8 - Marchioni
 
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjpJSFとJAX-RSで作る Thin Server Architecture #glassfishjp
JSFとJAX-RSで作る Thin Server Architecture #glassfishjp
 
Android端末のroot化について
Android端末のroot化についてAndroid端末のroot化について
Android端末のroot化について
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
 
Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編
 
Scala dreaded underscore
Scala dreaded underscoreScala dreaded underscore
Scala dreaded underscore
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
 

Similar to Java EE パフォーマンスTips #glassfish_jp

Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Toshiaki Maki
 

Similar to Java EE パフォーマンスTips #glassfish_jp (20)

JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
Play with Playframework
Play with PlayframeworkPlay with Playframework
Play with Playframework
 
Java in the World of Container by David Buck
Java in the World of Container by David BuckJava in the World of Container by David Buck
Java in the World of Container by David Buck
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Hello Java
Hello JavaHello Java
Hello Java
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 

More from Norito Agetsuma

プロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメプロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメ
Norito Agetsuma
 
SQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメSQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメ
Norito Agetsuma
 

More from Norito Agetsuma (11)

Quarkus入門
Quarkus入門Quarkus入門
Quarkus入門
 
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfileJava EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfile
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
 
JJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめようJJUG 11月ナイトセミナー CDIをはじめよう
JJUG 11月ナイトセミナー CDIをはじめよう
 
AeroGear & Java EE 7 で簡単プッシュ
AeroGear & Java EE 7 で簡単プッシュAeroGear & Java EE 7 で簡単プッシュ
AeroGear & Java EE 7 で簡単プッシュ
 
プロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメプロになるためのJavaScript入門読書会 レジュメ
プロになるためのJavaScript入門読書会 レジュメ
 
SQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメSQLアンチパターン読書会 レジュメ
SQLアンチパターン読書会 レジュメ
 
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
 
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiLt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
 

Recently uploaded

Recently uploaded (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Java EE パフォーマンスTips #glassfish_jp