Dejay is a dialect of Java that simplifies the development of distributed software applications.
Category Archives: JVM Language
ArchJava
Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. ArchJava is an extension to Java that seamlessly unifies software architecture with implementation, ensuring that the implementation conforms to architectural constraints.
Gilgul
Gilgul is an extension of Java that strictly separates the notions of reference and comparison that are traditionally subsumed in the concept of object identity. This allows for the introduction of new operations that open up new degrees of flexibility during runtime by providing means for unanticipated software evolution. For example, Gilgul supports dynamic replacement of objects without the need to explicitly deal with existing references.
Javassist
Javassist (Java programming assistant) is a load-time reflective system for Java. It is a class library for editing bytecodes in Java; it enables Java programs to define a new class at runtime and to modify a class file when the JVM loads it. Unlike other similar systems, Javassist provides source-level abstraction; programmers can modify a class file without detailed knowledge of the Java bytecode.
Jiazzi
Jiazzi adds support for large-scale component programming in Java. Components in Jiazzi contain, import, and export Java classes and Java’s in-language support for inheritance can be used across component boundaries. The current implementation integrates into Java using a linker, which manipulates components, and a stub generator, which allows Jiazzi to be used with normal Java source compilers. JJava code for a component is written using the normal Java language and a separate linking language is used to manipulate components.
JMatch
The JMatch language extends Java with support for abstract iterable pattern matching: a mechanism for pattern matching that is compatible with the data abstraction features of Java and also makes iteration abstractions convenient to use and to implement. JMatch provides abstract pattern matching; patterns are not tied to algebraic data constructors as in ML. A single JMatch method may be used in several modes that may share a common implementation as a boolean formula. JMatch provides modal abstraction that simplifies the specification and implementation of abstract data types. JMatch also makes the specification, implementation, and use of iteration abstractions convenient, by automatically finding multiple solutions to a formula or pattern.
JEX
JEX (Java Extension) is a programming language based upon Java with built-in extensibility. JEX is a redefinition of Java using an XML syntax. This allows programmers to extend their favorite language. It also simplifies compilers, IDEs and code generators. With JEX, a project is an XML document describing the various libraries, classes, methods, etc. JEX provides a set of XSLT transformations to generate the Java class files following the JVM specification.
Jam
Jam is an extension of the Java language supporting mixins, that is parametric heir classes. A mixin declaration in Jam is similar to a Java heir class declaration, apart that it does not extend a fixed parent class, but simply specifies the set of fields and methods a generic parent should provide. In this way, the same mixin can be instantiated on many parent classes, producing different heirs, thus avoiding code duplication and largely improving modularity and reuse.
Kanaputs
Kanaputs is an interpreter for Java. With Kanaputs you can use Java as an interpreted language: no more compilation, each instruction is executed when you write it. Kanaputs allows to create Java objects and call methods on them. The grammar of the Kanaputs language is very close to the Java grammar. One big difference is that any variable handled by Kanaputs is type-less. There is no variable declaration nor type casting needed. Depending on the variable value, and where it is used, Kanaputs chooses the best internal Java basic type and tries the most appropriate type castings. When a variable handles a Java object, its type is the class of the Java object. Another key feature of Kanaputs is the reactivity. If the variable ‘c’ was defined like this c = a + b; and if the reactivity of ‘c’ is set (c.reactive = true;), each time the value of ‘a’ or ‘b’ changes then the value of ‘c’ is updated as the result of the addition.
JAsCo
JAsCo is an aspect-oriented programming (AOP or AOSD) language originally tailored for the component-based field. It tries to stay as close as possible to the original Java syntax and concepts and introduces two new concepts: aspect beans and connectors.