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.
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.
Why are Distributed Objects Important to the Alliance?
From the JavaBeans FAQ,
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:
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
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.
Advanced Distributed Learning Network: http://www.adlnet.org
Role of CORBA in HPCC http://www.npac.syr.edu/users/gcf/HPcc/HPcc.html
Object Management Group: http://www.omg.org/
Iona Technologies, Inc.: http://www.iona.com/
Object-Oriented Links: http://www.objenv.com/cetus/software.html