350 likes | 586 Views
IBM Open Source Software Competition Brendan Murray, Software Architect, IBM Dublin Software Lab. Agenda. IBM and Open Source Java Tooling Web Tooling Rich Client Platform Web Services LAMP Summary Questions. Agenda. IBM and Open Source Java Tooling Web Tooling Rich Client Platform
E N D
IBM Open Source Software CompetitionBrendan Murray, Software Architect, IBM Dublin Software Lab
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
What is Open Source • Open Source Initiative (OSI) maintains a formal definition of OSS recognized by the OSS community. OSI has a web site that: (http://www.opensource.org). • OSD's current criteria (paraphrased): • Free Redistribution • Source Code • Derivative Works • Integrity of The Author's Source Code • No Discrimination • No Discrimination Against Fields of Endeavor • Distribution of License • License Must Not Be Specific to a Product • License Must Not Restrict Other Software • License Must Be Technology Neutral
Open Source Development Methodology • Virtual community of programmers, leveraging the Internet for communication, who create / debug / maintain / evolve a source code base • OSS projects often self-organizing: • Someone determines a need and communicates that need to others on the Internet • If the project generates interest, one or more programmers begin writing code • Someone takes a leadership role and begins to map out a project road map • Interested programmers join the project to contribute new code or fine-tune existing code • A network of participants, linked via the Internet, forms • Tiered participation levels emerge
IBM and Open Source • IBM has contributed many projects to the open source community • Eclipse Project: http://www.eclipse.org • Project dedicated to providing a robust, full-featured, commercial-quality, industry platform for the development of highly integrated tools • Apache Derby: http://db.apache.org/derby • Database management system developed by the Apache Software Foundation • Linux Technology Center (LTC): http://www.ibm.com/linux • Work towards Enterprise enablement of the Linux OS through the development and contribution of technology, utilities, tools and code • Other contributions • IBM Pledges 500 U.S. Patents To Open Source In Support Of Innovation And Open Standards
IBM and Open Source • IBM uses open source in its products • Building products on top of open source projects e.g. Rational Application Developer • Apache webserver to support and bundle with its WebSphere suite • IBM promotes open source development • Externally • AlphaWorks: http://alphaworks.ibm.com • DeveloperWorks: http://www-130.ibm.com/developerworks/opensource • Internally • Using open source intranet site to promote software componentization and reuse
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
Java Tooling • From www.eclipse.org . . . • “Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software.” • Put more simply . . . • Eclipse is an Open Source Java IDE • And so much more . . . . • Muliple languages (Java, C++, COBOL) • Debugger • Unit Testing • Modelling with UML • Visual Editing of Java UI • Java Web Tools (JSP, EJB, XML . . . .) • All through an extensible plugin-based IDE
Eclipse Project Aims • Provide open platform for application development tools • Run on a wide range of operating systems • Windows, Linux, AIX, MacOS X, etc. • GUI and non-GUI components • Language-neutral • Able to handle different content types • Java, HTML, C/C++, JSP, EJB, XML, GIF, etc. • Facilitate seamless tool integration • At UI and lower level • Add new tools easily • Attract community of tool developers • Including independent software vendors (ISVs) • Capitalize on popularity of Java for writing tools
SWT and GEF • Consensus: hard to produce professional looking shrink-wrapped products using Swing and AWT • SWT provides • Tight integration with native window system • Authentic native look and feel • Good performance • Good portability • Good base for robust GUIs • GEF provides • Multi-platform graphics using Draw2D • MVC infrastructure for graphically editing models
Java Perspective • Java-centric view of files in Java projects • Java elements meaningful for Java programmers Javaproject package class field method Javaeditor
List of plausible methods Doc for method Java Editor Lots of useful features such as . . . . • Method completion in Java editor
Why develop plugins that extend Eclipse ? • Infrastructure • You get a workbench created for free – just add what you need • No need to create an environment from scratch • Build on EMF for model support • Build on GEF for graphics support • Interoperability • Use any of the existing tools in your ‘end-product’ • Java Editor, outliner . . . • Explorer, Text editor, search . . . etc. • Examples • Java (or any language) code analysis/transformation plugins • Any UML related tooling (using EMF) • Any Java graphical projects (using GEF)
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
Eclipse Web Tools Platform (WTP) • Extends Eclipse with tools for developing J2EE Web applications. • Includes the following editors • HTML, JSP • Javascript, • CSS, • SQL, • XML, DTD, XSD • WSDL • J2EE project natures, builders, models and navigator • Web service wizard and explorer • Database access and query tools and models
WTP subprojects - WST • Web Standard Tools subproject • Server tools, Internet preferences, TCP/IP monitor • HTML (fragments), XML, CSS, JavaScript source editors • XML/DTD/XSD utilities • WSDL/XSD graphical editors, Web service UDDI/WSDL Explorer • SQL Query graphical editor • Associated natures, builders, validators and EMF models
WTP subprojects - JST • J2EE Standard Tools • Support of J2EE1.4 • JSP, Servlets, EJBs, JCA, JMS, JNDI, JDBC, Java Web Services, JAX* • Support for common JCP specifications • JSF,JDO • Tools for J2EE Modules • WAR, EJB-JAR, RAR, EAR
WTP subprojects - JSF • JavaServer Faces tools • Add JSF capabilities to existing web project • JSF JSP page editor • Application configuration editor (faces-config.xml) • Navigation Rules Diagram
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
Eclipse RCP • What is RCP? • Really Cool Platform ? • Well, yes, but… • Rich Client Platform • First became available with Eclipse 3.0 • A new way to build Java applications that can compete with native applications on any platform. • A subset of the Eclipse platform • i.e. the minimal set of plug-ins needed to build a rich client application (as opposed to thin client) • Eclipse without its “IDE-ness”
Eclipse RCP • Full Eclipse Platform v Eclipse RCP
Eclipse RCP • RCP applications use the windowing and GUI features of the operation system they run on: • Native widgets, menu and tool bars • Drag & Drop • Integrates with platform component model • This means… • Richer, more responsive user experience • Better integration with existing Desktop tools • Lower server loads • Offline execution • Local data access
Eclipse RCP • Can you tell the difference?
Eclipse RCP • How to get started • Eclipse \ Help \ Help Content \ Platform Plug-in Dev Guide • Building a Rich Client Platform application • http://www.eclipse.org/rcp • Articles, tutorials, presentations on RCP • http://www.eclipsezone.com/eclipse/forums/f18121.html • Eclipse RCP Discussion Forum • http://www.eclipse.org/community/rcp.html • Sample real world RCP applications
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
What are Web Services • A Web service is a self-contained software component with a well-defined interface that describes a set of operations that are accessible over the Internet. • Key technologies • SOAP : Lightweight XML based messaging format • WSDL : Defines the web service interface
What is the Web Services Architecture • The Web Services Architecture is based on the interactions among three roles: service provider, service registry, and service requestor. • The interactions involve the publish, find, and bind operations.
What are the characteristics of Web services? • Self-contained • Self-describing • Can be published, located, and invoked across the Internet • Programming language-, and platform-independent and interoperable • Inherently open and standards-based • Dynamic • Composable • Built on proven, mature technology • Loosely coupled • Provide programmatic access • Provide the ability to wrap existing applications
Why develop using Web Services ? In a Services Oriented Architecture, each component uses the same way of talking to other components, based on platform-neutral standards. Anything that understands Web services can talk to other Web services, regardless of underlying implementation. This approach greatly simplifies and strengthens integration efforts Traditional integration requires technology-aware bridges between components. It is complex and expensive to implement and to maintain. Program bridges are typically based on APIs and File Formats, but these change, leading to instability in the integrated system.
How to develop a Web Service • Many Tools exist that make developing a Web Service almost as easy as creating a Java Class • IBM : Web Services general information • http://www-128.ibm.com/developerworks/webservices/ • IBM : Web Services Navigator (plugin for eclipse) • http://www.alphaworks.ibm.com/tech/wsnavigator • Eclipse : Eclipse Web Tools project – under development • http://www.eclipse.org/webtools/index.html • Axis : From apache.org – provides a SOAP interface layer • http://ws.apache.org/axis/ • Sun : Java Web Services Development Pack • http://java.sun.com/webservices/jwsdp/index.jsp • Many Eclipse plugins for helping with Web Services . . . . .
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions
LAMP • Linux, Apache, MySQL, PHP (or Perl or Python) • Open Source, non-proprietary way to create a server-based application • Each program can be replaced with an alternative that best suits the needs of the application • Each program can be upgraded independently • Each program in LAMP is free (both as in free speech and as in free beer)
Agenda • IBM and Open Source • Java Tooling • Web Tooling • Rich Client Platform • Web Services • LAMP • Summary • Questions