Some useful links:
Discussion leaders may put the handouts on the web or bring them to the meeting.
Some discussions are highlighted here:
People seems agree with the concept that distributed components should base on objects. There are technologies from various communities and companies, includes:
This has its historical reason since at the time that CORBA was defined (early 1990s), QoS is hardly a critical issue in general network applications, and few people had thought that CORBA would be used in embedded systems. The CORBA specification largely leaves the QoS issues to individual implementations. TAO as one of the pioneers of real-time CORBA, provides one solution to add QoS specification and real-time scheduling features to CORBA. We will look at it more carefully next week. Today, there is a real-time community in OMG. As Xiaojun pointed out, it is still in progress.
There are some possible solutions to our problem -- use the flexibility of CORBA in real-time control systems, with sufficient QoS guarantee --
We pulled out presentation slides from Georgia Tech (May 19-20, 1999) to see what systems we may deal with.
I think it is necessary to put the CORBA architecture diagram here.
Figure from http://www.cs.wustl.edu/~schmidt/corba-overview.html
Tom raised this question (or something similar?). CORBA says nothing about the logical correctness of an application. Eventually, we will need some concurrency models built atop CORBA, for example, event channels or CPS. On that level, verification is certainly an issue.
We didn't have enough time to go to the detail of this. I think the links above by Ben are excellent. And we realized that the performance study on the-Internet-based applications might not be the same as the performance study that we want.
We didn't have enough time to talk about this either. John mentioned Orbix from IONA, which support some real-time operating systems, like QNX.
We have a somewhat extended example than the HelloWorld given in Java Tutorial. But we follow the basic development step described there:
idltojava -fno-cpp SimpleHelloWorld.java
where -fno-cpp simply indicates that there is no c++ preprocessor.
Compile the IDL code will generate the source code for your programming
language, say Java. Java's idltojava compiler generates a subdirectory
with the name of your IDL module (in our case, SimpleHelloWorld).
Although you may do this step later, I usually do it before I write any
client or server codes. The reason is that I would know which class to extend.
Usually you don't have to know what's inside the generated files other than
know which is which. Here is a list of the files:
On the server side:
On the client side:
javac *.java
tnameserv -ORBInitialPort 1050
java SimpleHelloWorldServer -ORBInitialHost foo -ORBInitialPort 1050
java SimpleHelloWorldClient -ORBInitialHost foo -ORBInitialPort 1050