+ All Categories
Home > Technology > JavaFX and GlassFish

JavaFX and GlassFish

Date post: 16-May-2015
Category:
Upload: kenji-hasunuma
View: 3,389 times
Download: 6 times
Share this document with a friend
Popular Tags:
29
JavaFX with GlassFish HASUNUMA Kenji GlassFish Community [email protected] Twitter: @khasunuma December 13, 2013
Transcript
Page 1: JavaFX and GlassFish

JavaFX with GlassFish

HASUNUMA KenjiGlassFish Community

[email protected] Twitter: @khasunuma

December 13, 2013

Page 2: JavaFX and GlassFish

Contents• Introduction to LightFish

• Revival of rich clients by JavaFX

• SOAP, REST and WebSocket

• Using JAX-RS and WebSocket in JavaFX

• Some plan how to combine JavaFX and GlassFish

Page 3: JavaFX and GlassFish

Introduction to LightFishLightFish is a performance monitor for GlassFish using JavaFX UI

LightFish is since 2012 by Adam Bien, a Java Champion in Germany !It’s an open source software licensed by Apache License 2.0

Page 4: JavaFX and GlassFish

JavaFX UI (LightView)

Page 5: JavaFX and GlassFish

HTML5 UI (JavaServer Faces)

Page 6: JavaFX and GlassFish

How to run LightFish?

Page 7: JavaFX and GlassFish

How to run LightFish?

Page 8: JavaFX and GlassFish

Learn more about LightFish

• Java EE Telemetry (LightFish’s Official Site)http://lightfish.adam-bien.com

• GitHub / AdamBien / LightFish (Source Code)https://github.com/AdamBien/lightfish

• Adam Bien’s Weblog http://www.adam-bien.com/roller/abien/

• And more …

Page 9: JavaFX and GlassFish

Revival of rich clients by JavaFX

JavaFX is innovation in Java Technology it may change the relationship between application servers and clients.

Page 10: JavaFX and GlassFish

SOAP, REST and WebSocket

The history of revival of rich clients. There are several Web services, SOAP, REST and WebSocket.

Page 11: JavaFX and GlassFish

• Webアプリケーションのはじまり : NCSA HTTP ServerのCGI (Common Gateway Interface)

• Javaの世界ではServlet/JSP、さらに基幹業務への展開を狙いJ2EE(現Java EE)へ発展

• UIはWebブラウザのみ - 2000年代初めのクライアント環境は非力で、アプリケーション・サーバーへの集中は合理的な判断

Page 12: JavaFX and GlassFish

• Web UIの限界 - 標準のJavaServer Facesをはじめ様々なフレームワークが誕生したが、かつてのリッチUIには敵わず

• クライアント環境の進化 - 2013年現在、普段使用しているPCは「2ちゃんねる」サーバー1機よりも高性能

• UI処理を再びクライアントへ - クライアントとサーバーの役割分担見直し、リッチ・クライアント復活

Page 13: JavaFX and GlassFish

• リッチ・クライアントとアプリケーション・サーバーの連携は、2005年前後から

• 当時はSOAPによるWebサービスが流行

• SOAPはHTTPとXMLベースであり、CORBAやDCOM (ActiveX)よりシンプルでトラブルが少ない

• あらゆるものをSOAPで繋ごうという動きまで…

Page 14: JavaFX and GlassFish

• SOAPはXMLベースだが、トランザクションやセキュリティなどの拡張機能により複雑化

• HTTP仕様そのものをメッセージング・フレームワークに見立てたRESTが台頭

• RESTの強みは「シンプル」であること

• SOAP vs. RESTのバトルが勃発、現状を見る限りではRESTの圧勝か?

Page 15: JavaFX and GlassFish

• サーバーからの状態変更通知は、ポーリングによる確認が中心だった

• RESTはステートレスでシンプルなことが売り、しかしポーリング時には毎回の再接続が裏目に

• ロング・ポーリングなどの工夫により再接続のコストは下がったが、RESTのシンプルさは失われた

• ポーリングに頼らず、サーバー通知を行う手段は?

Page 16: JavaFX and GlassFish

• RESTやロング・ポーリングの問題を抜本的に解決するため、WebSocketが制定

• WebSocketは、HTTPの基盤を生かした、けれどもHTTPとは異なるプロトコル

• WebSocketでは一度接続した後は切断するまでクライアントとサーバーの間で自由にメッセージをやり取りできる

• サーバー通知もWebSocketなら簡単に実現可能

Page 17: JavaFX and GlassFish

• Javaでは、SOAP、REST、WebSocketのいずれも規格化が完了 ([ ]内はGlassFishの実装)

• SOAP : JSR 224 (JAX-WS) [Metro]

• REST : JSR 339 (JAX-RS) [Jersey]

• WebSocket : JSR 356 [Tyrus]

• いずれもJava SE用クライアントを用意 : JavaFXでRESTやWebSocketが利用できる!

Page 18: JavaFX and GlassFish

Using JAX-RS and WebSocket in JavaFX

Now, we should use JAX-RS and/or WebSocket for connect JavaFX to GlassFish because of these simplify. In this chapter, I’ll show some information it’s not important for Java EE but requirement for Java SE and Java FX.

Page 19: JavaFX and GlassFish

JSR 339 : JAX-RS 2.0

• JAX-RS 1.1 (JSR 311) is so useful API.

• JAX-RS 2.0 (JSR 339) is the extend specification of JAX-RS 1.1. It added many useful features to JAX-RS 1.0.

• It specifies the Client API using both Java SE and EE.

• Jersey 2.0 (RI) is now avaliable: https://jersey.java.net/

Page 20: JavaFX and GlassFish

JAX-RS 2.0 message processing

Page 21: JavaFX and GlassFish

JAX-RS Client API Usage

// Initialize Client object // It needs many resource but it is reusable Client client = ClientBuilder.newClient(); !// send GET request to TARGET_URI // and receive the response as String class WebTarget target = client.target(TARGET_URI); String message = target.request() .accept(“text/plain”).get(String.class);

Sample code for REST client (incl. JavaFX)

Page 22: JavaFX and GlassFish

Jersey 2.0 dependenciesartifactId library

jersey-client

javax.ws.rs-api-2.0.jarjersey-client-2.0.jar

jersey-common-2.0.jarjavax.annotation-api-1.2.jarosgi-resource-locator-1.0.jar

guava-14.0.1.jarhk2-api-2.1.88.jarhk2-utils-2.1.88.jar

javax.inject-2.1.88.jarhk2-locator-2.1.88.jar

asm-all-repackaged-2.1.88.jarcglib-2.1.88.jar

Page 23: JavaFX and GlassFish

JSR 356 : Java API for WebSocket• JSR 356 is the API that is easy for us to use WebSocket on both

Java EE and Java SE.

• In past times, many application servers implement WebSocket features by its original way. JSR 356 has some useful features not included in the other way.

• Tyrus (RI) is now available: https://tyrus.java.net

Page 24: JavaFX and GlassFish

Tyrus 1.1 dependenciesartifactId library

tyrus-client

javax.websocket-api-1.0.jar

tyrus-client-1.1.jar

tyrus-core-1.1.jar

tyrus-spi-1.1.jar

tyrus-websocket-core-1.1.jar

tyrus-container-grizzly

tyrus-container-grizzly-1.1.jar

grizzly-framework-2.3.3.jar

grizzly-http-server-2.3.3.jar

grizzly-http-2.3.3.jar

grizzly-rcm-2.3.3.jar

Page 25: JavaFX and GlassFish

Some plan how to combine JavaFX and GlassFishIn this chapter, we’ll think some plan how to combine JavaFX and GlassFish based on actual practices.

Page 26: JavaFX and GlassFish

Simple JavaFX Application

Page 27: JavaFX and GlassFish

Rich client and server

Remarks: LightFish is same pattern

Page 28: JavaFX and GlassFish

JavaFX Application with Embedded GlassFish

Page 29: JavaFX and GlassFish

JavaFX with GlassFish

HASUNUMA [email protected]

December 13, 2013


Recommended