Cloud Development with Dirigible in the Eyes of a Java- saurus Vladimir Pavlov // SAP
Cloud Development with Dirigible in the Eyes of a Java-saurus
Vladimir Pavlov // SAP
Who Am I?
Development Architect 15+ years of experience with
enterprise Java Java EE fan & EG alumnus @bgjug member Conference speaker and mentor
@vladopavlov
2
What Am I Going to Talk About?
What is Dirigible Goals and driving forces Technical look and comparisons Demo Q & A
3
What Am I Going to Talk About?4
What is Dirigible?
Part of Eclipse Cloud Development (ECD) Cloud development platform for dynamic
applications Provides both development tools and
runtime environment Focus on JavaScript support client- and
server-side
dirigible.io
5
What Can You Do with It?
Database management Scripting services Web content Shell commands Flows & Jobs Wiki documents Lifecycle management Monitoring & Logs Debugging
6
What Can You Do with It?
End-to-end coverage for Vertical Scenarios
7
Dynamic Applications?
Content-centric Built for change Custom code/extensions tends to overgrow original
app Business need for easy and frequent
customization/change/extensibility
8
The Ultimate Goal
Enable the shortest development turnaround time
by employing
In-system programming model RAD techniques
9
In-System Programming Model
Working on a live system Access to live data Immediate changes effect
Java: Separate dev (IDE) and runtime (Server) Explicit deploy step
10
Rapid Application Development
Fast prototyping/scaffolding Templates, wizards, reusable artifacts Enforcing best practices
Java: Few good examples in this area – e.g. JBoss Forge
11
Injected API
Predefined objects or platform services wrappers $.getDatasource(), $.getRequest(), $.getResponse(),
$.getMessagingService()
Utilities, ExecutionContext $.getIOUtils(), $.getHttpUtils(),
$.getExecutionContext()
Extensible set e.g. based on underlying cloud platform
Java: @Inject, @Resource, @EJB …
12
Application Life-Cycle Management
FS-like repository for user workspaces, project artifacts/metadata
Easy export + import into another running instance
Java: JAR/WAR/EAR archives Import = deploy, export = ?
13
Dependency Management
No silver bullet Dirigible leverages non-strict dependencies a.k.a.
“global installs” by using CommonJS
Java: Strict dependency management during compilation Non-strict during runtime (excluding OSGi)
14
Extensions
First-class project citizens Bilateral JSON-formatted declarations No strict contract for the actual interface types (name-
bound)
Java: plugin.xml, META-INF/services, WSDL Cons: changing contracts is usually slow
15
Security
Dirigible relies on the underlying application server's capabilities for this task
Resource/roles configuration in JSON format
Java: Security constraints in annotations/web.xml
16
Microservices vs. Monoliths
It’s your choice! Identical instances can host different apps/services
which can be scaled out separately but still operated identically
Java: Similar – e.g. Tomcat server(s), uberjars, MicroProfile…
17
Debugging
Dirigible leverages debugging support in Rhino Simple callbacks to debug “client” Results propagated to RAP-based UI
Java: Sophisticated tools, suspending the thread, etc.
18
Mobile Development
True native mobile app development in JavaScript using Tabris.js
Mobile-friendly IDE: develop from mobile for mobile
Java: Only Android?
19
DEMO
20
Conclusion
Dirigible platform runs on standard Java EE stack – e.g. Apache Tomcat
Utilizes all benefits of such a powerful and mature environment
Adds dynamic alteration capabilities – extremely valuable for business services customization/extension
Java (EE) for core/system services + JavaScript/Dirigible for business services can be a very useful and productive combination
21
Q & A
22
Thank You!
@vladopavlovwww.slideshare.net/vkpavlov