National Computational Science Alliance Object Technologies Strategy Draft of November 11, 1997 by Ed Grossman, Larry Jackson, and Briand Sanderson For Internal Review Only Some Suggested Modifications 17 November 1997 by G Fox Alliance Here define what the Alliance is including the teams, industry and academic partners and relationship to PET -- as this relevant for Forces Modeling (FMS/IMT) and their expect use of HLA object architecture. This would be similar to Sun Proposal Charlie showed me. Vision Distributed Object Technology (DOT) is likely to underpin all major future Alliance activities. DOT is still immature and evolving but NCSA is committed to providing its partners with the best possible DOT capabilities and advice. Further it intends to become institutionally an internationally recognized member of the DOT community. NCSA brings large-scale applications of DOT in both distributed computing and information areas. These include computationally intensive and data-intensive simulations as well as the Education and Training use of DOT. These NCSA activities bring unique insights to the DOT community coming from the Alliance focus on high performance and geographically distributed heterogeneous applications, which integrate information and computing. NCSA has both the application and technology expertise to benefit the DOT community. Some Alliance Project Examples Object technologies can be suitably employed in a very large number of highly varying ways. Alliance projects utilizing, or related to object technologies include: ? NCSA Symbio? -- a system made up of DCOM objects for developing and executing parallel distributed applications over a cluster of NT Workstations, ? Habanero? -- a collaboration framework that accomplishes all-platform application sharing by interchanging information encapsulated in Java objects. This is being applied to several large scale computational science applications. ? HDF (Hierarchical Data Format) -- a set of high-speed data storage/access libraries that could, for example, store serialized viewer objects along with data to be viewed. ? Tango - a multi-language collaborative system that is currently especially aimed at education ? HPJava - a set of activities exploring the use of Java in large scale numerically and data intensive applications ? Through the Alliance involvement with DoD HPCC modernization program, we are working with FMS and IMT communities on issues relating to the new HLA distributed simulation architecture and its linkage with both web and HPCC technologies. ? The Alliance work on collaborative systems for synchronous and asynchronous learning is being coordinated with the DoD and OSTP Advanced Distributed Learning (ADL) initiative centered on distributed object technology for education and training. Why are Distributed Objects Important to the Alliance? Although software and information module development projects within the Alliance will span a very wide range of domains, a systematic policy of encapsulation of component parts to the greatest extent practical will, over time, result in a considerable inventory of rapidly reusable components. With either the Java Beans or ActiveX packaging, objects (code fragments) developed for one application may be reused within other applications, even if the purposes of these applications is dissimilar. From the JavaBeans FAQ, Developers are turning to creating components rather than monolithic applications to free themselves from slow, expensive application development, and to build up a portable, reusable code base. This enables developers to quickly attack new market opportunities, new joint development opportunities, and new ways to sell smaller packages of software. Alliance Strategy The Alliance has a multi-faceted DOT strategy, which includes key technology (e.g. Symbio, Habanero, Tango) activities and a set of large scale testbeds where DOT from both the Alliance and outside will be deployed and tested. This includes use of DOT in its 6 application teams, its Industrial partners and in the EOT (Education Outreach and Training) activity. Given the rapid evolution of object technology, we intend that the testbed work have a relatively short rapid prototyping flavor aiming at significant results in a 6 month time scale. We also intend to develop tutorials on DOT, which will be offered as part of the Alliance training and outreach program to people inside and outside Alliance. We intend that these activities be conducted in context of the best practice and have sufficient value and quality to position Alliance as an internationally significant participant in the DOT field. The Alliance will encourage projects to adopt object oriented systems where applicable, and to exchange information learned from such adoption between other Alliance projects. Making cooperation arrangements with the original developer groups allows reuse developers to leverage off of work already done. Well-packaged software availability should be the norm. Additionally, support of person-to-person information transfer in the form of joint kickoff meetings, design overviews, and periodically "comparing notes" is highly desirable. Making the best possible use of reuse is essential to support infrastructure creation by a series of groups that are each individually resource-limited. The Alliance must answer for its members such questions as: ? How do I write my software (components, applications, and systems) such that it interoperates with other Alliance software? ? How do I build my new training modules so that they are compatible with approaches still being debated within projects such as the ADL initiative. ? How do I re-use software and information objects from other Alliance projects? Note that Alliance software includes components that are purchased, developed by Alliance members, and developed by other research communities. The Alliance membership is widely geographically distributed and the majority of software tools created by/for the Alliance could take advantage of distributed object architectures. For example, systems that communicate data files, streams, and documents across the network would be well suited to use distributed objects. Those systems can take advantage of the Distributed Object Frameworks discussed herein. Systems, which are not designed to be used across a network, can still take advantage of component reuse and the object oriented methodologies discussed here. Additionally, Alliance projects can be leveraged en toto. By familiarity with extant and in-process work, Alliance members will be able to avoid redundant software and information module developments within their groups. As many of the Alliance projects will be designed to create "infrastructure" components, these projects are assumed to be creating materials of a general nature, potentially of interest to others. To better disseminate these materials, the Alliance intranet is being assembled that will describe the work of the various groups, first to one another, but also to the rest of the country. Background on Object Terminology Note that the areas termed "object technologies" or "object oriented systems" are quite broadly and loosely defined. Discussions often confuse languages, component models, and systems. The term "object oriented" is also applied to many areas of technology including databases, middleware, and applications. Languages - An object-oriented language explicitly supports the two primary methodologies used in object-oriented programming: encapsulation (allowing access to an object's data only through its interface) and code reuse (usually through inheritance). C++ and Java are object-oriented languages in wide use throughout the Alliance. Some other languages in common use which are not object-oriented (e.g., Visual Basic, Fortran) can be used to develop component objects that operate within object-oriented systems. Components and Component Frameworks- A component is an object with a public interface that is intended for use within an object-oriented framework. These frameworks define interfaces for objects to communicate with each other and also provide support for object reuse. Components are intended to facilitate development and reuse on scales ranging from an individual developer to large teams to organizations as big or bigger than the Alliance. There are two competing component technologies that are de facto industry standards: JavaBeans and ActiveX. Distributed Object Frameworks - A distributed object framework allows objects not in the same address space to communicate with and invoke methods on each other. CORBA (Common Object Request Broker Architecture) was the first major industry standard in this area, and provides language and platform independent services for locating and activating objects. DCOM (Distributed Component Object Model) is Microsoft's distributed object framework and has broad market support. Several vendors have provided COM implementations on non-Microsoft platforms (see www.activex.org). DCOM is also language independent. The Java Remote Method Invocation (RMI) interface supports distributed objects in Java. CORBA - CORBA is a group of specifications published by the Object Management Group, a software industry consortium. There are a number of CORBA compliant object frameworks (known as Object Request Brokers) including Visigenic's Visbroker, Iona's Orbix, and HP Distributed Smalltalk. The 2.0 version of CORBA provides a vendor-independent transport layer, so specification of an Alliance standard vendor for CORBA is not necessary. DCOM - Microsoft's DCOM is based on the Open Software Foundation's DCE-RPC specification. It enables software components to communicate directly over a network in a reliable, secure, and efficient manner. COM is a general architecture for component software and defines a binary standard for component interoperability. Java RMI - Java RMI is a set of APIs (Applications Programming Interfaces) and a model for remote objects that allows developers to build distributed applications very easily in Java using the same programming model as for local Java applications. In the near future, RMI will support IIOP, CORBA's transport protocol, allowing Java objects built with RMI to communicate with CORBA objects. ActiveX - ActiveX objects are among the many types of components that use COM technologies to provide interoperability with other types of COM components and services. ActiveX provides a number of enhancements specifically designed to facilitate distribution of components over high-latency networks and to provide integration of controls into Web browsers. JavaBeans -JavaBeans is a portable, platform-independent component model written in Java. It enables developers to write reusable components once and run them anywhere. JavaBeans also allows developers to build components that run in ActiveX container applications. Enterprise JavaBeans is a proposed new API specification for building scalable, distributed, component-based, multi-tier applications. It will thus support distributing JavaBeans over the Internet. REFERENCES Symbio: http://symbio.ncsa.uiuc.edu/ Habanero: http://www.ncsa.uiuc.edu/SDG/Software/Habanero/ HPJava: http://www.npac.syr.edu/projects/javaforcse HDF: http://hdf.ncsa.uiuc.edu/ Tango: http://www.npac.syr.edu/projects/tango DCOM/COM: http://www.microsoft.com/dcom ActiveX: http://www.activex.org/ Object Management Group: http://www.omg.org/ Iona Technologies, Inc.: http://www.iona.com/ Object-Oriented Links: http://www.objenv.com/cetus/software.html JavaBeans: http://splash.javasoft.com/beans/FAQ.html