340 likes | 804 Views
IBM Developer Works resources. 4. Your Project,
E N D
Slide 1:Introduction
Background and responsibilities
Part of Rational, from AIMIntroduction
Background and responsibilities
Part of Rational, from AIM
Slide 7:Web 2.0 MASHUPPROJECT
Slide 8:Mashup
A hybrid application that combines content from more than one source.
Very popular Web 2.0 idea
Mash-up (you can use a hyphen if you want)
Mashups are the next logical step in Service Oriented Architecture
The real power in Web services comes from combining
Web services are typically specialized, mashups are “situational”
Development without central authority
Slide 9:Web 2.0 Web 2.0: O’Reilly Media coined the term
Web 1.0 vs. 2.0
One-to-many vs. many-to-many publishing
Application gets better as publishers make it better vs. application gets better the more people use it
No AJAX vs. AJAX
Slide 10:What is a Web service? W3C Web Services Architecture Group
“A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.”
Slide 11:Service Oriented Architecture Roles
Slide 12:SOAP
A W3C Specification
An XML format, typically holds information for a Web service method call, or a response
Programming language independent
SOAP expanded: Services-Oriented Access Protocol
Used to be Simple Object Access Protocol
Slide 13:WSDL
Web Services Description Language
A kind of IDL (Interface Definition Language)?
An XML format to describe a Web service’s capabilities
Describes a service as a set of endpoints operating on messages
Slide 14:XML/Java
XML Parsers
Parsers help with validation, well-formedness checking, building a DOM, notifying the application of errors
Two API Standards: DOM and SAX
Xerces2
Data Binding APIs
Slide 15:Axis
Apache Extensible Interaction System
A SOAP Engine
A JAX-RPC run-time system
Provides emitter tooling that generates Java classes from WSDL
Used to be IBM SOAP4J
Slide 16:JAX-RPC
A Sun specification, was JSR 101
Specifies Java APIs for XML-based Remote Procedure Call
Remote Procedure Call
A mechanism for clients to call procedures from a service over a network
Typically used in distributed client/server model
Other example of RPC mechanism: RMI
Slide 17:A Very Simple Example
The Library Web service
Exposes one method: findTitleByAuthor
Uses Axis “instant deployment” with a JWS file
Generates a Web service client from the Library service WSDL
Slide 18:Service Implementation - Library.jws
import java.util.*;
public class Library {
private LibraryDatastore dataStore;
public Library() {
DatastoreFactory.getDS();
dataStore = DatastoreFactory.getLibraryDataStore();
}
public Collection findTitleByAuthor(String author) {
...
}
}
Slide 19:
Slide 20:WSDL2Java Generates
Slide 21:Service Client – LibraryClient.java import java.util.*;
import org.library.*;
public class LibraryClient {
public static void main(String[] args) {
try {
LibraryService libraryLocator = new LibraryServiceLocator();
Library library = libraryLocator.getLibrary();
Object[] titles =
library.findTitleByAuthor(args[0]);
for (Object title : titles) {
System.out.println(title);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} The stub, in this case the implementation of the “Library” interface works with the JAX-RPC run-time on the client to generate the SOAP request, and handle serialization/de-serialization from Java to XML and XML to Java. This allows the client code to be independent of messaging and transport protocol. The stub also hides the endpoint URL, the parameter types and the client calls through it as it would with a local object. The stub, in this case the implementation of the “Library” interface works with the JAX-RPC run-time on the client to generate the SOAP request, and handle serialization/de-serialization from Java to XML and XML to Java. This allows the client code to be independent of messaging and transport protocol. The stub also hides the endpoint URL, the parameter types and the client calls through it as it would with a local object.
Slide 22:Suggested Approach
Environment setup
Service discovery
Your Mashup Concept
Design / Storyboard
Component Level Design
Implementation
Test
Deployment (Go Live)?
Slide 23:Web service Providers
Slide 24:Real Mashup Examples http://www.allapis.com/Yahoo_Flickr_Weather_Maps.aspx
Allows users to search US cities/locations - provides users with information on the city requested
Weather Forecasts
Wikipedia geo Articles
Flickr photos
APIs used
Flickr
GeoNames
Yahoo Geocoding
Yahoo Maps
Slide 25:Real Mashup Examples www.corozalmapia.com
The site is not complete, however the concept is interesting
This specific site is a map of Corozal Town Belize (Central America).
Each attraction on the map is clickable
Once clicked the user can see pictures and video of each attraction
APIs used
Google AdSense
Google Maps
YouTube
Slide 26:s
Slide 27:Skills Required Java Programming, nothing fancy
Basic web service concepts: SOAP, WSDL
Basic web-application concepts: URLs, HTTP, JavaScript, server-side scripting (JSP, PHP, other)?
Basic XML (syntax, parsing)?
AJAX (would be nice)?
CSS (optional)?
Slide 28:Gain Experience
J2EE
Web services
SOAP
Axis
JAX-RPC
XML
Web UI
AJAX
Slide 29:RUBY ON RAILSPROJECT
Slide 30:What is Ruby On Rails Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.
- http://www.rubyonrails.org
Slide 31:Why Ruby on Rails? RoR allows you to quickly build webapps.
RoR gets a lot of buzz.
RoR is fun.
Slide 32:Required Skills Ruby
Or another dynamic language like Python
HTML
JavaScript
CSS
DBs – MySQL is the easiest
Slide 33:Ruby On Rails Projects Choose your own adventure!
Slide 34:ECLIPSE PROJECT
Slide 37:The project goals were to support a wide variety of platforms, provide an language neutral base, and architect for integration not just on the glass, but deeper, with the resources that comprise the applications being developed. The project goals were to support a wide variety of platforms, provide an language neutral base, and architect for integration not just on the glass, but deeper, with the resources that comprise the applications being developed.
Slide 38:For general information about the eclipse community, including what eclipse based offerings are available, activities, courses, venues for more information, use this page.For general information about the eclipse community, including what eclipse based offerings are available, activities, courses, venues for more information, use this page.
Slide 39:With this extensibility architecture, one extends Eclipse by building plug-ins that are extensions to existing extension points. That plug-in provider can also add his/her own extension points for others to extend. This is what we do with our IBM commercial offerings, so that our tools better interoperate and our partners’ products can better interoperate with our commercial offerings.With this extensibility architecture, one extends Eclipse by building plug-ins that are extensions to existing extension points. That plug-in provider can also add his/her own extension points for others to extend. This is what we do with our IBM commercial offerings, so that our tools better interoperate and our partners’ products can better interoperate with our commercial offerings.
Slide 40:IDEs are simply specialized computer applications. Many of the things IDES need in a technology platform, general purpose computer applications need as well. In 3.0, the Eclipse team refactored Eclipse to separate Eclipse as a general purpose client platform for rich applications (i.e. not browser based) from IDE specific function. IDEs are simply specialized computer applications. Many of the things IDES need in a technology platform, general purpose computer applications need as well. In 3.0, the Eclipse team refactored Eclipse to separate Eclipse as a general purpose client platform for rich applications (i.e. not browser based) from IDE specific function.
Slide 41:SampleEclipse Plug-In Ideas Eclipse SWT embedded Firefox browser widget (highly requested by the community)
Eclipse Mono Development Environment
Visualization of Eclipse's Plug-ins so it's easier to see dependencies and other things
Distributed Debugging
Shared Editing
VOIP in Eclipse using ECF (http://www.eclipse.org/ecf ) and Google's Jingle API
Mylar support for C/C++ editing with CDT
Many, many more
Slide 42:Choose your own adventure Any of your own ideas. We are here to help!
Slide 44:USEFUL REFERENCES
Slide 46:In eclipse, everything is a plug-in. One of the reasons, early on, the Eclipse team decided to include in Eclipse plug-ins for Java and plug-in development was to test and drive development of the platform. They needed these tools, these plug-ins, so they could use Eclipse to build Eclipse. In Canada, they say, “Eat your own dogfood.” The end result is a better quality offering.
A plug-in is the smallest unit of Eclipse Platform function that can be developed and delivered separately. Usually a small tool is written as a single plug-in, whereas a complex tool has its functionality split across several plug-ins. Except for a small kernel known as the Platform Runtime, all of the Eclipse Platform's functionality is located in plug-ins.
Plug-ins are coded in Java. A typical plug-in consists of Java code in a JAR library, some read-only files, and other resources such as images, web templates, message catalogs, native code libraries, etc. Some plug-ins do not contain code at all. One such example is a plug-in that contributes online help in the form of HTML pages. A single plug-in's code libraries and read-only content are located together in a directory in the file system, or at a base URL on a server. There is also a mechanism that permits a plug-in to be synthesized from several separate fragments, each in their own directory or URL. This is the mechanism used to deliver separate language packs for an internationalized plug-in.
Each plug-in has a manifest file declaring its interconnections to other plug-ins. The interconnection model is simple: a plug-in declares any number of named extension points, and any number of extensions to one or more extension points in other plug-ins.
A plug-in’s extension points can be extended by other plug-ins. For example, the workbench plug-in declares an extension point for user preferences. Any plug-in can contribute its own user preferences by defining extensions to this extension point.
An extension point may have a corresponding API interface. Other plug-ins contribute implementations of this interface via extensions to this extension point. Any plug-in is free to define new extension points and to provide new API for other plug-ins to
In eclipse, everything is a plug-in. One of the reasons, early on, the Eclipse team decided to include in Eclipse plug-ins for Java and plug-in development was to test and drive development of the platform. They needed these tools, these plug-ins, so they could use Eclipse to build Eclipse. In Canada, they say, “Eat your own dogfood.” The end result is a better quality offering.
A plug-in is the smallest unit of Eclipse Platform function that can be developed and delivered separately. Usually a small tool is written as a single plug-in, whereas a complex tool has its functionality split across several plug-ins. Except for a small kernel known as the Platform Runtime, all of the Eclipse Platform's functionality is located in plug-ins.
Plug-ins are coded in Java. A typical plug-in consists of Java code in a JAR library, some read-only files, and other resources such as images, web templates, message catalogs, native code libraries, etc. Some plug-ins do not contain code at all. One such example is a plug-in that contributes online help in the form of HTML pages. A single plug-in's code libraries and read-only content are located together in a directory in the file system, or at a base URL on a server. There is also a mechanism that permits a plug-in to be synthesized from several separate fragments, each in their own directory or URL. This is the mechanism used to deliver separate language packs for an internationalized plug-in.
Each plug-in has a manifest file declaring its interconnections to other plug-ins. The interconnection model is simple: a plug-in declares any number of named extension points, and any number of extensions to one or more extension points in other plug-ins.
A plug-in’s extension points can be extended by other plug-ins. For example, the workbench plug-in declares an extension point for user preferences. Any plug-in can contribute its own user preferences by defining extensions to this extension point.
An extension point may have a corresponding API interface. Other plug-ins contribute implementations of this interface via extensions to this extension point. Any plug-in is free to define new extension points and to provide new API for other plug-ins to
Slide 47:IDEs are simply specialized computer applications. Many of the things IDES need in a technology platform, general purpose computer applications need as well. In 3.0, the Eclipse team refactored Eclipse to separate Eclipse as a general purpose client platform for rich applications (i.e. not browser based) from IDE specific function. IDEs are simply specialized computer applications. Many of the things IDES need in a technology platform, general purpose computer applications need as well. In 3.0, the Eclipse team refactored Eclipse to separate Eclipse as a general purpose client platform for rich applications (i.e. not browser based) from IDE specific function.
Slide 48:MASHUP: Links and References (1)? Documentation / Specifications
developerWorks – SOA and Web services
http://www-128.ibm.com/developerworks/webservices/
SOAP
http://www.w3.org/TR/soap/
WSDL
http://www.w3.org/TR/wsdl
JAX-RPC
http://java.sun.com/webservices/jaxrpc/
SOAP Engine
Axis
http://ws.apache.org/axis/
Eclipse
http://www.eclipse.org/
Slide 49:MASHUP: Links and References (2)? Web service Providers (WSDL)?
Google Code
http://code.google.com/
Yahoo Developer Network
http://developer.yahoo.com/
Amazon ECS
http://www.amazon.com/exec/obidos/tg/browse/-/12738641
Flickr Web services
http://www.flickr.com/services/api/
YouTube API
http://www.youtube.com/dev
Microsoft Web services
http://www.momentumsi.com/MSWSDLHunt.html