![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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/1.jpg)
Eclipse Command Language
Bartosz Czerwiński
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/20.jpg)
20
Thank you!
14 September 2012
Special thanks to Andrey Platov and Ivan Inozemtsev
from Xored Software Inc.
![Page 21: 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](https://reader034.vdocuments.site/reader034/viewer/2022052608/5ae06cd27f8b9afd1a8dedb5/html5/thumbnails/21.jpg)
21
Resources
Sources and Extenstions
– https://github.com/xored/ecl/
– https://github.com/xored/q7.extensions.ecl
API (http://download.xored.com/q7/docs/ecl-api/1.2.4.html)
New Command Guide (http://help.xored.com/display/ECL/New+Command+Guide)
Eclipse Command Language
14 September 2012