dc.identifier.citation |
Roussev, B. (1998) Experience with Java in an advanced operating systems module. Proceedings of the annual research and development symposium, SAICSIT (South African Institute for Computer Scientists and Information Technologists), Van Riebeeck Hotel, Gordons Bay, Cape Town, 23-24 November 1998, |
en |
dc.description.abstract |
The Advanced Operating Systems (AOS) module is one of the courses offered by the Computer Science Department in its honours program. The module aims are twofold: to enhance students' knowledge in single processor operating systems and to introduce the fundamental concepts of distributed operating systems. The workload consists of nineteen hours of work delivered over a 6 weeks period. Contact time is four lecture hours reinforced by a one-hour lab session; the remaining time is private study. Material pertinent to the course is available on-line at an internal departmental web site
(http:llwww.cs.wits.ac.za/-borislavlcourseslaos.html). Besides the prescribed textbook each student had to read carefully and critically a core set of twenty papers and to give at least two presentations. All papers are available from the course web site. The students had had no experience in networking. In the previous version of the module C/C++ was used as the implementation language. The assignment tests showed clearly that except for the brightest students everyone else struggled to implement even simple tasks such as process synchronization, signal handling, client/server systems, and lightweight threads.
Students acquired only theoretical understanding of remote procedure calling, group communication, and distributed computing as a whole. It was not possible to reinforce this material with lab exercises. In conclusion it became clear that the laboratory exercises were not achieving their aim of reinforcing the material presented in class.
Fortunately, all features required for the AOS laboratory exercises: UDP sockets, TCP sockets, multicast sockets, multi-threading, thread synchronization, platform independence, and object persistence and serialization are part of the Java programming language. The simple and elegant interface to most of Java API made it a natural choice for the course. The major disadvantage of using Java instead of C/C++ was that the students had to learn the language and the extensive library by themselves.
All students managed the initial exercises and were able to write and test a simple multi-threaded concurrent server using a pool of worker threads and monitors to synchronize the access to the shared resources. Then the students successfully implemented a communication protocol of moderate complexity. Part of the exercise involved object serialization. The final project of the course was to implement remote
method invocation. The students had to write: ( 1 ) a portmapper (binder), providing the following services: register, whereis, withraw, and dump; (2) a client stub and a server stub exporting the following API: listening on an advertised port (the port registered with the portmapper), extracting the control information from a client or a server message, marshalling and unmarshalling parameters and results; (3) a server providing the remote services using a pool of worker threads and appropriate synchronization mechanisms;
(4) finally, an application making use of the former three modules. The students were divided into groups of three. All groups managed to complete their projects on time. The switch from C/C++ to Java seems to pass almost unnoticed. Feedback at the conclusion of the module was very positive of the use of Java on this course.
In conclusion, Java proved to be an ideal language for the use in the AOS course. The simplicity of its code and API helped the students to grasp the important concepts quickly without wasting time in technical details. The course ran more smoothly than the previous year when C/C++ was used. |
en |