61
Google Web Toolkit Peter Norrhall

Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

Google Web Toolkit

Peter Norrhall

Page 2: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Ajax och JavaScript

Page 3: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Frågor!

Page 4: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Papyrus

- Pappersgrossist

- B2B E-handel

- 19 Länder/Språk

- drygt 1 miljard i

omsättning

- Revival-projekt

Page 5: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Bakgrund o HistorikPre-Ajax Ajax

Page 6: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

HTML vs Ajax

Stateless

HTML View

Browser

Stateful

Server

Stateful

JavaScript UI

Browser

Stateless

Server

User Action

New HTML page

Remote procedure call

Data only, not HTML

Ajax

HTML

Events

handled

locally

Page 7: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Ajax+ Upplevelse

+ Funktionalitet/Användbarhet

+ Hastighet

+ Ingen installation

- Säkerhet

- Tillgänglighet (accessibility)

- JavaScript

- Bakåtknappen/Historik

- Webbläsarinkompabilitet

Page 8: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT - Java till JavaScript

Page 9: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT

Demo

(Eclipse, Hosted Mode, Debug)

Page 10: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT - ArkitekturJava till JS

Kompilator

JSNIJRE

Emulering

Widget &

Panelsi18n RPC

XML

ParserHistorik

JUnit

integration

GWT API

Page 11: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Webbläsare

1.0, 1.5, 2.06, 7

2.0

8.5, 9.0

Page 12: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Java-till-JavaScript Kompilator

BookSearch.htmlBookSearch.html

....client.BookSearch.java

BookSearch.css

history.htmlBookSearch.css

XXXXXXXXXXXX.cache.xml

Standard

App

Cross

Site

App

XXXXXXXXXX.cache.htmlBookSearch.nocache.js

XXXXXXXXXX.cache.jsBookSearch.nocache-xs.js

history.html

booksearch.gwt.xml

<set-property name=”user.agent” value=”ie6”/>

<extend-property name="locale" values="se"/>

EntryPoint

Page 13: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Java-till-JavaScript Kompilator

• GWT:s mål:

• Att generera lika bra eller bättre

JavaScript än vad en utvecklare kan

åstadkomma

– Analyserar källkoden

– Tar bort död kod

– Optimerar koden

– Komprimerar koden

– Hanterar webläsarnas olikheter

Page 14: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Widgets, Panels & Historik

Demo

(KitchenSink)

Page 15: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Skapa egna Widgets

Page 16: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Widget - ArvButtonBase

CheckBox

RadioButton

Page 17: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

RadioButton

public class RadioButton extends CheckBox {

public RadioButton(String name) {

super(DOM.createInputRadio(name));

setStyleName("gwt-RadioButton");

}

...

}

Page 18: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

EditLabel - CompositeComposite

EditLabel

Label TextBox

Label

Page 19: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

”KompositWidget”public class EditLabel extends Composite {

public EditLabel() {

final HorizontalPanel horizontalPanel = newHorizontalPanel();

initWidget(horizontalPanel);

final Label label = new Label("Label");

horizontalPanel.add(label);

final TextBox textBox = new TextBox();

horizontalPanel.add(textBox);

}

}

Page 20: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

DOM WidgetUIObject

Widget

FileUpload

Page 21: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

FileUpload – DOM public class FileUpload extends Widget implements HasName {

public FileUpload(String name){

super(DOM.createElement("input"));

DOM.setAttribute(getElement(), "type", "file");

setStyleName("gwt-FileUpload");

}

public String getFilename() {

return DOM.getElementProperty(getElement(), "value");

}

public String getName() {

return DOM.getElementProperty(getElement(), "name");

}

public void setName(String name) {

DOM.setElementProperty(getElement(), "name", name);

}

}

Page 22: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Paneler

Page 23: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Layout, Widgets och CSS

.gwt-TextBox {

height: 8px

}

.gwt-TextBox {

height: 14px

}

mobile.css screen.css

<div id=”search”>

</div

SearchFrm.html

RootPanel.get(”search”)

.add(textBox);

SearchFrm.java

Page 24: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Integration

XHR

RequestBuilderGWT-RPCRemote procedure call

Data only, not HTML

Page 25: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Mash-Ups

www.mysite.com

(Proxy)

Page 26: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT-RPC

SearchResult.java

String name;

String isbn;

Serializable

Page 27: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT-RPC - AmazonSearchKlient

AmazonSearch.java

onClick() { ... }

onSuccess() {...}

AmazonSearchService.java

public List searchBook

Server

AmazonSearchServiceImpl.java

public List searchBook() {...}

SearchResult.java

String name;

String isbn;

Serializable

RemoteServiceServlet

GWT 1.5

public List<SearchResult> searchBook()

Page 28: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Demo

Demo

(AmazonSearch)

Page 29: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

RequestBuilder

Page 30: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JSON

• object peter = {”name”:”Peter”,

”age”:40,”married”:true,”mistress”:null}

• array norrhalls = [peter, maria, frida,

linnea, jakob, moa]

Page 31: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Yahoo - XML• http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Movlin&outp

ut=xml&results=5&query=gwt

<ResultSet xsi:schemaLocation="urn:yahoo:srch

http://api.search.yahoo.com/WebSearchService/V1/WebSearchResponse.xsd" type="web"

totalResultsAvailable="4930000" totalResultsReturned="5" firstResultPosition="1"

moreSearch="/WebSearchService/V1/webSearch?query=gwt&appid=GWT-Book&region=us">

<Result>

<Title>Google Web Toolkit - Google Code</Title>

<Summary>

Java software development framework that makes writing AJAX applications like Google Maps and Gmail easy

for developers ... Download Google Web Toolkit (GWT) ...

</Summary>

<Url>http://code.google.com/webtoolkit/</Url>

<ClickUrl>

http://uk.wrs.yahoo.com/_ylt=A9htfSGdI5lHmAEBPiHdmMwF;_ylu=X3oDMTB2b2gzdDdtBGNvbG8DZQRsA1dTMQRwb3MDMQRzZW

MDc3IEdnRpZAM-/SIG=11madreo9/EXP=1201304861/**http%3A//code.google.com/webtoolkit/

</ClickUrl>

...

Page 32: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Yahoo - JSON• http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Movlin&outp

ut=json&results=5&query=gwt

{"ResultSet":{"type":"web","totalResultsAvailable":4930000,"totalResultsRet

urned":5,"firstResultPosition":1,"moreSearch":"\/WebSearchService\/V1\/w

ebSearch?query=gwt&amp;appid=GWT-

Book&amp;region=us","Result":[{"Title":"Google Web Toolkit - Google

Code","Summary":"Java software development framework that makes writing

AJAX applications like Google Maps and Gmail easy for developers ...

Download Google Web Toolkit (GWT)

...","Url":"http:\/\/code.google.com\/webtoolkit\/","ClickUrl":"http:\/\

/uk.wrs.yahoo.com\/_ylt=A9iby4wPJJlHlCQBFgbdmMwF;_ylu=X3oDMTB2b2gzdDdtBG

NvbG8DZQRsA1dTMQRwb3MDMQRzZWMDc3IEdnRpZAM-

\/SIG=11mt0u0om\/EXP=1201304975\/**http%3A\/\/code.google.com\/webtoolki

t”

...

Page 33: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

RequestBuilderKlient

JSONSearch.java

onClick() { ... }

onResponseReceived () {...}

Server

JSONSearchService.java

protected void doPost () {...}

HttpServletEntryPoint RequestCallback

Page 34: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

RequestBuilder

cd RequestBuilder

«interface»

EntryPoint

+ onModuleLoad() : void

JSONSearch

+ onError(Throwable, Request) : void

+ onModuleLoad() : void

+ onResponseReceived(Response, Request) : void

- search() : void

«interface»

RequestCallback

+ onError(Throwable, Request) : void

+ onResponseReceived(Response, Request) : void

HttpServlet

+ doPost(HttpServletResponse, HttpServletRequest) : void

JSONSearchServ ice

+ doPost(HttpServletResponse, HttpServletRequest) : void

RequestBuilder

+ sendRequest(RequestCallback, String) : void

1+requestBuilder

Page 35: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

RequestBuilder

JSONObject o = new JSONObject();

o.put("searchString", new JSONString(searchString));

o.put("maxResults", new JSONNumber(5));

RequestBuilder rb = new

RequestBuilder(RequestBuilder.POST,

GWT.getModuleBaseURL() + "search");

try {

rb.sendRequest(o.toString(), new

SearchResultsHandler());

} catch (RequestException e) {

GWT.log("Could not send search request", e);

}

Page 36: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Demo

Page 37: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Integration forts

• GWT-REST (GWT-ON-RAILS)

• - gwt-sl eller annoteringar

• - hibernate4gwt (inklusive Spring)

• Dwr4gwt – server push

Page 38: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

i18ncd i18n

«interface»

SearchAppConstants

- buttonText: String

+ «property get» getButtonText() : String

+ «property set» setButtonText(String) : void

«interface»

Constants

buttonText=Search

buttonText=Sök

SearchAppConstans_sv.properties

SearchAppConstans.properties

private static final SearchAppConstants CONSTANTS =

(SearchAppConstants) GWT.create(SearchAppConstants.class);

clickMeButton.setText(CONSTANTS.getButtonText());

Page 39: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

i18n

Demo

(Îñţérñåţîöñåļîžåţîöñ Sample)

Page 40: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JavaScript Native Interface

• Att komma åt browserfunktionalitet

• Att komma åt andra JavaScript bibliotekt

• Att låta ”legacy” JavaScript komma åt min

kodpublic native

static java_class method()

/*- { ... } -*/

JavaScript Kod

Effects.java

Page 41: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JSNI<div class="example" id="demo-effect-pulsate"

onclick="new Effect.Pulsate(this)">

<img src="http://script.aculo.us/images/demo-logo.gif" alt="" />

<span>Click me</span> </div>

Java

applyEffect("Pulsate", clickButton.getElement());

private native void applyEffect(

String name,

Element element

) /*-{

$wnd.Effect[name](element);

}-*/;

JavaScript

function $applyEffect(this$static, name, element){

$wnd.Effect[name](element);

}

Page 42: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JSNI

Demo - Effect

(script.actulo.us)

Page 43: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Papyrus - Leveransplan

Page 44: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Papyrus - Leveransplan

Page 45: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Papyrus - Leveransplan

Click

Page 46: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JSNI

+

= gwtext

Page 47: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

JSNI

Demo - Leveransplan

(ExtJs)

Page 48: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Prototyp

Demo - Sökning

Page 49: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Prestanda (Källa Google)

Page 50: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Prestanda (GWT 1.4)

• Bilder

• Kodstorlek

• Prestanda

• Läsbarhet (pretty,detailed, obfuscated)

• Cachning

<30%

<20-50%

Page 51: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Prestanda 1.0 -> 1.4

Page 52: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Säkerhet

Page 53: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Säkerhet

• 80 % beror på dålig kontroll av extern data

Page 54: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Säkerhet

• XSS - Cross-Site Scripting

• CSRF – Cross-Site Request Forging

• JavaScript Hijacking

• Ajax Security – Hoffman, Billy

Page 55: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT - Säkerhet

• Compile-time check

• Tar bort kommentarer

• Obfuscated

• Samma domänobjekt på klient och server

Page 56: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT Infrastruktur

• code.google.com/webtoolkit

• Verktyg

• Böcker

• Konferens

• En massa gwt-xxx projekt (med status

0.x.y)

Page 57: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT-svagheter

• Google

• ”Native” GWT Komponenter

• Säkerhet

• DataTransferObject

Page 58: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Fördelar GWT• Ej expert på JavaScript

• Verktygstöd

• Användbarhet och prestanda i fokus

• Google + Apache 2.0 Open Source

• Minnesläckor

• Test/Refaktorering

• Hanterar – Historik och bokmärken

Page 59: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Avslutande Frågor

Page 60: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

GWT - Mission

To radically improve

the web experience for users

by enabling developers

to use existing Java tools

to build no-compromise AJAX

for any modern browser

1.0, 1.5, 2.0

6, 7

2.0

8.5, 9.0

Page 61: Google Web Toolkit - Jfokus · 2019-09-11 · 2008-01-30 GWT - Arkitektur Java till JS Kompilator JSNI JRE Emulering Widget & Panels i18n RPC XML Parser Historik JUnit integration

2008-01-30

Referenser• http://code.google.com/webtoolkit

• http://www.instantiations.com/gwtdesigner

• http://www.json.org

• http://www.manning.com/hanson/