Post on 25-Apr-2018
transcript
Eclipse Command Language
Bartosz Czerwiński
bczerwinski@luxoft.com
Cracow, Poland
Eclipse Day 2012, September 13
2
Agenda
DSL
Scripting in Eclipse
ECL
–Core Concepts
–Architecture
–Applicability
–Future
Live Demo
Eclipse Command Language
14 September 2012
3
DSL
14 September 2012
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
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
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
7
ECL
14 September 2012
8
Eclipse Command Language
Eclipse Command Language
14 September 2012
echo „Hello World”
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
10
Core concepts
Model Driven Engineering
Functional Programming
REST
SOA
TCL
Microsoft® PowerShell™
Unix pipes
Eclipse Command Language
14 September 2012
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
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
13
Scriptlet c.d.
Domain Model
Distributed communication
Eclipse Command Language
14 September 2012
S
S
S
S
S TCP/IP
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
15
Demo 1
14 September 2012
16
Telnet Console
Core features
Interacting remotely with Eclipse UI
Eclipse Command Language
14 September 2012
17
Demo 2
14 September 2012
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
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”
20
Thank you!
14 September 2012
bczerwinski@luxoft.com
Special thanks to Andrey Platov and Ivan Inozemtsev
from Xored Software Inc.
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