Java Layers |
||||||||||||||||
| Introduction Team Members Component Model JL Language Publications
|
IntroductionThe goal of Java Layers (JL) is to help make programming easier and less expensive. The idea is to simplify application development and evolution by increasing the flexibility and the reusability of code. JL extends Java by implementing a software component model in which applications are constructed incrementally in layers. Applications are built by composing components, and applications are changed by specifying new compositions. Getting StartedA quick read of this Introduction is a good way to begin. After that, the quickest way to get the information you seek depends on your focus. For those who want to jump right into the language extensions, the Quick Reference Guide describes what a Java programmer needs to know to use JL. Downloading the JL compiler or reading the specification sections in my dissertation would be the next step along this track. For those who want to understand the software engineering issues surrounding JL, the ICSE paper provides a good overview. Our first technical report also provides background and motivation for JL research. If you are still interested, there are other publications listed below that you might find interesting. Team Members
Adam Brown, a PhD. student, has used JL to build our flexible widgets library and participated in numerous design discussions. Saurabh Boyed, an undergraduate student, has also used JL and provided valuable feedback to the rest of the team. We thank Sean McDirmid for many interesting discussions about JL and his work on Jiazzi, a component system that generalizes the use of packages in Java. We are also grateful to Kartik Agaram and Thomas Wahl for their interest in this work and for their contributions to the design of JL's Semantic Checking facility. JL Component ModelThe Java Layers component model is based on Don Batory's GenVoca model. The GenVoca model consists of software components called layers, a way to specify layer compositions, and a programming methodology that emphasizes the stepwise refinement of code. A layer encapsulates the complete implementation of a single design feature. Design features, or simply features, are high-level requirements that define some application attribute or capability. For example, applications might have features that make them secure, portable, fail-safe, able to use multiple protocols, dependant on certain libraries, etc. In JL, each such feature is encapsulated in a single programming construct. This encapsulation often includes code that would be packaged separately using current object-oriented techniques. A JL layer, for instance, can contain Java code for multiple methods or even multiple classes. JL retains the important concepts of the GenVoca model while refining GenVoca for use in domain-independent, object-oriented environments. JL's component model specializes the GenVoca model by (1) allowing all types to be treated as layers, and by (2) defining layer compositions as instantiations of parametric types. JL's component model extends the GenVoca model by (3) addressing how layers are initialized, and (4) by incorporating semantic checking into subtyping. Click here to see a simple JL example. JL LanguageThe JL language starts by extending Java with constrained parametric polymorphism. JL's heterogeneous implementation of parametric types is similar to a number current proposals for extending Java [Agesen97, Bracha98]. One important feature of JL's implementation of parametric types is its support for mixins. On top of this foundation, JL adds the following capabilities:
My dissertation describes each of these language and compiler extensions in detail. See the Quick Reference Guide for a summary of the language features implemented in the current version of JL. PublicationsConference/WorkShop Papers
Technical Reports
DissertationMy dissertation describes the latest design, implementation and evaluation of Java Layers. My defense slides are also available. Miscellaneous
Last modified: 05/09/2002 11:00 AM |