[ 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
? pages Zipped PowerPoint 8k
? pages Zipped PowerPoint 10k
? pages Zipped PowerPoint 25k
? pages Zipped PowerPoint 21k
-
Java classes by Péter Kacsuk
? pages Zipped PowerPoint 58k
? pages Zipped PowerPoint 29k
-
Advanced Java programming by Kovács József
? pages Zipped PowerPoint 112k
? pages Zipped PowerPoint 71k
-
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. Zoltán László, Balázs
Goldschmidt
-
Advanced CORBA programming
29pages WinZipped-Winword7(22k)
by dr. Zoltán László, Balázs
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