[ Syllabus ] [ Teaching
materials ] [ References ]
Distributed Object-Oriented Systems
Motivation:
Constant innovation in computing industry has brought large mass of
sophisticated application. A set of problems has been derived from the
sophistication for both developers and users. Applications are
time-consuming to develop, difficult and costly to
maintain. Functionality and data of one application generally are not
available to other applications even if they are running on the same
computer. Very often the same services provided by the operating
system and the network are different. Programming models are also
inconsistent. They are vary widely depending on whether the service
is coming from a provider in the same address space as the client
program, from a separate process on the same computer, from the
operating system, or from a provider running on a separate computer
across the network. Another consequence of the increasing software
complexity is the need for a new approach of developing software
featured by
- the object-oriented concepts to re-use existing solutions, and to
facilitate new designs of more self-sufficient software
components;
- the client-server computing to communicate between powerful
workstations and network servers;
- the distributed computing to provide a single system image to
users and applications and to permit use of services in a networked
environment regardless of location, computer architecture, or
implementation environment.
Responding to the increasing demand, a variety of distributed
frameworks have been started to develop. Such frameworks facilitate
the creation of collaborative distributed applications. Maybe the
best-known representatives of such distributed framework is the CORBA
The Common Object Request Broker Architecture (CORBA) is structured
to allow integration of a wide variety of object systems, developed by
the Object Management Group (OMG).
The client is the entity that wishes to perform an operation on the
object and the object implementation is the code and data that
actually implements the object. The ORB (Object Request Broker) is
responsible for all of the mechanisms required to find the object
implementation for the request, to prepare the object implementation
to receive the request, and to communicate the data making up the
request. The interface the client sees is completely independent of
where the object is located, what programming language it is
implemented in, or any other aspect which is not reflected in the
object's interface.
To make a request, the client can use the Dynamic Invocation
interface (the same interface independent of the target object's
interface) or an OMG Interface Definition Language (OMG IDL) stub (the
specific stub depending on the interface of the target object). The
client can also directly interact with the ORB for some functions.
The ORB locates the appropriate implementation code, transmits
parameters and transfers control to the object implementation through
an IDL skeleton or a dynamic skeleton. Skeletons are specific to the
interface and the object adapter. In performing the request, the
object implementation may obtain some services from the ORB through
the Object Adapter. When the request is complete, control and output
values are returned to the client.
ORB is not required to be implemented as a single component, but
rather it is defined by its interfaces. Any ORB implementation that
provides the appropriate interface is acceptable. The ORB Core is that
part of the ORB that provides the basic representation of objects and
communication of requests. CORBA is designed to support different
object mechanisms, and it does so by structuring the ORB with
components above the ORB Core, which provide interfaces that can mask
the differences between ORB Cores.
Aim:
This course is intended to bring together the student's knowledge of
object-oriented software development and networking and to extend it
into the creation of distributed object-oriented systems. We set the
objective to develop a new course to introduce CORBA both on
theoretical and practical level.
Objectives:
On completion of this course student will be able to:
- use Java programming language
- understand the client-server computation model
- understand the CORBA concepts
- design and implement simple distributed applications
Approach:
The theoretical aspects of this topic will be covered in lectures to
convey the fundamental issues. Practical exercises will concentrate on
the use of framework and creation applications. The particular tools
to be used (ORBIX, Java, etc) will be defined after evaluating
experiencies are from TEMPUS partners.
Prerequisits:
At least middle level on Operating systems, Computer Networks,
Software Engineering and programming practice on an OO language
(C++).
Detailed syllabus:
-
Getting started with Java
-
Java basics
-
Variables, operators, arrays, control str
-
Class concepts
-
methods, access, statics, inheritence
-
Exception handling
-
Interfaces
-
Bags
-
Java classes
-
Java.lang
-
Java.util
-
Java.io
-
Java.awt
-
Parallelism
-
threads, scheduling
-
Java.net
-
Advanced Java programming
-
Applets
-
Persistency
-
Database programming
-
JavaBeans
-
Component model
-
Client/Server with Distributed Objects
-
Distributed Application Concepts
-
Distributed Object Concepts
-
Components
-
Object life cycle
-
Remote Method Invocation
-
The RMI Registry
-
Serializing Objects
-
Introduction to CORBA
-
CORBA Architecture Overview
-
The Object Management Architecture
-
CORBA Structure
-
CORBA Services
-
CORBA Facilities
-
The first CORBA program
-
Requirement Specification
-
Development Process
-
CORBA IDL and Java
-
The Servant Program
-
The Server Program
-
The Client as a Java Application
-
The Client as an Applet
-
Interface Definition Language
-
Introduction to CORBA IDL
-
Defining IDL Interfaces
-
Overview of the IDL data types
-
IDL to Java mapping
-
Using and implementing IDL interfaces
-
ORB interoperability
-
Advanced CORBA programming
-
Exception handling
-
Using inheritance of IDL interfaces
-
Callbacks from Servers to Clients
-
Type any
-
Dynamic Invocation Interface
-
The interface repository
Documents
- Getting started with Java by Péter Kacsuk
4 slides Zipped PowerPoint 8k
8 slides Zipped PowerPoint 10k
26 slides Zipped PowerPoint 25k
33 slides Zipped PowerPoint 21k
- Java classes by Péter Kacsuk
36 slides Zipped PowerPoint 58k
23 slides Zipped PowerPoint 29k
- Advanced Java programming by József Kovács
22 slides Zipped PowerPoint 114k
28 slides Zipped PowerPoint 73k
- Client/Server with Distributed Objects
24 pages WinZipped-Winword7(27k) by dr. Zoltán László, dr. Károly
Kondorosi
- Introduction to CORBA
32 pages WinZipped-Winword7(26k) by dr. Zoltán László
- The first CORBA program
24 pages WinZipped-Winword7(25k) by dr. Zoltán László
- Interface Definition Language
20pages WinZipped-Winword7 (19k)
by dr. Zoltan Laszls, Balazs
Goldschmidt
- Advanced CORBA programming
29pages WinZipped-Winword7 (22k) by dr. Zoltan Laszls, Balazs Goldschmidt
- 12 CORBA Sample Programs by
dr. Zoltán László
Indicative text:
Robert Orfali, Dan Harkey, Jeri Edwards:
The Essential Client/Server
Survival Guide
Wiley, 1996
Robert Orfali, Dan Harkey, Jeri Edwards:
The Essential Distributed
Objects Survival Guide
Wiley, 1995
Alan Pope:
CORBA Reference Guide
Addison-Wesley, 1998
Ron Ben-Natan:
CORBA - A Guide to Common Object Request Broker
Architecture
McGraw-Hill, 1995
Waqar Sadiq, Fred Cummins:
Building Distributed, Object-Oriented
Business Systems Using Corba
SIGS, 1997
Jon Siegel et al:
CORBA Fundamentals and Programming
Wiley, 1996
Robert Orfali, Dan Harkey:
Client/Server Programming with
Java and CORBA
Wiley, 1998
Sean Baker:
CORBA Distributed Objects using Orbix
ACM Addison Wesley, 1997
Thomas J. Mowbray, Ron Zahavi:
The Essential CORBA: Systems
Integration Using Distributed Objects
Wiley, 1995
Andreas Vogel, Keith Duddy:
Java Programming With CORBA 2nd
Ed.
Wiley, 1998