google web toolkit - jfokus · 2019-09-11 · 2008-01-30 gwt - arkitektur java till js kompilator...
TRANSCRIPT
![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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/31.jpg)
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®ion=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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/32.jpg)
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&appid=GWT-
Book&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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/44.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/50.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/51.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/53.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/54.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/55.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/56.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/57.jpg)
2008-01-30
GWT-svagheter
• ”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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/58.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/59.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/60.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022042220/5ec6729d823f17702b7b7897/html5/thumbnails/61.jpg)
2008-01-30
Referenser• http://code.google.com/webtoolkit
• http://www.instantiations.com/gwtdesigner
• http://www.json.org
• http://www.manning.com/hanson/