|
1 Overview
|
|
The experimental programming language Keris extends Java with explicit support
for software evolution. Keris introduces extensible modules as the basic
building blocks for software. Modules are composed hierarchically revealing
explicitly the architecture of systems. A distinct feature of the module
design is that modules do not get linked manually. Instead, the wiring of
modules gets infered. The module assembly and refinement mechanism of Keris
is not restricted to the unanticipated extensibility of atomic modules. It
also allows to extend fully linked systems by replacing selected submodules
with compatible versions without needing to relink the full system.
Extensibility is type-safe and non-invasive; i.e. the extension of a module
preserves the original version and does not require access to source code.
|
2 Quick Tour
|
|
A quick tour through the main features of Keris is available.
It briefly explains how systems are developed and evolved using Keris' extensible
modules.
|
3 Documentation
|
|
The following selection of papers describe the motivation, the design, and the
implementation of Keris, as well as technical background information on related
topics.
|
Programming Language Abstractions for Extensible Software Components
Matthias Zenger.
PhD Thesis, No. 2930, EPFL, Switzerland, March 2004.
[PDF Version]
|
|
|
A Nominal Theory of Objects with Dependent Types
Martin Odersky, Vincent Cremet, Christine Röckl, Matthias Zenger.
European Conference on Object-Oriented Programming, Darmstadt, Germany, July 2003.
© Springer-Verlag (LNCS series).
Workshop on Foundations of Object-Oriented Languages, New Orleans, January 2003.
Technical Report IC/2002/070.
[PDF Conference]
[PDF Workshop]
[PDF Technical Report]
|
|
|
Evolving Software with Extensible Modules
Matthias Zenger.
International Workshop on Unanticipated Software Evolution,
Málaga, Spain, June 2002.
Extended version accepted for publication in Software Maintenance and Evolution: Research and Practice
(Special Issue on Unanticipated Software Evolution).
[PDF Workshop]
[PDF Journal]
|
|
|
Type-Safe Prototype-Based Component Evolution
Matthias Zenger.
European Conference on Object-Oriented Programming, Málaga, Spain, June 2002.
© Springer-Verlag (LNCS series).
Technical Report IC/2002/014, EPFL, April 2002.
[PDF Conference]
[PDF Technical Report]
|
|
4 Implementation
|
|
You can download a beta version of the Keris compiler KeCo together with
the extensible Java compiler JaCo here:
The Keris compiler is implemented as an extension of the extensible
Java compiler JaCo (a reimplementation of the compiler available
here). Both, JaCo and
its extension KeCo are implemented in Keris. The source code for both
systems is available for download. It consists of approximately 55000
lines of code split up into 120 source files occupying 3.2MB.
Jakarta Ant is required for
executing the build script which bootstraps the compiler.
Keris is a conservative extension of Java 2. Keris modules are compiled to
standard Java classfiles. The execution of Keris modules does not require a
special runtime system, nor does it rely on a custom class-loader. For running
the compiler or for executing Keris modules, only a Java Runtime Environment
of at least version 1.3 is required.
|
5 About the Name Keris
|
|
A Keris is a double edged dagger originating
in the Javanese culture. It was considered a magical weapon, filled with
great spiritual power. Today it is an object of reverence and respect,
symbolizing strength and safety. You can read more about it
here.
|
6 Contact
|
|
Please contact
Matthias Zenger by
e-mail
for comments or further questions.
|
|
|