You are previewing Web 2.0 Fundamentals: With AJAX, Development Tools, and Mobile Platforms.
O'Reilly logo
Web 2.0 Fundamentals: With AJAX, Development Tools, and Mobile Platforms

Book Description

Designed for a broad spectrum of people with technically diverse backgrounds, this book covers the most recent developments in Web 2.0 programming topics and applications, including up-to-date material on cloud computing, Google AppEngine, Social Networks, Comet, HTML5, semantic technology, and a chapter on the future of the Web. This book prepares readers for more advanced technical topics in Web 2.0. The accompanying CD-ROM and companion website provide code samples from the book and appendices with an extensive set of links (over 1,000) for supplemental material and links for the Twitter and Facebook pages. (Please note, eBook version does not include CD-ROM).

Table of Contents

  1. Disclaimer
  2. Contents
  3. Acknowledgments
    1. OSWALD CAMPESATO
    2. KEVIN NILSON
  4. Biographies of Book Contributors
    1. CONTRIBUTORS
      1. Chapter Contributors
      2. Additional Content Contributors
      3. Meetup Organizers
  5. Preface
    1. WHAT IS THE GOAL OF THIS BOOK?
    2. YOUR TECHNICAL BACKGROUND
    3. HOW WERE THE TOPICS IN THIS BOOK SELECTED?
    4. HOW IS THIS BOOK ORGANIZED?
    5. WHY DOES THIS BOOK HAVE A CD-ROM?
    6. WILL THIS BOOK HELP ME START A WEB 2.0 COMPANY?
    7. DO YOU ENDORSE PRODUCTS IN THIS BOOK?
    8. WHICH ORGANIZATIONS DO YOU ENDORSE?
    9. BOOKS AND PROJECTS FROM THE AUTHORS
    10. WILL THIS BOOK MAKE ME AN EXPERT IN WEB 2.0?
    11. HOW MUCH TIME WILL THIS BOOK SAVE ME?
    12. IS THIS THE ULTIMATE WEB 2.0 BOOK?
  6. CHAPTER 1 Introduction
    1. 1.1 INFORMATION ABOUT THIS BOOK
      1. 1.1.1 Why Should You Buy This Book?
      2. 1.1.2 Why Are There Two Social Networking Chapters?
      3. 1.1.3 Why Are There Three Cloud Computing Chapters?
      4. 1.1.4 Why Does This Book Use the Dojo Toolkit and jQuery?
      5. 1.1.5 Versions of Software and Tools in this Book
      6. 1.1.6 Appendices with Web 2.0 URLs
      7. 1.1.7 Web 2.0 Topics That Are Omitted from This Book
      8. 1.1.8 The URLs in This Book
      9. 1.1.9 Is This Book Only for Developers?
      10. 1.1.10 Do You Discuss the Best Web 2.0 Tools?
    2. 1.2 WEB 2.0 IN OUR LIVES
    3. 1.3 WHAT IS WEB 2.0?
      1. 1.3.1 Pioneers in Web 2.0
      2. 1.3.2 The Shift from Web 1.0 to Web 2.0
      3. 1.3.3 Is Web 2.0 Overrated?
      4. 1.3.4 Advantages/Disadvantages of Web 2.0
      5. 1.3.5 Early Enabling Technologies of Web 2.0
        1. 1.3.5.1 Wikis
        2. 1.3.5.2 Blogs
    4. 1.4 POPULAR WEB 2.0 PRODUCTS AND TOOLS
      1. 1.4.1 Flickr
      2. 1.4.2 YouTube
      3. 1.4.3 Twitter
        1. 1.4.3.1 Some Basic Features of Twitter
      4. 1.4.4 Yelp
      5. 1.4.5 Del.icio.us
      6. 1.4.6 SlideShare
    5. 1.5 THE CURRENT WEB 2.0 LANDSCAPE
      1. 1.5.1 Ajax (Formerly Called AJAX)
        1. 1.5.1.1 Ajax Toolkits
      2. 1.5.2 Productivity Tools
      3. 1.5.3 Development Tools and IDEs
      4. 1.5.4 Social Networks
        1. 1.5.4.1 The Facebook Platform
        2. 1.5.4.2 Zembly
        3. 1.5.4.3 The OpenSocial Platform
      5. 1.5.5 Mash-Ups
      6. 1.5.6 Cloud Computing
        1. 1.5.6.1 Amazon EC2
        2. 1.5.6.2 IBM Cloud Center
        3. 1.5.6.3 GAE
        4. 1.5.6.4 Microsoft Live Mesh/Azure
      7. 1.5.7 Semantic Technology
        1. 1.5.7.1 OpenCalais
        2. 1.5.7.2 Truevert
        3. 1.5.7.3 Altova Semantic Technology
        4. 1.5.7.4 Franz Semantic Technologies
        5. 1.5.7.5 TopBraid
      8. 1.5.8 Advanced Project with GWT
      9. 1.5.9 Comet: “Reverse Ajax”
      10. 1.5.10 Mobile Applications
    6. 1.6 WHAT ABOUT WEB 3.0?
    7. 1.7 SUMMARY
  7. CHAPTER 2 Landscape of the Web
    1. 2.1 CODING GUIDELINES
    2. 2.2 HTML/JAVASCRIPT EXAMPLES
      1. 2.2.1 JavaScript Strings and Arrays
      2. 2.2.2 Handling Mouse Events
      3. 2.2.3 Regular Expressions and String Manipulations
      4. 2.2.4 HTML Frame Elements
      5. 2.2.5 HTML IFRAME Elements
        1. 2.2.5.1 Inter-IFRAME Communication
      6. 2.2.6 Design Patterns and Best Practices
    3. 2.3 CASCADING STYLE SHEETS (CSS)
      1. 2.3.1 Basic CSS Examples
        1. 2.3.1.1 CSS Class and CSS ID
        2. 2.3.1.2 CSS Inheritance Rules
      2. 2.3.2 Object-Oriented CSS (OOCSS)
        1. 2.3.2.1 OOCSS
        2. 2.3.2.2 Blueprint: Object-Oriented CSS
    4. 2.4 HTML AND DOCUMENT OBJECT MODEL (DOM)
      1. 2.4.1 HTML DOM and JavaScript DOM
      2. 2.4.2 Managing Nodes and Elements
        1. 2.4.2.1 Finding and Deleting a Node
        2. 2.4.2.2 Creating a New Node
        3. 2.4.2.3 Updating an Existing Node
        4. 2.4.2.4 Updating DOM Nodes: Two Techniques
        5. 2.4.2.5 Manipulating Lists of Elements
        6. 2.4.2.6 Accessing the Attributes of an Element
      3. 2.4.3 Dojo and jQuery Syntax
      4. 2.4.4 Distributed DOM
    5. 2.5 BROWSER PLUG-INS
      1. 2.5.1 SVG Plug-In
        1. 2.5.1.1 SVG Support: Native Versus Plug-In
        2. 2.5.1.2 Sample SVG Code
        3. 2.5.1.3 SVG Plug-In for Eclipse
      2. 2.5.2 Silverlight Plug-In
      3. 2.5.3 Adobe Flash
    6. 2.6 ASSORTED JAVASCRIPT TECHNOLOGIES AND TOOLS
      1. 2.6.1 Google Caja
      2. 2.6.2 ECMAScript for XML (E4X)
        1. 2.6.2.1 Examples of E4X
      3. 2.6.3 Raphael JavaScript Library
    7. 2.7 HTML5: BROWSER SUPPORT AND CODE SAMPLES
      1. 2.7.1 The HTML5 Canvas Element
        1. 2.7.1.1 2D Graphics
        2. 2.7.1.2 3D Graphics
      2. 2.7.2 Google Chrome
        1. 2.7.2.1 Google V8 JavaScript Engine
        2. 2.7.2.2 Google Chrome OS
        3. 2.7.2.3 Google Chrome Frame
    8. 2.8 SUMMARY
  8. CHAPTER 3 JSON and XML
    1. 3.1 INTRODUCING THE CONCEPT OF JSON AND XML
      1. 3.1.1 XPath, XQuery, XSLT, and XML Documents
        1. 3.1.1.1 XPath
    2. 3.2 WORKING WITH JSON
    3. 3.3 AJAX TOOL KITS WORKING WITH JSON
      1. 3.3.1 Dojo and JSON
      2. 3.3.2 jQuery and JSON
      3. 3.3.3 Working with XML
        1. 3.3.3.1 Document Type Definition (DTD)
        2. 3.3.3.2 Schemas
        3. 3.3.3.3 Node Types in XML Documents
        4. 3.3.3.4 XML Declaration Statement
        5. 3.3.3.5 Processing Instructions (PI)
        6. 3.3.3.6 Elements and Attributes
        7. 3.3.3.7 Elements Versus Attributes
        8. 3.3.3.8 Comments in XML
        9. 3.3.3.9 Entity References
        10. 3.3.3.10 CDATA Sections
      4. 3.3.4 Understanding Simple API for XML (SAX)
        1. 3.3.4.1 XML Namespaces
        2. 3.3.4.2 Why Use XML Namespaces?
        3. 3.3.4.3 An XML Document with One Namespace
        4. 3.3.4.4 An XML Document with Two Namespaces
        5. 3.3.4.5 XML Support in Browsers
        6. 3.3.4.6 What is DOM?
        7. 3.3.4.7 A Simple DOM Example
        8. 3.3.4.8 XML with Dojo
        9. 3.3.4.9 XML with jQuery
    4. 3.4 ADVANTAGES AND DISADVANTAGES OF JSON AND XML
      1. 3.4.1 Advantages and Disadvantages of JSON
      2. 3.4.2 Advantages and Disadvantages of XML
    5. 3.5 HTML AND SGML VERSUS XML
    6. 3.6 YAML AND COMMA SEPARATED VALUES (CSV) AS ALTERNATIVES TO JSON AND XML
      1. 3.6.1 YAML
      2. 3.6.2 CSV
    7. 3.7 ADVANCED EXAMPLE WITH DOJO AND JSON
    8. 3.8 SUMMARY
  9. CHAPTER 4 Ajax
    1. 4.1 INTRODUCING THE CONCEPT OF AJAX
    2. 4.2 A BRIEF HISTORY OF AJAX
      1. 4.2.1 IFrames
        1. 4.2.1.1 IFrames Using Dojo
        2. 4.2.1.2 IFrames Using jQuery
        3. 4.2.1.3 IFrames Example Without an Ajax Library
    3. 4.3 XMLHttpRequest (XHR)
    4. 4.4 AJAX VIA AJAX LIBRARIES
      1. 4.4.1 Ajax via Dojo
      2. 4.4.2 Ajax via jQuery
    5. 4.5 AJAX WORKING WITH JSON USING DOJO
      1. 4.5.1 Ajax Working with JSON in jQuery
    6. 4.6 LIMITATIONS OF AJAX
    7. 4.7 ADOPTION OF AJAX
      1. 4.7.1 Disadvantages of Ajax
      2. 4.7.2 Advantages of Ajax
    8. 4.8 COMPARISON OF EXISTING AJAX LIBRARIES
      1. 4.8.1 Dojo
      2. 4.8.2 ExtJS
      3. 4.8.3 GWT
      4. 4.8.4 jQuery
      5. 4.8.5 Prototype Script.aculo.us
      6. 4.8.6 SmartClient
      7. 4.8.7 SproutCore
      8. 4.8.8 Tibco GI
      9. 4.8.9 YUI
      10. 4.8.10 Understanding the Terms
    9. 4.9 COMPREHENSIVE AJAX PROJECT
    10. 4.10 ADVANCED AJAX
    11. 4.11 SUMMARY
  10. CHAPTER 5 Productivity and Testing Tools
    1. 5.1 WHICH TOOLS ARE BEST?
    2. 5.2 GOOGLE WAVE
      1. 5.2.1 Google Wave Features
    3. 5.3 YAHOO PIPES
      1. 5.3.1 A Simple Yahoo Pipe
      2. 5.3.2 Using YQL in Yahoo Pipes
        1. 5.3.2.1 YQL SELECT Statements and Online Samples
        2. 5.3.2.2 YQL and Open Data Tables
        3. 5.3.2.3 Yahoo Widgets
        4. 5.3.2.4 Combining YQL with Other Tools
    4. 5.4 DAPPER
      1. 5.4.1 Creating a Simple Dapp
    5. 5.5 ASSORTED OPEN SOURCE TOOLS FROM GOOGLE
      1. 5.5.1 Google Gears
      2. 5.5.2 Google Native Client
        1. 5.5.2.1 Launching Google Native Client
        2. 5.5.2.2 Installing the Plug-In
      3. 5.5.3 Google O3D
      4. 5.5.4 Google Ajax, Playground, and Sandbox
        1. 5.5.4.1 Google Ajax APIs
      5. 5.5.5 Google Innovation
    6. 5.6 MISCELLANEOUS PRODUCTIVITY TOOLS
    7. 5.7 TWITTER
      1. 5.7.1 Invoking Twitter APIs
        1. 5.7.1.1 API for Accessing User Tweets
    8. 5.8 THE MIT SIMILE PROJECT
    9. 5.9 WEB 2.0 APPLICATIONS AND PRODUCT SUITES
      1. 5.9.1 Google Apps
      2. 5.9.2 Zoho
        1. 5.9.2.1 Zoho CloudSQL
    10. 5.10 BUILD AUTOMATION AND TESTING TOOLS
      1. 5.10.1 Apache Ant
      2. 5.10.2 A Simple build.xml File
      3. 5.10.3 Maven
      4. 5.10.4 Other Build Tools
      5. 5.10.5 JUnit
        1. 5.10.5.1 A Simple JUnit Apache Ant Target
      6. 5.10.6 Other Testing Tools
    11. 5.11 BENCHMARKING TOOLS
      1. 5.11.1 Faban
    12. 5.12 SOURCE CODE MANAGEMENT TOOLS
      1. 5.12.1 How to Use Mercurial
        1. 5.12.1.1 Mercurial and Eclipse
        2. 5.12.1.2 Mercurial Client
      2. 5.12.2 Web Containers and Servers
        1. 5.12.2.1 Download/Install Apache Tomcat 6.x
    13. 5.13 USING DTRACE FOR WEB 2.0 APPLICATIONS
      1. 5.13.1 DTrace Fundamentals
        1. 5.13.1.1 Probe Definitions
        2. 5.13.1.2 Predicates
        3. 5.13.1.3 Sample Scripts
        4. 5.13.1.4 Resources
    14. 5.14 INDUSTRY PERSPECTIVE AND BUSINESS FOCUS
      1. 5.14.1 How Will Yahoo Pipes Evolve During the Next Several Years?
    15. 5.15 SUMMARY
  11. CHAPTER 6 Debugging Tools
    1. 6.1 INTRODUCING THE CONCEPT OF DEBUGGING
    2. 6.2 INTEGRATED DEVELOPMENT ENVIRONMENTS (IDES)
      1. 6.2.1 Eclipse
        1. 6.2.1.1 Installing an Eclipse Plug-In
      2. 6.2.2 Adobe Flash Builder 4
      3. 6.2.3 SUN NetBeans
      4. 6.2.4 Oracle JDeveloper
      5. 6.2.5 IntelliJ IDEA
      6. 6.2.6 Aptana Studio
    3. 6.3 RICH INTERNET APPLICATIONS (RIA)
      1. 6.3.1 Adobe AIR
      2. 6.3.2 SUN JavaFX
    4. 6.4 FIREBUG
      1. 6.4.1 Inspect and Edit HTML and CSS
      2. 6.4 .2 Monitor Network Activity
      3. 6.4 .3 Debug and Profile JavaScript
      4. 6.4.4 Find Errors
      5. 6.4.5 Exploring the DOM
      6. 6.4.6 Execute JavaScript on the Fly
      7. 6.4.7 Log from JavaScript
    5. 6.5 FIREBUG LITE
    6. 6.6 VENKMAN
    7. 6.7 FIREFOX WEB DEVELOPER ADD-ON
    8. 6.8 JSLINT
    9. 6.9 JSUNIT
    10. 6.10 SELENIUM
    11. 6.11 WIRESHARK
    12. 6.12 GOOGLE GADGETS
    13. 6.13 SUMMARY
  12. CHAPTER 7 The Facebook Platform
    1. 7.1 SOCIAL NETWORKING
    2. 7.2 FACEBOOK
      1. 7.2.1 Facebook Features and Services
        1. 7.2.1.1 Facebook Photos
        2. 7.2.1.2 Facebook Connect
          1. 7.2.1.2.1 FACEBOOK CONNECT AND THIRD-PARTY INTEGRATION
        3. 7.2.1.3 Facebook Pages
        4. 7.2.1.4 Facebook Pages and Twitter
        5. 7.2.1.5 fbFund
      2. 7.2.2 Facebook Applications
        1. 7.2.2.1 Scripting Support in Facebook Applications
        2. 7.2.2.2 How to Create Facebook Applications
        3. 7.2.2.3 A Simple Facebook Connect Application
      3. 7.2.3 Facebook Core Components
        1. 7.2.3.1 Facebook API
        2. 7.2.3.2 Facebook FBML
        3. 7.2.3.3 Facebook XFBML
        4. 7.2.3.4 Facebook FQL
        5. 7.2.3.5 Facebook FBJS
          1. 7.2.3.5.1 FBJS DOM OBJECTS
          2. 7.2.3.5.2 FBJS AJAX
        6. 7.2.3.6 Facebook Haystack
        7. 7.2.3.7 Facebook Open Source Projects
      4. 7.2.4 Facebook Integration with Other Products
        1. 7.2.4.1 Facebook Tornado
          1. 7.2.4.1.1 FACEBOOK TORNADO AND GAE
        2. 7.2.4.2 FaceConnector
        3. 7.2.4.3 Adobe Flex Integration
        4. 7.2.4.4 Adobe Flash Integration
        5. 7.2.4.5 Facebook Applications and Alfresco
        6. 7.2.4.6 Facebook and JSPs
        7. 7.2.4.7 Developing Java Applications in Facebook
    3. 7.3 SUN ZEMBLY
      1. 7.3.1 Zembly Features
      2. 7.3.2 Zembly Applications and Tools
      3. 7.3.3 Zembly Web Gateway API
        1. 7.3.3.1 Installing Web Gateway API in NetBeans
        2. 7.3.3.2 Adding Web Gateway APIs to a Domain
    4. 7.4 BEBO
    5. 7.5 IDENTITY MANAGEMENT FOR WEB 2.0 APPLICATIONS
      1. 7.5.1 Key Technologies
        1. 7.5.1.1 SAML
        2. 7.5.1.2 Shibboleth
        3. 7.5.1.3 OpenSSO
        4. 7.5.1.4 OpenID
        5. 7.5.1.5 OAuth
      2. 7.5.2 Conclusions
    6. 7.6 SUMMARY
  13. CHAPTER 8 The OpenSocial Platform
    1. 8.1 THE OPENSOCIAL LANDSCAPE
    2. 8.2 OPENSOCIAL MARKUP LANGUAGE (OSML)
      1. 8.2.1 OpenSocial Tags
      2. 8.2.2 OpenSocial Templates
    3. 8.3 OPENSOCIAL GADGETS
      1. 8.3.1 Creating and Submitting OpenSocial Gadgets
      2. 8.3.2 Google Gadgets and Other Tools
    4. 8.4 THE OPENSOCIAL TECHNOLOGY STACK
    5. 8.5 OPENSOCIAL APPLICATIONS IN ECLIPSE
      1. 8.5.1 A Basic OSDE Application
    6. 8.6 OPENSOCIAL AND MAJOR VENDORS
      1. 8.6.1 Yahoo Application Platform (YAP) and OpenSocial
        1. 8.6.1.1 Yahoo Markup Language (YML)
        2. 8.6.1.2 Yahoo Social API SDKs
      2. 8.6.2 Google Orkut
    7. 8.7 GOOGLE FRIEND CONNECT (GFC)
      1. 8.7.1 GFC APIs
      2. 8.7.2 GFC Gadgets
    8. 8.8 APACHE SHINDIG
      1. 8.8.1 Building Apache Shindig
        1. 8.8.1.1 Downloading the Shindig Code
        2. 8.8.1.2 The Shindig README file
        3. 8.8.1.3 The Shindig BUILD-JAVA file
        4. 8.8.1.4 Building and Running the Shindig Code with Maven
        5. 8.8.1.5 Building Shindig as an Eclipse Project
      2. 8.8.2 OpenSocial Java Client
      3. 8.8.3 Display Friends in Shindig
      4. 8.8.4 Compiling the Sample Shindig Code
    9. 8.9 INTEGRATED OPENSOCIAL SAMPLE APPLICATION
      1. 8.9.1 Working with OpenSocial: Our Findings
    10. 8.10 SUMMARY
  14. CHAPTER 9 Mash-Ups and Search Technology
    1. 9.1 MASH-UPS
      1. 9.1.1 Consumer and Enterprise Mash-Ups
        1. 9.1.1.1 Consumer Mash-Ups
        2. 9.1.1.2 Enterprise Mash-Ups
      2. 9.1.2 Design Patterns and Best Practices
    2. 9.2 MASH-UP TOOLS AND PRODUCTS
      1. 9.2.1 IBM Mash-Up Center
        1. 9.2.1.1 Set-up Procedure for the IBM Mash-Up Center
      2. 9.2.2 WSO2
        1. 9.2.2.1 Set-up Steps for the WSO2 Mashup Server
        2. 9.2.2.2 WSO2 Sample Code
      3. 9.2.3 Intel Mash Maker
        1. 9.2.3.1 Download and Installation
        2. 9.2.3.2 A Simple Mash Maker Example
        3. 9.2.3.3 iFrames and Widgets
      4. 9.2.4 Denodo Technologies
      5. 9.2.5 JackBe
        1. 9.2.5.1 JackBe Registration, Download, and Installation
        2. 9.2.5.2 A Simple JackBe Mash-Up
        3. 9.2.5.3 Creating a Mash-Up with the JackBe Eclipse Plug-In
      6. 9.2.6 Yahoo BOSS Mash-Up Framework
        1. 9.2.6.1 A Simple BOSS Mash-Up Example
        2. 9.2.6.2 Yahoo Search BOSS
      7. 9.2.7 Consumer Mash-Ups and Online Tools
        1. 9.2.7.1 Google Web Elements
        2. 9.2.7.2 Google Maps
        3. 9.2.7.3 KML
          1. 9.2.7.3.1 A SIMPLE EXAMPLE OF KML DOCUMENT
    3. 9.3 SEARCH TECHNOLOGY
      1. 9.3.1 Google Search Tools
        1. 9.3.1.1 Google Custom Search Engine (CSE)
          1. 9.3.1.1.1 A SIMPLE GOOGLE CSE
        2. 9.3.1.2 Google Site Search (GSS)
        3. 9.3.1.3 Google Squared
      2. 9.3.2 Yahoo Search Tools
        1. 9.3.2.1 Yahoo BOSS
          1. 9.3.2.1.1 A SIMPLE YAHOO BOSS EXAMPLE
      3. 9.3.3 Open Source Search Tools
        1. 9.3.3.1 Apache Lucene
          1. 9.3.3.1.1 SETTING UP LUCENE WITH TOMCAT
          2. 9.3.3.1.2 LUCENE SUBPROJECTS
        2. 9.3.3.2 Apache Solr
          1. 9.3.3.2.1 SETTING UP SOLR WITH TOMCAT
        3. 9.3.3.3 Sphinx
        4. 9.3.3.4 Katta
    4. 9.4 SEARCH-RELATED ENGINES
      1. 9.4.1 Microsoft Bing
        1. 9.4.1.1 Bing API 2.0 SDK
      2. 9.4.2 Google Caffeine
      3. 9.4.3 Hakia
      4. 9.4.4 Kosmix
      5. 9.4.5 Yebol
    5. 9.5 INDUSTRY PERSPECTIVE AND BUSINESS FOCUS
      1. 9.5.1 Background
      2. 9.5.2 Mash-ups, Web 2.0, and Beyond
      3. 9.5.3 products and resources
      4. 9.5.4 Implementation
      5. 9.5.5 Conclusions
    6. 9.6 SUMMARY
  15. CHAPTER 10 Cloud Computing Part I
    1. 10.1 WHAT IS CLOUD COMPUTING?
      1. 10.1.1 Public, Private, and Hybrid Clouds
      2. 10.1.2 Questions to Ask Cloud Computing Vendors
      3. 10.1.3 The Software Platform Infrastructure (SPI) Model for Cloud Computing
        1. 10.1.3.1 SaaS
        2. 10.1.3.2 PaaS
        3. 10.1.3.3 IaaS
    2. 10.2 AMAZON WEB SERVICES (AWS)
      1. 10.2.1 Amazon EC2
        1. 10.2.1.1 AMIs
      2. 10.2.2 Amazon S3
        1. 10.2.2.1 Cloudberry Lab
      3. 10.2.3 Amazon SimpleDB
      4. 10.2.4 Amazon CloudFront
      5. 10.2.5 Amazon SQS
      6. 10.2.6 Alexa Web Information Service (AWIS)
      7. 10.2.7 Amazon Elastic MapReduce
      8. 10.2.8 Creating Amazon EC2 Applications
    3. 10.3 IBM CLOUD LABS
      1. 10.3.1 IBM and Amazon Partnership
    4. 10.4 GOOGLE APP ENGINE (GAE)
      1. 10.4.1 Assessing GAE for your Company
      2. 10.4.2 Upcoming GAE Features and Pricing Structure
      3. 10.4.3 Google Bigtable
      4. 10.4.4 Installing the GAE SDK for Python
      5. 10.4.5 A “Hello, World” Example in Python
      6. 10.4.6 Uploading Applications to GAE
      7. 10.4.7 “Fusion Tables” Database
    5. 10.5 MICROSOFT WINDOWS AZURE
      1. 10.5.1 Windows Azure Features and .NET Services
      2. 10.5.2 SQL Azure
        1. 10.5.2.1 Using SQL Azure
      3. 10.5.3 Windows Azure Development
    6. 10.6 YAHOO CLOUD COMPUTING
      1. 10.6.1 Yahoo MObStor
      2. 10.6.2 Yahoo Sherpa
    7. 10.7 OTHER CLOUD COMPUTING INITIATIVES
    8. 10.8 INDUSTRY PERSPECTIVE
      1. 10.8.1 Economy of the Cloud and How to Get Started
    9. 10.9 SUMMARY
  16. CHAPTER 11 Cloud Computing Part II
    1. 11.1 MIDSIZE CLOUD COMPUTING VENDORS
      1. 11.1.1 Appistry
      2. 11.1.2 Engine Yard
      3. 11.1.3 GoGrid
      4. 11.1.4 Joyent
      5. 11.1.5 LongJump
      6. 11.1.6 Rackspace
      7. 11.1.7 RightScale
      8. 11.1.8 GridGain
      9. 11.1.9 iCloud
    2. 11.2 CLOUD COMPUTING INTEGRATED APPLICATIONS
      1. 11.2.1 NetSuite
      2. 11.2.2 SalesForce
    3. 11.3 CLOUD COMPUTING AND OPEN SOURCE
      1. 11.3.1 Apache Open Source Projects
        1. 11.3.1.1 Apache Hadoop
          1. 11.3.1.1.1 SETTING UP HADOOP AS A SINGLE-NODE INSTALLATION
          2. 11.3.1.1.2 HADOOP SUBPROJECTS
        2. 11.3.1.2 Apache Hive
        3. 11.3.1.3 Apache Thrift
      2. 11.3.2 Sector/Sphere
      3. 11.3.3 UCB Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (EUCALYPTUS)
      4. 11.3.4 Cloud Computing in the Scientific Community
        1. 11.3.4.1 Nimbus
        2. 11.3.4.2 CluE (Cluster Exploratory)
      5. 11.3.5 Other Cloud Computing Initiatives
      6. 11.3.6 Cloud Computing and Databases
        1. 11.3.6.1 MySQL
        2. 11.3.6.2 Hypertable
        3. 11.3.6.3 Bigdata
        4. 11.3.6.4 Drizzle
        5. 11.3.6.5 MongoDB
        6. 11.3.6.6 Apache CouchDB
      7. 11.3.7 Cloud Computing Editors and IDEs
        1. 11.3.7.1 Mozilla Bespin: An Editor/IDE
        2. 11.3.7.2 WaveMaker: Cloud-Based IDE
      8. 11.3.8 Ubuntu and Cloud Computing
      9. 11.3.9 Cloud Organizations and Cloud Manifesto
        1. 11.3.9.1 OCC
        2. 11.3.9.2 CCIF
        3. 11.3.9.3 OCCM
      10. 11.3.10 Monitoring Tools
    4. 11.4 ALTERNATIVES TO CLOUD COMPUTING
      1. 11.4.1 Oracle Coherence
        1. 11.4.1.1 Creating Oracle Coherence Caches
        2. 11.4.1.2 Oracle Coherence Sample Code
      2. 11.4.2 Terracotta
        1. 11.4.2.1 Terracotta Plug-In for Eclipse
        2. 11.4.2.2 Launching Terracotta and the Terracotta Console
        3. 11.4.2.3 Terracotta Integration with Other Software
      3. 11.4.3 Virtualization Software
        1. 11.4.3.1 VMWare
        2. 11.4.3.2 SUN VirtualBox
        3. 11.4.3.3 Microsoft Virtual PC
    5. 11.5 BUSINESS FOCUS
      1. 11.5.1 What are the major benefits of cloud computing?
      2. 11.5.2 What are the major downsides of cloud computing?
      3. 11.5.3 Which companies/verticals benefit the most from cloud computing?
      4. 11.5.4 What are the major use cases or cloud computing?
      5. 11.5.5 What is the state of the adoption of cloud computing today?
      6. 11.5.6 What are the issues that prevent widespread adoption of cloud computing?
      7. 11.5.7 What are the technical challenges in developing/deploying apps in the cloud?
      8. 11.5.8 How will cloud computing evolve in the next few years?
      9. 11.5.9 How would you compare virtualization and cloud computing?
      10. 11.5.10 What will be VMware’s strategy on cloud computing in the next few years?
    6. 11.6 SUMMARY
  17. CHAPTER 12 XML, Java, and GAE
    1. 12.1 JAVA–XML BINDING TOOLS
      1. 12.1.1 JAXB: Java –XML Bindings
        1. 12.1.1.1 A Simple JAXB Example
        2. 12.1.1.2 JAXB Plug-in for Eclipse
      2. 12.1.2 Castor: Java–XML Binding Support
        1. 12.1.2.1 Castor Plug-in for Eclipse
        2. 12.1.2.2 Castor: ORM and JDO Support
        3. 12.1.2.3 JAXB Versus Castor
      3. 12.1.3 Other Java–XML Binding Tools
    2. 12.2 JAVA AND GOOGLE APP ENGINE (GAE)
      1. 12.2.1 Language and Framework Support
        1. 12.2.1.1 Languages Supported by GAE
        2. 12.2.1.2 Library and Frameworks Supported by GAE
        3. 12.2.1.3 Technologies and Features Not Supported By GAE
        4. 12.2.1.4 GAE Plug-ins for Eclipse and NetBeans
        5. 12.2.1.5 JSR Support in GAE
      2. 12.2.2 Java Applications for GAE in Eclipse
        1. 12.2.2.1 Install the GAE Plug-in for Eclipse
        2. 12.2.2.2 Install the GAE SDK for Java
        3. 12.2.2.3 A Java Application for GAE in Eclipse
        4. 12.2.2.4 Deploying Files to GAE from Eclipse
      3. 12.2.3 The Structure of GAE Java Applications
      4. 12.2.4 Creating a Google Wave Robot in Eclipse
      5. 12.2.5 Starting the GAE Server
    3. 12.3 JAVA AND GAE CODE SAMPLES
      1. 12.3.1 A JSP Example
      2. 12.3.2 A Java Servlet Example
      3. 12.3.3 Google Wave, GAE, and Twitter
      4. 12.3.4 Create an Eclipse Project
      5. 12.3.5 GAE JDO
        1. 12.3.5.1 A JDO Eclipse Project
      6. 12.3.6 GAE JPA
        1. 12.3.6.1 A JPA Eclipse Project
    4. 12.4 JAVA/GAE CLOUDS AND ALTERNATIVES
      1. 12.4.1 Stax
        1. 12.4.1.1 Create a Stax Application
        2. 12.4.1.2 Deploy a Stax Application to the Stax Cloud
        3. 12.4.1.3 Monitoring Stax Applications
      2. 12.4.2 GigaSpaces
      3. 12.4.3 jClouds
    5. 12.5 A JAVA APPENGINE INTEGRATED EXAMPLE
    6. 12.6 SUMMARY
  18. CHAPTER 13 Semantic Technology
    1. 13.1 THE SEMANTIC WEB AND SEMANTIC TECHNOLOGY
      1. 13.1.1 The Semantic Technology Landscape
      2. 13.1.2 Taxonomies, Ontologies, and Folksonomies
        1. 13.1.2.1 Sample Ontologies and Design Patterns
      3. 13.1.3 RDF, RDFS, OWL, DARPA Agent Markup Language (DAML), and SPARQL
        1. 13.1.3.1 RDF
          1. 13.1.3.1.1 EARLY PREDECESSORS OF RDF
          2. 13.1.3.1.2 USING PLAIN XML TO REPRESENT STATEMENTS
          3. 13.1.3.1.3 USING RDBMS TABLES TO REPRESENT STATEMENTS
          4. 13.1.3.1.4 HOW TO WRITE VALID RDF TRIPLETS
          5. 13.1.3.1.5 SQL VERSUS RDF
          6. 13.1.3.1.6 A SAMPLE RDF DOCUMENT
          7. 13.1.3.1.7 ALTERNATIVES TO RDF
        2. 13.1.3.2 RDFS
        3. 13.1.3.3 OWL
        4. 13.1.3.4 OWL Validators and Tools
        5. 13.1.3.5 DAML and Ontology Inference Layer (OIL)
        6. 13.1.3.6 SPARQL
          1. 13.1.3.6.1 A SIMPLE SPARQL QUERY
          2. 13.1.3.6.2 ALTERNATIVES TO SPARQL
      4. 13.1.4 Semantic Technology Tools
        1. 13.1.4.1 Programming Tools and Environments for RDF
          1. 13.1.4.1.1 JENA
          2. 13.1.4.1.2 DOWNLOAD/INSTALL JENA
          3. 13.1.4.1.3 A DOM-TO-JENA JAVA EXAMPLE
        2. 13.1.4.2 Sesame: a Triple-Based Database System for RDF
          1. 13.1.4.2.1 DOWNLOAD/INSTALL SESAME
        3. 13.1.4.3 Rhodonite: a Graphical Editor for RDF
    2. 13.2 OPENCALAIS
      1. 13.2.1 The Calais Viewer
      2. 13.2.2 A Simple OpenCalais Example
      3. 13.2.3 OpenCalais Code Samples
        1. 13.2.3.1 OpenCalais Code Samples
        2. 13.2.3.2 OpenCalais Featured Applications
      4. 13.2.4 OpenCalais Tools
        1. 13.2.4.1 OpenCalais and Other Tools
    3. 13.3 EXPERT SYSTEM
    4. 13.4 TRUEVERT
    5. 13.5 SEMANTIC TECHNOLOGY FROM COMMERCIAL VENDORS
      1. 13.5.1 Oracle Semantic Technology
      2. 13.5.2 IBM Semantic Technology
      3. 13.5.3 Microsoft Semantic Technology
      4. 13.5.4 Altova Semantic Technology
      5. 13.5.5 Franz Semantic Technologies
      6. 13.5.6 TopBraid
    6. 13.6 OTHER PROJECTS, TOOLS, AND PRODUCTS
      1. 13.6.1 Open Source RDF-based Projects
        1. 13.6.1.1 DBpedia
        2. 13.6.1.2 Other Useful Projects
    7. 13.7 COMMENTS ABOUT WEB 3.0
    8. 13.8 INDUSTRY PERSPECTIVE
      1. 13.8.1 What is your “definition” of Web 2.0? Web 3.0?
      2. 13.8.2 How will Semantic Technology evolve during the next several years?
      3. 13.8.3 How will OpenCalais influence Semantic Technology?
      4. 13.8.4 What are the important differences (and similarities) between OpenCalais and other Semantic Technology products?
      5. 13.8.5 Where are the opportunities for creating successful Semantic Technology applications?
      6. 13.8.6 What advice do you have for developers who want to create successful Semantic Technology applications? What technical and nontechnical skills do they need to acquire?
      7. 13.8.7 What advice do you have for people who want to create start-ups?
    9. 13.9 SUMMARY
  19. CHAPTER 14 Web 2.0 Comprehensive Project
    1. 14.1 CHAPTER OVERVIEW
      1. 14.1.1 Project Overview
    2. 14.2 GOOGLE WEB TOOLKIT (GWT)
    3. 14.3 MEETUP NETWORKING CODE
    4. 14.4 JFXTRAS JAVAFX RAFFLE TOOL BACKGROUND
    5. 14.5 JFXTRAS JAVAFX RAFFLE TOOL CODE
      1. 14.5.1 Building the JUG Spinner UI
      2. 14.5.2 Calling Web Services from JavaFX
    6. 14.6 SUMMARY
  20. CHAPTER 15 Comet
    1. 15.1 INTRODUCING THE CONCEPT OF COMET
      1. 15.1.1 Polling
      2. 15.1.2 Long Polling
      3. 15.1.3 Streaming
      4. 15.1.4 Server-Side Threading Concerns
    2. 15.2 COMETD
      1. 15.2.1 CometD and JavaScript
      2. 15.2.2 Publish and Subscribe from JavaScript
      3. 15.2.3 Publish and Subscribe from Java
      4. 15.2.4 HTTPServletRequest
      5. 15.2.5 Security Policy
      6. 15.2.6 Channel, Queue, and Client Listeners
      7. 15.2.7 Conclusion
    3. 15.3 ORBITED
      1. 15.3.1 Integration
      2. 15.3.2 Architecture
      3. 15.3.3 Details
      4. 15.3.4 Orbited is Not a Message Queue
      5. 15.3.5 Goals and Strengths of the Orbited Project
    4. 15.4 INDUSTRY PERSPECTIVE OF COMET BY MICHAEL CARTER
    5. 15.5 SUMMARY
  21. CHAPTER 16 Mobile Development Part I
    1. 16.1 THE MOBILE LANDSCAPE
      1. 16.1.1 Initial Costs for Mobile-Based Development
      2. 16.1.2 Web Technologies for Mobile Devices
        1. 16.1.2.1 HTML5 Support
        2. 16.1.2.2 OpenGL
        3. 16.1.2.3 Protocol Support
        4. 16.1.2.4 XML and JSON Support
        5. 16.1.2.5 Popular Web 2.0 Products and Services
      3. 16.1.3 Design Patterns and Best Practices
    2. 16.2 APPLE IPHONE
      1. 16.2.1 Quick Platform Overview
      2. 16.2.2 Overview of iPhone Applications
        1. 16.2.2.1 iPhone 3.0 OS Features
        2. 16.2.2.2 Brief Comparative Overview of Objective-C Code
          1. 16.2.2.2.1 HOW OBJECTIVE-C DIFFERS FROM JAVA AND C/C++
        3. 16.2.2.3 Structure of iPhone Source Files
      3. 16.2.3 iPhone Applications for Mobile Devices
        1. 16.2.3.1 A Simple iPhone Application Using Xcode
        2. 16.2.3.2 Project Structure of an iPhone Application
        3. 16.2.3.3 iPhone Project Files
        4. 16.2.3.4 Interface Builder (IB)
      4. 16.2.4 iPhone Web Applications
      5. 16.2.5 Apple iPhone and Third-Party Tools
        1. 16.2.5.1 Zembly and iPhone
        2. 16.2.5.2 Apple iPhone and Other Tools
    3. 16.3 GOOGLE ANDROID
      1. 16.3.1 Quick Platform Overview
      2. 16.3.2 Overview of Android Applications
        1. 16.3.2.1 Android Features
        2. 16.3.2.2 Intents, Activities, and Views
        3. 16.3.2.3 Methods and Life Cycle of Android Applications
      3. 16.3.3 A Simple Android Application
        1. 16.3.3.1 Downloading/Installing Software
        2. 16.3.3.2 A Simple Android Application in Eclipse
        3. 16.3.3.3 Project Structure of an Android Application
        4. 16.3.3.4 Android Application Project Files
      4. 16.3.4 Google Android Tool Integration
    4. 16.4 PALM PRE
      1. 16.4.1 Quick Overview of webOS and Mojo
      2. 16.4.2 Overview of Palm Applications
        1. 16.4.2.1 Downloading/Installing Software
      3. 16.4.3 A Simple Palm Pre Application
        1. 16.4.3.1 Palm Pre Application in Eclipse
        2. 16.4.3.2 Project Structure of a Palm Pre Application
        3. 16.4.3.3 Palm Pre Project Files
    5. 16.5 TODAY’S MOBILE WEB
    6. 16.6 SUMMARY
  22. CHAPTER 17 Mobile Development Part II
    1. 17.1 SAMSUNG
      1. 17.1.1 Quick Platform Overview
        1. 17.1.1.1 Download/Installing Samsung Software
        2. 17.1.1.2 A Samsung J2ME Mobile Application
        3. 17.1.1.3 Project Structure of a Samsung J2ME Application
        4. 17.1.1.4 Samsung J2ME Application Project Files
    2. 17.2 J2ME
      1. 17.2.1 Quick Platform Overview
        1. 17.2.1.1 J2ME Features
      2. 17.2.2 A Simple J2ME Application
        1. 17.2.2.1 Downloading/Installing Software
        2. 17.2.2.2 A Simple J2ME Application in the ME 3.0 SDK
        3. 17.2.2.3 Project Structure of a J2ME Application
        4. 17.2.2.4 J2ME Application Project Files
    3. 17.3 RIM BLACKBERRY
      1. 17.3.1 Quick Platform Overview
      2. 17.3.2 A Simple Blackberry Application
        1. 17.3.2.1 Downloading/Installing Software
        2. 17.3.2.2 A Blackberry Application in the JDE
        3. 17.3.2.3 Project Structure of a Blackberry Application
        4. 17.3.2.4 Blackberry Project Files
    4. 17.4 NOKIA
      1. 17.4.1 Nokia Mobile Applications
        1. 17.4.1.1 Downloading/Installing Nokia Software
        2. 17.4.1.2 A Nokia Qt Application in Eclipse
        3. 17.4.1.3 The Nokia Java ME Developer’s Library for Eclipse
    5. 17.5 JAVAFX 1.2 FOR MOBILE APPLICATIONS
      1. 17.5.1 A Simple JavaFX Mobile Application
        1. 17.5.1.1 A JavaFX Application in Eclipse
        2. 17.5.1.2 Project Structure of a JavaFX Mobile Application
        3. 17.5.1.3 JavaFX Project Files
    6. 17.6 MONOTOUCH
      1. 17.6.1 MonoTouch Features
      2. 17.6.2 A Simple MonoTouch Application
        1. 17.6.2.1 Downloading/Installing Software
        2. 17.6.2.2 A Minimal MonoTouch Example
    7. 17.7 MOTOROLA
      1. 17.7.1 Overview of Motorola Mobile Applications
        1. 17.7.1.1 Downloading/Installing Software
      2. 17.7.2 A Motorola Mobile Application
        1. 17.7.2.1 Project Structure of a MOTODEV WebUI Application
        2. 17.7.2.2 MOTODEV Project Files
      3. 17.7.3 Motorola and J2ME
        1. 17.7.3.1 J2ME Sample Applications
      4. 17.7.4 Motorola and Android
        1. 17.7.4.1 Project Structure of a MOTODEV Android Application
        2. 17.7.4.2 MOTODEV Android Project Files
    8. 17.8 VERIZON JOINT INNOVATION LAB (JIL) MOBILE
      1. 17.8.1 Verizon Mobile Applications in Eclipse
    9. 17.9 OTHER DEVELOPMENT TOOLS FOR MOBILE DEVICES
      1. 17.9.1 Appcelerator
        1. 17.9.1.1 Downloading/Installing Software
        2. 17.9.1.2 An Appcelerator Mobile Application in Eclipse
        3. 17.9.1.3 Project Structure of an Appcelerator Mobile Application
        4. 17.9.1.4 Appcelerator Project Files
      2. 17.9.2 Cross-Platform Development Tools
        1. 17.9.2.1 XMLVM
        2. 17.9.2.2 Rhomobile
        3. 17.9.2.3 SVG and Mobile Applications in NetBeans
    10. 17.10 COMPANIES FOR MOBILE DEVELOPMENT
    11. 17.11 MOBILE TRENDS IN OTHER TECHNOLOGIES
    12. 17.12 SUMMARY
  23. CHAPTER 18 Epilogue: The Future of the Web
    1. 18.1 CURRENT MAJOR TRENDS
      1. 18.1.1 Mobile Technology
      2. 18.1.2 HTML5
      3. 18.1.3 The Real-Time Web
      4. 18.1.4 Semantic Technology
    2. 18.2 START-UP INNOVATORS
    3. 18.3 VINCENT LAURIA
      1. 18.3.1 Can you tell us about your background?
      2. 18.3.2 What project(s) are you currently working on?
      3. 18.3.3 How did you adjust your business as a result?
      4. 18.3.4 What significant changes do you think will happen in the Web in the next few years, and what will be the effect on start-ups?
      5. 18.3.5 How will this change in the near future?
      6. 18.3.6 What key factors should be considered when engaging in a new start-up?
      7. 18.3.7 What hard lessons have you learned that you wish you knew earlier?
      8. 18.3.8 What are the primary factors for start-up success?
    4. 18.4 FUTURE TRENDS FOR THE WEB
      1. 18.4.1 Andres Almiray
      2. 18.4.2 Siamak Ashrafi
      3. 18.4.3 Stephen Chin
        1. 18.4.3.1 Future of the Web
      4. 18.4.4 Aleksandar Gargenta
      5. 18.4.5 Ted Goddard
        1. 18.4.5.1 The Emergence of Web 3.0
        2. 18.4.5.2 Today’s Challenges
        3. 18.4.5.3 Putting the A in Ajax
        4. 18.4.5.4 The Near Future
        5. 18.4.5.5 The Eternal Battle of Documents vs. Applications
        6. 18.4.5.6 Cyberspace
        7. 18.4.5.7 Web 2.0, Web 3.0, …
      6. 18.4.6 Chett Haase
      7. 18.4.7 Yehuda Katz
      8. 18.4.8 Van Riper
        1. 18.4.8.1 Google Wave: A Peek into the Future of the Web
      9. 18.4.9 Alex Russel
        1. 18.4.9.1 The Stakes
      10. 18.4.10 Dylan Schiemann
        1. 18.4.10.1 Future of the Web
      11. 18.4.11 Greg Wilkins
      12. 18.4.12 Monica Anderson
    5. 18.5 FINAL THOUGHTS
      1. 18.5.1 Web-Based Technology and Society
      2. 18.5.2 Everyone is Connected
      3. 18.5.3 Transitive Trust
      4. 18.5.4 Perfect Information for Everyone
      5. 18.5.5 Intelligent Agents
      6. 18.5.6 Web 3.0 and Beyond
    6. 18.6 SUMMARY
  24. Trademark Acknowledgments
  25. GNU GENERAL PUBLIC LICENSE
    1. Preamble
    2. TERMS AND CONDITIONS
      1. 0. Definitions.
      2. 1. Source Code.
      3. 2. Basic Permissions.
      4. 3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
      5. 4. Conveying Verbatim Copies.
      6. 5. Conveying Modified Source Versions.
      7. 6. Conveying Non-Source Forms.
      8. 7. Additional Terms.
      9. 8. Termination.
      10. 9. Acceptance Not Required for Having Copies.
      11. 10. Automatic Licensing of Downstream Recipients.
      12. 11. Patents.
      13. 12. No Surrender of Others’ Freedom.
      14. 13. Use with the GNU Affero General Public License.
      15. 14. Revised Versions of this License.
      16. 15. Disclaimer of Warranty.
      17. 16. Limitation of Liability.
      18. 17. Interpretation of Sections 15 and 16.
    3. END OF TERMS AND CONDITIONS
      1. How to Apply These Terms to Your New Programs
  26. GNU LESSER GENERAL PUBLIC LICENSE
    1. 0. Additional Definitions.
    2. 1. Exception to Section 3 of the GNU GPL.
    3. 2. Conveying Modified Versions.
    4. 3. Object Code Incorporating Material from Library Header Files.
    5. 4. Combined Works.
    6. 5. Combined Libraries.
    7. 6. Revised Versions of the GNU Lesser General Public License.
  27. Index