Upload
nedelcho-delchev
View
447
Download
1
Embed Size (px)
Citation preview
DIRIGIBLENedelcho Delchev (@delchevn)
EclipseCon EU 2015
Agenda
• Overview• Highlights• Driving Forces• Technical Look• Future Look• Recap
Overview
What is it?Dirigible is an Integrated Development Environment as a Service (IDEaaS) for dynamic applications. It provides both development tools and runtime environment.Dirigible is part of the Eclipse Cloud Development TLP (ECD), along with Orion, Che, Flux and CloudFoundry Tools.
ECD?
What can you do with it?Everything you need for your next generation cloud application:• Database management• Scripting services• Shell commands• Flows & Jobs• Web content• Wiki documents• Lifecycle management• Monitoring logs
Highlights
Building BlocksThree major pillars:• Repository• IDE• Runtime
Web IDEDirigible has a full-fledged Web IDE running entirely in a browser, hence doesn’t require any installation and configuration steps. Focused on JavaScript support client- and server-side.
Orion EditorEmbedded Orion editor is the default one for JavaScript and HTML5/CSS authoring. Dirigible’s injected API is integrated in code-completion as well.
http://www.dirigible.io/blogs/2015/10/28/blogs_dirigible_orion_editor.html
Standard Eclipse PluginsBy using single source paradigm of Eclipse RAP, it is possible ~90% of the functionality to run server-less in the standalone Eclipse IDE. In this way you can still use your favorite tools e.g. JDT, JSDT, eGit. Focused mainly on the Java services development.
http://www.dirigible.io/help/eclipse-rcp.html
Deployment OptionsDirigible is entirely modularized leveraging OSGi by Eclipse Equinox. It provides a few default options of packaging - Trial, All-In-One, Runtime and RCP Update Site with platform specific builds for SAP HANA Cloud Platform and Apache Tomcat (standalone or CloudFoundry or OpenShift).
http://www.dirigible.io/help/tomcat.html
Off-line OptionsThere are three options for off-line mode development using Dirigible:• Self-contained executable jar• Local instance deployed on Java Web container
such as Apache Tomcat• Native plugins in Eclipse
http://download.eclipse.org/dirigible/
Branding
http://www.dirigible.io/blogs/2015/10/28/blogs_dirigible_branding.html
Bring-Your-Own-LanguageIn case you want to use a language different than the built-in ones - JavaScript and Java, you can easily implement a bridge extension for JVM languages like Groovy, jRuby, Jython, Scala, etc.
http://www.dirigible.io/blogs/2015/10/21/blogs_dirigible_impl_sql_plugin.html
Usage?So far internally at SAP and very few customers and partners as well as a learning tool at universities and schools
Driving Forces
The Ultimate GoalDirigible promotes so called In-System Programming development model. It avoids the side-effects of a simulated (local) environment, gives access to the live data, ensures all the dependencies and integrations are on place and at the end results to the shortest development turn-around time ever.
Dynamic Applications• Built for change• Consist of atomic components• Promote REST/Web 2.0 patterns• Built on micro-services architecture• Cover vertical scenarios• Provide end-to-end completeness• Extensible and adaptable
http://www.dirigible.io/help/dynamic_applications.html
Vertical ScenariosEnd-to-end coverage with tools for vertical scenarios.
http://www.dirigible.io/blogs/2015/09/24/blogs_dirigible_tools_for_vertical_scenarios.html
Pull PrincipleIn fact, the absolute pull principle – we develop the toolkit in the way we ourselves need it and use it.
RAD Technics• Fast prototyping• Predefined templates• Wizards and specialized editors• Reusable artifacts• Enforce best-practices
Injected ServicesDirigible has a concepts of Injected Services and Execution Context. • Injected Services are predefined objects or
platform services wrappers, which are accessible directly during the script execution.
• The Context is a standard way to pass parameters throughout the process of separated modules.
It is possible to extend the set of Injected Services e.g. based on Cloud Platform in use.
http://www.dirigible.io/help/api.html
Content TransportAll the artifacts for a given project in Dirigible are stored in the underlying Repository component. It has an abstract File System like structure, hence it can be easily bundled and transported to another instance. There is a remote interface as well as CLI, which can be used for integration with the legacy transport management systems in your landscape.
Registry Content
New Instance
Zip archive via HTTPor Git clone
ScalingDirigible promotes architectural patterns proven in the cloud computing space. By wizards, templates and other RAD technics, it tries to enforce Web 2.0 paradigm and micro-services architecture. In case the application follows the best practices, it can be possible to scale horizontally afterwards on production landscape.
Technical Look
Create, Import or Clone a Project
Data Models
Inspect the Database state• Database Perspective has Database Viewer and
SQL Console for low level manipulations.
Generate a RESTful serviceOnce you have the data model in place, you can generate a CRUD service for it.
What is generated?Based on the database table definition, all server-side JavaScript artifacts are produced using predefined templates. After activation, you have a fully capable REST service exposing your data from the database layer as JSON content over HTTP.
Template
Metadata
Generator
REST service
JavaScript - Node.js or?Dirigible uses Mozilla Rhino.• Mature and stable framework• Supports CommonJS for dynamic loading of
modules• Built-in debugger with simple API• Possibility to invoke standard Java objects directly
Activate or Publish?• Activate copy the artifacts from the user’s
workspace to the sandbox for testing.• Publish copy the artifacts to the public registry
space.activate
publishWorkspac
e
Sandbox
Registry
Debugging the code?Dirigible provides a Debug perspective for the default language – JavaScript.
User InterfaceTo be complete for the entity management scenario, we added templates for pattern based user interface generation. Default technologies as of now:• Bootstrap + AngularJS• OpenUI5
Process declarations?In the context of Cloud Applications, usually it is required integrations with external 3-thd party services or just declarative description of consecutive calls. In Dirigible we semantically separated such services by adding: • Flows – simple context based routing in JSON • Jobs – asynchronous triggers with CRON
expressions in JSON
ExtensibilityThere is a generic extensibility concept in place. You can define extension points at the “packaged software” part, hence it is possible for others to introduce extensions to these extension points. There is no syntactical contract definition, it is bilateral.
SecurityThere is easy way to secure the endpoints of your services or user interfaces. You can choose from the set of predefined roles.It is possible to add more roles, if needed.
DocumentationTo make your application ready-to-use for your users it is not enough just to cover all the functional requirements. The documentation is considered as integral part of the application itself. The supported wiki formats are confluence, markdown, textile, tracwiki and twiki.
SCMGit is the SCM of choice for Dirigible. There is a simplified Git interaction support in the Web IDE. In case of more complex “merge” situations you can commit your changes in a new branch and continue with the fixes by using your favorite Git client or via the Terminal view.
Monitoring
Future Look
What is next?Some of the hot topics in discussion:• More widgets and enhancements in UI templates• Enhanced templates authoring• More integrations – no-SQL databases, messaging
busses• non-JVM Runtime implementations• More languages – groovy, ruby, python, DSLs, …• More form-based editors for major artifacts• WYSIWYG enhancements and binding support• Tutorials and courses• More samples and show-cases• Market place for reusable services• … your own deliveries
Worth to join?
?
Why to contribute? You have some Eclipse based plugins and you are
curious whether they can run in Dirigible environment? You are keen on using Web IDE based development, but
you miss important features? You are cloud platform provider and you want to see
your services as injected objects? You are in software business and want to boost the
productivity by developing new services in the cloud You are creator or a fan of a great programming language
and you want to integrate it as a scripting language? You are a teacher looking for an easy-to-use tool for your
courses … or you just know that to contribute to open source
projects is still considered cool by younger people
How to contribute?• Go to:https://github.com/eclipse/dirigible
clone, fork, make pull requests…
If in doubt, just contact us.
Recap
Key Takeaways• There is a project in Eclipse Foundation called
Dirigible• It provides development environment that can run
everywhere• It claims to provide everything you need as a
developer• It claims to provide fastest developer turn-around
time• It claims to promote the most powerful development
model• It enforces best-practices in your applications• It starts establishing ecosystem for business services
around it• It is built with care and love
References• http://www.dirigible.io• https://www.eclipse.org/dirigible/• https://github.com/eclipse/dirigible• http://www.dirigible.io/blogs.html• @dirigible_io• https://www.youtube.com/channel/UCY
nsiVQ0M9iQLqP5DXCLMBA/videos• http://scn.sap.com/docs/DOC-33139
(Topic:IDEaaS)
Thank You!