Google Plugin for Eclipse

Similar documents
Developing Ajax Web Apps with GWT. Session I

Google App Engine: Java Technology In The Cloud

Overview of WebAdmin and UI Frameworks

Setting Up the Development Environment

How to Install (then Test) the NetBeans Bundle

Build Native-like Experiences in HTML5

Seminar report Google App Engine Submitted in partial fulfillment of the requirement for the award of degree Of CSE

GRITS AJAX & GWT. Trey Roby. GRITS 5/14/09 Roby - 1

Google Web Toolkit for quick relief of AJAX pain. Kelly Norton & Miguel Méndez

Development of web applications using Google Technology

Developing Android applications in Windows

A Model-Controller Interface for Struts-Based Web Applications

Adapting JDT to the Cloud. Alex Boyko Pivotal Jay Arthanareeswaran - IBM John Arthorne - IBM

Existing Data. Platform. User Roles and Permissions. What would happen to our current data ( , web visits...etc)?

PROGRAMMING GOOGLE APP ENGINE WITH PYTHON: BUILD AND RUN SCALABLE PYTHON APPS ON GOOGLE'S INFRASTRUCTURE BY DAN SANDERSON

Implementation of F# language support in JetBrains Rider IDE

Google Wave Client: Powered by GWT. Adam Schuck 28 May, 2009

Connect and Transform Your Digital Business with IBM

vsphere Web Client SDK Documentation VMware vsphere Web Client SDK VMware ESXi vcenter Server 6.5.1

An Oracle White Paper April Oracle Application Express 5.0 Overview

Choose OS and click on it

Oracle Mobile Application Framework

SpringSource Tool Suite 2.7.1

PGT T3CHNOLOGY SCOUTING. Google Webtoolkit. JSF done right?

Google Web Toolkit (GWT)

JBoss IDE Quick Start Guide

DESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER PROJECT

Google Web Toolkit (GWT) Basics. Sang Shin Java Technology Architect & Evangelist Sun Microsystems, Inc.

X100 ARCHITECTURE REFERENCES:

VMware AirWatch Chrome OS Platform Guide Managing Chrome OS Devices with AirWatch

VMware AirWatch Chrome OS Platform Guide Managing Chrome OS Devices with AirWatch

NSIGHT ECLIPSE EDITION

e4 Project 0.9 Release Review

Saperion. Release Notes. Version: 8.0

CS260 Intro to Java & Android 04.Android Intro

Adobe Marketing Cloud Best Practices Implementing Adobe Target using Dynamic Tag Management

So far, Wednesday, February 03, :47 PM. So far,

Creating a Custom TinyWebDB service

Luckily, our enterprise had most of the back-end (services, middleware, business logic) already.

02/03/15. Compile, execute, debugging THE ECLIPSE PLATFORM. Blanks'distribu.on' Ques+ons'with'no'answer' 10" 9" 8" No."of"students"vs."no.

ewon Flexy JAVA J2SE Toolkit User Guide

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017

2 Introduction to Java. Introduction to Programming 1 1

Using GWT and Eclipse to Build Great Mobile Web Apps

From EC2 to Alex Tolley

Android App Development

form layout - we will demonstrate how to add your own custom form extensions in to form layout

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Using Adobe Flex in JSR-286 Portlets

Your password is: firstpw

OSGi on the Server. Martin Lippert (it-agile GmbH)

1 Introduction. 2 Web Architecture

NSIGHT ECLIPSE EDITION

COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3

AD105 Introduction to Application Development for the IBM Workplace Managed Client

Customized Enterprise Installation of IBM Rational ClearCase Using the IBM Rational ClearCase Remote Client plug-in and the Eclipse SDK

Adobe ColdFusion 11 Enterprise Edition

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

MARS AREA SCHOOL DISTRICT Curriculum TECHNOLOGY EDUCATION

GWT: The Technical Advantage. Presenter: Anirudh Dewani Company Name: Google

JavaFX. JavaFX Overview Release E

Managing Installations and Provisioning of OSGi Applications. Carsten Ziegeler

Siteforce Pilot: Best Practices

EUSurvey OSS Installation Guide

IBM JZOS Meets Web 2.0

Advance Mobile& Web Application development using Angular and Native Script

Getting Started with Cisco UCS Director Open Automation

SpringSource Tool Suite M2

Creating Web Mapping Applications. Nikki Golding

ArcGIS Runtime: Building Cross-Platform Apps. Rex Hansen Mark Baird Michael Tims Morten Nielsen

Getting started with Geomajas. Geomajas Developers and Geosparc

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Implementing a Numerical Data Access Service

CHAPTER 6. Organizing Your Development Project. All right, guys! It s time to clean up this town!

JUGAT Flex 3. Christoph Atteneder. May Flash / Flex Development Technical Lead Adobe Systems Incorporated. All Rights Reserved.

ApacheCon NA How to Avoid Common Mistakes in OFBiz Development Presented by Adrian Crum

Minds-on: Android. Session 1

Composer Guide for JavaScript Development

Oracle Utilities Customer Self Service

eclipse rich ajax platform (rap)

SAS AppDev Studio TM 3.4 Eclipse Plug-ins. Migration Guide

A Business Case for Ajax with Google Web Toolkit. Bruce Johnson Google, Inc.

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.

Salesforce CRM Content Implementation Guide

If you don t have the JDK, you will need to install it. 1. Go to

Say goodbye to the pains of Ajax. Yibo

Index. Alessandro Del Sole 2017 A. Del Sole, Beginning Visual Studio for Mac,

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

OSSW ICOSST 2009, Al-Khawarizmi Institute of Computer Science University of Engineering and Technology, Lahore

VISUAL APPLICATION CREATION AND PUBLISHING FOR ANYONE

Table of Contents HOL-SDC-1422

EUSurvey Installation Guide

Developing Microsoft SharePoint Server 2013 Core Solutions Course Contact Hours

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, January 2018

Android Programming in Bluetooth Cochlea Group

MEAP Edition Manning Early Access Program Get Programming with Java Version 1

help.gorgias.io Documentation

SE - Deployment to Installed Polarion. SE - Execution from Workspace. SE - Configuration.

For live Java EE training, please see training courses at

Transcription:

Google Plugin for Eclipse Not just for newbies anymore Miguel Mendez Tech Lead - Google Plugin for Eclipse 1

Overview Background AJAX Google Web Toolkit (GWT) App Engine for Java Plugin Design Principles Challenges, Solutions, and Lessons 2

Background GPE, AJAX, GWT, App Engine 3

What is the Google Plugin for Eclipse? Collection of plugins Assists in the creation of Web Apps that use: Google Web Toolkit App Engine for Java And by Web App I mean... AJAX Gmail Google Maps Wave 4

AJAX - The Good Update the browser UI without switching pages Relies on JavaScript running in the browser to direct the UI updates Fetch data in the background using XHR Viewing browsers as smart clients Improves server utilization Applications are more responsive than classic HTML 5

AJAX - The Bad & Ugly But... Dynamically-typed language Runtime-only bugs (e.g. spelling bugs) Did you mean component or compnent -- I ll assume that they are different! Results in limited tool support for JavaScript Browsers are a moving target What bugs does this browser have? How am I supposed to make X happen on this browser? Hard for large teams to work on the same code base AJAX expertise is a limited resource 6

GWT - The Motivation What if we could leverage what developers already know? What if we could deal with errors at compile time (static typing)? What if we could get better tool support? Breakpoints Variable inspection Auto-completion Refactoring 7

GWT - The Solution? Use Java. Lots of Java developers Great tools support: Eclipse, IntelliJ, etc. Auto-completion Refactoring Debug your web app code as bytecode in a special browser Breakpoints Variable inspection Cross-compile into stand-alone, optimized JavaScript No browser plugins / no obligatory server-side machinery Developers can still get to raw JavaScript via JavaScript Native Interface (JSNI) 8

GWT - Putting it all together Additional leverage allows you to be more aggressive about the problems you tackle Productivity for you, the developer Performance for your users 9

App Engine - What about the server? App Engine is a cloud computing platform Run your web apps on Google s infrastructure We provide the container and services (Platform-as-a-Service) Hardware connectivity JVM Servlet Container Software services 10

App Engine - Key Features No need to install or maintain your own infrastructure We do the scaling for you Use Google s scalable services via standard APIs Charge for actual usage Free to get started Built-in application management 11

App Engine - Java Support Servlet 2.5 container support Software services Authentication Datastore Caching E-mail Fetch URLs Sandboxing Restrict JVM Permissions Whitelist JRE classes DevAppServer Emulates the production environment Local implementation of software services Deployment App lives at <app_id>.appspot.com or custom domain with Google Apps 12

Plugin Design Principles 13

Design Principles Stability is paramount Make it easy to get started Reward sophisticated developers Control is happiness Keep things simple Blend naturally into Eclipse Developer s time is valuable - help them maximize it Minimize plugin magic 14

Challenges, Solutions, and Lessons 15

Installation Challenge Don t make the user download all of the pieces individually Installation is ready for use once the install completes People behind firewalls Solution Bundle the App Engine and GWT SDKs as plugins Produce stand-alone archives for people behind firewalls Lessons Optional features? Doh!... P2 Garbage Collection There are a lot of people behind firewalls! 16

New Web Application Challenge Quickly create web apps that use GWT and/or App Engine Use an expanded WAR layout Solution Create a wizard that generates web apps that are ready-for-launch Allow users to select which versions of GWT/App Engine to use Use project natures to indicate what is being used, allow users to add GWT/ App Engine after the fact Manage SDK jars in the WEB-INF/lib folder Lessons Made it really, really easy to get started, but can t: Create empty projects Import SDK samples 17

Run/Debug Web Apps Challenge Create a simple, customizable launch configuration Handle possible combinations of GWT & App Engine App Engine and GWT use different development servers Solution Extend Java launch configurations and add some guiding UI Classpath provider to add source paths needed by GWT RuntimeClasspathEntryResolver to deal with OOPHM Lessons Magic values should expand into the program and VM args for added transparency Classpath modifications and reset are imperative 18

SDKs Challenge Plugin should support multiple versions of the App Engine & GWT SDKs Make it easy to switch versions Properly configure complex classpaths Solution Classpath containers, e.g. JRE containers Classpath dialog and project properties enable trivial SDK switching Lessons Be careful what you do inside of ClasspathContainerInitalizers Multiple ways for containers to be edited People ignore warnings -- Problems View Default SDKs might not be a great idea 19

GWT JSNI: Embed JavaScript in Java Files Challenge Embed JavaScript code in Java files GWT overloads native methods and Java block comments for JSNI Unfortunately, JSNI delimiters /*-{ }-*/ make JSNI blocks into multiline comments so they get auto-formatted Solution Declare a new document partition for JSNI methods Color JSNI method bodies as JavaScript Fix up formatting performed by auto-format Lessons Smokescreen pattern Redoing the formatting works but alters undo behaviors 20

GWT JSNI: Refactoring, Search, and Completion Challenge JSNI uses JNI-like signatures that are subject to typos and can be invalidated by refactoring Invisible to Java dependency and Java Search Solution Add completion proposals and quick assist to expand JSNI refs Add validation to check the validity of JSNI refs Participate in Java refactoring to update JSNI refs Participate in Java searches to include refs from JSNI Lessons Indexing Java refactoring is not a friendly as we d like 21

GWT RPC Challenge A remote service is a pair of interfaces Synchronous interface for use in the server Asynchronous interface for use in the browser Solution JavaCompilationParticipant checks interface pair consistency Associate problems and quickfixes bidirectionally Java refactoring participant Lessons Problem/Quickfix separation -- pure but impractical Let a user address sync problems from either side Hooking into Java refactoring is... tricky 22

App Engine JRE Whitelist Challenge Inform developers when they are using unsupported JRE APIs Solution Compilation participant Load whitelist out of the SDK in the project s classpath Provide quick fixes to flag the containing class as not being used in server code Lessons Caching whitelist can be tricky because the underlying SDK can be changed Versioning issues when modifying IDE behavior based on project classpath 23

App Engine ORM Challenge App Engine DataNucleus-based ORM uses bytecode enhancement Flag enhancement problems before the user runs the app Solution Drive the DataNucleus enhancer as part of the build Provide ability to select what classes should be enhanced Lessons DataNucleus wants to report output to standard out Feedback via the console is less than optimal Want feedback as red squiggly in file Classfile changes are what really matter Do not let exceptions escape from your builders! 24

App Engine - Deploy to Google Challenge Create a simple mechanism for deploying web app to Google Deal with GWT compilations if applicable Solution Add an action which packages the app and uploads it to Google Asynchronous status updates Lessons Someone always want to tweak the process Disable GWT-compile Remember my password 25

Bleeding Edge - GWT ClientBundles Challenge Expose GWT s ability to bundle resources (text, images, css) into compiled JavaScript Not readily discoverable; very flexible system Solution Create a wizard that creates ClientBundles based on a set of resources Add validation of ClientBundles to guide developers during post-creation edits Lessons (Still learning) How discoverable is drag-and-drop? 26

Bleeding Edge - GWT UiBinder Challenge Expose GWT s ability to create UIs declaratively via special *.ui.xml files bound to Java classes! Solution Create completion proposals and quick assists to aid in the creation and maintenance of ui.xml files Add validation of ui.xml files to inform users when something is off Lessons (Still learning) Content describers don t respect compound extensions (ui.xml) 27

Bleeding Edge - Web App View Challenge GWT development server (OOPHM): how do you expose the hierarchical logs for browser and server code Can you help the user do something useful with the logs? Solution Create an Eclipse view, a model, and a protocol to facilitate log surfacing Make the logs searchable and integrate client and server logs Update the model based on launch configuration life-cycle and development server events Lessons (Still learning) Protocol buffers are a great way to deal with version skew Learn about Viewers, ContentProviders, and LabelProviders; they are worth the investment 28

Google Plugin for Eclipse Documentation http://code.google.com/eclipse Update sites Eclipse 3.5 (Galileo) - http://dl.google.com/eclipse/plugin/3.5 Eclipse 3.4 (Ganymede) - http://dl.google.com/eclipse/plugin/3.4 Eclipse 3.3 (Europa) - http://dl.google.com/eclipse/plugin/3.3 App Engine Feedback Group - http://groups.google.com/group/google-appengine-java Issue Tracker - http://code.google.com/p/googleappengine/issues Google Web Toolkit Feedback Group - http://groups.google.com/group/google-web-toolkit Issue Tracker - http://code.google.com/p/google-web-toolkit/issues 29

Thank You! Q&A 30