eclipse command languagewiki.eclipse.org/images/2/21/edkrk2012_ecl.pdf · 2 agenda dsl scripting in...

21
Eclipse Command Language Bartosz Czerwiński [email protected] Cracow, Poland Eclipse Day 2012, September 13

Upload: ngotu

Post on 25-Apr-2018

246 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

Eclipse Command Language

Bartosz Czerwiński

[email protected]

Cracow, Poland

Eclipse Day 2012, September 13

Page 2: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

2

Agenda

DSL

Scripting in Eclipse

ECL

–Core Concepts

–Architecture

–Applicability

–Future

Live Demo

Eclipse Command Language

14 September 2012

Page 3: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

3

DSL

14 September 2012

Page 4: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

4

Domain Specific Language

Most languages are general purpouse languages

Language Oriented Programming *

Domain-Specific Language (noun): a computer programming language of limited expressiveness focused on a particular domain *

Why do we need DSLs?

* Martin Fowler

Eclipse Command Language

14 September 2012

Page 5: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

5

Types of DSLs

Internal (Embedded) – a particular idiom of writing a code in a host language

– Fluent Interfaces (Method Chaining)

– Flexible Syntax

–Method Missing

– Reflection (Annotations)

External – a separate language or a set of resources that facilitate the way of how a user is interacting with its environment within a particular domain

Eclipse Command Language

14 September 2012

Page 6: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

6

Scripting in Eclipse Platform

EclipseShell

– http://eclipse-shell.sourceforge.net/

Eclipse Monkey

– Task automation and scripting, API exploration

– Based on Groovy Monkey Project

– http://www.eclipse.org/proposals/eclipse-monkey/

Eclipse Glimmer

– JRuby DSL for developing user interfaces

– http://www.eclipse.org/proposals/glimmer/

Eclipse Command Language

14 September 2012

Page 7: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

7

ECL

14 September 2012

Page 8: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

8

Eclipse Command Language

Eclipse Command Language

14 September 2012

echo „Hello World”

Page 9: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

9

Eclipse Command Language

Scripting and Automation Framework

Easily Extensible & Flexible

Command-oriented

Distributed

Q7 Platform scripting language

Entirely open-source

Introduced by Xored Software at EclipseCon 2008

Eclipse Command Language

14 September 2012

Page 10: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

10

Core concepts

Model Driven Engineering

Functional Programming

REST

SOA

TCL

Microsoft® PowerShell™

Unix pipes

Eclipse Command Language

14 September 2012

Page 11: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

11

Eclipse Modeling Framework Meta description of domain-specific model

Commands

Pipes

Script-lets

Eclipse Extension Points

Eclipse Command Language

What’s under the hood?

Actual implementation of domain-specific logic

Provide means of communication between commands

Abstraction layer above commands, pipes (DSL specific)

Effectively associate Scriptlets with commands

14 September 2012

Page 12: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

12

Scriptlet

An independent unit (Actor)

Stateless

Pipes are (conceptually) immutable

Eclipse Command Language

14 September 2012

list-plugins sort-by EMF Objects

Scriptlet

ListPluginsService SortByService

Command

Pipe

Eclip

se

Exte

nsio

n P

oin

ts

Page 13: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

13

Scriptlet c.d.

Domain Model

Distributed communication

Eclipse Command Language

14 September 2012

S

S

S

S

S TCP/IP

Page 14: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

14

Desktop Applications Distributed Systems Web Applications

Eclipse Command Language

Applicability

Scripting & Automation

Instrumentation

Productivity

Issue Tracking

Issue Investigation

DSL Toolkits

Scripting & Automation

Mash-ups

Scripting & Automation

Remote Control

Remote Support

DSL Admin Toolkits

14 September 2012

Page 15: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

15

Demo 1

14 September 2012

Page 16: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

16

Telnet Console

Core features

Interacting remotely with Eclipse UI

Eclipse Command Language

14 September 2012

Page 17: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

17

Demo 2

14 September 2012

Page 18: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

18

Q7

Functional and UI testing platform

Handcrafted for Eclipse

Runtime Intelligence

State Management

Utilizes ECL as its core scripting language

Eclipse Command Language

14 September 2012

Page 19: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

19

Future

Comprehensive DSL orchestration

Truly distributed

Code Injection

ECL core in other languages (Python, Scala, Ruby, ...) and their interoperability

Eclipse Command Language

14 September 2012

... | get-dom-nodes „a” | foreach js:{set-attr target „_top”}

... | get-list | script python:{sorted( $_, key=itemgetter(1) )}

get-data-sets | host1:remove-duplicates \ | host2:get-graphviz-layout twopi

get-data-set calls | get-node –query „self.duration < 13”

Page 20: Eclipse Command Languagewiki.eclipse.org/images/2/21/EDKRK2012_ECL.pdf · 2 Agenda DSL Scripting in Eclipse ECL –Core Concepts –Architecture –Applicability –Future Live Demo

20

Thank you!

14 September 2012

[email protected]

Special thanks to Andrey Platov and Ivan Inozemtsev

from Xored Software Inc.