National Computational Science Alliance
NCSA Alliance Object Technologies Strategy
Geoffrey Fox, (
gcf@npac.syr.edu)Briand Sanderson (
briand@ncsa.uiuc.edu)Charlie Catlett (
catlett@ncsa.uiuc.edu)
The National Computational Science Alliance
The National Center for Supercomputing Applications (NCSA), established in 1985, has recently been awarded a new 5 year cooperative agreement to establish the National Computational Science Alliance. The NCSA Alliance includes over 50 academic, industrial, and Federal laboratory partners who are working with NCSA to prototype a national computational environment for the 21st Century. A core component of the NCSA Alliance mission is to pioneer capabilities to meet the needs of what today is a set of applications requiring high end resources including fast processors operating in parallel, large memory and disk, and high network interconnect performance as well as scalable distributed systems. However, within 2 to 5 years these same requirements will characterize mainstream applications in scientific and commercial sectors.
The NCSA Alliance is also heavily involved with initiatives beyond the National Science Foundation's PACI program. Many members of the Alliance (NCSA itself, NPAC/Syracuse, CRPC/Rice, etc.) are also leading the Department of Defense Programming Environments and Training (PET) program. Through NCSA's industrial program, the Alliance also provides technical guidance in object technologies to over a dozen major corporations in market sectors ranging from engineering (e.g. Motorola, Caterpillar, Eli Lilly) to service (e.g. The SABRE Group, Sears, Allstate, JP Morgan). Thus the object strategies developed and/or adopted by the NCSA Alliance will have broad national impact, and it is essential that these strategies incorporate "best of breed" from the distributed object technologies community.
The NCSA Alliance consists of several sets of teams, including both Application Technologies (Computational Biology, Nanomaterials, Environmental Hydrology, Chemical Engineering, Scientific Instruments, and Cosmology) and Enabling Technologies (parallel/scalable computing, distributed computing, data/collaborative computing) teams. Application Technologies teams are working with individuals and groups within Enabling Technologies teams to drive the development of computational infrastructure. There are many (dozens) individual projects involving the development of capabilities, and a challenge to the Alliance (and the community as a whole) is to maximize software reuse and interoperability through standards and frameworks.
Vision
Distributed Object Technology (DOT) is likely to underpin all major NCSA Alliance activities. DOT is still immature and evolving but the NCSA Alliance is committed to providing its partners and end-users with the best possible DOT capabilities and advice. Further, the NCSA Alliance 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. The NCSA Alliance has both the application and technology expertise to benefit the DOT community, and as importantly the Alliance represents a large-scale, programmatic collaboration between teams within the application (user) and technology communities.
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:
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 future of object technology is closely linked to extensive use of Java as seen by Microsoft's extensive use of this in COM objects. Here the Alliance's HPJava actively aimed at understanding the use of Java in large high performance applications is very important. We are closely working with Sun in this activity and leading a community forum to refine as necessary the Java language and associated frameworks.
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:
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 and to promote and support the reuse and interoperation of Alliance DOT technologies, the Alliance is:
Appendix: 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 -
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:
Habanero:
http://www.ncsa.uiuc.edu/SDG/Software/Habanero/HPJava:
http://www.npac.syr.edu/projects/javaforcseAdvanced Distributed Learning Network:
http://www.adlnet.orgRole of CORBA in HPCC
http://www.npac.syr.edu/users/gcf/HPcc/HPcc.htmlHDF:
http://hdf.ncsa.uiuc.edu/Tango:
http://www.npac.syr.edu/projects/tangoGlobus:
http://www.globus.orgDCOM/COM:
http://www.microsoft.com/dcomActiveX:
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.htmlJavaBeans:
http://splash.javasoft.com/beans/FAQ.html