Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Boosting developer productivity with open sourc...

Boosting developer productivity with open source Java technologies

As developers we strive to iteratively and rapidly develop our applications. However, development is often slowed by the process of setting up a new project to use the latest APIs, building the application, deploying to a local or container environment, and testing. In this session we will look at key pain points faced by cloud-native Java developers and present helpful APIs and tools so that as developer you can focus on what really matters - your code.

Grace Jansen

July 18, 2023
Tweet

More Decks by Grace Jansen

Other Decks in Technology

Transcript

  1. 3

  2. 7 Developers? • Create a (new) project • Add or

    edit code • Build (and package and run) • Test code • Write tests • … and repeat • DevOps – Deployment (not focus)
  3. 12 Focus on code Easy to make fast and iterative

    changes Easy to write tests True-to-production testing (as much as possible) Ready for containers Not-in-your-way tools and flexibility
  4. 13 Health Check Metrics Fault Tolerance OpenAPI Config Open Tracing

    JWT JSON-B Rest Client CDI JAX-RS JSON-P Core Integrate Observe https://microprofile.io/ Open cloud-native Java APIs Open Telemetry GraphQL Reactive Messaging
  5. 14 MicroProfile Runtimes Compatible with MicroProfile APIs 2.x and 3.x

    4.x 5.x 6.x Open Liberty x x x x WebSphere Liberty x x x x Quarkus x x Payara Micro x x x WildFly x x x Payara Server x x x TomEE x x KumuluzEE x Thorntail x JBoss EAP XP x Helidon x x Apache Launcher x https://microprofile.io/compatible
  6. 15

  7. 16

  8. 18 Starters Give me a starter project or template for

    my MicroProfile application • start.microprofile.io • VS Code extension • IntelliJ plugin Create
  9. 19 Starters Give me a starter project or template for

    my Jakarta EE application • start.jakarta.ee • Runtime-specific starters/generators/templates • Open Liberty Starter • start.openliberty.io Create
  10. 20 Dev Mode What if I don’t have to build,

    package, deploy and start my application manually during development? • Liberty Maven/Gradle Plugin • Dev mode for hot deploy • Continuous/hot testing • Container support • Debugging mvn liberty:dev mvn liberty:devc Build
  11. 21 IDE or Editor Integration Working with MicroProfile API and

    runtimes inside my favorite editor or IDE • Eclipse • IntelliJ • VS Code • NetBeans … • IDE integration for runtime lifecycle management • Custom runtime plugins or extensions Edit
  12. 22

  13. 23

  14. 24 Coding Assistance in Editor/IDE Can I get help with

    working with MicroProfile APIs inside my favorite editor or IDE? • Language Server for Eclipse MicroProfile incubator project at Eclipse Foundation • LSP4MP-based VS Code extension, Tools for MicroProfile from Red Hat Contribute at https://github.com/eclipse/lsp4mp/ Edit
  15. 25 Coding Assistance in Editor/IDE Can I get help with

    working with Jakarta EE APIs inside my favorite editor or IDE? • Language Server for Jakarta EE (LSP4Jakarta) incubator project under the Eclipse Foundation Contribute at https://github.com/eclipse/lsp4jakarta Edit
  16. 26

  17. 27 Code Generators Any additional help with generating (boilerplate) code?

    • MicroProfile Rest Client from OpenAPI docs • CLI via OpenAPI Tools • VS Code extension • JAX-RS stubs generation in OpenAPI Tools Edit
  18. 28

  19. 29 Automated Testing • The Usual Suspects • JUnit •

    Arquillian … • Leveraging containers • Testcontainers • MicroShed Testing https://microshed.github.io Test
  20. 30 my- app:latest (app container) mongo:4.0 (DB container) Dev/Test env

    Production env integratio n tests end users my- app:latest (app container) mongo:4.0 (DB container) Testcontainers Integration tests that are easy to setup, write, and run Test your apps the same way they run in production Tests are portable to any compatible implementation: o Liberty o Wildfly o Payara o TomEE o etc…
  21. 31

  22. 36 Developer Tools MicroProfile - Common Tools Jakarta EE -

    Common Tools Runtime Tooling (Open Liberty) Starters start.microprofile.io MP Starter IDE Plugins start.jakarta.ee Open Liberty Starter Build & Run N/A N/A Liberty Maven & Gradle Build Plugins Dev mode IDE/Editor Integration Eclipse LSP4MP LSP4MP IDE Plugin(s) MP Extension Pack for VS Code Eclipse LSP4Jakarta Liberty Tools for Eclipse, IntelliJ and VS Code (tech previews) Dev mode for any editor Code Generators OpenAPI Tools MP Rest Client Generator N/A N/A Automated Testing JUnit, Arquillian Testcontainers, MicroShed Testing JUnit, Arquillian, Testcontainers, MicroShed Testing Hot testing
  23. 37 Resource Links • Liberty Tools for Eclipse: https://github.com/OpenLiberty/liberty-tools-eclipse •

    Open Liberty Starter: https://start.openliberty.io/ • Liberty Tools for VS Code: https://marketplace.visualstudio.com/items?itemName=Open-Liberty.liberty-dev- vscode-ext • Liberty Tools for IntelliJ: https://plugins.jetbrains.com/plugin/14856-liberty-tools • VS Code Extension Pack for MicroProfile: https://marketplace.visualstudio.com/items?itemName=MicroProfile- Community.vscode-microprofile-pack
  24. 38 Resource Links • TestContainers: https://www.testcontainers.org/ • Open Liberty Guides:

    • Jakarta EE: https://openliberty.io/guides/?search=jakarta%20ee&key=tag • MicroProfile: https://openliberty.io/guides/?search=microprofile&key=tag • Open Liberty Deep Dive: https://openliberty.io/guides/liberty-deep- dive.html