dsls for java developers

Post on 12-May-2015

3.564 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tutorial at EclipseCon 2012, Reston (VA)with Sebastian Zarnekow

TRANSCRIPT

How To Install 2.3M6?

• Grab one of the USB keys

• Install the Eclipse SDK for your platform

• Choose File > New > Example... > Eclipse Con 2012 - Xtext Tutorial

Mittwoch, 28. März 12

DSLS FOR JAVA DEVELOPERS Sebastian Zarnekow - Jan Köhnlein

(c) itemis - Licensed under EPL

Mittwoch, 28. März 12

@ ECLIPSECON 2012

Tomorrow

• DESAGN - A DSL for engineer-to-orderEsa Ryhänen and Martin Nilsson - ERules; AB Sandvik Coromant

• Domain Specific LanguagesSven Efftinge - itemis

• Spraying - a quick way to create GraphitisKarsten Thoms - itemis

• Xtext success story at GoogleAlex Ruiz - Google

• Bringing the power of Eclipse to Digital Hardware designersHendrik Eeckhaut - Sigasi

• A Fresh Look at Graphical EditingJan Köhnlein - itemis

Mittwoch, 28. März 12

EVEN MORE

Wednesday

• e(fx)clipse - Eclipse Tooling and Runtime for JavaFX Tom Schindl - bestsolution.at

• Program, thou shalt behave!Birgit Engelmann and Sebastian Benz - BMW Car IT

• Win Friends and Influence People... with DSLsVladimir Bacvanski and LloydMangnall - SciSpike; VHA, Inc.

• Xcore: Ecore Meets XtextEd Merks - itemis

Thursday

• Eclipse Xtend - A Language Made For Java DevelopersSven Efftinge - itemis

• Xtext - Best PracticesSebastian Zarnekow - itemis

Mittwoch, 28. März 12

meta

OUTLINE

Outline

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSLs for Java Developers?

Mittwoch, 28. März 12

DSLs for Java Developers?import java.util.*package hello.world { entity Person { firstName: String lastName: String friends: List<Person>

op getFullName() : String { firstName + ' ' + lastName } op sortedFriends() : List<Person> { friends.sortBy [p | p.fullName] } } }

Mittwoch, 28. März 12

JavaDSL

DSLs for Java Developers?

Mittwoch, 28. März 12

JavaDSL

• Use Java’s type system• Use Java libraries, frameworks and code

DSLs for Java Developers?

Mittwoch, 28. März 12

JavaDSL

• Use Java’s type system• Use Java libraries, frameworks and code

• Integrate DSL code into Java application• Execute DSL on JVM

DSLs for Java Developers?

Mittwoch, 28. März 12

DSL

AST

Mittwoch, 28. März 12

DSL

.classFileAST

.javaFile

Mittwoch, 28. März 12

DSL

.classFileAST

Type Model

.javaFile

Mittwoch, 28. März 12

DSL

.classFileAST

Type Model

.javaFile

(point to)

Mittwoch, 28. März 12

DSL

.classFileAST

Type Model

.javaFile

Infrastructure

(point to)

Mittwoch, 28. März 12

DSL

.classFileAST

Type Model

.javaFile

Infrastructure

(point to)

for

Mittwoch, 28. März 12

DSL

.classFileAST

.javaFile

(point to)

Mittwoch, 28. März 12

DSL

.classFile

AST

.javaFile

Mittwoch, 28. März 12

.classFile

Inferred Java Types

.javaFile

DSL

AST

Mittwoch, 28. März 12

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

OUTLINE

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

EXERCISE #1

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

import types.*

package tutorial { entity Person { firstName: String lastName: String } }

package types { type String}

EXERCISE #1

Mittwoch, 28. März 12

OUTLINE

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

EXERCISE #2

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

import java.util.*

package tutorial { entity Person { firstName: String lastName: String birthday: Date } }

EXERCISE #2

Mittwoch, 28. März 12

OUTLINE

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

EXERCISE #3

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

•Get familiar with the JVM model•Learn about the JvmTypesBuilder•Use Xtend to create a JVM model

EXERCISE #3

Mittwoch, 28. März 12

OUTLINE

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

EXERCISE #4

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Map your DSL to Java!

EXERCISE #4

Mittwoch, 28. März 12

OUTLINE

(1) Create a DSL using Xtext

(2) Make your DSL refer to Java

(3) Get acquainted with the JVM model

(4) Map your DSL to Java using Xtend

(5) Add expressions to your DSL

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

EXERCISE #5

Mittwoch, 28. März 12

DSL .javaFile

.classFile

.javaFile

import java.util.*package hello.world { entity Person { firstName: String lastName: String friends: List<Person>

op getFullName() : String { firstName + ' ' + lastName } op sortedFriends() : List<Person> { friends.sortBy [p | p.fullName] } } }

EXERCISE #5

Mittwoch, 28. März 12

Mittwoch, 28. März 12

top related