Demanding First-Class Equality for Domain Specific Aspect...

27
Arik Hadas Dept. of Mathematics and Computer Science The Open University of Israel Joint Work With: David H. Lorenz Demanding First-Class Equality for Domain Specific Aspect Languages

Transcript of Demanding First-Class Equality for Domain Specific Aspect...

Arik HadasDept. of Mathematics and Computer Science

The Open University of Israel

Joint Work With:

David H. Lorenz

Demanding First-Class Equality for Domain Specific Aspect Languages

Domain Specific Aspect Languages

DSLs DSALs AOP

KALA

COOL

RIDL

AspectGrid

Racer

AO4SQL

DSALs are Second-class

● Second-class DSLs– Not as easy to develop and to use

● Second-class AOP languages– Incompatible with AOP tools

Background

Language workbenches: The killer-app for domain specific languages

abc: an extensible AspectJ compiler

2005

DSAL

DSL

Background

Language workbenches: The killer-app for domain specific languages

abc: an extensible AspectJ compiler

DSAL

DSL

2005

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects, AWESOME

abc: an extensible AspectJ compiler

Since 2005

DSAL

DSL

2005

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects, AWESOME

abc: an extensible AspectJ compiler

Since 2005

DSAL

DSL

2005

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects, AWESOME

abc: an extensible AspectJ compiler

Since 2005

DSAL

DSL

But no workbench solution for DSALs

2005

Language Workbench (LW)

Language WorkbenchLanguage Workbench

javacjavac

DSL Code

Java

Bytecode

Language Workbench (LW)

Language WorkbenchLanguage Workbench

javacjavac

DSL Code

Java

Bytecode

Using LW for DSAL

Language WorkbenchLanguage Workbench

javacjavac

Java

Bytecode

NoAspects

DSL CodeDSAL Code

Using LW for DSAL

Language WorkbenchLanguage Workbench

javacjavac

Java

Bytecode

NoAspects

DSL CodeDSAL Code

LW for AspectJ

Language WorkbenchLanguage Workbench

DSAL Code

Java AspectJ

BytecodeWoven Bytecode

javac ajc

No Multiple DSALs

DSAL Complexity● Unlike DSL, DSAL tackles crosscutting

concerns

DSLs DSALs

Looking for a DSAL Workbench

Language Workbench

AOP Composition Framework

Tools for creation & usage of languages

Defining weaving semantics needed for DSALs

Looking for a DSAL Workbench

Language Workbench

AOP Composition Framework

Tools for creation & usage of languages

Defining weaving semantics needed for DSALs

Will a naive combination of the two be a proper solution?

Naive Combination of LW and CF

Language WorkbenchLanguage Workbench

DSAL Code

AspectJ

Woven Bytecode

ajc Composition Framework

First-class DSL

But Still Second-class AOP

Language WorkbenchLanguage Workbench

DSAL Code

AspectJ

Woven Bytecode

Composition Framework

Browsing

Debugging

Compiling

Traditional LW Architecture

Language WorkbenchLanguage Workbench

DSAL Code

AspectJ

Woven Bytecode

Composition Framework

Code Transformation

DSAL Workbench Architecture

Composition Framework Composition Framework

DSAL Code

Woven Bytecode

Language WorkbenchLanguage Workbench

AspectJ DSAL Code

First-class AOP

Code Transformation

DSAL Workbench Architecture

Composition Framework Composition Framework

DSAL Code

Woven Bytecode

Language WorkbenchLanguage Workbench

DSAL Code

StandaloneDSAL compiler

Can generate debugging & browsing information

First-class AOP

Code Transformation

Implementation

AWESOME*AWESOME*

DSAL Code

Woven Bytecode

SpoofaxSpoofax

DSAL Code

Code Transformation

Example: First Class COOL

DSAL “Bill of Rights”

•Freedom of Expression• Syntactic• Semantic

•Economic Freedom• Cost effective Implementation• Cost effective Usage

•Freedom of Assembly• DSL Interoperability

•Equality with domain­specific languages and AOP languages

Related Work

● Language Workbenches

– [Fowler, 2005] Language workbenches: The killer-app for domain specific languages.

– [Kats and Visser, 2005] The Spoofax language workbench: Rules for declarative specification of languages and IDEs.

– [Lorenz and Rosenan, 2011] Cedalion: A language for language oriented programming.

● AOP Composition Frameworks

– [Kojarski and Lorenz, 2005] Pluggable AOP: Designing aspect mechanisms for third-party composition.

– [Lorenz and Kojarski, 2007] Understanding aspect interaction, co-advising and foreign advising.

– [Kojarski and Lorenz, 2007] Awesome: An aspect co-weaving system for composing multiple aspect-oriented extensions.

Conclusion● A novel design for DSAL workbench that produces

first-class DSAL

– First-class DSL

– First-class AOP language● Prototype comprising Spoofax and AWESOME*

● Plug-in for COOL as a first-class DSAL

Arik Hadas and David H. LorenzDept. of Mathematics and Computer Science

The Open University of Israel

[email protected]

https://github.com/OpenUniversity

Thank You!