Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

88
Mobile Java with GWT Murat Yener @yenerm Wednesday, October 9, 13

description

 

Transcript of Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Page 1: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Mobile Java with GWTMurat Yener@yenerm

Wednesday, October 9, 13

Page 2: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

who (the hell) am I?!?

Java, Flex, GWT, iOS, Android developer

Principle Mentor at Eteration

Eclipse Committer

GDG (GTUG) Istanbul Organizer

Conference Speaker

Wednesday, October 9, 13

Page 3: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

who (the hell) am I?!?

Java, Flex, GWT, iOS, Android developer

Principle Mentor at Eteration

Eclipse Committer

GDG (GTUG) Istanbul Organizer

Conference Speaker

Wednesday, October 9, 13

Page 4: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

who (the hell) am I?!?

Java, Flex, GWT, iOS, Android developer

Principle Mentor at Eteration

Eclipse Committer

GDG (GTUG) Istanbul Organizer

Conference Speaker

Mobile App Developer at Intel

Wednesday, October 9, 13

Page 5: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

who (the hell) am I?!?

Java, Flex, GWT, iOS, Android developer

Principle Mentor at Eteration

Eclipse Committer

GDG (GTUG) Istanbul Organizer

Conference Speaker

Mobile App Developer at Intel

Wednesday, October 9, 13

Page 6: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

as a mobile developer

Wednesday, October 9, 13

Page 7: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

as a mobile developer

Wednesday, October 9, 13

Page 8: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

as a mobile developer

Wednesday, October 9, 13

Page 9: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

what (the hell) is this talk about?!?

The fifth element... The Webview..

HTML5 mobile frameworks

Phonegap

keeping native UX

Wednesday, October 9, 13

Page 10: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so an HTML5 talk???

Facebook killed HTML5 app.. Zuckerberg said HTML5 is not there yet!!

try fastbook from sencha fb.html5isready.com

LinkedIn moved to native!!

so is it really better now??

Wednesday, October 9, 13

Page 11: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so an HTML5 talk???

Facebook killed HTML5 app.. Zuckerberg said HTML5 is not there yet!!

try fastbook from sencha fb.html5isready.com

LinkedIn moved to native!!

so is it really better now??

Wednesday, October 9, 13

Page 12: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mobile apps!

Android

iPhone

Blackberry

Windows Phone

Tablets?!?

Wednesday, October 9, 13

Page 13: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mobile apps!

Android

iPhone

Blackberry

Windows Phone

Tablets?!?

Wednesday, October 9, 13

Page 14: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mobile apps!

Android

iPhone

Blackberry

Windows Phone

Tablets?!?

Wednesday, October 9, 13

Page 15: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Hybrid Apps: Teaching the old dog new tricks?

Wednesday, October 9, 13

Page 16: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Hybrid Apps: Teaching the old dog new tricks?

Wednesday, October 9, 13

Page 17: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Hybrid Apps: Teaching the old dog new tricks?

Wednesday, October 9, 13

Page 18: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

html5 apps in native shell?? nuts!! this is too complicated!!

have many of you have web development experience?

how many of you develop native apps?

how many of you don’t like web development just because of javascript??

Wednesday, October 9, 13

Page 19: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

html5 apps in native shell?? nuts!! this is too complicated!!

have many of you have web development experience?

how many of you develop native apps?

how many of you don’t like web development just because of javascript??

Wednesday, October 9, 13

Page 20: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

but it is slow!!

building games?

3d physics?

image or sound processing?

...

Wednesday, October 9, 13

Page 21: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

but it is slow!!

building games?

3d physics?

image or sound processing?

...

Wednesday, October 9, 13

Page 22: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

but it is slow!!

building games?

3d physics?

image or sound processing?

...

no most of the time we just do this!Wednesday, October 9, 13

Page 23: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

wait is this really web?

Angry Birds for Chrome (GWT)

Quake on Mobile (requires Chrome Beta for WebGL) http://mediatojicode.com/q3bsp/

“We started with the existing Jake2 Java port of the Quake II engine, then used the Google Web Toolkit (along with WebGL, WebSockets, and a lot of refactoring) to cross-compile it into Javascript. You can see the results in the video above — we were honestly a bit surprised when we saw it pushing over 30 frames per second on our laptops (your mileage may vary)!” from Google Code Blog...

Wednesday, October 9, 13

Page 24: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

wait is this really web?

Angry Birds for Chrome (GWT)

Quake on Mobile (requires Chrome Beta for WebGL) http://mediatojicode.com/q3bsp/

“We started with the existing Jake2 Java port of the Quake II engine, then used the Google Web Toolkit (along with WebGL, WebSockets, and a lot of refactoring) to cross-compile it into Javascript. You can see the results in the video above — we were honestly a bit surprised when we saw it pushing over 30 frames per second on our laptops (your mileage may vary)!” from Google Code Blog...

Wednesday, October 9, 13

Page 25: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

wait is this really web?

Angry Birds for Chrome (GWT)

Quake on Mobile (requires Chrome Beta for WebGL) http://mediatojicode.com/q3bsp/

“We started with the existing Jake2 Java port of the Quake II engine, then used the Google Web Toolkit (along with WebGL, WebSockets, and a lot of refactoring) to cross-compile it into Javascript. You can see the results in the video above — we were honestly a bit surprised when we saw it pushing over 30 frames per second on our laptops (your mileage may vary)!” from Google Code Blog...

Wednesday, October 9, 13

Page 26: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Mobile (friendly) HTML5 Frameworks

jQueryMobile

Sencha

Zepto

mGWT

Wednesday, October 9, 13

Page 27: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Mobile (friendly) HTML5 Frameworks

jQueryMobile

Sencha

Zepto

mGWT

Wednesday, October 9, 13

Page 28: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Mobile (friendly) HTML5 Frameworks

jQueryMobile

Sencha

Zepto

mGWT

Wednesday, October 9, 13

Page 29: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Mobile (friendly) HTML5 Frameworks

jQueryMobile

Sencha

Zepto

mGWThey, wait! n

o javascript

?!?

Wednesday, October 9, 13

Page 30: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

GWT 101: java to javascript?

GWT compiler does the magic

Optimized high performance javascript

cross browser compability (upto ie6)

not really mobile look’n feel :(

Wednesday, October 9, 13

Page 31: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

GWT 101: java to javascript?

GWT compiler does the magic

Optimized high performance javascript

cross browser compability (upto ie6)

not really mobile look’n feel :(

Wednesday, October 9, 13

Page 32: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

UI & UX

Wednesday, October 9, 13

Page 33: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

UI & UX

Wednesday, October 9, 13

Page 34: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

UI & UX

Wednesday, October 9, 13

Page 35: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

UI & UX

Wednesday, October 9, 13

Page 36: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

gwt frameworks?

gwt-mobile-webkit: database, storage, geolocation, widgets(?) http://code.google.com/p/gwt-mobile-webkit/

gwtmobile: GwtMobile-UI, Gwtmobile-Persistence, GwtMobile-PhoneGap(!) http://code.google.com/p/gwtmobile/

touch4j: Sencha, $$ http://www.emitrom.com/gwt4touch

mgwt: UI Widgets, GWT-Phonegap http://code.google.com/p/mgwt/

Wednesday, October 9, 13

Page 37: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

gwt frameworks?

gwt-mobile-webkit: database, storage, geolocation, widgets(?) http://code.google.com/p/gwt-mobile-webkit/

gwtmobile: GwtMobile-UI, Gwtmobile-Persistence, GwtMobile-PhoneGap(!) http://code.google.com/p/gwtmobile/

touch4j: Sencha, $$ http://www.emitrom.com/gwt4touch

mgwt: UI Widgets, GWT-Phonegap http://code.google.com/p/mgwt/

Wednesday, October 9, 13

Page 38: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

gwt frameworks?

gwt-mobile-webkit: database, storage, geolocation, widgets(?) http://code.google.com/p/gwt-mobile-webkit/

gwtmobile: GwtMobile-UI, Gwtmobile-Persistence, GwtMobile-PhoneGap(!) http://code.google.com/p/gwtmobile/

touch4j: Sencha, $$ http://www.emitrom.com/gwt4touch

mgwt: UI Widgets, GWT-Phonegap http://code.google.com/p/mgwt/

Wednesday, October 9, 13

Page 39: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

gwt frameworks?

gwt-mobile-webkit: database, storage, geolocation, widgets(?) http://code.google.com/p/gwt-mobile-webkit/

gwtmobile: GwtMobile-UI, Gwtmobile-Persistence, GwtMobile-PhoneGap(!) http://code.google.com/p/gwtmobile/

touch4j: Sencha, $$ http://www.emitrom.com/gwt4touch

mgwt: UI Widgets, GWT-Phonegap http://code.google.com/p/mgwt/

Wednesday, October 9, 13

Page 40: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 41: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 42: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 43: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 44: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 45: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 46: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

so what is mGWT

mobile widget library on gwt

native looking widgets for each platform

maven friendly

mvp ready (maven archetype)

and with gwt-phonegap

Wednesday, October 9, 13

Page 47: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

where to start?

get the source https://code.google.com/p/mgwt

or download the jar

or just use maven

<dependency> <groupId>com.googlecode.mgwt</groupId> <artifactId>mgwt</artifactId> <version>1.1.2</version> </dependency>

Wednesday, October 9, 13

Page 48: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

Hello World!!public class MGWTEntryPoint implements EntryPoint {

public void onModuleLoad() { // set viewport and other settings for mobile MGWT.applySettings(MGWTSettings.getAppSetting());

// build animation helper and attach it AnimationHelper animationHelper = new AnimationHelper(); RootPanel.get().add(animationHelper);

// build some UI LayoutPanel layoutPanel = new LayoutPanel(); Button button = new Button("Hello mgwt"); layoutPanel.add(button);

// animate animationHelper.goTo(layoutPanel, Animation.SLIDE);

} }

Wednesday, October 9, 13

Page 50: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

add a litte spice: phonegap

geolocationcameraacceleratorcompassphonebookfile systemeven nfc

Wednesday, October 9, 13

Page 51: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

add a litte spice: phonegap

geolocationcameraacceleratorcompassphonebookfile systemeven nfc

basicall

y any na

tive API!!

Wednesday, October 9, 13

Page 52: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

phonegap in action

...Button button = new Button("Hello mgwt");button().addTapHandler(new TapHandler() { @Override public void onTap(TapEvent event) { phoneGap.getNotification().alert("Done!!"); }});layoutPanel.add(button);...

Wednesday, October 9, 13

Page 53: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

phonegap, in real actionphoneGap.getGeolocation().watchPosition(geolocationOptions, new MyGeolocationCallback(){

@Override public void onSuccess(Position position) { // check accuracy if (position.getCoordinates().getAccuracy() > 11) { raceView.getLabel().setText("Error: Accuracy"); } // geolocation returns mps, multiply with 3.6 to convert to kph double speed = 3.6 * position.getCoordinates().getSpeed(); if (speed > 0.2) {// if going

raceView.getLabel().setText(speed + "km @" + position.getCoordinates().getAccuracy());

currentLocation = position;// got the position now can start!start();

// stop if the threshold is reachedif (isGoing && speed >= 60) {

MgwtAppEntryPoint.phoneGap.getGeolocation().clearWatch(geolocationWatcher); endLocation = position;calculate();

} } else {// if stoped raceView.getLabel().setText("get ready!!"); isGoing = false; }

}

@Overridepublic void onFailure(PositionError error) {

MgwtAppEntryPoint.phoneGap.getNotification().alert("Problem getting location");}

});

Wednesday, October 9, 13

Page 54: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

phonegap, in real actionphoneGap.getGeolocation().watchPosition(geolocationOptions, new MyGeolocationCallback(){

@Override public void onSuccess(Position position) { // check accuracy if (position.getCoordinates().getAccuracy() > 11) { raceView.getLabel().setText("Error: Accuracy"); } // geolocation returns mps, multiply with 3.6 to convert to kph double speed = 3.6 * position.getCoordinates().getSpeed(); if (speed > 0.2) {// if going

raceView.getLabel().setText(speed + "km @" + position.getCoordinates().getAccuracy());

currentLocation = position;// got the position now can start!start();

// stop if the threshold is reachedif (isGoing && speed >= 60) {

MgwtAppEntryPoint.phoneGap.getGeolocation().clearWatch(geolocationWatcher); endLocation = position;calculate();

} } else {// if stoped raceView.getLabel().setText("get ready!!"); isGoing = false; }

}

@Overridepublic void onFailure(PositionError error) {

MgwtAppEntryPoint.phoneGap.getNotification().alert("Problem getting location");}

});

yes, you th

is is html5 a

nd

you can do

that with g

wt

Wednesday, October 9, 13

Page 55: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

even more...public void onTap(TapEvent event) { final MCheckBox check = ((MCheckBox) event.getSource()); if (check.getValue()) { if (TWITTER.equalsIgnoreCase(type)) profileView.getBrowser().showWebPage(Service.BASE_URL + "auth/twitter"); else if (FACEBOOK.equalsIgnoreCase(type)) profileView.getBrowser().showWebPage(Service.BASE_URL + "auth/facebook"); profileView.getBrowser().addLocationChangeHandler(new ChildBrowserLocationChangedHandler() { @Override

public void onLocationChanged(ChildBrowserLocationChangedEvent event) { //Do the login... }

});

}

}

}

Wednesday, October 9, 13

Page 56: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

even more...public void onTap(TapEvent event) { final MCheckBox check = ((MCheckBox) event.getSource()); if (check.getValue()) { if (TWITTER.equalsIgnoreCase(type)) profileView.getBrowser().showWebPage(Service.BASE_URL + "auth/twitter"); else if (FACEBOOK.equalsIgnoreCase(type)) profileView.getBrowser().showWebPage(Service.BASE_URL + "auth/facebook"); profileView.getBrowser().addLocationChangeHandler(new ChildBrowserLocationChangedHandler() { @Override

public void onLocationChanged(ChildBrowserLocationChangedEvent event) { //Do the login... }

});

}

}

} make use of the phonegap plugins!

Wednesday, October 9, 13

Page 57: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

going fancy, mvp!

code your UI in the View preferably in xml via UIBinder

and your logic in the controller (activity)

sound familiar?

easy navigation

lots of boilerplate code

Wednesday, October 9, 13

Page 58: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

going fancy, mvp!

code your UI in the View preferably in xml via UIBinder

and your logic in the controller (activity)

sound familiar?

easy navigation

lots of boilerplate code

Wednesday, October 9, 13

Page 59: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt, advanced

MVP

Model

View

Presenter

Maven Archetype

Wednesday, October 9, 13

Page 60: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt, advanced

MVP

Model

View

Presenter

Maven Archetype

Wednesday, October 9, 13

Page 61: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

connecting to backendGWT-RPC (yeah, it rocks), but in native package?

JSONP with with RequestBuilder & Autobean

Wednesday, October 9, 13

Page 62: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

connecting to backendGWT-RPC (yeah, it rocks), but in native package?

JSONP with with RequestBuilder & AutobeanJsonpRequestBuilder jsonp = new JsonpRequestBuilder();String url = URL.encode(JSON_URL + "/sendData/" + “HelloWorld”);

jsonp.requestObject(url, new AsyncCallback<JavaScriptObject>() {

@Override

public void onFailure(Throwable caught) {

MgwtAppEntryPoint.phoneGap.getNotification().alert(caught.getMessage());

}

@Override

public void onSuccess(JavaScriptObject result) { JSONObject jsObj = new JSONObject(result); AutoBean<Score[]> bean = AutoBeanCodex.decode(factory, Score[].class, jsObj.toString());

Score[] scores = bean.as();

scoresCallback.onResponse(scores); }});

Wednesday, October 9, 13

Page 63: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

accessing native js

can use any existing javascript

use javascript in type safe way

BUT!! don’t mess touch events!!

AND beware you are not in the safe and optimized zone anymore!!

Wednesday, October 9, 13

Page 64: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

JSNIpublic native static String key(int index) /*-{

return $wnd.localStorage.key(index);

}-*/;public native static void setItem(String key, String value) /*-{

$wnd.localStorage.setItem(key, value);}-*/;public native static String getItem(String key) /*-{

return $wnd.localStorage.getItem(key);

}-*/;

public native static void removeItem(String key) /*-{

$wnd.localStorage.removeItem(key);

}-*/;

public native static void clear() /*-{

$wnd.localStorage.clear();

}-*/;

Wednesday, October 9, 13

Page 65: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

building my swipe panel

just like the one in sencha

wrapped swipeview from cubiq

Wednesday, October 9, 13

Page 66: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

building my swipe panel

just like the one in sencha

wrapped swipeview from cubiq

Wednesday, October 9, 13

Page 67: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

building my swipe panel

just like the one in sencha

wrapped swipeview from cubiq

Wednesday, October 9, 13

Page 68: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

building my swipe panel

just like the one in sencha

wrapped swipeview from cubiq

Wednesday, October 9, 13

Page 69: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 70: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 71: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 72: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 73: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 74: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 75: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

mgwt groups

https://groups.google.com/forum/?fromgroups#!forum/mgwt

Wednesday, October 9, 13

Page 76: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

daniel to rescue..

Wednesday, October 9, 13

Page 77: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

daniel to rescue..

Wednesday, October 9, 13

Page 78: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

daniel to rescue..

Wednesday, October 9, 13

Page 79: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

here it is

Wednesday, October 9, 13

Page 80: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

here it is

Wednesday, October 9, 13

Page 81: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

here it is

Wednesday, October 9, 13

Page 82: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

gwtquerycoming from jQuery, no problem!

public void onModuleLoad() { //Hide the text and set the width and append an h1 element $("#text").hide() .css("width", "400px") .prepend("<h1>GwtQuery Rocks !</h1>"); //add a click handler on the button $("button").click(new Function(){ public void f() { //display the text with effects and animate its background color $("#text").as(Effects) .clipDown() .animate("backgroundColor: 'yellow'", 500) .delay(1000) .animate("backgroundColor: '#fff'", 1500);

}

});

}

Wednesday, October 9, 13

Page 83: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

skinningdefault themes for

Android (>4.0)

iOS/iOS retina (<7.0)

Blackberry

easy to create yours https://code.google.com/p/mgwt/wiki/Styling

//append your own css as last thing in the head MGWTStyle.injectStyleSheet("yourcssfile.css");

Wednesday, October 9, 13

Page 84: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

wait, css in java?!?.mgwt-Button { display: inline-block; float: left; width: 145px; height: 100px; border: 1px solid rgba(0,0,0,0.23); background: #ff6600; border-radius: 6px; box-shadow: inset -1px 0px 0px rgba(255,255,255,0.41), inset1px 0px 0px rgba(255,255,255,0.21), inset 0px -1px 0pxrgba(0,0,0,0.21), inset 0px 1px 0px rgba(255,255,255,0.41), 0px 1px2px rgba(0,0,0,0.21); text-align: center; font-size: 14px; margin: 5px; font-weight: bold; text-shadow: 0px 1px 1px rgba(0,0,0,0.49); color: white; line-height: 124px;}

Wednesday, October 9, 13

Page 85: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

debugging

first class java debugging in your IDE

GWT pretty compile and debug javascript in your browser

use source maps and debug java in your browser!!

use remote debugging to debug on mobile devices

Wednesday, October 9, 13

Page 86: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

what about others?

iOS, works like charm.. pretty much native

android, near native experience

blackberry

windows phone

tablets?

desktop??

Wednesday, October 9, 13

Page 87: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

what can i really build?

anything!

but why not going native for games

many widgets.. lists, carousels, forms

dev friendly, you know java? just dive in!

make use of current js

windows phone? seriously?!?

Wednesday, October 9, 13

Page 88: Mobile Java with mGWT, "Still Write Once Run Everywhere" (JavaOne 2013)

</slides>

GDG Istanbul (every 3. or 4. Saturday)DevFest Istanbul devfesttr.com

[email protected]@yenerm

devchronicles.com

Wednesday, October 9, 13