SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
GWT . Create
A Fast and Lightweight Future
Welcome
State of the Community
State of GWT
GWT 3.0 and Beyond
State of the Community
•

700+ attending GWT.create

•

3x increase in external contributions (patches)

•

Thousands of Googlers using it

•

~100k users of SDK
Looking for Sexy?

Cool New Products using GWT
Google Shopping Express
New Google Sheets
Google Sheets
•

First in a new generation of hybrid apps

•

Shares logic between Server, Android, Web, and iOS
via Java code.

•

Cross compiled with GWT and j2objc

•

Web UI marries Closure Compiler JS and shared Java
via GWT code.

•

Android and iOS UIs marry Java and Obj-C UI with
shared Java.
Google Sheets
•

Much faster than predecessor
•

Larger Sheets

•

Local client formula evaluation

•

Offline

•

Faster, smoother, scrolling

•

Supported on all 3 platforms at once.
State of GWT
•

GWT 2.6
•
•

Reduced Code Size

•
•

Java 7

Better CodeSplitter

Ambitious plan for upcoming improvements
What’s Happened Since
2006
•

JS a lot faster

•

Browsers much more capable

•

Less incompatibility between latest versions
Kraken 2200% Faster
Capabilities
•

Multimedia: Video, Audio, Camera, Microphone,
WebRTC, Canvas, SVG, WebGL, …

•

I/O: Sockets, FileSystem, LocalStorage,
IndexDB, TypedArrays, Blobs, Web Workers,
Geolocation, …

•

Layout/Rendering: Flexible Box Model, Web
Animations, Scoped CSS, Shadow DOM, GPU
accelerated drawing and compositing
Compatibility
Mobile Expectations

•

About 50% of web traffic is now mobile

•

Native apps have influenced consumers to
expect jank-free experience
GWT 3.0 And Beyond

Fast and Lightweight
Lightweight Syntax

Full Java 8 language support
No Lambda
!

Button b = new Button("Click Me",
new ClickHandler() {
public void onClick(ClickEvent e) {
alert("Hello!");
}
});
With Lambda

Button b = new Button("Click Me",
(e) -> alert("Hello"));
!
Vs Javascript

var b = new Button("Click Me",
function(e) { alert("Hello"); });
!
!
Lightweight Js Interop

•

Call Javascript without JSNI

•

@JsInterface, @JsProperty
Js Library Sample
!

function MyClass() {
this.answer = 42;
}
!

MyClass.prototype.whatIsTheAnswer = function() {
return "The answer to life, the universe, and
everything is ..." + this.answer;
}
!
Without JsInterface
!

interface MyClass {
int getAnswer();
String whatIsTheAnswer();
}

!

final class MyClassImpl extends JavaScriptObject
implements MyClass {

!

}

!
!
!

public native int getAnswer() /*-{
return this.answer;
}-*/;
public native String whatIsTheAnswer() /*-{
return this.whatIsTheAnswer();
}-*/;
With JsInterface
@JsInterface
interface MyClass {
@JsProperty
int getAnswer();
String whatIsTheAnswer();
}
!
!
!
!
Zero Work Interop

Could we make this even easier?
Zero Work Interop
•

Closure Compiler annotated Javascript

•

Typescript annotated JavaScript

•

Drop in and go
•

Automatically generate JsInterface
declarations from typed JS
Demo
Using External JS Libraries

•

Must be un-minified to have predictable symbols

•

Live in separate JS execution context

•

Dead or Unused library code not removable
The World Today
Host Html Page

GWT Module IFrame

<script src=“angular.js”>
GWT Source
GWT
Compiler
Compiled JS
Radically Better Interop
•

Combine JS and Java as single source tree

•

Globally Optimize Together

•

Output single, optimized application
The World Tomorrow
Host Html Page

GWT Module IFrame

<script src=“angular.js”>
GWT Source
GWT
Compiler
Compiled JS
The World Tomorrow
GWT Module IFrame
<script src=“angular.js”>

GWT Source

GWT
Compiler
Closure
Compiler
Compiled JS
Radically Better Interop
•

Javascript library subject to optimizations
together with Java code

•

Smallest code size possible

•

Type-checking between JS and Java
Web Components
•

Web Native Templates

•

Custom HTML Elements

•

Encapsulated DOM and CSS
•

•

(Shadow DOM and Scoped CSS)

Kind of like runtime native version of UiBinder
Web Components
•

Ecosystem of reusable widgets/components

•

New Interop will make them easy to consume

•

Future of where Web authoring is headed

•

We want to be ready for it
Fire and Forget CodeSpliting
•

CodeSplitter allows code to be not be loaded
until needed

•

Reduces initial download size

•

Shared code “leftovers fragment” inhibits
benefits
Current Problem
•

Tedious

•

Brittle

•

Lack of Control
Next-Gen CodeSplitter
•

Choose to force a split point manually

•

Automatically merge fragments

•

Multiple leftover fragments
Back to Basics
Simplicity
•

Radically Simpler Interop with JavaScript

•

Targeting Modern Browser Capabilities

•

Emphasis on Mobile
Fast
•

Improvements to Arrays

•

Improvements to CodeGen

•

Improvements to Layout

•

Improvements to Compilation Speed
Improvements to Arrays
•

Faster Creation

•

TypedArrays for numeric primitives
•

new int[64] => new Int32Array(64)
Improvements to CodeGen
•

Tune JS output for Modern JS VMs

•

Output asm.js-like code for increased
performance

•

Smaller code with Closure Backend
Improvements to Layout
•

“Native” Layout vs JS layout

•

CSS3 support through GssResource

•

Avoid constructs which “jank” browsers
Faster Compilation
•

Significantly faster incremental/modular draft
compilation
•

•

Speed proportional to # of changed files

Split Local/Global Optimizer
Improvements to
SuperDev Mode
•

Faster refresh

•

Better debugging

•

IDE integration?
Fast
•

Faster Roundtripping in Compile cycle

•

Faster JS execution speed

•

Faster browser rendering
When?
•

GWT 3.0 tentatively scheduled for mid 2014.

•

Disclaimer: Not everything will make it for 3.0

•

Get Involved!

Mais conteúdo relacionado

Mais procurados

Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
rajivmordani
 

Mais procurados (20)

Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6
 
Deploying JHipster Microservices
Deploying JHipster MicroservicesDeploying JHipster Microservices
Deploying JHipster Microservices
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
A Closer Look At React Native
A Closer Look At React NativeA Closer Look At React Native
A Closer Look At React Native
 
Starting with Reactjs
Starting with ReactjsStarting with Reactjs
Starting with Reactjs
 
Internal workshop react-js-mruiz
Internal workshop react-js-mruizInternal workshop react-js-mruiz
Internal workshop react-js-mruiz
 
Reactjs workshop
Reactjs workshop Reactjs workshop
Reactjs workshop
 
React Django Presentation
React Django PresentationReact Django Presentation
React Django Presentation
 
Speed up your GWT coding with gQuery
Speed up your GWT coding with gQuerySpeed up your GWT coding with gQuery
Speed up your GWT coding with gQuery
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
 
Introduction of React.js
Introduction of React.jsIntroduction of React.js
Introduction of React.js
 
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
Reactjs workshop (1)
Reactjs workshop (1)Reactjs workshop (1)
Reactjs workshop (1)
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
 
Node js Introduction
Node js IntroductionNode js Introduction
Node js Introduction
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
 
React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016React Fundamentals - Jakarta JS, Apr 2016
React Fundamentals - Jakarta JS, Apr 2016
 

Semelhante a Gwt.Create Keynote San Francisco

Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOS
Kevin Decker
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
Ran Mizrahi
 

Semelhante a Gwt.Create Keynote San Francisco (20)

Gwtcreatekeynote
GwtcreatekeynoteGwtcreatekeynote
Gwtcreatekeynote
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
Devfest09 Cschalk Gwt
Devfest09 Cschalk GwtDevfest09 Cschalk Gwt
Devfest09 Cschalk Gwt
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
How to Contribute to Apache Usergrid
How to Contribute to Apache UsergridHow to Contribute to Apache Usergrid
How to Contribute to Apache Usergrid
 
Intro to javascript (6:27)
Intro to javascript (6:27)Intro to javascript (6:27)
Intro to javascript (6:27)
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOS
 
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
 
Creating a Responsive Website From Scratch
Creating a Responsive Website From ScratchCreating a Responsive Website From Scratch
Creating a Responsive Website From Scratch
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
 
Intro to JavaScript - Thinkful LA, June 2017
Intro to JavaScript - Thinkful LA, June 2017Intro to JavaScript - Thinkful LA, June 2017
Intro to JavaScript - Thinkful LA, June 2017
 
Android lessons you won't learn in school
Android lessons you won't learn in schoolAndroid lessons you won't learn in school
Android lessons you won't learn in school
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Gwt.Create Keynote San Francisco