Cloud Development with Dirigible in the Eyes of a Java-saurus
Talk given at EclipseCon NA 2016 (https://www.eclipsecon.org/na2016/session/cloud-development-dirigible-eyes-java-saurus) and Java2Days 2016 (http://2016.java2days.com/agenda)
In this session we show how development of cloud applications and services with Dirigible looks like - in the eyes of a hard-core veteran Java guy. We draw some analogies to the Java (EE) development model and also explore how the two models differ. We look at which Dirigible concepts look smarter and could ease development of cloud applications and increase productivity, and in which aspects Java is still stronger and continues to strengthen its positions. At the end of the day, hopefully you're able to acknowledge that the wise combination of both approaches can lead to better software and business outcomes.
What is Dirigible?
Part of Eclipse Cloud Development (ECD)
Cloud development platform for dynamic
Provides both development tools and
What Can You Do with It?
Flows & Jobs
Monitoring & Logs
What Can You Do with It?
End-to-end coverage for Vertical Scenarios
Built for change
Custom code/extensions tends to overgrow original
Business need for easy and frequent
The Ultimate Goal
Enable the shortest development turnaround time
In-system programming model
In-System Programming Model
Working on a live system
Access to live data
Immediate changes effect
Separate dev (IDE) and runtime (Server)
Explicit deploy step
Rapid Application Development
Templates, wizards, reusable artifacts
Enforcing best practices
Few good examples in this area – e.g. JBoss Forge
Predefined objects or platform services wrappers
Extensible set e.g. based on underlying cloud platform
@Inject, @Resource, @EJB …
Application Life-Cycle Management
FS-like repository for user workspaces, project
Easy export + import into another running instance
Import = deploy, export = ?
No silver bullet
Dirigible leverages non-strict dependencies a.k.a.
“global installs” by using CommonJS
Strict dependency management during compilation
Non-strict during runtime (excluding OSGi)
First-class project citizens
Bilateral JSON-formatted declarations
No strict contract for the actual interface types (name-
plugin.xml, META-INF/services, WSDL
Cons: changing contracts is usually slow
Dirigible relies on the underlying application server's
capabilities for this task
Resource/roles configuration in JSON format
Security constraints in annotations/web.xml
Microservices vs. Monoliths
It’s your choice!
Identical instances can host different apps/services
which can be scaled out separately but still operated
Similar – e.g. Tomcat server(s), uberjars, MicroProfile…
Dirigible leverages debugging support in Rhino
Simple callbacks to debug “client”
Results propagated to RAP-based UI
Sophisticated tools, suspending the thread, etc.
Mobile-friendly IDE: develop from mobile for mobile
Dirigible platform runs on standard Java EE stack – e.g.
Utilizes all benefits of such a powerful and mature
Adds dynamic alteration capabilities – extremely
valuable for business services customization/extension
Java (EE) for core/system services +
useful and productive combination