The language Jass (‘Java with assertions’) is an extension of Java by assertions. This concept is taken from Eiffel. It has been developed by Bertrand Meyer as part of the concept “design by contract” in order to develop correct software. For this purpose the assertions are checked during runtime. If they are violated, exceptions are triggered which can themselves be handled in the program.
Category Archives: JVM Language
Pizza
Poor Man’s Genericity for Java
Poor Man’s Genericity for Java is an implementation of parameterized classes (constrained parametric polymorphism) for Java. It is based on a “lowest common denominator” design that can be implemented easily on top of any existing Java compiler. We have implemented a fully working compiler that has been built by reusing Sun’s Java compiler almost without modifications: only the way in which source and byte-code files are loaded was changed to perform simple transformations on loaded files.
GJ
AspectJ
AspectJ is an aspect-oriented extension to Java designed to simplify the development and maintenance of a wide range of applications. AspectJ extends Java with aspects, which are a new kind of programming construct that facilitates the implementation of concerns that cross-cut a system.
PolyJ
PolyJ – Java with Parameterized Types is a portable compiler that accepts an extended version of the Java language. The PolyJ language includes support for generic programming in the form of parameterized types. Like some other proposals for adding genericity to Java, PolyJ provides constrained parametric polymorphism. Unlike some, it uses the constraint mechanism of where clauses, which is important because it provides flexibility when composing a program. PolyJ also allows all types to be used as parameters, even basic types like int. A powerful feature of PolyJ is that instantiation types and parameter types are first-class types that may be used wherever a type may be used — particularly, in safe run-time casts and with “instanceof”.
JavaParty
JavaParty is an extension of Java for transparent parallel and distributed programming with remote objects and object mobility. It can be pre-processed into regular Java plus RMI calls.
Modern Jass
Modern Jass implements a new concept to bring Design by Contract. to Java.. Basically, it uses Java 5 annotation to specify contracts, the Pluggable Annotation Processing API to validate contracts, and the Bytecode Instrumentation API to enforce contracts.
MultiJava
Jas
Jas is java bytecode assembler. Java bytecode can be generated either through a script which drives the assembler package, or directly accessing the assembler package from java. The assembler package is very simple, it attempts neither validation nor optimization of bytecode.