| <html> | |
| <head> | |
| <title>The Eclipse Strategy</title> | |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | |
| <link rel="stylesheet" href="../../default_style.css"> | |
| </head> | |
| <body bgcolor="#FFFFFF" text="#000000"> | |
| | |
| <div align="right"> <font face="Times New Roman, Times, serif" size="2">Copyright | |
| © 2001 Object Technology International, Inc.</font> </div> | |
| <table BORDER=0 CELLSPACING=0 CELLPADDING=2 WIDTH="100%" > | |
| <tr> | |
| <td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font face="Arial,Helvetica"><font color="#FFFFFF"> Eclipse | |
| Corner Article</font></font></b></td> | |
| </tr> | |
| </table> | |
| <h1> <img src="../../images/Idea.jpg" height=86 width=120 align=CENTER></h1> | |
| <center> | |
| <h1> What's the Big Deal about<br> | |
| Tool Integration?</h1> | |
| </center> | |
| <center> | |
| <h3> What does tool integration mean to ISVs, customers, and the <br> | |
| Eclipse Community?</h3> | |
| </center> | |
| <blockquote><b>Summary</b> <br> | |
| The Eclipse Platform provides the "integration-ware" to enable the | |
| next generation of integrated application development tools. This article is | |
| an overview that takes you through the why, how and what of the design, development, | |
| and deployment of extensible tool components developed using this technology. | |
| <br> | |
| </blockquote> | |
| <b>By: Tony Cianchetta</b> | |
| <p> | |
| <hr width="100%"> | |
| <h3>Why do we need tool integration?<br> | |
| </h3> | |
| <p>The last five years have shown us extraordinary change in the field of application | |
| development. There are many implications of this change but the net result has | |
| been intense pressure on everything associated with creating runtime solutions | |
| in Web time. Figure 1 provides a view of some of those pressures and, as most | |
| things in the business world, it begins and ends with the Customer.</p> | |
| <p>Customers have high expectations set by the functionality provided by modern | |
| development tools. They know what integrated tools look like from their use | |
| of such integrated suites as Lotus Smart Suites and Microsoft Office. Customers | |
| expect to see the same level of integration in their software development tools.</p> | |
| <p align="center"> <img src="images/pressures.gif" width="555" height="385"><br> | |
| Figure 1. Pressures on contemporary software development tools.</p> | |
| <p>The evolution of e-business from concept to reality has dramatically changed | |
| the face of business integration. Surviving on the World Wide Web means application | |
| interoperability, and application interoperability means an integrated set of | |
| development tools that understand and can maintain the complex relationships | |
| between the integrated components that make up a complete application.</p> | |
| <p>Business Models are changing rapidly due to intense and comprehensive business | |
| process reengineering resulting from a desire to leverage the Web. These new | |
| business models are often complex and extremely difficult to maintain. In addition, | |
| application development must be able to keep pace with changing business needs | |
| by supporting integrated tools that allow rapid and iterative development.</p> | |
| <p>Prescriptive methodologies are often necessary to manage the complexity of | |
| application development, and to make development a pragmatic, controllable, | |
| and repeatable process. To be effective, the methodology must be appropriate | |
| to the customer's domain and development style. Users should be able to select | |
| a methodology that can be tightly integrated with the development tools use | |
| to create the artifacts of their applications as specified by the methodology.</p> | |
| <p>Current application development tool suites and IDEs have received mixed reviews | |
| from Customers. Tools like IBM VisualAge, Microsoft VisualStudio, SUN Forte | |
| for Java, etc., provide rich functionality to support customer application development. | |
| But these tool suites have gaps and overlaps in functionality, and can be complex | |
| to adopt. Customers' need application development tools that are truly integrated | |
| with one another in order to hide this complexity. </p> | |
| <p align="center"><img src="images/problemSpace.gif" width="580" height="329"> | |
| <br> | |
| Figure 2. What is important to software development customers?</p> | |
| <p>The software development landscape is simple: software companies are in business | |
| to generate revenue by solving some business problem with one or more runtime | |
| application. They need to focus their limited resources on their core competencies. | |
| They have some level of domain expertise and have chosen some runtime topology, | |
| usually dictated by their customers. If they have been around for any significant | |
| duration, they probably also have some set of legacy artifacts that they need | |
| to reuse. </p> | |
| <p>As a result, customers are primarily interested in two ends of the software | |
| development process: their core business domain and the applications that automate | |
| their business processes, and the runtime environment that executes these applications | |
| to help run their business. In between are a number of items that are necessary | |
| to transform the customer's concept of their business into applications running | |
| on some runtime platform. Typically application developers use some development | |
| process to manage this transformation. Regardless of what the development process | |
| might be, it will typically consist of roles and responsibilities people play | |
| to achieve the desired result. Developers playing these roles will use tools | |
| to help them fulfill their responsibilities, and create the artifacts of the | |
| application that will be hosted on the runtime platform.</p> | |
| <p>These "customer problem spaces" tend to appear in recurring patterns | |
| representing a state of the practice for software development, and effective | |
| runtime architectures. Focusing on these recurring patterns introduces an opportunity | |
| to better understand the full life-cycle needs of application developers, and | |
| to determine what tools they need to create and maintain their applications. | |
| The relationships between the artifacts of these applications and runtime architectures | |
| also provide an indication of how the tools should be integrated.</p> | |
| <p>By leveraging these patterns, it is possible to create full life-cycle, end-to-end, | |
| integrated tools that allow application developers to focus on their business | |
| domain instead of investing in the collection and manual integration of tools | |
| supporting their development process.</p> | |
| <p>For example, consider Figure 3, which provides an overview of the typical technologies | |
| involved in a Web based transaction.</p> | |
| <p align="center"> <img src="images/webTransaction.gif" width="496" height="325"><br> | |
| Figure 3. Web development technology choices.</p> | |
| <p>A typical web-based transaction generally originates from a client, travels | |
| through some communication channel to a server, where it is processed and perhaps | |
| queued to some backend system for data access or integration with existing applications. | |
| The result then travels back through the same path to the originating client. | |
| </p> | |
| <p>For most early adopters of web technology the entry point was based on a Business-to-Customer | |
| (B2C) focus. Initially, getting a home page developed to tell customers who | |
| you were and what you offered was perceived as the goal. Accomplishing this | |
| required a certain set of tools and skills and centered on HTML-based information | |
| presentation. </p> | |
| <p>A B2C transaction can be defined as a horizontal slice through the various | |
| technology choices shown in Figure 3 to satisfy such a request. These horizontal | |
| slices represent a typical pattern for Web applications using static HTML pages. | |
| As customer focus shifts from simple, static web page development and they begin | |
| to think in terms of surfacing business processes on the web, they migrate to | |
| a different, more complex usage scenario. They begin to appear in the Business-to-Business | |
| (B2B) space. As their application requirements evolve, the tooling required | |
| to support these new requirements must also evolve.</p> | |
| <p>This might mean a move from HTML-based information presentation to web applications | |
| using XML-based information interchange and Web services. B2B applications range | |
| in complexity from simple services to complex inter-enterprise business process | |
| integration. As natural as the progression from B2C to B2B may seem, the jump | |
| in technology and complexity is significant. Sometimes just that one new function | |
| point may push the application over the line to a new run time architecture | |
| requiring a whole new set of development tools. New tools need to be purchased | |
| or developed, and people retrained to use them. These new tools must be seamlessly | |
| integrated with existing tools so that customers leverage existing knowledge | |
| and development processes while exploiting the capabilities of more complex | |
| runtime topologies. </p> | |
| <p>To make things easier for customers to evolve as an e-Business, tool vendors | |
| must change the way they deploy their tools in the marketplace. Tool vendors | |
| have traditionally taken a product focus to providing individual tools. The | |
| result was that choices in tools revolved around programming language and operating | |
| system stacks. </p> | |
| <p align="center"> <img src="images/currentToolIntegration.gif" width="557" height="398"><br> | |
| Figure 4. Individual shrink-wrapped tools require on-site integration by the | |
| customer.</p> | |
| <p>This pretty much left integrating the various tools up to the customer using | |
| their own development resources or paying for external consultants to do the | |
| work for them. What is required is a tool strategy that is more solution-based, | |
| driven by customer usage scenarios. The patterns of customer problem spaces | |
| described above can be used to help define these usage scenarios, the runtime | |
| architectures that support them, and the tools required to build the applications | |
| on the runtimes. Taking a solution-based approach can address gaps and overlaps | |
| in tools supporting particular patterns, provide a common view of the application | |
| as a whole, and reduce cost in development. </p> | |
| <h3>So How can Eclipse help?</h3> | |
| <p>The Eclipse projects provide the necessary "integration-ware" enabling | |
| effective tool development and integration. This integration-ware consists of | |
| common services that are useful across all tools, and a common set of frameworks | |
| for building plug-in extensions. Using Eclipse it is no longer necessary to | |
| build the whole tool environment as a single, inflexible, highly coupled IDE | |
| where the tool components are often compromises compared to best-of-breed individual | |
| tools. Tool integration is based on open APIs and components that provide:</p> | |
| <p>A common destination to install and integrate tools <br> | |
| A central view across all resources and roles providing a base for consistent, | |
| effective, efficient, scalable, and end-to-end application development <br> | |
| An open, flexible, extensible, standards-based and portable framework for tool | |
| integration and interoperability <br> | |
| A view of the complete application across all components and the entire team | |
| <br> | |
| Standard look-and-feel across all plug-in tools <br> | |
| Portable, high-performance, platform native look-and-feel <br> | |
| </p> | |
| <p align="center"> <img src="images/workbenchIntegration.gif" width="546" height="463"><br> | |
| Figure 5. A common workbench with plug-in components.</p> | |
| <p>By providing a common set of services and frameworks, we hope to eliminate | |
| the need for on-site integration of widely diverse tools. This, in turn, will | |
| aid our software development customers in focusing their resources on what they | |
| do best: providing solutions to their customers. By leveraging existing standards | |
| and providing well-defined extension points (APIs), we intend to provide as | |
| much flexibility and extensibility as possible.</p> | |
| <h3>Exactly what is Eclipse and why would I want to use it?<br> | |
| </h3> | |
| <p>The Eclipse platform has been developed to provide the base for accessing common | |
| services and frameworks. Specialized tool functionality can be provided by separate | |
| plug-in components. Tool developers are currently creating plug-in components | |
| for new tools, and wrapping their existing tools so they can integrate with | |
| Eclipse.</p> | |
| <p></p> | |
| <p align="center"> <img src="../../images/workbenchOverview.gif"><br> | |
| Figure 6. Workbench + plug-ins = functionality and extensibility.</p> | |
| <p>The Eclipse platform and some set of plug-ins can be combined to provide a | |
| solution for customer scenarios described above. For a full description of the | |
| Eclipse projects, visit the <a href="../../index.html" target="_parent">Eclipse | |
| Corner</a>, the portal into the Eclipse community and the <a href="../../about_eclipse.html">Eclipse | |
| overview</a>.</p> | |
| <h3>Hasn't the Software Industry tried this before? What's different this time?</h3> | |
| <p>Yes, sadly, tool integration has been tried many times before. There are lots | |
| of tool integration frameworks and standards scattered in the dust. Things like | |
| IRDS, PCTE+, Atherton Backplane, ATIS, IBM Repository manager and ADCycle to | |
| name a few. Let's take a quick look at some of the things that made these integration | |
| platforms unsuccessful.</p> | |
| <p>First, many of them focused primarily on data integration by specifying a single | |
| common repository manager, and a single, common, extensible "Enterprise | |
| Schema". This was a great idea in that it provided a single method for | |
| accessing and interchanging data, but it didn't work. It is nearly impossible | |
| to do the commonality/variability analysis required to develop a common schema | |
| across a wide set of development tools, ISVs that produce them, problem domains, | |
| and time. This just creates too much coupling in tools that have to optimize | |
| their schema and stored data formats to support their own specific needs. Encapsulation | |
| is our friend, and some forms of data integration breaks encapsulation. There | |
| is also still no single repository manager that meets all the diverse needs | |
| of emerging application development tools.</p> | |
| <p>Second, data access and interchange protocols, and common schemas used to support | |
| data integration were often tied to a single product built, managed, controlled, | |
| and sold by a single vendor. This made it difficult for other vendors to manage | |
| their own repository access and schema needs. It put the control of one of the | |
| most critical components of a tool vendor's product in the hands of a potential | |
| competitor!</p> | |
| <p>Third, data integration by itself did not address other aspects of tool integration | |
| like tool behavior and user interfaces. Most of the difficult work involved | |
| in integrating tools is in the architectures, services, and frameworks that | |
| support extensibility and user interface development and integration. Using | |
| simple operating system processes does not lead to tool integration. It drops | |
| it in the customer's lap where the integration has to be done over and over | |
| again by hand.</p> | |
| <p>Finally we didn't have the computer languages, or programming, and component | |
| models required to support real framework development and reuse. </p> | |
| <p>Now there's a whole new crop of tool integration platforms like Microsoft Visual | |
| Studio.NET, SUN's Forte for Java, and Borland's Jbuilder. Having more than one | |
| tool integration platform might seem like a good thing, but it creates a portability | |
| problem just like operating systems do for applications. A tool builder needs | |
| to maximize his market while minimizing his development costs. Leveraging tool | |
| integration frameworks can decrease development costs through reuse of common | |
| services and frameworks, but those costs go right back up if the tool builder | |
| needs to integrate with more than one integration framework. We're right back | |
| into the OS porting problem, but with few standards to minimize the variability | |
| between integration platforms. Tool builders are likely to have to spend a lot | |
| of time coming up with wrapping technologies of their own to allow their tool | |
| to integrate with more than one integration platform. This is just what we used | |
| to do with GUI and database frameworks. All this wrapping increases the complexity | |
| of the tool, subjects it to the pressures of tracking releases of multiple integration | |
| platforms, and takes away from development time they could be spending on their | |
| problem domain.</p> | |
| <p>So how is Eclipse different? How will it help minimize some of these problems | |
| and allow us to achieve some of the promises given above? </p> | |
| <p>First, Eclipse is not just about data integration. Tools can easily share each | |
| other's data. All resources being edited are just files in the user's local | |
| file system. Eclipse can be integrated with a number of repository management | |
| systems to provide additional versioning and resource access and distribution | |
| services. The Workbench currently supports Rational ClearCase/LT, CVS, and WebDAV | |
| (RFC2416, versioning will come later). </p> | |
| <p>Eclipse also supports API and UI integration. That is, a tool may encapsulate | |
| its model data in a Java API, and provide that API as a plug-in for other tools | |
| to use. This way clients of the API don't have to reconstruct the meaning or | |
| behavior of some other tool's data, and that tool's data integrity is not compromised | |
| by exposing implementation detail. UI integration allows tools to contribute | |
| to the Workbench menus, toolbars, status bar, preference pages, properties view, | |
| task view, outline view, etc. This way an integrated tool looks like it was | |
| built right in. Users get a seamless experience as they move from one tool to | |
| another.</p> | |
| <p>Eclipse exploits Java as the development and integration language. This provides | |
| a nice high-level object-oriented language and programming model capable of | |
| supporting a tool integration platform. Not that Java is issue free. The Eclipse | |
| platform addresses many of Java's issues with things like Adapters, SWT, the | |
| UI frameworks, various contribution frameworks, and the plug-in class loader. | |
| Using the plug-in class loader allows each plug-in to have its own classpath, | |
| and allows the Workbench to have more than one version of the same plug-in running | |
| at the same time allowing flexibility in managing plug-in versions.</p> | |
| <p>Eclipse provides its services and frameworks within a set of basic design objectives:</p> | |
| <ul> | |
| <li><b>Extensibility</b> – There is no way to predict all the possible | |
| extension points in set of components. On the other hand, interoperability | |
| cannot be achieved if each individual development group defines their own | |
| private ways of extending and configuring their components.</li> | |
| <li><b>Controlled openness</b> – Its good to be open, but not so open that | |
| implementation detail in unnecessarily exposed, or the platform can be "configured | |
| into destruction". Wherever possible, extensibility is handled through | |
| declarative registration and configuration rather than through direct programmatic | |
| means with exposed APIs</li> | |
| <li><b>Integration</b> (a corollary of controlled openness) – Eclipse maintains | |
| a consistent level of product integration even across multiple extensions | |
| from many sources. This covers areas such as look-and-feel, overall tool task | |
| flow, user assistance (help), etc. </li> | |
| <li><b>Performance</b> – A typical user configuration might result in many | |
| different extensions to the platform.. The user should not pay a performance | |
| penalty for any one given installed extension until the use of the extension | |
| is explicitly triggered by a user action (e.g., Eclipse avoids long platform | |
| startup times due to in-line extension initialization). </li> | |
| <li><b>Simplicity</b> – Adding an extension should not require understanding | |
| of unnecessary elements of the overall platform, its APIs, and especially | |
| their implementations. </li> | |
| <li><b>Isolation</b> – Extensions will come from many different sources. | |
| These extensions should not introduce points requiring coordination among | |
| extension providers </li> | |
| </ul> | |
| <p>These design goals allow Eclipse to be a truly open, scalable, high performance, | |
| tool integration platform.</p> | |
| <p>Building complex, distributed Web applications consisting of many diverse and | |
| highly coupled resource types surly requires integrated tools that understand | |
| and manage the relationships between these resources. No one company, no matter | |
| how good they are, can keep up with the tooling demands of the Web. New technologies | |
| are constantly emerging requiring new tools that somehow have to interoperate | |
| with the old ones that are still supporting the customer's business. The solution | |
| requires a broad community of software developers contributing application development | |
| tools, and an open, ubiquitous tool integration platform that enables interoperability | |
| between them. To attract tool builders and promote adoption, the tool integration | |
| platform must be accessible and available under acceptable terms including licensing | |
| and access to source code. This will minimize interoperability and integration | |
| problems while allowing the community dependent on the integration platform | |
| to manage their own critical issues. Open Source provides an ideal mechanism | |
| for managing the integration platform as a shared asset. Through Open Source, | |
| problems resulting from loss of control and being at the mercy of a competitor | |
| are gone. If there's a problem with the integration platform, or some feature | |
| is missing, a tool builder can join the community and contribute the necessary | |
| fixes.</p> | |
| <h3>Conclusion</h3> | |
| <p>In summary, lets take a look at the Eclipse value proposition for the Eclipse | |
| community, tool builders, and end users of tools integrated with Eclipse.</p> | |
| <p>Benefits to the Eclipse Community:</p> | |
| <ol> | |
| <li>Growing community of tool vendors </li> | |
| <ul> | |
| <li>supporting and participating in solutions</li> | |
| <li>hardening the Eclipse platform with a broad, diverse community view</li> | |
| <li>promoting common application development models</li> | |
| <li>driving derivative sales</li> | |
| </ul> | |
| <li>The community contributes directly to the future of the platform | |
| <ul> | |
| <li>reducing the cost of this effort over time</li> | |
| <li>allows contribution by individuals with unique competencies</li> | |
| </ul> | |
| </li> | |
| <li>Provides a potentially pervasive tool integration platform | |
| <ul> | |
| <li>Open standards defining externals are a start</li> | |
| <li>Where integration standards don't exist Open Source is a good alternative</li> | |
| <li>Easy to quickly build well integrated components generating excitement | |
| and customer appeal, and its fun too!</li> | |
| </ul> | |
| </li> | |
| <li>Enables a new level of collaboration | |
| <ul> | |
| <li>Realizing interoperability and integration by their very nature require | |
| community participation</li> | |
| <li>Eclipse is the seed technology to get the community started</li> | |
| </ul> | |
| </li> | |
| </ol> | |
| <p>Benefits to Tool Developers:</p> | |
| <ol> | |
| <li>Access to New and Growing Markets | |
| <ul> | |
| <li>Build for emerging e-business run-time markets (including e-commerce, | |
| B2B and collaboration, pervasive, Web Services, etc.)</li> | |
| </ul> | |
| </li> | |
| <li>Reduced Time to Market </li> | |
| <ul> | |
| <li>Through exploitation of open standard API’s Through use of Eclipse | |
| platform technology</li> | |
| </ul> | |
| <li>Reduced Development and Marketing Costs | |
| <ul> | |
| <li>Through reuse of open, portable technology and an extended community | |
| of developers</li> | |
| <li>By allowing a focus on core competencies</li> | |
| <li>By reducing tool integration expense</li> | |
| <li>Through involvement in the Eclipse Corner</li> | |
| </ul> | |
| </li> | |
| <li>Address Buying Trend or Integrated Suites | |
| <ul> | |
| <li>Integrate suites of tools from other providers using the Eclipse platform</li> | |
| <li>Form partnerships around the Eclipse platform for full end-to-end solutions<br> | |
| </li> | |
| </ul> | |
| </li> | |
| </ol> | |
| <p>Benefits to End Users:</p> | |
| <ol> | |
| <li>Faster Deployment of Quality Applications | |
| <ul> | |
| <li>Support full development cycle with integrated offerings</li> | |
| <li>Smooth transition from tool to tool and role to role</li> | |
| <li>Provide better integration for many different kinds of application resources</li> | |
| </ul> | |
| </li> | |
| <li>Decreased Cost of Programmer Training/Skills</li> | |
| <ul> | |
| <li>Provide consistent views across all programming resources and roles</li> | |
| <li>Enable integration of existing skills and programs</li> | |
| </ul> | |
| <li>Best-of-Breed Tools</li> | |
| <ul> | |
| <li>Leverage partnerships with industry-leading developers</li> | |
| <li>Select and integrate tools when needed, not on fixed (long) development | |
| release cycles</li> | |
| </ul> | |
| <li>Easy Adaptation to Change</li> | |
| <ul> | |
| <li>Drive open standards-based technology</li> | |
| <li>Architect solutions for extensibility</li> | |
| </ul> | |
| <li>Eclipse is tied to the community, not a single vendor | |
| <ul> | |
| <li>allows choice without giving up interoperability and integration<br> | |
| </li> | |
| </ul> | |
| </li> | |
| </ol> | |
| <p>The overall goal of Eclipse is to make good on promises made a decade ago: | |
| integrated development, reduced time to market, and reuse of developed artifacts.</p> | |
| <h3></h3> | |
| <p><br> | |
| </p> | |
| </body> | |
| </html> |