3.3 Other technologies
Briefly C++ was used due to its execution speed versus Java. Although many Java run-time environments exist the general performance of projects developed in Java did not perform as quickly natively compiled C or C++ code. C++ provides the data abstraction that allowed the project to broken up into classes and accessed via created objects and their associated function.
3.3.2 Java Like Threads for C++ (JThreads/C++)
Java Like Threads for C++ was defined as:
"...is a high-level thread abstraction library that gives C++ programmers the "look & feel" of Java threads."24
It was chosen because it offers easy transference of knowledge from Java to C++ in regards to threads. Java provides an easy to use threading class for adding multi-threading capability to programs. Similar ability is provided in JThreads/C++ but geared towards running on a particular operating system not through a run-time environment.
GNU Make is the way that DGCC gets the jobs to be done. The purpose of Make is:
"... to determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them." 25
Make was chosen because it offered an easy method for reporting the work to be done without actually performing it using makefiles, (e.g. make -nW Makefile). By making this choice it offers an easy way to integrate changes into what needs to be done by editing a single file. It minimizes the learning curve because no changes are required in creating/modifying the makefile.
This project depends on two major technologies, CORBA and distributed file systems (CODA). Without CORBA there would be no easy form of communication between the master and the slaves. Without CODA there would be no easy method for transferring files without re-inventing the wheel (e.g. distributed file systems, FTP, etc.) These two fundamental technologies incorporated with JThreads/C++, GNU Make and C++ provide an excellent groundwork for creating a distribute system.
Previous: Chapter 3 - CODA | Home | Next: Chapter 4 - Design & Implementation |