Overview of Google Web Toolkit (GWT) and GWT 2.0 Feature Preview, presented at the Silicon Valley Web Java User Group on June 16 2009 at the Googleplex in Mountain View, CA
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
Web Standards for AR workshop at ISMAR13Rob Manson
This work was presented at the Open Standards session at the IEEE ISMAR 2013 event. It provides a detailed overview and working examples that show exactly where Augmented Reality and Computer Vision are up to on the Web Platform.
This presentation also provides a detailed description of how to define exactly what the Augmented Web is.
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
Web Standards for AR workshop at ISMAR13Rob Manson
This work was presented at the Open Standards session at the IEEE ISMAR 2013 event. It provides a detailed overview and working examples that show exactly where Augmented Reality and Computer Vision are up to on the Web Platform.
This presentation also provides a detailed description of how to define exactly what the Augmented Web is.
An overview of the most important GWT features mixed with my experience of GWT. For example: 2-layered delpoyment model, several design patterns, security issues, ajax testing, etc..
This presentation is different then the usual GWT presentation as it describes the usage of GWT in an enterprise environment instead of a "GWT hobby project".
This presentation is used during GWT workshops and courses.
This is the 2nd of 3 parts of GWT Training. In this session you will learn how to create user interface (GWT widgets) and handle events on the client side.
In this session, see Google Web Toolkit used in exotic and creative ways to solve interesting engineering problems, from authoring OpenSocial apps that run as both Web gadgets and native Android applications, to developing Adobe AIR applications using GWT, compiling CSS selectors to Javascript at compile time, running multithreaded code with GWT and Gears workers, or exporting GWT libraries for JavaScript users. Learn the secrets of writing "faster than possible" GWT code, how to use Generators and Linkers in harmony, and make seamless procedure calls from GWT code to other environments like Flash, Gears, or Android.
This is the first of 3 parts of GWT Training. It is introduces Ajax and GWT and how to install GWT for Eclipse.
It is for Java Programmers that want to start Ajax development using GWT.
Web Frameworks of the Future: Flex, GWT, Grails and RailsMatt Raible
What if the choices in web framework were reduced to 4? If RIA are the way of the future, it’s possible that these 4 frameworks are the best choices for this development paradigm. This session will explore these frameworks, as well as entertain other opinions on the future of web development.
RESTful backends are easy to create with both Rails and Grails. Ajax frontends are simple to create and maintain with GWT. Flex gives you Fash and a pretty UI. If you’re an HTML developer, Rails allows you to quickly develop MVC applications. If you’re a Java Developer, GWT + Grails might be a match made in heaven. This session is designed to help you learn more about each framework and decide which combination is best for your project.
In addition, licensing, community support, and documentation/training for each project will be discussed.
GWT Brand Guidelines 1.1 - January 2015
New Branding revealed at GWT Create 2015.
Logo and branding proudly created by
Manon Gruaz from Arcbees.
In order to protect the reputation and branding of GWT, the GWT logos and branding are trademarks of Arcbees. Arcbees consent and agree to comply with and be bound by every decisions of the GWT Streering Committee regarding the logos and branding.
For any questions, please contact Arcbees:
info@arcbees.com | www.arcbees.com
You can follow Manon on Twitter : @manongruaz
Talk at ACCU2011 Conference.
http://accu.org/index.php/conferences/accu_conference_2011/accu2011_sessions
Gwt offer you an easy and agile way to create your complex ajax application in a tdd fashion. The slides shows also some real code on how to accomplish this.
This is a presentation on Google Web Toolkit given at Devfest 2009 in Buenos Aires Argentina on Nov 17, 2009 by Google Developer Advocate, Chris Schalk
An overview of the most important GWT features mixed with my experience of GWT. For example: 2-layered delpoyment model, several design patterns, security issues, ajax testing, etc..
This presentation is different then the usual GWT presentation as it describes the usage of GWT in an enterprise environment instead of a "GWT hobby project".
This presentation is used during GWT workshops and courses.
This is the 2nd of 3 parts of GWT Training. In this session you will learn how to create user interface (GWT widgets) and handle events on the client side.
In this session, see Google Web Toolkit used in exotic and creative ways to solve interesting engineering problems, from authoring OpenSocial apps that run as both Web gadgets and native Android applications, to developing Adobe AIR applications using GWT, compiling CSS selectors to Javascript at compile time, running multithreaded code with GWT and Gears workers, or exporting GWT libraries for JavaScript users. Learn the secrets of writing "faster than possible" GWT code, how to use Generators and Linkers in harmony, and make seamless procedure calls from GWT code to other environments like Flash, Gears, or Android.
This is the first of 3 parts of GWT Training. It is introduces Ajax and GWT and how to install GWT for Eclipse.
It is for Java Programmers that want to start Ajax development using GWT.
Web Frameworks of the Future: Flex, GWT, Grails and RailsMatt Raible
What if the choices in web framework were reduced to 4? If RIA are the way of the future, it’s possible that these 4 frameworks are the best choices for this development paradigm. This session will explore these frameworks, as well as entertain other opinions on the future of web development.
RESTful backends are easy to create with both Rails and Grails. Ajax frontends are simple to create and maintain with GWT. Flex gives you Fash and a pretty UI. If you’re an HTML developer, Rails allows you to quickly develop MVC applications. If you’re a Java Developer, GWT + Grails might be a match made in heaven. This session is designed to help you learn more about each framework and decide which combination is best for your project.
In addition, licensing, community support, and documentation/training for each project will be discussed.
GWT Brand Guidelines 1.1 - January 2015
New Branding revealed at GWT Create 2015.
Logo and branding proudly created by
Manon Gruaz from Arcbees.
In order to protect the reputation and branding of GWT, the GWT logos and branding are trademarks of Arcbees. Arcbees consent and agree to comply with and be bound by every decisions of the GWT Streering Committee regarding the logos and branding.
For any questions, please contact Arcbees:
info@arcbees.com | www.arcbees.com
You can follow Manon on Twitter : @manongruaz
Talk at ACCU2011 Conference.
http://accu.org/index.php/conferences/accu_conference_2011/accu2011_sessions
Gwt offer you an easy and agile way to create your complex ajax application in a tdd fashion. The slides shows also some real code on how to accomplish this.
This is a presentation on Google Web Toolkit given at Devfest 2009 in Buenos Aires Argentina on Nov 17, 2009 by Google Developer Advocate, Chris Schalk
Micronaut: A new way to build microservicesLuram Archanjo
Over the years microservices architecture has been widely adopted in conjunction with Spring Boot. But recently, we are witnessing the rise of microframeworks such as Micronaut, which has innovated the way we build microservices by providing low memory consumption, fast startup, non-blocking, and other important features that I will demonstrate and conceptualize in this talk.
Developing cross platform desktop application with RubyAnis Ahmad
A brief introduction and example of developing desktop application with Ruby programming language. JRuby and shoesrb is discussed as platform.
Prepared for and Presented on Ruby Conference Bangladesh 2003.
Similar to GWT Overview And Feature Preview - SV Web JUG - June 16 2009 (20)
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
GWT Overview And Feature Preview - SV Web JUG - June 16 2009
1. Google Web Toolkit
Overview and Feature Preview
Silicon Valley Web JUG
June 16, 2009
Fred Sauer
Developer Advocate
fredsa@google.com
Saturday, June 20, 2009
2. Agenda
• What to do about questions?
• How do you pronounce GWT?
• Introduction
• Selecting a language
• Feature tour
• Who's using GWT?
• Compiler, Generator, Linker
• What’s new in 2.0, roadmap
• Q&A
Saturday, June 20, 2009
4. Google-Web-Toolkit
"GWT's mission is 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."
Saturday, June 20, 2009
5. Google-Web-Toolkit
Productivity and Performance
•Productivity for you
•Performance for your users
Saturday, June 20, 2009
12. Speed matters
0.1 seconds perceived as instantaneous.
1 second maintains the feeling that a single task
is being carried out.
10 seconds limit for keeping user’s attention.
Saturday, June 20, 2009
13. Another reason speed matters
• Each cycle provides
feedback
• Each cycle is a
1. User 2. UI
Action Changes learning opportunity
• A faster UI =>
shorter learning
curve
3. User
Learns
Performance for your users
Google Web Toolkit
Saturday, June 20, 2009
14. Speeding up Compilation
2.0
186
Productivity for you
1.6
144
-localWorkers=2
113
Good
-draftCompile
61
Two
Permutations
20
12
2
Hosted Mode Hosted Mode
Startup Refresh
Times gathered using Showcase on a 2-core MacBook Pro
14
Saturday, June 20, 2009
32. Simple, powerful RPC
• Many formats: JSON, XML, custom
• Why not just speak one language?
interface SpellService extends RemoteService {
/**
* Checks spelling and suggests
* alternatives.
* @param the word to check
* @return the list of alternatives
*/
String[] suggest(String word)
}
Saturday, June 20, 2009
38. Disappearing code -
JavaScript overlays
Let the Google Plugin for Eclipse work for you
Saturday, June 20, 2009
39. Disappearing code -
JavaScript overlays
// Magic disappearing class
public class Person extends JavaScriptObject {
protected Person() {}
final public String getDisplayName()
{ return getFirstName() + " " + getLastName(); }
final public native String getFirstName()
/*-{ return this.firstName; }-*/;
final public native String getLastName()
/*-{ return this.lastName; }-*/;
}
Saturday, June 20, 2009
40. Disappearing code -
JavaScript overlays
// You write
Window.alert("Hi, my name is " +
person.getDisplayName());
// GWT translates
$wnd.alert('Hi, my name is ' +
(person.firstName + ' ' + person.lastName));
Saturday, June 20, 2009
43. Big script, big problems
• It's easy to ignore compiled script size
until it's too big
• Initial download can be slooooow
• Super-linear parse time on some
browsers
• UI hangs during script parsing
• Script parsing adds latency to initial UI
setup
• Seems like GWT ought to do
something about this...
Saturday, June 20, 2009
44. Developer Guided Code Splitting
Split point GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable caught) {
only async
on first call
Window.alert("Code download failed");
}
public void onSuccess() {
Handle the Window.alert("Hello, AJAX");
unexpected accessAdditionalFunctionality();
}
});
Saturday, June 20, 2009
45. Getting to know GWT.runAsync()
• Intentionally developer-guided
• Intentionally asynchronous
• Intentionally forces you to think about failure
paths
• Split point doesn't necessarily delay
• Split point doesn't necessarily split
• Compiler decides how to cluster code
• Guaranteed to be correct, ordering-wise...
• ...but might not split as you had hoped due
to cross-refs
• Be sure to look at SOYC (Story of Your
Compile)
Saturday, June 20, 2009
46. Splitting the Showcase demo
• Split point per link in the tree
108
56
Unsplit Split
Startup JS (KB, gzipped)
46
Saturday, June 20, 2009
47. runAsync() Helps Apps Startup More Quickly
1500
1400 KB
Size of Initial JavaScript Download (KB)
1125
750
7x Decrease In
Initial Download
Size
375
with runAsync()
200
KB
0
26-Nov 29-Apr 18-Jun 28-Jul 12-Sep 27-Oct 24-Dec 16-Mar
Saturday, June 20, 2009
50. Evaporating code
“The fastest code is that
which does not run.”
– Joel Webber, GWT co-creator
Saturday, June 20, 2009
51. GWT compiler optimizations
Examples of compiler optimizations
• Dead code removal
• Type tightening
• Polymorphism removal
• Inlining
• JavaScript code gen compression
Google Web Toolkit
Saturday, June 20, 2009
56. Browser-specific optimizations
(Deferred Binding)
Firefox Webkit (Safari) Opera IE
Typical portable 2876 ms 1276 ms 2053 ms 4078 ms
setInnerText()
textContent=... - 908 ms 1386 ms -
innerText=... 2477 ms 918 ms 1520 ms 2469 ms
DOM manipulation 7148 ms 1997 ms 4836 ms 14800 ms
Improvement 14% 29% 32% 39%
Google Web Toolkit
Saturday, June 20, 2009
61. Coming in GWT 2.0 -
ClientBundle > ImageBundle
Saturday, June 20, 2009
62. HTTP request times add up quickly
or why sprites matter and resource combining helps
Saturday, June 20, 2009
63. ImageBundle (Redux)
ImageBundle was only the beginning
20,558 bytes
1 bundled image
11 separate images
• Bundled ("sprited") automatically at
compile-time
• Bundled image can be smaller than the
6,824 bytes
sum of its constituent images
• Fewer round-trips (1 request vs. 11)
• Many browsers have 2-connection max
• Great caching story
∑ Separate Bundled
63
Saturday, June 20, 2009
65. A Simple Example: TextResource
interface MyBundle extends ClientBundle {
public static final MyBundle INSTANCE = GWT.create(MyBundle.class);
@Source("app_config.xml") TextResource appConfig();
}
Figure 1 – Declaration
<app-config animation-speed="1500" failover-strategy="give-up" ... />
Figure 2 – Text Resource (app_config.xml) found on your classpath at compile-time
void configureMyApp() {
MyBundle bundle = MyBundle.INSTANCE;
TextResource txtres = bundle.appConfig();
String xml = txtres.getText();
Document doc = XMLParser.parse(xml);
// ...configure application using XML DOM...
}
Figure 3 – Point of Use
• Guaranteed to succeed because the text resource is compiled in
• Use the file format that is most appropriate; separate data from code if desired
• No HTTP request required
65
Saturday, June 20, 2009
66. ClientBundle's Killer Feature: CssResource
Compiles CSS with an enhanced syntax
• Define and use constants in CSS
@def hardToMissThickness 8px;
@def scaryColor #F00;
.error-border {
border: hardToMissThickness solid scaryColor;
}
• Conditional rules for user agent, locale, or...anything
@if user.agent safari {
.error-border {
-webkit-border-radius: 4px;
}
}
@elif user.agent gecko {
.error-border {
-moz-border-radius: 4px;
}
}
• More: minify, obfuscate, fancy spriting, ...
66
Saturday, June 20, 2009
67. Coming in GWT 2.0 -
In-browser debugging
Saturday, June 20, 2009
71. -XdisableCastChecking
• Nobody actually catches ClassCastException in app code
void makeItQuack(Animal animal) {
try {
((Quacker) animal).quack();
} catch (ClassCastException c) {
Window.alert("This doesn't quack.");
}
}
• The above example generates a call like this (compiled JS):
dynamicCast(animal, 2).quack();
• But with the flag turned on, you get only this (compiled JS):
animal.quack();
• In a real-world (and very large) Google app...
– 1% script size reduction
– 10% speed improvement in performance-sensitive code
71
Saturday, June 20, 2009
72. Coming in GWT 2.0 -
Overlays Types++, and more...
Saturday, June 20, 2009
73. Interfaces on JavaScript Overlay Types (JSOs)
• In GWT 1.6, JSOs are nifty but tied to JavaScript:
final class Person extends JavaScriptObject {
protected Person() {}
public native String getFirstName() /*-{ return this.firstName; }-*/;
public native String getLastName() /*-{ return this.lastName; }-*/;
}
• Server code can’t handle JSNI on JSOs
• So introduce an interface:
Client/server agnostic code using Person
(e.g. unit tests, business logic)
JavaScriptObject Person
(Class) (Interface)
Person_ClientImpl Person_ServerImpl
(JSO + Interface) (POJO or whatever)
73
Saturday, June 20, 2009
74. More Tidbits
• RPC blacklist: Tell the RPC subsystem to skip types that you know
aren't ever sent across the wire
<extend-configuration-property name="rpc.blacklist"
value="com.example.myapp.client.WidgetList"/>
<extend-configuration-property name="rpc.blacklist"
value="com.example.myapp.client.TimerList"/>
...
• RpcRequestBuilder: Customize XHRs for all RPCs in a service
ServiceDefTarget sdt = (ServiceDefTarget)myService;
sdt.setRpcRequestBuilder(myBuilderWithCustomHttpHeaders);
...
// All calls will use the same XHR settings
// (e.g. custom HTTP request headers)
myService.doSomethingOnTheServer(a, b, c);
• Client-side stack traces on some browsers
(Throwable#getStackTrace() actually does something sometimes)
• Interfaces on JavaScript Overlay Types
74
Saturday, June 20, 2009
75. Coming in GWT 2.0 (Recap)
Productivity Performance
Feature for you for your users
• In-browser hosted mode Debug in real browsers You ship sooner
• Faster compilation Less thumb-twiddling You ship sooner
• Script size reductions and Simple flags enable Apps start faster;
speed improvements size/speed gains run faster
• Code splitting High-leverage, low-risk way Apps start faster;
to spread download time stay interactive
• ClientBundle Project organization != Fewer HTTP
(w/ CssResource!) deployment organization round-trips
• Layout you can count on Less time fighting with CSS Faster, smoother
and layout layout and resizing
75
Saturday, June 20, 2009
86. A brief history
May 2006 1.0 GWT launch at JavaOne
Aug 2006 1.1 Auto resource injection
Nov 2006 1.2 Mac OSX support added
Jan 2007 1.3 Completely open sourced
Mar 2008 1.4 1 million+ downloads
Oct 2008 1.5 Java 5 language support
Apr 2009 1.6 New war project layout
Saturday, June 20, 2009
87. Roadmap beyond 1.6
• Developer Guided Code Splitting
• Story of Your Compile (SOYC)
• In-browser hosted mode (OOPHM)
• UI Binder
• ClientBundle
• Faster GWT Compiler
• Faster & more compact RPC
• Much more..
Saturday, June 20, 2009
88. GWT talks at Google I/O
(http://code.google.com/events/io/)
• GWT can do WHAT? - Bruce Johnson
• Measure in Milliseconds - Kelly Norton
• Architecture Best Practices - Ray Ryan
• The Story of Your Compile / Reading Tea Leaves - Lex Spoon
• Effective GWT - Alex Moffat, Damon Lundin
• Progressively Enhance AJAX w/ GWT Query - Ray Cromwell
• Build Apps with Google APIs - Ray Cromwell
• Fireside Chat - GWT Team
88
Saturday, June 20, 2009
89. Thank you
Read More
http://code.google.com/webtoolkit/
Contact Info
Fred Sauer
Developer Advocate
fredsa@google.com
Questions?
Saturday, June 20, 2009