dsls for java developers

45
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

Upload: jan-koehnlein

Post on 12-May-2015

3.564 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: DSLs for Java Developers

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

Page 2: DSLs for Java Developers

DSLS FOR JAVA DEVELOPERS Sebastian Zarnekow - Jan Köhnlein

(c) itemis - Licensed under EPL

Mittwoch, 28. März 12

Page 3: DSLs for Java Developers

@ 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

Page 4: DSLs for Java Developers

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

Page 5: DSLs for Java Developers

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

Page 6: DSLs for Java Developers

DSLs for Java Developers?

Mittwoch, 28. März 12

Page 7: DSLs for Java Developers

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

Page 8: DSLs for Java Developers

JavaDSL

DSLs for Java Developers?

Mittwoch, 28. März 12

Page 9: DSLs for Java Developers

JavaDSL

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

DSLs for Java Developers?

Mittwoch, 28. März 12

Page 10: DSLs for Java Developers

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

Page 11: DSLs for Java Developers

DSL

AST

Mittwoch, 28. März 12

Page 12: DSLs for Java Developers

DSL

.classFileAST

.javaFile

Mittwoch, 28. März 12

Page 13: DSLs for Java Developers

DSL

.classFileAST

Type Model

.javaFile

Mittwoch, 28. März 12

Page 14: DSLs for Java Developers

DSL

.classFileAST

Type Model

.javaFile

(point to)

Mittwoch, 28. März 12

Page 15: DSLs for Java Developers

DSL

.classFileAST

Type Model

.javaFile

Infrastructure

(point to)

Mittwoch, 28. März 12

Page 16: DSLs for Java Developers

DSL

.classFileAST

Type Model

.javaFile

Infrastructure

(point to)

for

Mittwoch, 28. März 12

Page 17: DSLs for Java Developers

DSL

.classFileAST

.javaFile

(point to)

Mittwoch, 28. März 12

Page 18: DSLs for Java Developers

DSL

.classFile

AST

.javaFile

Mittwoch, 28. März 12

Page 19: DSLs for Java Developers

.classFile

Inferred Java Types

.javaFile

DSL

AST

Mittwoch, 28. März 12

Page 20: DSLs for Java Developers

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

Page 21: DSLs for Java Developers

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

Page 22: DSLs for Java Developers

Inferred Java Types

DSL

.classFile

.javaFile

AST

Mittwoch, 28. März 12

Page 23: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 24: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 25: DSLs for Java Developers

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

Page 26: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 27: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

EXERCISE #1

Mittwoch, 28. März 12

Page 28: DSLs for Java Developers

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

Page 29: DSLs for Java Developers

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

Page 30: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 31: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

EXERCISE #2

Mittwoch, 28. März 12

Page 32: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

import java.util.*

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

EXERCISE #2

Mittwoch, 28. März 12

Page 33: DSLs for Java Developers

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

Page 34: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 35: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

EXERCISE #3

Mittwoch, 28. März 12

Page 36: DSLs for Java Developers

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

Page 37: DSLs for Java Developers

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

Page 38: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 39: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

EXERCISE #4

Mittwoch, 28. März 12

Page 40: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Map your DSL to Java!

EXERCISE #4

Mittwoch, 28. März 12

Page 41: DSLs for Java Developers

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

Page 42: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

Mittwoch, 28. März 12

Page 43: DSLs for Java Developers

DSL .javaFile

.classFile

.javaFile

EXERCISE #5

Mittwoch, 28. März 12

Page 44: DSLs for Java Developers

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

Page 45: DSLs for Java Developers

Mittwoch, 28. März 12