The traditional roles of shell programming include automating repetitive tasks or demonstrating a temporary prototype. In the latter case, if the shell program works well, it is implemented in a compiled language. Because the shell is an interpreted language, its execution time is slower than any compiled-language counterpart. In addition, if the program uses any call to other shell utilities, such as awk, the execution time is even slower. However, with the evolution of object-oriented programming, distributed computing practices, and many web interface and programming developments, the shell has become more useful. In the preface to UNIX Shell Objects, Jones says of the expansion, "the next generation of system development bridges multiple tiers across the network, thus connecting new and existing systems into large distributed applications." The enormity of this concept becomes clearer as the author connects the chapters. The "simple" shell links to object-oriented programming and design; it also bonds to Java to implement Internet sockets, which in turn permits IPC (interprocess communications). He also associates the shell with an object request broker (ORB), a system management utility (SMU), and CGI (Common Gateway Interface) programming. In many ways, it resembles the small country road developing into a central superhighway.
Jones reviews the fundamentals of object-oriented and shell programming in the first chapter, "The Nature of Object-Oriented Programming," and chapter two, "The Shell as a User and Programming." In chapters three through five he explains, in aptly-titled chapters, "The Syntax of Writing Classes," "Using Shell Objects," and "Object Communication." The subsequent chapter discussions feature Java, networking components, sockets, API, and distributed objects. Specifically, they describe "Using Java from the Shell," "Encapsulating the Network with Components," "Distributed Objects," and "Designing an Object-Oriented System." The concluding chapters illustrate "Creating a Shell-Based Distributed Application," "Rethinking an Object-Oriented System," "Using Shell Objects with CGI," and "Connecting from the Web." The appendices contain the GNU General Public License and information about the CD-ROM, followed by the index, the End User License Agreement, and the CD-ROM installation instructions. The CD-ROM includes code from the book, the Apache Web Server v. 1.2.6, and v. 5.2.12 of the public domain Korn Shell (pdKsh). It also contains a standard ORB installation.
UNIX Shell Objects exemplifies a multifunctional book. Jones begins with object-oriented and shell programming essentials and incrementally progresses to a distributed operating-system environment. Initially, he presents review chapters for both general shell programming and object-oriented design topics. They also can serve as basic introductory material for the novice. The author then illustrates how to create objects within the shell and reuse them. This concept permits the programmer greater flexibility and prevents repetitive implementations. With the use of Java's API, a shell programmer can create Internet sockets accessible through named pipes and establish communication between scripts. The introduction and utilization of an object request broker (ORB) that processes communication requests from a client also establishes the foundation for a project application for the user and reader to build. The System Management Utility (SMU) provides system administration from the creation of the ORB to the design of an HTML interface for the application.
This book builds upon each new concept and interface as they are defined and discussed. The number of design issues and technologies that Jones not only mentions, but also proceeds to develop, is remarkable and enlightening. He progresses from one topic to the next implementation seamlessly and proficiently. The author demonstrates how easily one advancement can encourage the inclusion of another. The format of the book is excellent and characterized by a readable, well-organized style. UNIX Shell Objects is a valuable tutorial and resource, characterized by its sophisticated subject matter and realistic, easy-to-read approach.
Electronic Review of Computer Books