+ All Categories
Home > Documents > Zach Musgrave & Jason Fulghum Amazon Web Services March 28, 2013.

Zach Musgrave & Jason Fulghum Amazon Web Services March 28, 2013.

Date post: 18-Dec-2015
Category:
Upload: oliver-strickland
View: 215 times
Download: 0 times
Share this document with a friend
38
Lessons Learned Writing the AWS Toolkit for Eclipse Zach Musgrave & Jason Fulghum Amazon Web Services March 28, 2013
Transcript

Lessons Learned Writing the AWS Toolkit

for Eclipse

Zach Musgrave & Jason FulghumAmazon Web Services

March 28, 2013

AWS Toolkit For Eclipse

Lessons Learned• Error Reporting• Build Automation and Distribution• Responsive UIs• Resource Management• Data Binding• Build on Eclipse Platform Projects• Tips and Tricks

Error ReportingWhen your software inevitably breaks.

Use the Error Log Use Plugin’s getLog() method:

◦ getLog().log(new Status(Status.ERROR, PLUGIN_ID, errorMessage, e));

Or… use StatusManager directly, for more control

Fail Gracefully in UIs

Proactively Debug Problems

Help your customers collect basic debugging information before you have to ask

Make it as easy as possible to report problems, or you might not find out about bugs before you start losing customers

Build AutomationRelease early and often; make it easy!

Eclipse’s standard release engineering tools Built on Ant, so easy to integrate into

existing build processes

PDE Build

Automated Version Numbering

Plugins and features stored in Amazon S3 Distributed through Amazon CloudFront for

fast downloads from edge locations all over the world

Old versions remain in Amazon S3 if needed Use Amazon CloudFront access logs feature

for download metrics

Update Site Hosting

Responsive UIsThe UI thread is for UI, and nothing else. Really.

DON’T DO SYNCHRONOUS IO IN THE UI THREAD!

Seriously, not even once.

Number One Tip:

For work that needs customer visibility, but will take some amount of time

Jobs Framework

Pattern for short-lived, but potentially disruptive IO work

Example: populate a Combo using data from a web service call

Cancelable Thread

From the UI: cancel any running thread, then start a new one

From the CancelableThread: do non-UI work (web services calls), then:◦ Check if canceled◦ If not, update UI◦ Otherwise exit

Synchronization is important

Cancelable Thread

Better performance than regular Tables Use SWT.VIRTUAL to speed them up more

SWT Table Trees

Display.asyncExec(Runnable) Display.syncExec(Runnable)

Display Thread Execution

Resource Management

Why make X copies when 1 will do?

Override AbstractUIPlugin#createImageRegistry()

Sharing Images with the Registry

Remember: fonts use file handles! Don’t create a font just to apply it to a

control Share fonts as much as possible, and

remember to dispose() of them when they aren’t needed anymore

Or use shared fonts, like in JFaceResources

Font Management

JFace Data BindingA cleaner way to implement MVC, but with a steep learning curve.

The basic idea: bind your data model to a UI element, and when one changes the other does too

IObservableValue model = PojoObservables.observeValue(pojo, “field”);IObservable target = SWTObservables.observeText(text, SWT.Modify);bindingContext.bindValue(target, model);

JFace Data Binding API

Demo: Elastic Beanstalk Configuration Editor

Fields can validate themselves Aggregate status gets rolled up

Validation

Validation

Build on Eclipse Platform Projects

Stand on the shoulders of giants.

Tools for developing and deploying web and Java EE applications

Used in the toolkit for:◦ Deploying AWS Java web apps to AWS Elastic

Beanstalk through custom server types

Web Tools Platform (WTP)

Vendor neutral platform and tools for working with relational and non-relational data sources

Used in the toolkit for:◦ Connecting to Amazon RDS databases◦ Browsing and editing Amazon SimpleDB data

sources

Data Tools Platform (DTP)

Aggregates data contributed by multiple plugins into a single, hierarchical tree view

Good support for drag and drop actions

Used in the toolkit for:◦ AWS Explorer view

Common Navigator Framework (CNF)

Tips and TricksA miscellany of time-saving advice.

Grid Data Factory

Easy pluggable dialog box with an optional custom control area

Message Dialog

Easy way to create clean, easy to use UIs

Eclipse Forms

Used to store hierarchical data to persist preferences and history for views, dialogs, and wizards

Allows UIs to be prepopulated with users’ previous selections and history

IDialogSettings

Look for “SDK” packages on update sites

Get the Source

Q: How do I implement this interface?

A: Copy someone else!

F4 Hierarchy

Questions and Answers


Recommended