Professional Documents
Culture Documents
Alek Davis
Copyright © 2008
Topics
• About
– May 28-29
– San Francisco
– Official site
• http://code.google.com/events/io/
– Alek Davis: Technoblog
• Overview, impressions, links
• Recommended videos, slides
• Tracks
– AJAX & JavaScript (APIs, Web 2.0, HTML 5.0, Gears, GWT, search, offline)
– APIs & tools (GWT, Google App Engine, Python)
– Maps & geo (Flash, Mashups, Map API)
– Mobile (Android, Gears, Mobile Apps)
– Social (OpenID, OAuth, OpenSocial)
– Code labs, tech talks, fireside chats
• Travel
– Parked at Berkeley's Ashby station ($5/day), took BART
– Stayed at St. Francis Drake
• Keynotes
– Learn about technologies covered at the conference (Vic Gundotra)
– Learn about Google (Marissa Mayer)
• Informal chats
– From the Google IO Conference blog (by Intel's Karun and Andy):
• "We had a chance to talk to a tech lead on Google Gears about how they develop
and elevate application efficiently. His answer is simple - they do not follow any
software development methodology or approach. They have [best coding]
practices. On the top of it, the hiring bar is so high, the engineers generate good
quality code and constantly find ways to improve it by peer reviews. Some parts
of the organization follow SCRUM, but they are not crazy about it. What they
believe is: less process more room for innovation."
• Web 2.0
– Internet as a platform
– Hosted services, social networking, wikis, RSS, RIA, …
• Cloud computing
– Apps run somewhere in the "cloud" (intranet or Internet)
• RIA (rich internet apps)
– Web apps which look and perform like desktop apps
• JavaScript
– Not as lame as it once was; optimization in new browsers
• Offline, desktop integration
– Enabling Web apps to run offline
• Mashup
– Web app that combines data from multiple sources into a single tool
• HTML 5.0
– Not coming any time soon
• Hosted by Google
– http://code.google.com/apis/ajaxlibs/
– Versioned, documented
– Will be there "forever"
• jQuery
• Prototype
• script.aculo.us
• MooTools
• Dojo
<script src="http://www.google.com/jsapi"></script>
<script>
// Load jQuery
google.load("jquery", "1");
</script>
• Google
– Specialized
• Maps, search, RSS feed, language, visualization, blogging, …
– Two families of APIs
• Google Data (GData) APIs (calendars, contacts, notbook, …)
• Google AJAX APIs (search, maps, language, …)
• Yahoo!
– The Yahoo! User Interface Library (YUI)
• Drag and drop, auto-complete, menu, tree view, tab view, …
• Samples (demos)
• Microsoft
– ASP.NET AJAX
• Built into .NET 3.5 (add-on for .NET 2.0)
– Auto-complete, menu, accordion, masked edit, …
• Samples (demos)
• JavaFX
– Not available yet (developer preview by invitation)
– Based on JavaFX Script (new scripting language)
– Targets desktop and Web
– Runtime, browser plug-ins, development tools
– Advantages (or "advantages")
• "Built on Java [platform] (Java SE and Java ME)" ● "Sun will leverage its
unrivaled reach to distribute the JavaFX runtime across all devices and
screens" ● "Competing platforms are just beginning to provide early
SDKs that provide relatively rudimentary capabilities for building browser
and desktop resident applications"
– Confusing:
• "JavaFX is a different technology, product and brand than the Java
platform. JavaFX is not dependent on any particular JVM or runtime
environment, and JavaFX is not built using the JVM specifications.
JavaFX leverages the appropriate runtime for each platform - on the
desktop it leverages the JRE and is co-bundled with it, while on mobile it
leverages the Java ME runtime, and similarly it can run on top of other
VMs."
• Flex
– Next generation of Flash
– Uses declarative XML (MXML) and ActionScript
• Supports JavaScript and CSS
– Requires Flash 9 (or later) browser plug-in
• Prism
– Converts Web apps into desktop apps
– Uses mini-browser
– Simple
– Example:
• SitePoint: Tech Times: Issue 187: Mozilla Prism
• BrowserPlus
– Limited availability (only works from sites operated by Yahoo!)
– Browser plug-in (a'la Gears)
– Desktop integration
– Handy functionality (promised)
• Drag-and-drop
• Desktop notification
• File uploader
– Does not work on my computer
• Silverlight
– Browser plug-in (a'la Flash/Flex)
– Subset of .NET runtime (full .NET Framework is not needed)
– Rich media capabilities (images, HD video, …)
– Version 2.0 is in beta (version 1.0 is very limited)
– Installation issues
• "Message ID: 1638: Another version of Microsoft Silverlight is already
installed on your computer. Please remove the existing version (see
instructions) before reinstalling Silverlight."
– No drag-and-drop (between processes)
– Demo: Microsoft Health
• Curl
– Most mature RIA technology
• 10 year old
• Originated at MIT
• 300 customers, 40 partners (mostly Japanese)
– Best suited for enterprise apps
• Business focused
• Data analysis
• Reporting graphics
– Curl Nitro
• Desktop integration (a'la Google Gears, Adobe AIR)
– Demos: Enterprise Software
• Who is winning?
– The most ubiquitous
• Flash players are present on ~90% of client systems
– The least disruptive
• More than half of users do not follow links to install plug-ins
– Things to consider
• Platform support (Windows, OS X, Linux)
• Internet vs. intranet
• Google Apps
– Communication and collaboration apps (a'la Office Live Small Business)
• Mail, calendar, messaging, office docs, home page, web sites
• Google app engine
– Private preview
– Python language (runtime)
• OpenID
– Identity service, which allows Internet users to log on to many different
web sites using a single digital identity. OpenID is a decentralized, free
and open standard.
• Coding Horror: OpenID
: Does The World Really Need Yet Another Username and Password?
• OAuth
– Open protocol for secure API authentication which gives users access to
their data while protecting their account credentials.
• Dare Obasanjo: OAuth
: Standardizing Authentication and Authorization for Web APIs
• OpenSocial
– Set of common (Google) APIs for building social applications across many
(social) websites. OpenSocial consists of both (Google) JavaScript APIs
and Google Data APIs.
• Miscellaneous
– How Cloud & Utility Computing Are Different