SEMINAR ON

DISTRIBUTED OBJECTS

AND

C O R B A

BY

SREERAM P

CORBA : COMMON OBJECT REQUEST BROKER ARCHITECTURE

- THE KEY TO THE TWENTY FIRST CENTURY TECHNOLOGY








Sreeram's Corba Page >> My Seminar Report Table Of Contents


Table Of Contents



1. Acknowledgement

2. Abstract

3. Introduction

4. Chapter 1 : Introduction to Object Oriented Programming

5. Chapter 2 : Distributed Objects and Components

2.1 Distributed Objects

2.2 Components

2.3 Supercomponents

6. Chapter 3 : Common Object Request Broker Architecture

3.1 The Object Management Group

3.2 Introduction to CORBA

3.3 CORBA Architecture

3.4 CORBA Services

3.5 Interoperability

3.6 Performance Issues

3.7 Corba WWW Integration

3.8 Example

7. Chapter 4 : CORBA Implementations and Projects

4.1 Implementations

4.2 Projects

4.3 Tools

8. Chapter 5 : CORBA - Pros and Cons

5.1 Advantages

5.2 Disadvantages

9. Conclusion

10. Glossary

11. References





Sreeram's Corba Page >> My Seminar Report >> Acknowledgement






Sreeram's Corba Page >> My Seminar Report >> Abstract


ABSTRACT

With the aid of the three magical properties of encapsulation, inheritance and polymorphism, the object oriented programming paradigm has won the hearts of most programmers. Remote object communication is an added jewel to an object's crown. Distributed objects provide this, and many other desirable properties too. The Common Object Request Broker Architecture defines the standards for communication between distributed objects. CORBA is the key technology for the next century. Hence, maximum research shall occur in CORBA/WWW integration in the coming years.





Sreeram's Corba Page >> My Seminar Report >> Introduction


INTRODUCTION

Programming paradigms have been evolving ever since man started programming. The latest in this series is the concept of distributed objects. Classical objects, no doubt, provide innumerable advantages to programmers; however they are confined to a single program. Realising this, programmers have started moving towards objects in client/server systems or distributed objects. This is the area where objects will realize their greatest potential and growth;in the process, they will become the new "mainstream computing model." Distributed objects are actually components, that are entities which, when assembled, form applications.

Common Object Request Broker Architecture or CORBA is a standard put forth by the Object Management Group for communicating between distributed objects. It is a significant step on the road to object-oriented standardization CORBA is interoperable, ie. distributed clients may contact servers on any operating system, any platform, in any part of the world. The communications heart of object-oriented systems, CORBA brings true interoperability to today's computing environment.

The success of the CORBA standard has invoked research in various areas of technology, including databases, client/server etc. Integrating CORBA and the Web in order to provide transactional information is the latest innovation in this field. Thus, CORBA is the key to the twenty first century technology.

This paper is a humble effort to bring out the phenomenal technology of CORBA. The initial pages provide an introduction to object oriented programming concepts, and an overview of distributed objects and components. Later, it introduces CORBA, defines the architecture in detail with an example. The last part dels with the implementations and projects involving CORBA, and finally, the advantages and drawbacks.





Sreeram's Corba Page >> My Seminar Report >> OOP


Introduction to Object Oriented Programming Concepts

Software development paradigms have been changing ever since people started programming. As we find new technologies and new tools that make programming easier and better, we change our ideas about how things should be done.

Tracing the history of the various programming paradigms, the first one was machine language programming which represented instructions as bits - which the computer could directly understand, but was very difficult for the humans to make out. Then came assembly language programming, which made use of mnemonics. The major improvements were the introduction of subroutines and macros, which in turn led to the development of libraries. This was the first step in modular programming.

The next phase was the high level programming languages, like C, ADA, FORTRAN, etc. They made programs much more readable and added control structures like DO loops etc. Thus evolved the importance of controlling the flow in the program and the concept of Structured Programming techniques, which were conciously introduced to the programming world. This concept is very useful in writing large programs and applications so that the program could be split into chunks of manageable code.

The last in this generation was the Object Oriented Programming paradigm. Examples of OOLs are C++, SmallTalk, etc. OOLs brought in the concept of objects and classes.

What's an object after all ?

As the name object-oriented implies, objects are the key to understanding object-oriented technology. We can see many examples of real-world objects: a dog, a desk, a bicycle. These real-world objects share two characteristics: they all have state and they all have behavior. For example, bicycles have state (current gear, current pedal cadence, two wheels, number of gears) and behavior (braking, accelerating, slowing down, changing gears).

Software objects are modelled after real-world objects. An object is a piece of code that owns things called attributes and provides services through methods.

Objects provide a better programming model, coupled with the three magical properties : encapsulation, inheritance, and polymorphism, and hence reusability.

Classes: A class is a blueprint or prototype that defines the variables and methods common to all objects of a certain kind. Technically speaking, objects are run-time instances of a class. An object is identified by a unique ID or reference.In the bicycle's example, each bicycle is an instance of the class bicycle.

Encapsulation

As shown, the object's variables make up the center or nucleus of the object. Methods surround and hide the object's nucleus from other objects in the program. Packaging an object's variables within the protective custody of its methods is called encapsulation. Typically, encapsulation is used to hide unimportant implementation details from other objects. For example, the method of changing gears is immaterial for a bicycle rider. Similarly, we don't need to know how a class is implemented, but only which methods to invoke. Thus, objects are self-contained atoms. The object allows access to it's methods and data using the public, private and protected interfaces ( packages also in Java ) Encapsulation brings with it, modularity and information hiding

Inheritance

Object-oriented systems allow classes to be defined in terms of other classes. For example, mountain bikes, racing bikes, and tandems are all different kinds of bicycles.

Each subclass inherits state (in the form of variable declarations) from the superclass. Subclasses can add variables and methods to the ones they inherit from the superclass. Subclasses can also override inherited methods and provide specialized implementations for those methods. In the bicycle's example, the tandem bike may inherit the properties of the superclass, and also add it's own features, say, an extra gear. We are not limited to just one layer of inheritance. The inheritance tree, or class hierarchy, can be as deep as needed. Methods and variables are inherited down through the levels.

Messages

A single object alone is not very useful and usually appears as a component of a larger program that contains many other objects. Through the interaction of these objects, programmers achieve higher order functionality and more complex behavior. Software objects interact and communicate with each other by sending messages to each other.

Polymorphism

Polymorphism means that the same operation may behave differently on different classes. Polymorphism lets one view two similar objects through a common interface; it eliminates the need to differentiate between the two objects.

                                 |-- parametric
                 |-- universal --|
                 |               |-- inclusion
  polymorphism --|
                 |               |-- overloading
                 |-- ad hoc    --|
                                 |-- coercion
Overloading is a variant of polymorphism that to define different versions of a method, each with different parameter types.



Sreeram's Corba Page >> My Seminar Report >> Distributed Objects



Introduction To Distributed Objects and Components

What are distributed objects ?

We have seen that the classical objects provide the programmer with a lot of advantages.However, these classical objects only live within a single program. Only the language compiler that creates the objects knows of their existence. The outside world doesn't know about these objects and has no way to access them. They're literally buried in the bowels of a program.

Hence we're moving on to the next step: objects in client/server systems or distributed objects. In contrast to the classical object, a distributed object is a blob of intelligence that can live anywhere on a network. Distributed objects are independent pieces of code that can be accessed by remote clients via method invocations. The language and compiler used to create distributed server objects are totally transparent to their clients. Clients don't need to know where the server resides or what operating system it executes on; it can be on the same machine or on a machine that sits across an intergalactic network. They can message each other transparently anywhere in the world. They are very dynamic-they come and go and move around.

Distributed objects are, by definition, independent software components These are smart pieces of software that can plug-and-play across different networks, operating systems, and tool palettes.

More recently, distributed objects have become the darling of the Business Process Reengineering (BPR) crowd since objects map very well to the way businesses are organized. They use objects to simulate, describe, and analyze the business process.

Today's desktop applications are monolithic and over-bloated and contain every possible feature, of which only 10% are used frequently - the rest simply add complexity and bulk. We must wait-it seems forever-to get the new features we really need, in the form of new upgrades as vendors must bring forward all the hundreds of product features with every new release.

To site an example, it took WordPerfect just under 14 developer years to upgrade their product from version 3 to 4. However, it took 250 developer years to move the same product from version 5 to 6. It could cost them as many as 4,464 developer years to move the product to version 8. They realized this and are now rearchitecting the product using OLE and OpenDoc components. Microsoft, Lotus, etc. have similar stories to tell.

These have led to the component revolution .

What Exactly Is a Component?

A component is a piece of software small enough to create and maintain, big enough to deploy and support, and with standard interfaces for interoperability. Some are called white boxes - they behave like classical objects and have all their properties.eg: CORBA and OpenDoc. Others are called black boxes - are similar to objects. eg: OLE components - do not support inheritance. They are the optimal building blocks for creating the next generation of distributed systems.

A component is what Brad Cox calls a software IC. Frameworks are the boards we plug these components into. The object bus provides the backplane. Families of software ICs that play together are called suites. These will be available from the market, through standard part catalogs.

OpenDoc and OLE are currently the leading component standards for the desktop; CORBA provides a component standard for the enterprise. CORBA and OpenDoc complement each other-OpenDoc uses CORBA as its object bus.

Features of a minimalist component :

Supercomponents are components with added smarts like :