Institute for Advanced Professional Studies

Spring Concepts, Internals Architecture and Programming

The Spring operating system was a research operating system developed at Sun Microsystems Laboratories in the early to mid '90s. In 1994, IAPS was contracted by Sun to develop and present a course on Spring. Video tapes of the course were produced as well. Though the operating system is no longer used and we no longer offer this course, we are keeping the description on our web site to preserve incoming links from related sites. This description also serves as an example of our customized course development and training capabilities. Spring OS lecture notes from a half-day, 1995 USENIX conference tutorial are available for download.

Spring Overview:

Spring is an operating-system-research technology from Sun Microsystems Laboratories and SunSoft. SunSoft is sharing this technology with colleagues in universities and research laboratories in the form of the Spring Research Distribution. This technology will be incorporated into future versions of Solaris.

Spring not only supports distributed object-oriented programming, but is completely object-oriented itself. Additional features include microkernel design, modularity with IDL interfaces, and improved security. It provides direct support for CORBA and can be viewed as an alternative system platform for distributed object-oriented programming.

Workshop Overview:

This workshop describes the concepts and architecture of Spring and enables participants to gain experience with the use and programming of Spring. The workshop discusses the design of some key Spring system components: The name service, security, threads, interprocess communication, and virtual memory.

The workshop details Spring programming techniques and involves participants in the creation of a simple, working, distributed application. The general concepts of multithreaded programming are covered, including the details specific to Spring. The workshop also provides a thorough examination of the Spring object model, showing how it simplifies the writing of extensible distributed applications.

Topic Outline:

  • Overview and Architecture
    • Why develop yet another OS?
    • Why develop an object-oriented OS?
    • The architecture of Spring
  • Programming in Spring
    • Distributed, object-oriented programming
    • How to use remote objects
    • Specifying objects in IDL (Interface Definition Language)
    • Writing object managers: Implementing remote objects
    • Using the Spring Name Service
    • The Mechanics of Programming in Spring
  • Multithreaded Programming in Spring
    • Threads in Spring
    • Synchronization
    • Alerts
  • The Spring Object Model
    • Spring objects vs. C++ objects
    • inheritance vs. implementation inheritance
    • The type model
    • Parameter passing
    • Version control via subclassing
    • Implementation overview: Stubs, contracts, and subcontracts
    • Concrete vs. pure types
    • Exploiting the type hierarchy: Widening, narrowing, and traversing
  • The Spring Name Service and Security
    • The Spring naming model
    • Using name servers
    • Persistence
    • Authorization
    • Writing name servers
  • The Spring Nucleus
    • The door mechanism: Accessing the remote object
    • Threads across address spaces
    • Distributed parameter passing
  • Virtual Memory and the File System
    • The virtual memory model
    • Implementing virtual memory
    • Integrating the file system and virtual memory
  • Futures
    • Where is the system going?

Workshop Objectives:

Participants who successfully complete this course will be able to:

  • Explain the relationship between Spring and CORBA
  • Explain how distributed object-oriented programming differs from C++ and Objective-C programming
  • Write applications that use remote objects
  • Explain the need for IDL
  • Write object specifications for IDL
  • Write object managers implementing remote objects
  • Make effective use of the Spring Name Service
  • Write multithreaded applications that make use of remote objects
  • Write multithreaded object managers
  • Understand the notions of widening, narrowing, and traversing and how to make use of these concepts in applications
  • Explain the difference between pure and concrete types
  • Implement versioning with class hierarchies
  • Explain the use and role of subcontracts in distributed object-oriented programming
  • Explain the role of strong interfaces and interface inheritance in the design and implementation of large distributed systems
  • Explain the features and function of the Spring Name Service
  • Explain the relationships between naming, security, and persistence
  • Explain the structure of a distributed object-oriented program
  • Describe how the spring nucleus facilitates the implementation of distributed object-oriented programs
  • Explain the role of virtual memory in Spring

Intended Audience:

  • Software engineers and technical managers wishing to assess Spring's technology and understand its features and function.
  • Software developers looking to program in the Spring environment.

Technical Prerequisites:

  • Familiarity with operating system design and a working knowledge of C++ programming

Course Duration and Formats:

  • The course outlined above is a hands-on, two-day class: Roughly half of the time is devoted to interactive lectures, the remaining time to writing applications on running Spring systems.
  • Also available are abbreviated briefings with lengths of one hour, a half day, and a full day.

© Copyright 1994-2015 Institute for Advanced Professional Studies (IAPS)