JavaOne 報告会
Java EE の今後について
Yoshio Terada
Senior Java Evangelist
Yoshio.Terada@microsoft.com
@yoshioterada
自己紹介 Java エバンジェリスト Java チャンピオン 日本マイクロソフト (株 ) 寺田 佳央 ハッシュタグ #てらだよしおがんばれ
日本企業が JavaOne 基調講演で数多く登壇
富士通
日立
NEC
損保ジャパン日本興亜
Mazda
:数村様
:村上様
:岸上様
:浦川様
:吉岡様
https://javaee-guardians.io/
https://javaee-guardians.io
https://javaee-guardians.io//
火星のお話よりも
不安を払拭するため基調講演で
もう少し Java EE に時間を
掛けるべきでした
ブレークアウト・セッションの参加で
不安は払拭 !! 戦略的には良い方向へ !!
( 詳細はのちほど)
でも、べつの不安が !!
September 22, 2016
Hilton San Francisco Financial District
https://microprofile.io/
https://microprofile.io
https://microprofile.io//
ベンダー&コミュニティが集結
背景
各ベンダーの個別会話からはじまった
Java EE GUARDIANS もひとつのきっかけ
既存の Java EE 技術におけるマイクロ・サービス対応
WildFly Swarm
WebSphere Liberty
Payara
TomEE
プロジェクトはすでに Java EE & 非 Java EE 技術を活用
マイクローサービス対応の新機能を構築中
参加者すべてが市場への早期投入を重要視
Java EE をより良く、より早く
MicroProfile リリースの哲学
反復 (アジャイル )
イノベーション
開発における
総意
リリース 1.0
標準化
標準化には時間を要す !!
開発のすすめ方・戦略は MicroProfile の方が時代に適応 !! (個人的に支援 )
MicroProfile.io or/and Java EE 8/9
戦略的には良い !!
ここに記載する内容は
あくまでも提案内容 (未決定 ) !!
Cloud
Micro Service
2年前と世界が変わった
クラウド化・マイクロサービス化
マイグレーション・パスを用意
Java EE の 後方 互換性を 維持
REST(JAX-RS) は今後重要
Java EE Spec Lead
(Linda DeMichel)
Java EE 9 がメイン
Java EE 8
Java EE 9 への準備
Java EE 9
クラウド & マイクロサービス
同時に開発を進行
Java EE 8 の 提案内容
リアクティブ
プログラミング
リアクティブ宣言
http://www.reactivemanifesto.org/ja
リアクティブ宣言
即応性 (Responsive )
耐障害性 (Resilient )
弾力性 (Elastic)
メッセージ駆動 (Message Driven)
リアクティブ・プログラミング
レイテンシ向上のために必要
非同期処理
ノン・ブロッキング I/O
Java EE 8 は EE 9 への移行パス
Java EE 9 で最終的に 対応
Java EE Spec Lead
(Linda DeMichel)
JAX-RS 2.1 : クライアント側の大幅な更新
リアクティブ・プログラミング
非同期処理の改善 : 実装方法の改善
Non-Blocking 対応 : リソース消費を防ぐため
Service A
Service B
Service C
Service D
Service B
Service A
Service C
Service D
JAX-RS 2.0 の非同期処理( コール・バック地獄)
JAX-RS 2.1 : CompletableFuture<T> を利用
非同期処理をより簡単に
RxJava も利用可
JAX-RS 2.1 : Non-Blocking 対応
非同期 ( Async ) 処理は新しいスレッドを生成するだけ
処理結果が返ってくるまでブロック
– NioInvoker
– NioWriterHandler
– NioOutputStream extends OutputStream
待ち状態のリソース消費を防ぐ
ヘルス・チェック : 新 JSR
Service A
Service B
生死監視用の REST API を定義 (JSON フォーマット )
設定変更可能なパスを定義 (/ healthcheck )
ブートストラップ・エンドポイントを用意
ヘルスチェック用のエンドポイントを取得可能
例: /management/endpoint
アノテーションでエンドポント実装可能
エンドポイントの URL マッピングも作成可能
レポート用のヘルパークラスを用意
ヘルス・チェック : 新 JSR
Service A
Service B
適用範囲は実装依存
アノテーション (記述子 )で指定されたクラスだけが対象
実装に応じてシステム情報も取得可能
例:ドメイン、サーバ、クラスタ、パーテション・テナント、ロードバランサ、マイクロサービスなど
セキュリティ要件は実装依存
認証済み、アクセス制御のリソースへのヘルスチェック
Configuration - 外部設定
Service A
プロパティ , XML, JSON フォーマットをサポート
複数の設定ソースをサポート
階層化とオーバライドをサポート
オプションの設定スキーマ
ポーリングと動的プロパティ
動的設定変更が可能 ( Archaius を参考 )
Configuration - 外部設定
Service A
Configuration 実装例
マルチテナンシー対応
テナントによる特定のカスタム UI の提供
例:テナント毎に変更するロゴなど
実行時に JSF ベースの US 構成
テナント毎のデータソース
例:テナント毎に異なる DB
テナント毎のセキュリティ
マルチテナンシー対応 - テナント・コンテキスト
リクエストに対し TenantContext オブジェクトを埋め込む
テナントとコンテナを関連付けさせ
TenantContext はテナントを識別する情報を保持
例:テナント ID など
TenantContext はアプリケーション内で 利用可能
コンテナはテナント毎の処理を実行可能
マルチテナンシー対応 - インタフェース
public interface TenantContext{
public String getTenantID();
public String getTenantName();
public void setProperty(String name,
String value);
public String getProperty(String name);
public Map<String, String> getProperties();
}
マルチテナンシー対応 - データ・アクセス
@MultiTenant アノテーションを宣言
テナントは、分割された独自のデータを保持
他のテナントからは保護
テナント毎の DB に接続するため TenantContext を利用
ネーミング・サービスを利用
DataSource の API も拡張予定
自動的にデータ・ソースに接続
セキュリティ – JSR 375
標準用語の作成
認証メカニズム用の API
ID ストア用のAPI
セキュリティ・コンテキスト用 API
Java EE 8 で対応
( クラウド対応に必要)
認証 – OpenID Connect
認可 - ロール・権限
秘密管理(パスワード・エイリス)
認証用インタセプター
Java EE 9 で対応
( マイクロサービスで利用)
Java EE 9
マイクロ・サービス
Spec Lead 歴
JSR-250 : Common Annotations
JSR-224 : JAX-WS 2.0
JSR-315 : Servlet 3.0
JSR-340 : Servlet 3.1
Rajiv Mordani
マイクロサービス開発の標準にしたい
アプリはベンダー間で移植可能
既存のベンダーと共同作業したい
開発者の共通課題を標準化したい
Rajiv Mordani
Micro Service
今まで:モノリシック (一枚岩 )
(Enterprise Application)
利点:
一つのファイルにパッケージ化可能
テストが容易
開発が容易
欠点:
新機能追加・修正が困難
頻繁なデプロイが困難 (再度全テスト )
一つのサービスの変更が全てに影響
一つのサービスの負荷が他に影響
一つのサービスの停止が他に影響
新フレームワークの導入も困難
UI
ロジック
DB
ロジック
UI
DB
war, ear ファイル
Java EE (App Server)
Java VM
マイクロサービスのアプローチ : 疎結合
利点:
サービスやシステムの変更に柔軟
一つのサービス変更は他に未影響
サービス毎のスケールが可能
単一サービスの停止は他に未影響
サービス毎に柔軟なフレームワーク選定可能
欠点:
(分散 )サービス間連携の構成検討が困難
運用・管理などの操作数が増加(高度な自動化)
UI
UI
ロジック
ロジック
DB
DB
Service A
Service B
マイクロサービスを意識した Java F/W
標準的な実装がない
開発者が選択 -> 標準化
Java EE 9 のアーキテクチャ案
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
API Gateway
マイクロサービスの主要な技術の一つ
Amazon, Kubernetes, Marathon, Microsoft 等 もサポート
全クライアントがアクセスする唯一のエントリポイント
アクセス制御
プロトコル変換
コンテント集積
リソース・キャッシュ
ログ
Mobile
Client
Service A
API
Gateway
Service B
Browser
Client
API
Gateway
※ クラウド/PaaS プロバイダが提供 (Java EE 9 未対応)
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Service Registory/Discovery
動的変化するサービス・エンドポイントへの接続
10.0.1.1:8080
10.0.1.1:8081
Service A
Service A
10.0.1.2:8080
10.0.1.2:8083
Service B
Client
10.0.1.3:8082
10.0.1.4:8085
Service C
Service Registory/Discovery
1. 接続先情報を Service Registory に登録
Service Registory/Discovery
Service A
IP アドレス
Port 番号を登録
Service A
①
Service B
Client
Service C
Service Registory/Discovery
2. 接続先の情報を問い合わせ
Registory/Discovery
Server
Service A
Service A
LB が接続先の
IP アドレス
Port 番号を取得
Load Balancer
②
Service B
Client
Service C
API
Gateway
Service Registory/Discovery
3. 取得した情報を元にサービスに接続
Registory/Discovery
Server
Service A
Service A
Load Balancer
取得した情報を元に
LB はサービスに接続
③
Service B
Client
Service C
API
Gateway
Service Registory/Discovery
Java EE 9 の実装提案
Inject/Auto-Wiring を使用しクラウド・サービスを発見
依存するサービスを発見するための一環した名前を定義
クライアント・サイド Discovery
クライアント・サイドのコードはロードバランサで使用
例: Netflix Eureka, Ribbon
サーバ・サイド Discovery
サーバ側で発見しロードバランスを実施
ルータが Service Registory に問い合わせ
クライアントはサービス・ルータを経由しリクエスト送信
例: AWS Elastic Load Balancer, Malathon LB
Service Registory/Discovery
クライアントの Service Discovery 方法
開発者は標準定義が必要
例:サービス名+バージョン+名前空間
HttpClient.connect(“http://localhost:8081”);
HttpClient.connect(“http://service_dns.example.com”);
//Spring の場合
DiscoveryCllient getInstance(“SERVICE-NAME”);
Service Registory/Discovery
Service Discovery 方法
メタデータを設定
サービス名、互換性バージョン、実装バージョン、依存関係
@InternalService
@Service(name=“userProfiles”,compatibilityVersion=“1.2”)
@Depends(services={“userAvatars:2”,”userAddresses:5”})
public ProfileData getUserProfile(ID userID){
}
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
サーキット・ブレーカー
サーキット・ブレーカー
特定サービスの遅延・障害時にも全体サービスを継続
Service A
Service A
Load Balancer
待ちによる
スレッドの滞留を防ぐ
Service B
Client
Service C
API
Gateway
サービスの切り離しと回復
BulkHead ( 隔壁) パターン
並列 (スレッド )のサービス呼び出し数を制限
浸水により船が全体沈まないように守る壁
高負荷 DBの呼び出しで大量の待ちが発生
全体がハングするのを防ぐ
Service A
Service B
サーキット・ブレーカー
Java EE 9 の実装提案
JAX-RS Client API を拡張
専用アノテーションを提供 :
再試行ポリシー、回復ポリシー、障害時に呼び出すメソッド定義など
動的な設定が可能
リアクティブのプログラミング・モデル
リクエスト・レスポンスのキャッシュ
グラフィックによるサービスの依存性と実行状況の表示
※ ヘルス・チェック機能は Java EE 8 で実装
サーキット・ブレーカー実装例
public class Foodservice {
@RetryPolicy(delayPeriod=10 unit=SECOND, numRetries=1)
@CircuitBreaker(fallbackMethod=
“getBooksByAuthorFallBack”)
@BulkHeadPolicy(threadCount=5)
public Collection<BooK> getBooksByAuthor(
String authorName){…}
public Collection<Book> getBookdsByAuthorsFallBack(){…}
}
Spring+Netflix の場合の例
項目
利用する機能 (サービス)
設定管理
Spring Cloud Config + Bus
サービスの登録・発見
Netflix Eureka
ロードバランサ
Netflix Ribbon
サーキット・ブレーカー
Netflix Hystrix + Turbine
Proxy Server
Netflix Zuul
認証
Spring Cloud Security
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
RDB 以外も様々な永続ストレージ対応
Service A
Key/Value Store
Service B
Document DB
Column DB
Service C
Graph DB
Service D
NoSQL 関連ストレージ対応
ベンダー依存の API を利用
NoSQL 関連ストレージ対応
NoSQL 対応
Java EE 9 の実装提案
javax,persistence.nosql パッケージを定義
一貫性のあるプログラミングモデルを提供
CROUD 操作に対する共通の抽象化したAPI を 提供
ベンダー独自機能への直接アクセスも可能
クエリの簡素化
メソッド名によるクエリの推論
ベンダー独自クエリアノテーション
機能ごとにカテゴライズしたアノテーション
REST 経由でも利用可能
NoSQL 対応
package javax.persisntece.nosql;
import java.util.Iterator;
public interface CROUDStore<K extends ID,
V extends BaseStore<K,V>{
Iterator<V> findAll();
V find(K key);
V persist(V value);
void remove(K key);
void remove(V value);
}
カテゴリ指定 (Key/Value の例)
CROUDStore を拡張した KVStore の実装提案
public interface KVStore<V>
extends CROUDStore <ID<String>, V >{
void persist(ID<String> key, V value);
}
有効期限を設定可能な KVCacheStore の実装提案
public interface KVCacheStore<V>
extends KVStore<V>{
void persist(ID<String> key, V value, long expires);
void expire(ID<string>key, long expires);
}
カテゴリ指定 (Key/Value の例)
MongoStore を拡張した UserStore の定義例
public interface UserStore
extends MongoStore<String, User>{
List<User> findBynameStartingWith(String regexp);
List<User> findByLastnameEndingWith(String regexp);
@Query(“{‘age’ : { $gt: ?0 , $lt: ?1}}”)
List<User> findUsersByAgeBetweeen(int ageGT, intageLT);
}
カテゴリ指定 (Key/Value の例)
MongoStore を拡張した UserStore の定義例
public class UserStoreIntegrationTest{
@Inject UserStore userStore;
public void insertUser(){
final User user = new User();
user.setName(“Jon”);
userStore.persist(user);
List<User> users =
userStore.findUsersByAgeBetween (5,10);
…}
}
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
CQRS : データの参照と更新を分離
今までの DB 操作
CQRS による DB 操作
更新
更新サービス
更新
アプリ
参照 (クエリ )
参照 (クエリ )
参照サービス
参照と更新処理は異なりスケールの観点でも分離が重要
CQRS 対応 : 実装方法は EG と検討中
Java EE 9 の実装提案
CQRS を状態管理でも利用可能
エキスパート・グループと今後会話予定
Commands
Domain Events
Domain Event Handlers
Event Store
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Tolerant Reader : ( 寛容な読み込み)
バージョンが変わった際のデータ (JSON)・スキーマの
変更で呼び出し側が破壊されないように
Service A(ver1)
Service 1
Service A(ver2)
Service 2
Service A(ver3)
実装者が考慮する内容 (Java EE 9未対応 )
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Chained & Branch Service
同期型、もしくは非同期で依存するサービスを呼び出し
Service A
Service B
Service C
Service D
Chained
Service B
Service A
Branch
Service C
Service D
実装者が考慮する内容 : Java EE 8 JAX-RS 2.1 で追加・改良
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Asynchronous Messaging ( メッセージ駆動)
数百万 Req /Sec のイベントを取得しアプリに配信
Azure Event Hub
新しいストリーム・イベント用 API を定義
Asynchronous Messaging ( メッセージ駆動)
メッセージ駆動 (Message Driven)
@Inject
EventPublisher(“mytopic”)
publisher;
@Inject
EventConsumer(“mytopic”)
consumer;
任意のメソッドをイベント・リスナーとして実装可能
@EventListener(“mytopic”)
public void onMyEvent(MyEvent event){
//doSomething;
}
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
メッセージ駆動 (Message Driven)
Java EE パッケージ
Java SE 9 のモジュール 機能 (Jigsaw) を利用
移植可能なアプリ
マイクロサービスを簡単にすばやく作れる
任意の Java EE 9 環境にデプロイ可能
コード
Java EE
Key API
MyApp.jar
Runtime
Java SE
Service Instantiation
メッセージ駆動 (Message Driven)
サービスがどこで稼働しているか
わからない (ホスト・コンテナ )
ホスト 1
Service A
ホスト 1/コンテナ
Service A
Service B
REST 呼び出し
コンテナ2
Service B
REST Call の
ネットワーク負荷考慮型
基本型
メッセージ駆動 (Message Driven)
Service のプロビジョン方法の提供
Java EE 9 の提案
共通メタデータの標準化
名前・バージョン
CPU, メモリ
リソースの依存関係
現在様々なフォーマット
YAML, JSON など
Methos, Kubernetes の例
メッセージ駆動 (Message Driven)
Service のグルーピング方法の提供
Java EE 9 の提案
グループ化の標準化
グループでスケール
Kubernatis の Pod
Methos, Kubernetes の例
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Consumer-Driven Contracts
メッセージ駆動 (Message Driven)
サービス間の結合テスト
サービスの実装更新による結合破壊を防ぐ
サービスの提供者側と利用者側で規約 (契約書 )を作成
Service B (v1)
Service A
Service B (v2)
※ 実装者が 検討・ 考慮する内容 (Java EE 9 未対応)
マイクロサービス・デザイン・パターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
Domain Event (Event Sourcing : Eventual Consistency)
メッセージ駆動 (Message Driven)
データの永続化やサービスの呼び出しに対する結果整合性 ( eventual consistency ) が必要
トランザクションによる実装ではなく、複数のサービス間でのトランザクションを実装するため、イベントベースでの実装
Service A
Service B
各サービスで重複登録など
整合性を確認
Cach / Messaging / Event System
Domain Event (Event Sourcing : Eventual Consistency)
メッセージ駆動 (Message Driven)
Java SE 9 の提案
オブジェクト・ベースの状態共有モデル
ベンダーに非依存
実装方法の詳細 (クラス・パッケージ )は検討中
様々なデータ・ストアを利用可能?
Cache, Messaging/Eventing, JPA + DB
Java EE 9 で対応予定のパターン
API Gateway
Service Registry / Service Discovery
Circuit Breaker
Polyglot Persistence
Command Query Responsibility Segregation (CQRS)
Tolerant Reader
Chained Services
Asynchronous Messaging
Service Instantiation
Consumer-Driven Contracts
Domain Events
その他
クラウド・プロバイダが提供するサービスへ接続可能
Java SE 9 の提案
クラウドプロバイダが提供するサービスインジェクト可能
設定サービス、イベント、状態 /キャッシュ /DBはサービスなど
アノテーションもしくはメタデータ・ドリブン
public class MyService{
@EventService()
EventService eventService;
public void foo(){
eventService.subscribe(“StateChanges”);
}
}
@ConfigService(namespace=“Srv”)
ConfigService configService;
Auto Scale
Java SE 9 の提案
アノテーションでインスタンスの数を指定
自動的に現在の数を調整
Auto Scale ポリシーの設定
CPU 消費
メモリ消費
リクエストのルーティング情報
カスタムのメトリック
予測スケジューリング
動的なスケーリング・ポリシーの(サービス・機能)設定
Auto Scale
Java SE 9 の提案
ポリシーの例
全インスタンスのうち 75%以上の使用率が 3分続くとスケールアウト
全インスタンスの使用率が 90%以上でスケールアウト
全インスタンスの使用率が 15分間 20%より下回ればスケールバック
平均使用率が 40%以下、インスタンス数が 6以上でスケールバック
インスタンス数の最小、最大の数を指定可能
スケジュール・ベースでスケール設定が可能
Java SE 9 のリアクティブ対応
リアクティブ用の包括的な API を提供
Publish/ Subscriber API
Publisher で既存 のデータ構造(Itterable,Arrays など) を利用可能
イベントのストリーム処理用の操作 APIを提供
バックプレッシャーをハンドルするための API を提供
改良したエラーハンドリング・メカニズムを提供
イベント・ストリームの相互運用性
JDK 9 の Flow API を利用
他のリアクティブ実装もプラグイン可能
参考情報 (私がつけた優先順 )
セッション番号
タイトル
CON7976
Java EE 8 Update
CON7975
Enterprise Java for the Cloud
CON8292
Portable Cloud ApplicaHons with Java EE
CON7983
JAX-RS 2.1 for Java EE 8
CON7977
Java EE Next – HTTP/2 and REST
CON7980
Servlet 4.0: Status Update and HTTP/2
CON7979
Configuration for Java EE 8 and the Cloud
CON7978
Security for Java EE 8 and the Cloud
CON1558
What's New in the Java API for JSON Binding
CON4022
CDI 2.0 Is Coming
CON7981
JSF 2.3
BOF7984
Java EE for the Cloud
参考情報
Java EE 8 の動画
https://www.youtube.com/watch?v=Th9faGLhQoM https
https://www.youtube.com/watch?v=Th9faGLhQoM ://
https://www.youtube.com/watch?v=Th9faGLhQoM www.youtube.com/watch?v=Th9faGLhQoM
Java EE 9 の動画
1 . Enterprise Java for the Cloud
https://www.youtube.com/watch?v=t7miysQP7Dg https
https://www.youtube.com/watch?v=t7miysQP7Dg ://
https://www.youtube.com/watch?v=t7miysQP7Dg www.youtube.com/watch?v=t7miysQP7Dg
2 . Portable Cloud Applications with Java EE
https://www.youtube.com/watch?v=nCqVSf5v37s https
https://www.youtube.com/watch?v=nCqVSf5v37s ://
https://www.youtube.com/watch?v=nCqVSf5v37s www.youtube.com/watch?v=nCqVSf5v37s
MicroProfile のイベント動画
https://www.youtube.com/watch?v=6emPnRChsEE https://www.youtube.com/watch?v=6emPnRChsEE
発表資料
http://www.slideshare.net/rayploski/microprofile-panel-sept-2016 http://
http://www.slideshare.net/rayploski/microprofile-panel-sept-2016 www.slideshare.net/rayploski/microprofile-panel-sept-2016
フィードバックは 2016/10/21 (金 )まで
http://glassfish.org/survey
http://glassfish.org/survey
Where to go?
今どちらが良いか分かりません
各社が会話し良い方向に進むことを期待します
マイクロサービス on Microsoft Azure
Azure Service Fabric
Microsoft Azure
Cognitive
Service
IBM さんの基調講演
Java をもう一度素晴らし い物に しましょう by IBM さん
Cognitive Service と JAX-RS で
より良い社会・未来をつくりましょう!!
インフラエンジニア、アーキテクト、 IT 戦略立案に関わる皆様を対象に
クラウドを活用したビジネスのデジタルトランスフォーメーションに必要な
マイクロソフトの最新技術情報と実践的ノウハウをご紹介します
2016 年 11 月 1 日 ( 火) – 11 月 2 日 ( 水)
ヒルトン東京お台場
http://microsoft-events.jp/mstechsummit/
http://microsoft-events.jp/mstechsummit/
JavaOne 報告会
Java EE の今後について
Yoshio Terada
Senior Java Evangelist
yoterada@microsoft.com
@yoshioterada
© 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.d. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes