Reading
This is the reading guide to middleware. It references books, articles and tutorials about middleware and middleware related research. The reading list is used at the middleware coures, as a quick reference for new students, and as a general resource for middleware research in Tromsø and elsewhere. Please help us keeping the guide updated.
There a several other places to look for middleware references. The (second) best place to start is the middleware section of DSOnline. The QuA project has a nice (and updated) related work section. Douglas C. Schnidt has a lot of references to middleware and CORBA documentation on his home page.
Middleware fundamentals
Recommended books
Several books on middleware, distributed object models and open distributed processing exists. The recommended books (but read the comments before you select one of the listed books) are:
- Engineering Distributed Objects, Wolfgang Emmerich, Wiley 2000. {Includes the basics about distributed systems, but includes a very good introduction the object oriented middleware: examples from CORBA, COM and Java/RMI (a new updated edition would be nice).}
- IT Architectures and Middleware, 2ed, Chris Britton and Peter Bye, Addison-Wesley 2004. {Middleware presented from an industry perspective: a must for all academics and IT professionals working on middleware (you need to register to access the home page of the book).}
Recommended chapters in books
Other books includes chapters that gives a good introduction to middleware, distributed object models and open distributed computing. The recommended reading in this category is:
- Standards and platforms for open distributed processing, Chapter 2 in Open Distributed Processing and Multimedia, Gordon Blair and Jean-Bernard Stefani, Addison-Wesley 1998 (out of print). {The book has a multimedia focus, but its conetent includes a nice general introduction to open distributed processing (and it uses RM-ODP terminology).}
- Distributed objects and remote invocation, Chapter 5 in Distributed Systems, Concepts and Design, 3ed, George Coulouris, Jean Dollimore and Tim Kindberg, Addison-Wesley 2001. {A book on distributed systems that includes distributed object models: Chapters about CORBA and transactions are also of interest.}
Recommended tutorials and articles
The following documents is a nice place to start when you want to learn more about middleware. Be aware of the published date of the document you are reading. The middleware field has evoled a lot since 1995.
- Middleware: A Model for Distributed System Services, Philip A. Bernstein, Communications of the ACM, Vol. 39, No. 2, February 1996. {A nice introduction to the middleware concept.}
- Middleware for Distributed Systems - Evolving the Common Structure for Network-centric Applications, Richard E. Schantz and Douglas C. Schmidt, Chapter in The Encyclopedia of Software Engineering. John Wiley & Sons. December 2001. {Gives a good motivation for middleware and an overview of middleware functionality.}
- Introduction to Distributed Object Computing, Douglas C. Schmidt and Steve Vinoski, Column 1 in the series Object Interconnections, C++ Report magazine, January 1995. {Article 1 in a series of articles introducing Distributed objects and CORBA.}
- Modeling Distributed Object Applications, Douglas C. Schmidt and Steve Vinoski, Column 2 in the series Object Interconnections, C++ Report magazine, February 1995. {Article 2 in a series of articles introducing Distributed objects and CORBA.}
- Comparing Alternative Client-side Distributed Programming Techniques, Douglas C. Schmidt and Steve Vinoski, Column 3 in the series Object Interconnections, C++ Report magazine, May 1995. {Article 3 in a series of articles introducing Distributed objects and CORBA: from sockets to CORBA on the client side.}
- Comparing Alternative Server Programming Techniques, Douglas C. Schmidt and Steve Vinoski, Column 4 in the series Object Interconnections, C++ Report magazine, October 1995. {Article 4 in a series of articles introducing Distributed objects and CORBA: from sockets to CORBA on the server side.}
- Software Engineering and Middleware: A Roadmap Wolfgang Emmerich, In A. Finkelstein (ed), The Future of Software Engineering. pp. 117-129. ACM Press 2000. {Middleware in a software engineering perspective: the result is a very nice introduction the the fundamentals of middleware and to more advanced middleware topis (including mobility, real-time, flexible middleware and so on).}
- A Case for Message Oriented Middleware, Guruduth Banavar et al, Proceedings of DISC 99, 1999. {An invited position paper arguing that message oriented middleware is the appropriate application integration technique for the internet.}
RM-ODP
You will find a lot of of references to RM-ODP by searching the web, but two nice places to start are the DSTC RM-ODP Information Service (Distributed Systems Technology Centre, Australia) that includes the RM-ODP standard documents from ISO/ITU-T, and the site RM-ODP: The Reference Model for Open Distributed Processing (Antonio Vallecillo, Universidad de Málaga, Spain) that is a non-official but up-to-date RM-ODP site.
Recommended books
- Open Distributed Processing and Multimedia, Gordon Blair and Jean-Bernard Stefani, Addison-Wesley 1998 (out of print). {The book has a multimedia focus, but it does it in an RM-ODP conetxt.}
Recommended chapters in books
- Distributed Systems, an ODP Perspective, P. F. Linington, Chapter 2 in Formal Methods for Distributed Processing, Ed. H. Bowman and J. Derrick, Cambridge University Press, October 2001. {A presentation of distributed systems in an RM-ODP context. Recommended.}
Recommended tutorials and articles
The paper by Raymond is the classical introduction to RM-ODP. This and the other papers listed here do not dig in to all the details of RM-ODP. The Blair/Stefani book (see "Recommended books" above) and the standard documents (see "DSTC RM-ODP Information Service" above) are good sources for such details.
- Reference Model of Open Distributed Processing: Introduction (PDF version), Kerry Raymond, Proceedings of the 3rd IFIP TC6/WG6.1 International Conference on Open Distributed Processing, Brisbane (Australia), February 1995. {A short introduction to RM-ODP. The presentation slides (PDF version) are also available.}
- Open Distributed Processing: Unplugged!, Ian Joyner. {Another introduction to RM-ODP. Includes a short presentation of federation, conformance and quality of service in RM-ODP.}
- Reference Model for Open Distributed Processing, Andrey Naumenko, LAMS, École Polytechnique Fédérale de Lausanne , October 2001. {A compact introduction to RM-ODP that includes a lot of references.}
CORBA
The home page of OMG is the main source for CORBA (and UML) related information. But Steve Vinoski's and Douglas C. Schmidt's home pages are other good places to dig into CORBA stuff.
Recommended books
Too many CORBA books are competing about your attention. This short list only contains a few, and it might be other books more suitable for your needs out there. Feedback are welcome (other great books?).
- Advanced CORBA Programming with C++, Michi Henning and Steve Vinoski, Addison-Wesley 1999. {This is the CORBA book for C++ programmers (and other programmers), but it is does not cover CORBA 3.}
- CORBA 3 Fundamentals and Programming, 2ed, Jon Siegel, Wiley 2000. {This books cover CORBA 3, it is better than Henning/Vinoski for introduction to CORBA (but it also covers a lot of details).}
Recommended tutorials and articles
You should also browse the tuturials and articles listed in the Middleware Fundamentals above.
- CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments, Steve Vinoski, IEEE Communications Magazine, Vol. 14, No. 2, 1997. {Good compact introduction to CORBA.}
- New features for CORBA 3.0, Communications of the ACM, Vol. 41, No. 10, October 1998, pp. 44-52. {The new stuff in CORBA 3.}
Java RMI
You could start at the official Java RMI home page, but other nice introductions and resources are also available.
Recommended tutorials and articles
A lot of documents are available out there. The following list includes the official documentation from Sun and some other references. If you know about better tutorials or other good articles, please contact us.
- Getting Started Using RMI, Sun Microsystems, Inc., 2003. {A simple Java RMI "Hello World" example from Sun.}
- Java RMI Tutorial, Kenneth Baclawski, College of Computer Science, Northeastern University, Boston, MA, 1998. {A compact introduction to Java RMI programming.}
- Introduction to Java RMI, David Reilly at www.javacoffeebreak.com, 2000. {Another introduction to programming Java RMI.}
- Java RMI and CORBA: A comparison of two competing technologies, David Reilly at www.javacoffeebreak.com, 2000. {Java RMI compared with CORBA (short).}
- Understanding Java RMI Internals, Ahamed Aslam.K at www.developer.com., {A breif description of the Java RMI internals.}
.Net Remoting
A lot of sources regarding .Net are available. Most of them ignores the details about .Net Remoting. We have found a few introductions, but references to other sources of information about .Net Remoting are welcome.
Recommended tutorials and articles
The MSDN library and Developer.com have some interesting articles. Others?
- Microsoft .NET Remoting: A Technical Overview, Piet Obermeyer and Jonathan Hawkins, Microsoft Corporation, July 2001. {A brief introduction to the .Net fundamentals (remote objects, proxy objects, channels, activation, ...) including a small example with code.}
- An Introduction to Microsoft .NET Remoting Framework, Paddy Srinivasan, Microsoft Corporation, July 2001. {A brief introduction to different approaches for hosting remote objects (includes examples with code).}
- .Net Remoting, Mark Strawmyer, Developer.com. {Compares .Net Remoting with DCOM and Web Services and gives an example on how to create a remote object and a client using the remote object.}
Sofware components
Software components is an old idea, but it was actually Microsoft that started the current "software component movement" in their attempt to integrate the different office applications (to make it possible to edit your Excel spreadsheet in your Word document). Back then it was called OLE (Object Linking and Embedding), but now it is refered to as COM (Component Object Model). It is still possible to use COM (and later DCOM and COM+) on your Microsoft platform, but Microsoft now has it main focus on .Net technologies (see also Microsoft .Net Framework Developer Center and ".Net Remoting" above). COM and .NET are complimentary development technologies, but the .NET Common Language Runtime provides bi-directional, transparent integration with COM.
But Microsoft is not the only provider of software component technologies. Enterprise Java Beans (EJB) and CORBA Component Model (CCM) are other (server) software component models. See also ComponentSource, Component Software Resources, The CORBA & CORBA Component Model (CCM) Page, (you will also find a weblog on CCM). JBoss is a popular open source implementation of Enterprise Java Beans.
Recommended books
The Szyperski book is the classical reference to software compoenents. On EJB, CCM, COM and .Net it is to many books to select from. The listed books are good, but better books might exist out there? Any suggestions are welcome.
- Component Software - Beyond Object-Oriented Programming, Second Edition (publisher's book site), Addison-Wesley / ACM Press, 2002. {The classical book on software components. Not easy to read, but stuffed with interesting content.}
- Mastering Enterprise Java Beans, Second Edition, Ed Roman, Scott Ambler, Tyler Jewell, Wiley 2002. {A good EJB book.}
- Essential COM, Don Box, Addison Wesley 1998. {The COM book. No one describes COM better than Don Box.}
- Essential .Net, Volume 1: The common Language Runtime, Don Box with Chris Sells, Addison Wesley 2003. {From the author of "Essential COM". Good.}
Recommended chapters in books
- Overview of the CORBA Component Model, Nanbor Wang, Douglas C. Schmidt, and Carlos O’Ryan, in Component-based software engineering: putting the pieces together, George T. Heineman and William T. Councill (Ed.), Addison-Wesley 2001. {The CORBA Component model explained.}
Recommended tutorials and articles
The first paper is from 1968! It is an interesting historical reference and it provides a lot of motivation for software components.
- Mass-Produced Software Components, M. D. McIlroy, Bell Telephone Laboratories, Inc., New Jersey, USA, NATO SCIENCE COMMITTEE, Garmisch, Germany, October, 1968. {The idea of software components is old.}
- The CORBA Component Model: Part 1, Evolving Towards Component Middleware, Douglas C. Schmidt and Steve Vinoski, C/C++ Users Journal, February 2004. {A good introduction to the CORBA Component Model. 1st article in a 4 article series.}
- The CORBA Component Model: Part 2, Defining Components with the IDL 3.x Types, Douglas C. Schmidt and Steve Vinoski, C/C++ Users Journal, April 2004. {2nd icle in the 4 article series.}
- The CORBA Component Model: Part 3, The CCM Container Architecture and Component Implementation Framework, Bala Natarajan, Douglas C. Schmidt and Steve Vinoski, C/C++ Users Journal, September 2004. {3rd icle in the 4 article series.}
- The CORBA Component Model: Part 4, Implementing Components with CCM, Bala Natarajan, Douglas C. Schmidt and Steve Vinoski, C/C++ Users Journal, October 2004. {4th icle in the 4 article series.}
Multimedia
Recommended books
The first book listed is out of print. Any other good books?
- Open Distributed Processing and Multimedia, Gordon Blair and Jean-Bernard Stefani, Addison-Wesley 1998 (out of print, chapter 1-3). {A good overview on distributed platforms and how to add multimedia support to such platforms.}
- Multimedia: Computing, Communications and Applications, Ralph Steinmetz and Klara Nahrstadt, Prentice Hall 1995. {Covers technical areas, such as the representation and behavior of different media, data compression with respect to multimedia, multimedia hardware, computer technology, operating system support, support of network and communication systems, characteristics of multimedia databases, multimedia documents, abstraction of multimedia programming, and current multimedia applications.}
- Multimedia Fundamentals, Volume 1: Media Coding and Content Processing, Ralf Steinmetz and Klara Nahrstedt, Prentice Hall 2002. {A comprehensive update of the book above.}
- Multimedia Systems, John F. Koegel Buford, Addison-Wesley 1994. {The book provides a technical introduction to key issues in multimedia.}
Recommended chapters in books
- Distributed multimedia systems, Chapter 15 in Distributed Systems, Concepts and Design, 3ed, George Coulouris, Jean Dollimore and Tim Kindberg, Addison-Wesley 2001. {A book on distributed systems that includes a chapter on QoS and resource management for distributed multimedia systems.}
Recommended tutorials and articles
- A Configurable Multimedia Middleware Platform (pdf), Geoff Coulson, IEEE Multimedia, No. 1 Vol. 6, January-March 1999. {Describes designing a multimedia-capable middleware platform and its attempts to maximize performance, predictability, and configurability in a standard workstation operating-system environment.}
- A Standard for Multimedia Middleware, D. J. Duke and I. Herman, Proceedings of the sixth ACM international conference on Multimedia, 1998. {Presents the PREMO standard.}
- Middleware + Multimedia = multimedia middleware?, Thomas Plagemann, Multimedia Systems, No. 5 Vol. 8, December 2002. {A two pages discussion on the topic middleware and multimedia (an introduction in this special issue of Multimedia systems based on the Multimedia Middleware (M3W) Workshop held at the 9th ACM Multimedia Conference in Ottawa 2001).}
Mobility
Recommended tutorials and articles
The first 3 papers discuss the challanges introduced by mobility.
- The Challenges of Mobile Computing, George H. Forman, and John Zahorjan, IEEE Computer, Vol. 27, No. 4, 1994. {Discusses challenges introduced by mobility.}
- Fundamental Challenges in Mobile Computing , M. Satyanarayanan, Fifteenth ACM Symposium on Principles of Distributed Computing May 1996, Philadelphia, PA. {Challenges identified in the Coda project.}
- Mobile computing middleware, Cecilia Mascolo, Licia Capra and Wolfgang Emmerich, In Advanced lectures on networking, Springer-Verlag 2002. {Discusses middleware support for mobility.}
Middleware research
Recommended tutorials and articles
- Middleware Challenges Ahead. Kurt Geihs, IEEE Computer, June 2001. {What problems does not current middleware solve?}
- Research Advances in Middleware for Distributed Systems: State of the Art, Richard E. Schantz, Douglas C. Schmidt, IFIP World Computer Congress, August 2002, Montreal, Canada (also in Kluwer Academic Publishers "Communication Systems: The State of the Art", 2003.). {New architectural concepts and services embodying layers of middleware.}
Reflective and adaptive middleware
At DS Online there is a sub-category on reflective middleware. A Reflective and Adaptive Middleware Resource Collection is also avialble.
Recommended tutorials and articles
- Notes on Reflective Middleware, Gordon Blair, Tech. Report, Lancaster University. 1997. {Introduction to refelction and early ideas about reflective middleware.}
- What is Reflective Middleware?, Geoff Coulson, IEEE DS Online, 2000. {A short introduction to reflective middleware.}
- The case for reflective middleware, Fabio Kon, Fabio Costa, Gordon Blair and Roy H. Campbell, Communications of the ACM, No. 6, Vol. 45, June 2002. {A good reflective middleware discussion.}
- The Design and Implementation of Open ORB 2, Gordon S. Blair, Geoff Coulson, Anders Andersen, Lynne Blair, Michael Clarke, Fabio Costa, Hector Duran-Limon, Tom Fitzpatrick, Lee Johnston, Rui Moreira, Nikos Parlavantzas, Katia Saikoski, IEEE DS Online, June 2001. {Presents the OpenORB 2 platform.}
- Arctic Beans: Configurable and Re-configurable Enterprise Component Architectures, Anders Andersen, Gordon Blair, Vera Goebel, Randi Karlsen, Tage Stabell-Kulø and Weihai Yu. Work in Progress session at Middleware 2001, Heidelberg, Germany, November 2001. Published in IEEE Distributed Systems Online, Vol. 2, No. 7, 2001. {Early ideas in the Arctic Beans project.}
- A time for refelction, Steve Vinoski, IEEE Internet Computing, January/February 2005. {Steve Vinoski talks about reflection in CORBA.}