Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cloud Development with Dirigible in the Eyes of a Java-saurus

Talk given at EclipseCon NA 2016 ( and Java2Days 2016 (

Dirigible ( is a cloud DevOps platform providing both development tools and runtime environment with a focus on JavaScript support client- and server-side, as well as the tools necessary for cloud application operations, monitoring, and debugging. Its ultimate goal is to enable the shortest development turnaround time by employing the in-system programming model and RAD techniques.

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.

  • Login to see the comments

Cloud Development with Dirigible in the Eyes of a Java-saurus

  1. 1. Cloud Development with Dirigible in the Eyes of a Java-saurus Vladimir Pavlov // SAP
  2. 2. 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
  3. 3. What Am I Going to Talk About?  What is Dirigible  Goals and driving forces  Technical look and comparisons  Demo  Q & A 3
  4. 4. What Am I Going to Talk About? 4
  5. 5. 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 5
  6. 6. What Can You Do with It?  Database management  Scripting services  Web content  Shell commands  Flows & Jobs  Wiki documents  Lifecycle management  Monitoring & Logs  Debugging 6
  7. 7. What Can You Do with It? End-to-end coverage for Vertical Scenarios 7
  8. 8. 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
  9. 9. The Ultimate Goal Enable the shortest development turnaround time by employing  In-system programming model  RAD techniques 9
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. Mobile Development  True native mobile app development in JavaScript using Tabris.js  Mobile-friendly IDE: develop from mobile for mobile Java:  Only Android? 19
  20. 20. DEMO 20
  21. 21. 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
  22. 22. Q & A 22
  23. 23. Thank You! @vladopavlov