SlideShare a Scribd company logo
The GWT bet ... Luc Claes CTO ContactOffice.com Google Developer Day 2007
Coming from the country of… …  please forgive my (broken) English !
Agenda ContactOffice ? Reengineering the interface Selecting a framework Google Web Toolkit (GWT) ? [email_address] beta.contactoffice.com
ContactOffice ? Collaborative & Messaging Web Application  Founded in 1999 by 4 Belgian serial internet entrepreneurs
How big ? 1 million registrations 350.000 active accounts  (Feb 07) 250.000 paying accounts Global, 6 languages Profitable since 2003
Collaboration & Messaging WebApp Calendar (+ RSS) Contacts, To Do, Notes, Bookmarks (+ RSS), Synchro ... Groups Organiser Mail (+ RSS),  IMAP4 & POP3(s), SMTP, Webmail, Antivirus & AntiSpam, SMS, Fax, Alerts & Chat State-of-the-art Messaging  Web upload or WebDAV RSS & Vod/Podcasts,  Public sharing Documents Repository Forum, Wiki,  Bulletin Board,  Phone Calls, ... Collaboration
Everything can be shared  with users and groups! Sophisticated Access Right Model at user level  Applications : Individual user, Families,  Associations, Companies, Departments,  All kinds of teams, ...
ASP & Licence Models Hosted, Security, SLA Personalised, Private Label versions SSO : REST, XML-RPC, CAS, RSA ClearTrust, ... API : XML-RPC
Some happy customers
Technologies Back-end : Pure Java (POJOs only) Object Oriented Database Core business logic + various 'satellites' Web, SMTP c/s, POP3 c/s, IMAP4 c/s, WebDAV c/s, Synchro, Web services, … Built for scalability Web Clients  : Web 1.0 (HTML + JS + CSS) ~2000 JSP pages Pocket Explorer + Symbian Wap (WML) Voice XML (prototype)
Reengineering the interface Goal: Interface upgrade to current standards Weakness: Obsolete Client Architecture (thousands of JSP files) Strength: The 1999 Server Architecture (POJOs + OODB) is still state-of-the-art HTML + JavaScript + Frames Desktop like, Web 2.0 style,  Drag & Drop,  W idgets, ...
Selecting a framework / technology Many good solutions Own framework ? Cost of supporting what others might be doing well ? Ajax vs Flash ? OpenLazslo, Adobe Flex Xml + script syntax,  server-side lock-in, … SilverLight, JavaFX, good ol' Applets ? Ultra lightweight client + server-side Java ?  echo2, zk, thinwire...  Do they scale well ? Existing JS frameworks ? Dojo, Prototype, YUI, ... JavaScript language… JavaScript ? ?
JavaScript ? Powerful constructs Functions as 1st class objects, closures Prototype vs. Class Metaprogramming Ubiquitous dictionaries Dynamic typing but… JavaScript ? ?
The JavaScript nightmare (Very) dynamic language On the fly variables declarations Weak typing eval() Interesting IDEs operations are 'impossible'  (refactoring, smart searches, real-time compilation / syntax check, …) Readability ? Imprecise scoping, encapsulation Run-time errors detection only Even worse: the DOM + the browsers quirks… How to handle efficiently tens of Klocs, multiple developers ? Requires an  extremely  strict discipline (rules set, conventions) for a team
GWT ?  What is GWT ? G oogle  W eb  T oolkit GWT is a Google framework for building AJAX apps in the Java language Fully Open Source (Apache 2 Licence) Java --> JavaScript translation No plugin, no jvm Just 1 year old JavaScript GoogleWeb ToolKit ?
Google Web Toolkit ?  Some features Performances: Aggressive caching, code optimization, compression Clean backend integration: Efficient Java RPC mechanism (or JSON) Portability: Generates platform-specific code (IE 6+, 'old' Mozilla, Firefox, Opera, Safari) Native Java S cript is still reachable: JSNI  (JavaScript Native Interface) i18n But...  Java knowledge required for UI designers CSS only is not realistic JavaScript Google Web Toolkit ?
Google Web Toolkit ?  Java ? Java 1.4 (1.5 coming 'soon') Subset of java.lang.* and java.util.* emulated No introspection, no dynamic class loading Collections Optimizing Java    JavaScript compiler Dead code elimination Deferred binding No  if (mozilla) { … }  code Relatively rich UI library Widgets Panels Some missing pieces… JavaScript Google Web Toolkit ?
GWT & Software Engineering  'Industrial' software engineering Tools ! Tools! Tools ! IDEs: Eclipse integration, JetBrains GWT Studio,  GWT Designer, VistaFei, … Debugging (GWT hosted mode) Testing (junit) Refactoring Java SCCS Smart searches, navigation, auto-complete, quick fix, …  Compile time vs. Runtime errors detection **** JavaScript Google Web ToolKit ?
CO enhancements to GWT MV(C) framework THE  key factor for a successful large-scale development Necessary for event driven interfaces (the A in  A JAX) Side effect : eases collaboration between UI  and software developers Drag & Drop Attractive look & feel  Contextual menus Marquee selection Draggable splitters, Rich Text Edit  (available in GWT 1.4) Data grid Enhanced dialogs, property pages EditableLabel, ProgressBar, … Lesson: nothing was made 'impossible' by GWT design choices ! JavaScript Google Web Toolkit ContactOffice Enhancements
CO-GWT – Some figures ~ 1.2 man x year ~ 35000 lines of Java code (estimated target: 50 KLOC) ~ 250 files ~ 500 classes ~ 5000 Kbytes original JavaScript (ouch !) ~ 900 Kbytes compressed JavaScript (GWT 1.4: 680 Kbytes !) ~ 270 Kbytes gziped Aggressive caching mechanism JavaScript Google Web Toolkit ContactOffice
Development Workflow (Front-end) Software Engineer UI RPC, Model Raw UI design (Model interfacing, panels, widgets, …). Custom widgets CSS Enhanced UI design, non-CSS attributes, Formatting… SVN sandbox RPC, Model, (naive) view enhancements UI enhancements i18n (GWT) Help Manuals I18n
M odel -  V iew -  R emoting Remoting Model View notify Synchronous call Add listener xxxService xxxServiceAsync DTOs Shared between front-end and back-end Asynchronous call with command piggybacking Front-end only AbstractModel ModelObject ModelFolder abstractions Asynchronous call AsyncCallback
'Tip of the Day': Enhanced AsyncCallback Throbber handling Generic RPC exceptions handling Commands piggybacking public   class  COAsyncCallback  implements  AsyncCallback { … public  COAsyncCallback(AsyncCallback callback, Command onSuccessCommand) {
'Tip of the Day' (2) public   void  save(Command chainCommand) { getCalendarService().saveEvent(this, new  COAsyncCallback( new  GetEventDetailsCallback(), chainCommand)); } public   static   void  showCreationDialog(Event event) { event.save( new  ShowDialogCommand(event)); } private static class  ShowDialogCommand  implements  Command { private final  Event m_event ; public  ShowDialogCommand(Event event) { m_event = event; } public   void  execute() { new  EventPropertiesDialog(m_event).showCentered(); } } EventPropertiesDialog.java (View) : Event.java (Model) : Create an  event  object in the back-end, then edit its properties
Current Interface http://www.contactoffice.com
New GWT based Interface http://beta.contactoffice.com Indication of new + total number of items in lists Navigation repeated on left Help and extra information Dashboard giving quick access to main features
New GWT based Interface Horizontal splitter COMenuBar extends MenuBar Frame
New GWT based Interface - TreeView StackPanel TreeView 'Tree' based Composite Drag & drop source and target Contextual menus Close relationship with 'ModelFolder' and 'ModelObject'
New GWT based Interface - ListView Marquee selection Click to sort Multiselect, select range, (un) Select all Data grid, logical scrolling Close relationship with 'ModelFolder' and 'ModelObject' Drag & drop source Special keys handling Sortable columns Contextual menus
Enhanced Dialogs PropertyPageDialogBox extends CODialogBox extends DialogBox Property Page Modal or modeless Resizeable or fixed Close icon Property pages framework (validation, (de)activation, …) Specific listeners DialogRow Widget
Contextual menus MenuBar in PopupPanel Display is easy Invocation is hard  (right-click portability issues…)
Drag & Drop D&D engine handles: Regular D&D Marquee selection Splitters (Rectangular) drag sources & drop targets Could be hidden in widgets implementation Multi-select JavaScript Google Web Toolkit ContactOffice Enhancements
Legacy pages integration Legacy page (jsp) New page (GWT)
New calendar D&D event Access group & member's calendars Resizeable & overlap
Back-end (1) RemoteServiceServlet (GWT) GWTServlet AbstractHandler MailHandler MailServices … Instantiates (on each RPC invocation) CalendarHandler CalendarServices … HTTP request/session User credentials DB Transactions handling RemoteService (GWT) Actual RPC implementation ~ Invokes the Business Logic
Back-end (2) Straightforward integration Super-clean with a Java POJO back-end Fast migration path from DWR ~ 5000 specific lines of code, 13 classes/interfaces Front-end / back-end software versions synchronization needed!
TODO Usability !!! Bug fixes… Missing tools Forums, Tasks, Groups management Customization Dynamic CSS evaluation JSPs… not that easy in hosted mode. Compile time vs. Run time customization ? Safari & Opera portability Context menus … JavaScript Google Web Toolkit ContactOffice
Beta Launched http://beta.contactoffice.com
Questions?
Contact Us! [email_address] www.contactoffice.com blog.contactoffice.com
Ad

More Related Content

What's hot (20)

Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
Ivano Malavolta
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web Applications
Andrew Ferrier
 
Professional Frontend Engineering
Professional Frontend EngineeringProfessional Frontend Engineering
Professional Frontend Engineering
Nate Koechley
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
Kazuchika Sekiya
 
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
Amir Zmora
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQuery
Matt Butcher
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
yoavrubin
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
Derrick Bowen
 
Dojo (QCon 2007 Slides)
Dojo (QCon 2007 Slides)Dojo (QCon 2007 Slides)
Dojo (QCon 2007 Slides)
Eugene Lazutkin
 
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overviewCiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
Ciklum Ukraine
 
Visual studio.net
Visual studio.netVisual studio.net
Visual studio.net
Satish Verma
 
XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)
Per Henrik Lausten
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
Doris Chen
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with Java
Fabrizio Giudici
 
Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3
M. Jackson Wilkinson
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
Dan Stine
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti
 
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Patrick Lauke
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web Applications
Andrew Ferrier
 
Professional Frontend Engineering
Professional Frontend EngineeringProfessional Frontend Engineering
Professional Frontend Engineering
Nate Koechley
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
Kazuchika Sekiya
 
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
WebRTC Live Q&A Session #5 - JavaScript Promises and WebRTC Interoperability ...
Amir Zmora
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQuery
Matt Butcher
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
yoavrubin
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
Derrick Bowen
 
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overviewCiklumJavaSat15112011:Andrew Mormysh-GWT features overview
CiklumJavaSat15112011:Andrew Mormysh-GWT features overview
Ciklum Ukraine
 
XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)
Per Henrik Lausten
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
Doris Chen
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with Java
Fabrizio Giudici
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
Dan Stine
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti
 
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Brave new world of HTML5 - Interlink Conference Vancouver 04.06.2011
Patrick Lauke
 

Viewers also liked (6)

State of the City August 2007
State of the City August 2007State of the City August 2007
State of the City August 2007
nomcvb
 
ACS Rubber Division
ACS Rubber DivisionACS Rubber Division
ACS Rubber Division
nomcvb
 
Teste Slide Share
Teste Slide ShareTeste Slide Share
Teste Slide Share
possebon
 
Oh&S Computers
Oh&S ComputersOh&S Computers
Oh&S Computers
jasmina
 
Constitution Day
Constitution DayConstitution Day
Constitution Day
dlepse
 
Cruise holidays presentation
Cruise holidays presentationCruise holidays presentation
Cruise holidays presentation
nomcvb
 
State of the City August 2007
State of the City August 2007State of the City August 2007
State of the City August 2007
nomcvb
 
ACS Rubber Division
ACS Rubber DivisionACS Rubber Division
ACS Rubber Division
nomcvb
 
Teste Slide Share
Teste Slide ShareTeste Slide Share
Teste Slide Share
possebon
 
Oh&S Computers
Oh&S ComputersOh&S Computers
Oh&S Computers
jasmina
 
Constitution Day
Constitution DayConstitution Day
Constitution Day
dlepse
 
Cruise holidays presentation
Cruise holidays presentationCruise holidays presentation
Cruise holidays presentation
nomcvb
 
Ad

Similar to Google Dev Day2007 (20)

GWT = easy AJAX
GWT = easy AJAXGWT = easy AJAX
GWT = easy AJAX
Olivier Gérardin
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
Manuel Carrasco Moñino
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
ecker
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
supertoy2015
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
Software Park Thailand
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
Arnaud Tournier
 
GWT
GWTGWT
GWT
Lorraine JUG
 
HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)
Kevin Gill
 
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 AppsBeyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 Apps
Marcos Caceres
 
Brice Leblevennec @ FOWA Feb 07
Brice Leblevennec @ FOWA Feb 07Brice Leblevennec @ FOWA Feb 07
Brice Leblevennec @ FOWA Feb 07
carsonsystems
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
Dmitry Buzdin
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
george.james
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
Bob German
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
nobby
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
Robert Cooper
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
YoungSu Son
 
Developing For The Web
Developing For The WebDeveloping For The Web
Developing For The Web
aleemb
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
DNG Consulting
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
Manuel Carrasco Moñino
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
ecker
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
supertoy2015
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Easing offline web application development with GWT
Easing offline web application development with GWTEasing offline web application development with GWT
Easing offline web application development with GWT
Arnaud Tournier
 
HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)HTML5 - The Python Angle (PyCon Ireland 2010)
HTML5 - The Python Angle (PyCon Ireland 2010)
Kevin Gill
 
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 AppsBeyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 Apps
Marcos Caceres
 
Brice Leblevennec @ FOWA Feb 07
Brice Leblevennec @ FOWA Feb 07Brice Leblevennec @ FOWA Feb 07
Brice Leblevennec @ FOWA Feb 07
carsonsystems
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
Dmitry Buzdin
 
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar TechnologiesRob Tweed :: Ajax and the Impact on Caché and Similar Technologies
Rob Tweed :: Ajax and the Impact on Caché and Similar Technologies
george.james
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
Bob German
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
nobby
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
Robert Cooper
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
YoungSu Son
 
Developing For The Web
Developing For The WebDeveloping For The Web
Developing For The Web
aleemb
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
DNG Consulting
 
Ad

Recently uploaded (20)

The Impact of the Abhay Bhutada Foundation in Education
The Impact of the Abhay Bhutada Foundation in EducationThe Impact of the Abhay Bhutada Foundation in Education
The Impact of the Abhay Bhutada Foundation in Education
Harsh Mishra
 
EE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptxEE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptx
AnsarAbbas97
 
Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2
ashforddube14
 
George Mankiw Principle of Economics Chapter 28
George Mankiw Principle of Economics Chapter 28George Mankiw Principle of Economics Chapter 28
George Mankiw Principle of Economics Chapter 28
DyandraRenata
 
Depreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .pptDepreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .ppt
bluehhh07
 
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdfDefined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Henry Tapper
 
Introduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdfIntroduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdf
AdityaPrananda3
 
George Mankiw Principle of Economics Chapter 27
George Mankiw Principle of Economics Chapter 27George Mankiw Principle of Economics Chapter 27
George Mankiw Principle of Economics Chapter 27
DyandraRenata
 
Money Mindset Mastery_ Transform Your Financial Life.pdf
Money Mindset Mastery_ Transform Your Financial Life.pdfMoney Mindset Mastery_ Transform Your Financial Life.pdf
Money Mindset Mastery_ Transform Your Financial Life.pdf
pckhetal
 
How To Recover Stolen Funds From Online Trading Investment Scam
How To Recover Stolen Funds From Online Trading Investment ScamHow To Recover Stolen Funds From Online Trading Investment Scam
How To Recover Stolen Funds From Online Trading Investment Scam
raymondwilliam1022
 
Lec 3 Blockchain Digital Signature 2022f.pdf
Lec 3 Blockchain Digital Signature 2022f.pdfLec 3 Blockchain Digital Signature 2022f.pdf
Lec 3 Blockchain Digital Signature 2022f.pdf
junaidkhalid631
 
Consolidated accounting notes presentation
Consolidated accounting notes presentationConsolidated accounting notes presentation
Consolidated accounting notes presentation
ashforddube14
 
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdfMaximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Accounting Leads
 
DRAFT Internal presentation - Accessibility Act v2.pptx
DRAFT Internal presentation - Accessibility Act v2.pptxDRAFT Internal presentation - Accessibility Act v2.pptx
DRAFT Internal presentation - Accessibility Act v2.pptx
FinTech Belgium
 
The Rise of Abhay Bhutada and His Contribution to Society
The Rise of Abhay Bhutada and His Contribution to SocietyThe Rise of Abhay Bhutada and His Contribution to Society
The Rise of Abhay Bhutada and His Contribution to Society
Roshan Rai
 
Blanchard_macro7e_accessible_fullppt_05.pptx
Blanchard_macro7e_accessible_fullppt_05.pptxBlanchard_macro7e_accessible_fullppt_05.pptx
Blanchard_macro7e_accessible_fullppt_05.pptx
examssua
 
George Mankiw Principle of Economics Chapter 26
George Mankiw Principle of Economics Chapter 26George Mankiw Principle of Economics Chapter 26
George Mankiw Principle of Economics Chapter 26
DyandraRenata
 
Top Dividend Paying Stocks in India 2025
Top Dividend Paying Stocks in India 2025Top Dividend Paying Stocks in India 2025
Top Dividend Paying Stocks in India 2025
Amit Finowings
 
META Stock: Meta Platforms' Bold Bet on the Future
META Stock: Meta Platforms' Bold Bet on the FutureMETA Stock: Meta Platforms' Bold Bet on the Future
META Stock: Meta Platforms' Bold Bet on the Future
Meyka ai
 
Decoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdfDecoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdf
Enterprise Wired
 
The Impact of the Abhay Bhutada Foundation in Education
The Impact of the Abhay Bhutada Foundation in EducationThe Impact of the Abhay Bhutada Foundation in Education
The Impact of the Abhay Bhutada Foundation in Education
Harsh Mishra
 
EE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptxEE2025 basic definitions and its importamnce.pptx
EE2025 basic definitions and its importamnce.pptx
AnsarAbbas97
 
Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2Consolidated Accounting notes presentation 2
Consolidated Accounting notes presentation 2
ashforddube14
 
George Mankiw Principle of Economics Chapter 28
George Mankiw Principle of Economics Chapter 28George Mankiw Principle of Economics Chapter 28
George Mankiw Principle of Economics Chapter 28
DyandraRenata
 
Depreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .pptDepreciation of equipment's ____-__ .ppt
Depreciation of equipment's ____-__ .ppt
bluehhh07
 
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdfDefined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Defined Benefit Pension Schemes - Regulators Opportunity (1).pdf
Henry Tapper
 
Introduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdfIntroduction to Agribusiness Marketing.pdf
Introduction to Agribusiness Marketing.pdf
AdityaPrananda3
 
George Mankiw Principle of Economics Chapter 27
George Mankiw Principle of Economics Chapter 27George Mankiw Principle of Economics Chapter 27
George Mankiw Principle of Economics Chapter 27
DyandraRenata
 
Money Mindset Mastery_ Transform Your Financial Life.pdf
Money Mindset Mastery_ Transform Your Financial Life.pdfMoney Mindset Mastery_ Transform Your Financial Life.pdf
Money Mindset Mastery_ Transform Your Financial Life.pdf
pckhetal
 
How To Recover Stolen Funds From Online Trading Investment Scam
How To Recover Stolen Funds From Online Trading Investment ScamHow To Recover Stolen Funds From Online Trading Investment Scam
How To Recover Stolen Funds From Online Trading Investment Scam
raymondwilliam1022
 
Lec 3 Blockchain Digital Signature 2022f.pdf
Lec 3 Blockchain Digital Signature 2022f.pdfLec 3 Blockchain Digital Signature 2022f.pdf
Lec 3 Blockchain Digital Signature 2022f.pdf
junaidkhalid631
 
Consolidated accounting notes presentation
Consolidated accounting notes presentationConsolidated accounting notes presentation
Consolidated accounting notes presentation
ashforddube14
 
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdfMaximise Your Online Visibility - Lead Generation for Accountants.pdf
Maximise Your Online Visibility - Lead Generation for Accountants.pdf
Accounting Leads
 
DRAFT Internal presentation - Accessibility Act v2.pptx
DRAFT Internal presentation - Accessibility Act v2.pptxDRAFT Internal presentation - Accessibility Act v2.pptx
DRAFT Internal presentation - Accessibility Act v2.pptx
FinTech Belgium
 
The Rise of Abhay Bhutada and His Contribution to Society
The Rise of Abhay Bhutada and His Contribution to SocietyThe Rise of Abhay Bhutada and His Contribution to Society
The Rise of Abhay Bhutada and His Contribution to Society
Roshan Rai
 
Blanchard_macro7e_accessible_fullppt_05.pptx
Blanchard_macro7e_accessible_fullppt_05.pptxBlanchard_macro7e_accessible_fullppt_05.pptx
Blanchard_macro7e_accessible_fullppt_05.pptx
examssua
 
George Mankiw Principle of Economics Chapter 26
George Mankiw Principle of Economics Chapter 26George Mankiw Principle of Economics Chapter 26
George Mankiw Principle of Economics Chapter 26
DyandraRenata
 
Top Dividend Paying Stocks in India 2025
Top Dividend Paying Stocks in India 2025Top Dividend Paying Stocks in India 2025
Top Dividend Paying Stocks in India 2025
Amit Finowings
 
META Stock: Meta Platforms' Bold Bet on the Future
META Stock: Meta Platforms' Bold Bet on the FutureMETA Stock: Meta Platforms' Bold Bet on the Future
META Stock: Meta Platforms' Bold Bet on the Future
Meyka ai
 
Decoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdfDecoding What Project Financial Management Is.pdf
Decoding What Project Financial Management Is.pdf
Enterprise Wired
 

Google Dev Day2007

  • 1. The GWT bet ... Luc Claes CTO ContactOffice.com Google Developer Day 2007
  • 2. Coming from the country of… … please forgive my (broken) English !
  • 3. Agenda ContactOffice ? Reengineering the interface Selecting a framework Google Web Toolkit (GWT) ? [email_address] beta.contactoffice.com
  • 4. ContactOffice ? Collaborative & Messaging Web Application Founded in 1999 by 4 Belgian serial internet entrepreneurs
  • 5. How big ? 1 million registrations 350.000 active accounts (Feb 07) 250.000 paying accounts Global, 6 languages Profitable since 2003
  • 6. Collaboration & Messaging WebApp Calendar (+ RSS) Contacts, To Do, Notes, Bookmarks (+ RSS), Synchro ... Groups Organiser Mail (+ RSS), IMAP4 & POP3(s), SMTP, Webmail, Antivirus & AntiSpam, SMS, Fax, Alerts & Chat State-of-the-art Messaging Web upload or WebDAV RSS & Vod/Podcasts, Public sharing Documents Repository Forum, Wiki, Bulletin Board, Phone Calls, ... Collaboration
  • 7. Everything can be shared with users and groups! Sophisticated Access Right Model at user level Applications : Individual user, Families, Associations, Companies, Departments, All kinds of teams, ...
  • 8. ASP & Licence Models Hosted, Security, SLA Personalised, Private Label versions SSO : REST, XML-RPC, CAS, RSA ClearTrust, ... API : XML-RPC
  • 10. Technologies Back-end : Pure Java (POJOs only) Object Oriented Database Core business logic + various 'satellites' Web, SMTP c/s, POP3 c/s, IMAP4 c/s, WebDAV c/s, Synchro, Web services, … Built for scalability Web Clients : Web 1.0 (HTML + JS + CSS) ~2000 JSP pages Pocket Explorer + Symbian Wap (WML) Voice XML (prototype)
  • 11. Reengineering the interface Goal: Interface upgrade to current standards Weakness: Obsolete Client Architecture (thousands of JSP files) Strength: The 1999 Server Architecture (POJOs + OODB) is still state-of-the-art HTML + JavaScript + Frames Desktop like, Web 2.0 style, Drag & Drop, W idgets, ...
  • 12. Selecting a framework / technology Many good solutions Own framework ? Cost of supporting what others might be doing well ? Ajax vs Flash ? OpenLazslo, Adobe Flex Xml + script syntax, server-side lock-in, … SilverLight, JavaFX, good ol' Applets ? Ultra lightweight client + server-side Java ? echo2, zk, thinwire... Do they scale well ? Existing JS frameworks ? Dojo, Prototype, YUI, ... JavaScript language… JavaScript ? ?
  • 13. JavaScript ? Powerful constructs Functions as 1st class objects, closures Prototype vs. Class Metaprogramming Ubiquitous dictionaries Dynamic typing but… JavaScript ? ?
  • 14. The JavaScript nightmare (Very) dynamic language On the fly variables declarations Weak typing eval() Interesting IDEs operations are 'impossible' (refactoring, smart searches, real-time compilation / syntax check, …) Readability ? Imprecise scoping, encapsulation Run-time errors detection only Even worse: the DOM + the browsers quirks… How to handle efficiently tens of Klocs, multiple developers ? Requires an extremely strict discipline (rules set, conventions) for a team
  • 15. GWT ? What is GWT ? G oogle W eb T oolkit GWT is a Google framework for building AJAX apps in the Java language Fully Open Source (Apache 2 Licence) Java --> JavaScript translation No plugin, no jvm Just 1 year old JavaScript GoogleWeb ToolKit ?
  • 16. Google Web Toolkit ? Some features Performances: Aggressive caching, code optimization, compression Clean backend integration: Efficient Java RPC mechanism (or JSON) Portability: Generates platform-specific code (IE 6+, 'old' Mozilla, Firefox, Opera, Safari) Native Java S cript is still reachable: JSNI (JavaScript Native Interface) i18n But... Java knowledge required for UI designers CSS only is not realistic JavaScript Google Web Toolkit ?
  • 17. Google Web Toolkit ? Java ? Java 1.4 (1.5 coming 'soon') Subset of java.lang.* and java.util.* emulated No introspection, no dynamic class loading Collections Optimizing Java  JavaScript compiler Dead code elimination Deferred binding No if (mozilla) { … } code Relatively rich UI library Widgets Panels Some missing pieces… JavaScript Google Web Toolkit ?
  • 18. GWT & Software Engineering 'Industrial' software engineering Tools ! Tools! Tools ! IDEs: Eclipse integration, JetBrains GWT Studio, GWT Designer, VistaFei, … Debugging (GWT hosted mode) Testing (junit) Refactoring Java SCCS Smart searches, navigation, auto-complete, quick fix, … Compile time vs. Runtime errors detection **** JavaScript Google Web ToolKit ?
  • 19. CO enhancements to GWT MV(C) framework THE key factor for a successful large-scale development Necessary for event driven interfaces (the A in A JAX) Side effect : eases collaboration between UI and software developers Drag & Drop Attractive look & feel Contextual menus Marquee selection Draggable splitters, Rich Text Edit (available in GWT 1.4) Data grid Enhanced dialogs, property pages EditableLabel, ProgressBar, … Lesson: nothing was made 'impossible' by GWT design choices ! JavaScript Google Web Toolkit ContactOffice Enhancements
  • 20. CO-GWT – Some figures ~ 1.2 man x year ~ 35000 lines of Java code (estimated target: 50 KLOC) ~ 250 files ~ 500 classes ~ 5000 Kbytes original JavaScript (ouch !) ~ 900 Kbytes compressed JavaScript (GWT 1.4: 680 Kbytes !) ~ 270 Kbytes gziped Aggressive caching mechanism JavaScript Google Web Toolkit ContactOffice
  • 21. Development Workflow (Front-end) Software Engineer UI RPC, Model Raw UI design (Model interfacing, panels, widgets, …). Custom widgets CSS Enhanced UI design, non-CSS attributes, Formatting… SVN sandbox RPC, Model, (naive) view enhancements UI enhancements i18n (GWT) Help Manuals I18n
  • 22. M odel - V iew - R emoting Remoting Model View notify Synchronous call Add listener xxxService xxxServiceAsync DTOs Shared between front-end and back-end Asynchronous call with command piggybacking Front-end only AbstractModel ModelObject ModelFolder abstractions Asynchronous call AsyncCallback
  • 23. 'Tip of the Day': Enhanced AsyncCallback Throbber handling Generic RPC exceptions handling Commands piggybacking public class COAsyncCallback implements AsyncCallback { … public COAsyncCallback(AsyncCallback callback, Command onSuccessCommand) {
  • 24. 'Tip of the Day' (2) public void save(Command chainCommand) { getCalendarService().saveEvent(this, new COAsyncCallback( new GetEventDetailsCallback(), chainCommand)); } public static void showCreationDialog(Event event) { event.save( new ShowDialogCommand(event)); } private static class ShowDialogCommand implements Command { private final Event m_event ; public ShowDialogCommand(Event event) { m_event = event; } public void execute() { new EventPropertiesDialog(m_event).showCentered(); } } EventPropertiesDialog.java (View) : Event.java (Model) : Create an event object in the back-end, then edit its properties
  • 26. New GWT based Interface http://beta.contactoffice.com Indication of new + total number of items in lists Navigation repeated on left Help and extra information Dashboard giving quick access to main features
  • 27. New GWT based Interface Horizontal splitter COMenuBar extends MenuBar Frame
  • 28. New GWT based Interface - TreeView StackPanel TreeView 'Tree' based Composite Drag & drop source and target Contextual menus Close relationship with 'ModelFolder' and 'ModelObject'
  • 29. New GWT based Interface - ListView Marquee selection Click to sort Multiselect, select range, (un) Select all Data grid, logical scrolling Close relationship with 'ModelFolder' and 'ModelObject' Drag & drop source Special keys handling Sortable columns Contextual menus
  • 30. Enhanced Dialogs PropertyPageDialogBox extends CODialogBox extends DialogBox Property Page Modal or modeless Resizeable or fixed Close icon Property pages framework (validation, (de)activation, …) Specific listeners DialogRow Widget
  • 31. Contextual menus MenuBar in PopupPanel Display is easy Invocation is hard (right-click portability issues…)
  • 32. Drag & Drop D&D engine handles: Regular D&D Marquee selection Splitters (Rectangular) drag sources & drop targets Could be hidden in widgets implementation Multi-select JavaScript Google Web Toolkit ContactOffice Enhancements
  • 33. Legacy pages integration Legacy page (jsp) New page (GWT)
  • 34. New calendar D&D event Access group & member's calendars Resizeable & overlap
  • 35. Back-end (1) RemoteServiceServlet (GWT) GWTServlet AbstractHandler MailHandler MailServices … Instantiates (on each RPC invocation) CalendarHandler CalendarServices … HTTP request/session User credentials DB Transactions handling RemoteService (GWT) Actual RPC implementation ~ Invokes the Business Logic
  • 36. Back-end (2) Straightforward integration Super-clean with a Java POJO back-end Fast migration path from DWR ~ 5000 specific lines of code, 13 classes/interfaces Front-end / back-end software versions synchronization needed!
  • 37. TODO Usability !!! Bug fixes… Missing tools Forums, Tasks, Groups management Customization Dynamic CSS evaluation JSPs… not that easy in hosted mode. Compile time vs. Run time customization ? Safari & Opera portability Context menus … JavaScript Google Web Toolkit ContactOffice
  • 40. Contact Us! [email_address] www.contactoffice.com blog.contactoffice.com