News
| [May/15/2002] | First public release of the Latte Macchiato compiler and the webpage. |
Introduction
|
This is the homepage of the latte macchiato compiler. Latte Macchiato is based on the Java programming language and features several extensions:
[Klaus Ostermann] [Mira Mezini] The compiler is based on KOPI and is 100% pure java. |
Latte Macchiato
|
The following text is an excerpt from the paper "Object Oriented Composition Untangled" which can be found in the publications area.
|
|||||||||||||||||||||||||||||||
|
The two basic composition mechanisms of object-oriented languages, inheritance and objectcomposition, are very different concepts, each characterized by a different set of properties. The properties of inheritance have been discussed in several works.
Also, the relationship between inheritance and object composition is carefully studied.
The mixture of composition properties supported by each mechanism is fixed in the language implementation and individual properties do not exist as abstractions at the language level. However, often non-standard composition semantics is needed, with a mixture of properties, which is not as such provided by any of the standard techniques. We indicate that in the absence of linguistic means for expressing and combining individual composition properties on-demand, such non-standard semantics are simulated by complicated architectures that are sensitive to requirement changes and cannot easily be adapted without invalidating existing clients. Actually, the need to combine properties of inheritance and object composition has already been the driving force for two families of non-standard approaches to object-oriented composition. On one side, delegation enriches object composition with inheritance properties. Please note that in contrast to the frequent use of the term delegation as a synonym for forwarding semantics, in this paper it stands for dynamic, object-based inheritance. In pure delegation-based models, objects are created by cloning other prototype objects, and objects may inherit from other objects, called parents. Hence, in such models one has object composition and delegation, but no class-based inheritance. The most prominent programming language in this family is Self. More recently delegation-based techniques are integrated into statically typed, class-based languages, which thus provide class-based inheritance, delegation, and object composition. On the other side, several mixin-based models approach the goal of combining inheritance and object composition properties from the opposite direction, enriching inheritance with object composition properties, such as the ability to statically/dynamically apply a subclass to several base classes. Like standard composition mechanisms, these approaches also do not provide abstractions for explicitly expressing individual composition properties that would allow to combine these properties on-demand. In this paper, we distinguish between five properties that can be used to describe the relation that holds between two modules M and B (classes and/or objects) to be composed, whereby B denotes the base module, M denotes the modification module, and M(B) denotes the composition.
The key idea of the approach presented in this paper is the separation and independent applicability of these notions by providing explicit linguistic means to express them. This allows the programmer to build a seamless spectrum of composition semantics in the interval between object composition and inheritance, depending on the requirements at hand, making object-oriented programs more understandable, due to explicitly expressed design decisions, and less sensitive to requirement changes, due to the seamless transition from one composition semantics to another. |
Downloads
| [EJC-0.9R.ZIP] |
A zip file containing all necessary classes and tools to run the compiler. Runtime packages, examples and JavaDoc documentation are also included.
License Information The Latte Macchiato compiler, lm, is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. lm was originally derived from version 1.5 of the Kopi Java compiler, Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H. and available under the GNU General Public License. Although the source code for the Latte Macchiato compiler is licensed under the GNU General Public License, bytecode produced by the compiler from user source code is free of any license obligations. This means, among other things, that users of the compiler are free to apply any licensing obligations that they wish to their code, including proprietary licenses. lm is Copyright (C) 2000-2002, University of Technology Darmstadt |
|
| [Thesis.pdf / Thesis.ps ] | The diploma thesis describing the language and the implementation of it (in German). (Michael Eichberg) | |
| [OOCUntangled.pdf] | THE PAPER which describes the theoretical aspects of Latte Macchiato.. (Klaus Ostermann & Mira Mezini) | |
| [OOCUntangled.ppt] | A short PowerPoint presentation which describes the "Compound References" feature.. |

