40
編程另闢蹊徑 介紹與比較

KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Embed Size (px)

Citation preview

Page 1: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

編程另闢蹊徑

、 、介紹與比較

Page 2: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

GWT、Dart、TypeScript介紹

個人看法 & 大家討論

未來性發展

2

Page 3: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

以下介紹按先後發佈順序介紹

3

Page 4: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

4

Page 5: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

5

Page 6: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

GWT 歷史回顧

GWT 1.0 (2006)

GWT 1.3 (2007) First Open Source Release, OSX support

GWT 1.4 (2007) JUnit and ImageBundle

GWT 1.5 (2008) Java 1.5 support, Overlay Types, DOM API, CSS Themes, Linkers

GWT 1.6 (2009) EventHandlers, EMMA Support, WAR support, Parallelized Builds

GWT 1.7 (2009) Newer browser support, IE8, GPE and AppEngine

GWT 2.0 (2009) DevMode, DraftCompile, UIBinder, LayoutPanel, CodeSplitter, ClientBundle, CssResource

GWT 2.1 (2010) RequestFactory, Editor Framework, Validation, MVP, Cell Widgets

GWT 2.2 (2011) GWT Designer, HTML5 support

GWT 2.3 (2011) Better AppEngine integration

GWT 2.4 (2011) Maven and RequestFactory enhancements

GWT 2.5 (2012) Super Dev Mode、Elemental (experimental)

6

Page 7: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

GWT 亮眼事蹟

SDK downloaded over 1 million times

100,000+ Active Developers

Deep Integration with Eclipse, IntelliJ, Spring STS/Roo

Used by Google products such as AdWords, Flights, Wallet

Fun things: GwtQuake, Angry Birds for the Web

GWT Today is a mature, high quality, code base.

7

Page 8: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

分頁 Grid

8

介紹如何使用EventBus從後端拿資料後,餵給Grid 呈現

GWT Client Spring Bean

EventBus

public class dejcGridBean { List data = new ArrayList(); {for (int i = 1; i <= 500; i++) { data.add(createVO("使用者" + i, "000" + i));}}

// 取得指定起始和限定筆數 public List page(Map info) {

int offset = Integer.parseInt(info.get("offset")+""); int limit = Integer.parseInt(info.get("limit")+""); List list = new ArrayList(); Map rtn = new HashMap(); rtn.put(" totalSize" , data.size());

list.add(rtn); //放入回傳筆數 for (int i = offset; i < (offset + limit); i++) {list.add(data.get(i));} return list; }}

Page 9: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

private BasePagingLoader createDataLoader() { RpcProxy proxy = new RpcProxy() { public void load(Object loadConfig, final AsyncCallback callback) { page = (PagingLoadConfig) loadConfig; para.put("offset", page.getOffset()+""); para.put("limit", page.getLimit()+""); EventBus.get().publishRemote(new EventObject(eventId, para), new EventProcess() { public void execute(String eventId, EventObject eo) { List resp = eo.getInfoList(); totalSize = Integer.parseInt((String) resp.remove(0)); BasePagingLoadResult b = read(page, resp); callback.onSuccess(b); }}); }};

toolbar = new PagingToolBar(pageSize); BasePagingLoader loader = new BasePagingLoader(proxy); toolbar.bind(loader); return loader; } 9

Grid 分頁元件提供PageToolBar,可點選下頁,進行指定頁數的限定筆數讀取,和先前Grid差異就在DataLoader物件不同

分頁 Grid 原理說明

傳給Spring的參數

Spring回傳資料

改從Map取得totalSize

Page 10: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

後端Spring元件dejcFormStudyBean

10

Spring元件已經實作完成,可提供GWT前端進行資料的CRUD,唯此元件只做示範用途,所以資料僅保存在記憶體。

判斷主鍵是否存在

Page 11: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

11

Java 社群拿著 Google Web Toolkit 上雲端

Page 12: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

GWT 個人看法

亮點

將Java轉成JavaScript

IDE支援,Debug、Performance….

跑在JavaScript VM,可用JSNI

所見所得UI,拖拉設計畫面組件

缺點

編譯很花很花時間,需重新編譯整包

有門檻,熟OO,Event-Driven (Swing)

12

Page 13: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

13

M1

Page 14: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

14

參與V8作者,重新開發Dart語言

Page 15: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Dart

A simple and unsurprising OO language

Class-based single inheritance with interfaces

"Coming from C#, Dart feels natural"

"Likely to appeal to Java and JS developers"

Optional static types

Real lexical scoping (block, method, param, class, lib)

Single threaded*

Syntactic sugar

15

Page 16: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

16

既生瑜,何生亮 JavaScript,Dart

Page 17: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Dart官方說法

Dart有VM,不是要取代JavaScript,而是嘗試從不同角度看Web開發這事

17

Page 18: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Dart

18

Page 19: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Google內部對打…

19

Page 20: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

20

這樣應該很明顯了…

Page 21: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

最適合開發Web的語言

21

Page 22: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

其實 Dart 內心OS…幹掉它

22

Page 23: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

Dart 個人看法

亮點

語法看來不錯

有完整設計工具

針對Web的編程語言

有自己的VM,速度很快很快!?

缺點

要編譯成JavaScript,誰知道會有哪些問題?

和JavaScript交互有些麻煩,不直覺

會不會又變成棄嬰 ?

23

Page 24: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

TypeScript For JavaScript Programmers

24

Page 26: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

TypeScript 個人看法

亮點

提供OO,本身完全支援JavaScript子集

完整工具支援

更容易整合JavaScript

編譯沒有負擔

缺點

舊的路能走多遠呢?

工具要錢 (不然很可能不是很方便…XD)

現在只是預覽版

是微軟! 26

Page 27: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

27

Typescript、Dart

Page 28: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

大家都以Browser為中心

28

Page 29: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

GWT

如果很熟Java,不熟JavaScript,短時間要做到RIA,選它就對了

29

Page 30: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

GWT

JavaScript很值得學習,遲早要打交道

30

Page 31: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

GWT

出來混(Web),遲早都要還(JavaScript Skill)

31

Page 32: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

Dart

很好的程式語言,完整工具支持,值得玩看看

32

Page 33: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

Dart

如果有3~5年計畫,可以衝衝看!

33

Page 34: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

TypeScript

讓JavaScript如虎添翼!!!

34

Page 35: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

TypeScript

OpenSource、微軟強大支持~

35

Page 36: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

TypeScript

會朝向ECMA6標準前進

36

Page 37: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

語法亮點

37

Page 38: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

擁有套件

38

Page 39: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

未來發展

39

Page 40: KSDG_007_Web 編程另闢蹊徑-GWT,Dart,TypeScript介紹與比較

40