JAVA DSLs MIT VOLLER BANDBREITE. Sebastian Zarnekow itemis AG

Similar documents
Grab one of the USB keys. Choose File > New > Example... > Eclipse Con Xtext Tutorial

Xtext Documentation. September 26, 2014

Rich Web Applications in Server-side Java without Plug-ins or JavaScript

VClipse Xtext-based IDE for the SAP Variant Configurator

Textual Modeling Languages

Quick Guide For Using Spring Roo and Spring Security In Rapid Web Application Development:

Eclipse. Software Engineering with an Integrated Development Environment (IDE) Markus Scheidgen

e(fx)clipse - JavaFX Tooling

YouTrack MPS case study

JSR-303 Bean Validation

Programmers rejoice: QML makes business people understand. Qt Developer Days 2014 Hinrich Specht 2. September 2014 Folie 1

Xbase: Implementing Domain-Specific Languages for Java

How to Improve Database Connectivity With the Data Tools Platform. John Graham (Sybase Data Tooling) Brian Payton (IBM Information Management)

Accelerating the Creation of Customized, Language-Specific IDEs in Eclipse

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration. Kai Wähner

CSE 308. Coding Conventions. Reference

Implementation and Integration of a Domain Specific Language with oaw and Xtext

Web Development with the Eclipse Platform

Jos Warmer, Independent

A Model-Driven Approach for the Development of an IDE for Spacecraft On-Board Software

Model-Driven Development - From Frontend to Code

Using DSLs for Developing Enterprise Systems

Java Application Development using Eclipse. Jezz Kelway Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom

DSL Contest - Evaluation and Benchmarking of DSL Technologies. Kim David Hagedorn, Kamil Erhard Advisor: Tom Dinkelaker

Introduction to Generative Software Development

Introduction to Object-Oriented Programming

Eclipse for Smalltalkers

Application Testing Suite: A fully Java-based software testing platform for testing Oracle E-Business Suite and other web applications

Teaching Pragmatic Model-Driven Software Development

Model-driven Testing of RESTful APIs

Designing, Implementing and Using Domain-Specific Languages

X-ABNF: Name-Bindings of ABNF specifications for custom code generation

Concepts for the model-driven generation of graphical editors in Eclipse by using the Graphiti framework

VICCI. The Eclipse Modeling Framework (EMF) A Practical Introduction and Technology Overview. Dipl.-Inf. Christoph Seidl

Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment

Gajaba: Dynamic Rule Based Load Balancing Framework

Generative Software Product Line Development using Variability-Aware Design Patterns

Modeling Cloud Messaging with a Domain-Specific Modeling Language

Embarcadero Rapid SQL Developer 2.0 User Guide

Implementing a Bidirectional Model Transformation Language as an Internal DSL in Scala

Overview of Generative Software Development

Foundations of Model-Driven Software Engineering

Continuous Integration

Static Analyzers. Context. Learning Objectives

Metamodels and Modeling Multiple Kinds of Information Systems

Eclipse Rich Client Platform. Kai Tödter Karsten Becker et al. Organized by:

Integrate your tools to help integrate your stakeholders

Roles in Software Development using Domain Specific Modelling Languages

Modern PL/SQL Code Checking and Dependency Analysis

SSRS Reporting Using Report Builder 3.0. By Laura Rogers Senior SharePoint Consultant Rackspace Hosting

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead

Efficient Editor Generation for Compositional DSLs in Eclipse

Compilation 2012 Domain-Specific Languages and Syntax Extensions

GContracts Programming by Contract with Groovy. Andre Steingress

Embracing Eclipse Orion

Install Java Development Kit (JDK) 1.8

DSL Design. Model Transformations. Model Transformations. Language g Implementation Strategies

On General-purpose Textual Modeling Languages. On General-purpose Textual Modeling Languages

CommentTemplate: A Lightweight Code Generator for Java built with Eclipse Modeling Technology

Workshop 2: Empowering a Self-Service Organization through Forms & Workflows Jennifer Ann Mason

Course 4 27 October Adrian Iftene adiftene@info.uaic.ro

ADT: Bug Tracker. Version 1.0

JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems

Today. Generic Language g Technology (2IS15)

Dynamic website development using the Grails Platform. Joshua Davis Senior Architect Cognizant Technology Solutions

T-Mobile Umsetzung und Einsatz

Yet Another DSL for Cross-platforms Mobile Development

DSLs to fully generate Business Applications Daniel Stieger, Matthias Farwick, Berthold Agreiter, Wolfgang Messner

Preparing for Automated Derivation of Products in a Software Product Line

EAI and Xtext DSLs. Dietmar Stoll (itemis), André Lehner (Zürcher Kantonalbank) XtextCon Kiel, May 20, 2015

White Paper. An Introduction to Fabasoft app.ducx Spring Release

The Java EE 6 Platform. Alexis Moussine-Pouchkine GlassFish Team

22b.1. Software Platforms and Software Ecosystems. 22b Software Ecosystems. Plattform Leadership. Platforms and Ecosystems. Prof. Dr. U.

Model-driven Development for a Treasure Hunt Android application

An Approach for the Systematic Development of Domain-Specific Languages

PULP Scription: A DSL for Mobile HTML5 Game Applications

Adobe ColdFusion Builder

Cedalion A Language Oriented Programming Language (Extended Abstract)

Eindhoven University of Technology

How to Integrate Domain-Specific Languages into the Game Development Process

Smooks Dev Tools Reference Guide. Version: GA

OpenCV on Android Platforms

A DOMAIN SPECIFIC LANGUAGE FOR THE AUTOMATIC GENERATION OF PARSER CLASSES FOR TEXT PROTOCOLS

Integrating Prose as First-Class Citizens with Models and Code

SSELab: A Plug-In-Based Framework for Web-Based Project Portals

Embedded Software Development with MPS

10CS73:Web Programming

Refactoring (in) Eclipse

Implementing reusable software components for SNOMED CT diagram and expression concept representations

Mbeddr and Software Documentation

ORACLE APPLICATION EXPRESS 5.0

An approach for the systematic development of domain-specific languages

JastEMF: Reference Attribute Grammars for EMF-based DSLs

Development of Tool Extensions with MOFLON

Developing Web Services with Eclipse and Open Source. Claire Rogers Developer Resources and Partner Enablement, HP February, 2004

Model-Driven Development of a Biosignal Analysis Framework: Benefits and Impacts on Processes. Nikolas Hofmann

Quality Assurance of Software Models within Eclipse using Java and OCL

Metamorphic Testing and DSL for Test Cases & Checker Generators

Building Web Applications, Servlets, JSP and JDBC

How To Write A Free Software Program In Java.Org (For Free)

Transcription:

JAVA DSLs MIT VOLLER BANDBREITE Sebastian Zarnekow itemis AG

DOMAIN SPECIFIC LANGUAGE

DOMAIN SPECIFIC LANGUAGE A Domain-Specific Language is an executable programming language which is tailored and designed to solve a particular class of problems very well.

com.springsource.roo.pizzashop roo> entity --class ~.domain.topping --testautomatically ~.domain.topping roo> field string --fieldname name --notnull --sizemin 2 ~.domain.topping roo> entity --class ~.domain.base --testautomatically ~.domain.base roo> field string --fieldname name --notnull --sizemin 2 ~.domain.base roo> entity --class ~.domain.pizza --testautomatically ~.domain.pizza roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizza roo> field number --fieldname price --type java.lang.float ~.domain.pizza roo> field set --fieldname toppings --type ~.domain.topping ~.domain.pizza roo> field reference --fieldname base --type ~.domain.base ~.domain.pizza roo> entity --class ~.domain.pizzaorder --testautomatically ~.domain.pizzaorder roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizzaorder roo> field string --fieldname address --sizemax 30 ~.domain.pizzaorder roo> field number --fieldname total --type java.lang.float ~.domain.pizzaorder roo> field date --fieldname deliverydate --type java.util.date ~.domain.pizzaorder roo> field set --fieldname pizzas --type ~.domain.pizza

com.springsource.roo.pizzashop roo> entity --class ~.domain.topping --testautomatically ~.domain.topping roo> field string --fieldname name --notnull --sizemin 2 ~.domain.topping roo> entity --class ~.domain.base --testautomatically ~.domain.base roo> field string --fieldname name --notnull --sizemin 2 ~.domain.base roo> entity --class ~.domain.pizza --testautomatically ~.domain.pizza roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizza roo> field number --fieldname price --type java.lang.float ~.domain.pizza roo> field set --fieldname toppings --type ~.domain.topping ~.domain.pizza roo> field reference --fieldname base --type ~.domain.base ~.domain.pizza roo> entity --class ~.domain.pizzaorder --testautomatically ~.domain.pizzaorder roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizzaorder roo> field string --fieldname address --sizemax 30 ~.domain.pizzaorder roo> field number --fieldname total --type java.lang.float ~.domain.pizzaorder roo> field date --fieldname deliverydate --type java.util.date ~.domain.pizzaorder roo> field set --fieldname pizzas --type ~.domain.pizza

com.springsource.roo.pizzashop roo> entity --class ~.domain.topping --testautomatically ~.domain.topping roo> field string --fieldname name --notnull --sizemin 2 ~.domain.topping roo> entity --class ~.domain.base --testautomatically ~.domain.base roo> field string --fieldname name --notnull --sizemin 2 ~.domain.base roo> entity --class ~.domain.pizza --testautomatically ~.domain.pizza roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizza roo> field number --fieldname price --type java.lang.float ~.domain.pizza roo> field set --fieldname toppings --type ~.domain.topping ~.domain.pizza roo> field reference --fieldname base --type ~.domain.base ~.domain.pizza roo> entity --class ~.domain.pizzaorder --testautomatically ~.domain.pizzaorder roo> field string --fieldname name --notnull --sizemin 2 ~.domain.pizzaorder roo> field string --fieldname address --sizemax 30 ~.domain.pizzaorder roo> field number --fieldname total --type java.lang.float ~.domain.pizzaorder roo> field date --fieldname deliverydate --type java.util.date ~.domain.pizzaorder roo> field set --fieldname pizzas --type ~.domain.pizza

DESTILLIERT com.springsource.roo.pizzashop.domain { entity Topping { string name notnull sizemin 2 } entity Base { string name notnull sizemin 2 } entity Pizza { string name notnull sizemin 2 number price set Topping toppings reference Base base } entity PizzaOrder { string name notnull sizemin 2 string address sizemax 30 number total date deliverydate set Pizza pizzas } }

DESTILLIERT com.springsource.roo.pizzashop.domain { entity Topping { string name } entity Base { string name } entity Pizza { string name number price set Topping toppings reference Base base } entity PizzaOrder { string name string address nullable sizemax 30 number total date deliverydate set Pizza pizzas } }

DESTILLIERT com.springsource.roo.pizzashop.domain { entity Topping { string name } entity Base { string name } entity Pizza { string name number price set Topping toppings reference Base base } entity PizzaOrder { string name string address nullable sizemax 30 number total date deliverydate set Pizza pizzas } }

Eclipse

Eclipse Sprache Definieren

Eclipse Sprache Definieren IDE Generieren

Eclipse Sprache Definieren IDE Generieren Codieren

IDE Framework

(DOMAIN SPECIFIC ) LANGUAGE FRAMEWORK

Eclipse Platform (JFace Text, etc.)

Java Development Tools (JDT) Eclipse Platform (JFace Text, etc.)

Java Development Tools (JDT) Eclipse Platform (JFace Text, etc.)

Java Development Tools (JDT) Eclipse Platform (JFace Text, etc.) Eclipse Modeling Framework (EMF)

Java Development Tools (JDT) Eclipse Platform (JFace Text, etc.) Antlr Parser Generator Eclipse Modeling Framework (EMF)

Advanced Language-Specific Editing Features by Default Refactoring Template Proposals Go To Declaration Global Indexing Content Assist Quick Fixes Outline View Find References Incremental Builders Validation Syntax Coloring Wizards Rich Hovers Auto Editing Code Folding Bracket Matching

DSLs für Java Entwickler?

DSLs für Java Entwickler? import java.util.* package hello.world { entity Person { firstname: String lastname: String friends: List<Person> op getfullname() : String { DEMO firstname + ' ' + lastname } } } op sortedfriends() : List<Person> { friends.sortby [p p.fullname] }

DSLs für Java Entwickler! Java Typsystem (Arrays, Generics,...) Java Bibliotheken, Frameworks und Code DSL Java DSL Code in die Java Applikation integrieren DSL auf JVM ausführen

DSL AST

.class AST DSL.java

.class AST DSL Typ-Modell.java

.class AST DSL Typ-Modell (referenziert).java

.class AST DSL Typ-Modell (referenziert).java Infrastruktur

.class AST DSL Typ-Modell (referenziert).java für Infrastruktur

.class AST DSL (referenziert).java

.class AST DSL.java

.class AST Abgeleitete Java Klassen DSL.java

.class AST Abgeleitete Java Klassen DSL.java

.class AST Abgeleitete Java Klassen DSL.java

.class AST Abgeleitete Java Klassen DSL.java

.class DSL.java.java

.class DSL.java.java

7 AUF EINEN STREICH Scripting Language DSL für MongoDB Http Routing Definition Templates Language DSL für Google Guice Build Language Tortoise

DEMO

WRAP UP

WRAP UP

WRAP UP www.xtext.org Seit 03.09.2013 - Xtext 2.4.3