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

What's New in JHipsterLand - DevNexus 2017

What's New in JHipsterLand - DevNexus 2017

JHipster is an application generator that allows you to create monoliths or microservices based on Spring Boot and Angular. It leverages Spring Cloud for microservices and contains best-of-breed JavaScript and CSS libraries for creating your UI. In this session, you’ll learn about what’s new in JHipster. Topics explored include Angular 2, Progressive Web Apps, HTTP/2, JUnit 5, and Spring 5.

Matt Raible

February 24, 2017

More Decks by Matt Raible

Other Decks in Technology



    View Slide

  2. Blogger on raibledesigns.com
    UI Architect and Java Champion
    Father, Skier, Mountain
    Biker, Whitewater Rafter
    Web Framework Connoisseur
    Who is Matt Raible?
    Bus Lover
    Stormpath Developer Evangelist

    View Slide

  3. View Slide

  4. Stormpath User Management

    View Slide

  5. About You
    Are you a Java developer that likes Spring?

    Do you like JavaScript? TypeScript?

    Anyone using Angular?

    Have you used JHipster before?

    View Slide

  6. JHipster jhipster.github.io

    View Slide

  7. JHipster is Open Source
    Web Statistics, January 2017

    282K Page Views


    GitHub Statistics

    6229 Stars

    298 Contributors

    View Slide

  8. JHipster 4

    View Slide

  9. How to use JHipster
    To install JHipster and Yeoman, use npm:

    npm install -g yo generator-jhipster
    Then create a directory and cd into it:

    mkdir myapp && cd myapp
    Then run Yeoman:

    yo jhipster

    View Slide

  10. View Slide

  11. Feature In JHipster 4?

    Progressive Web Apps


    JUnit 5

    Spring 5

    Bootstrap 4

    What’s new in JHipsterLand?

    View Slide

  12. View Slide

  13. HTTP/2
    Binary, instead of textual

    Fully multiplexed, instead of ordered and blocking

    Can use one connection for parallelism

    Uses header compression to reduce overhead

    Allows servers to “push” responses proactively into client caches

    View Slide

  14. HTTP/2 in JHipster
    * Enable HTTP/2 for Undertow - https://twitter.com/ankinson/status/829256167700492288
    * HTTP/2 requires HTTPS, so HTTP requests will fallback to HTTP/1.1.
    * See the JHipsterProperties class and your application-*.yml configuration files
    * for more information.
    if (jHipsterProperties.getHttp().getVersion().equals(JHipsterProperties.Http.Version.V_2_0)) {
    if (container instanceof UndertowEmbeddedServletContainerFactory) {
    ((UndertowEmbeddedServletContainerFactory) container)
    .addBuilderCustomizers((builder) -> {
    builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);

    View Slide

  15. HTTP/2 in JHipster
    # ===============================================================================================
    # To enable SSL, generate a certificate using:
    # keytool -genkey -alias blog -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
    # You can also use Let's Encrypt:
    # https://maximilian-boehm.com/hp2121/Create-a-Java-Keystore-JKS-from-Let-s-Encrypt-Certificates.htm
    # Then, modify the server.ssl properties so your "server" configuration looks like:
    # server:
    # port: 8443
    # ssl:
    # key-store: keystore.p12
    # key-store-password:
    # keyStoreType: PKCS12
    # keyAlias: blog
    # ===============================================================================================
    version: V_1_1 # To use HTTP/2 you will need SSL support (see above the "server.ssl" configuration)

    View Slide

  16. View Slide

  17. JUnit 5

    View Slide

  18. Spring 5

    View Slide

  19. Spring Boot 1.5
    Apache Kafka Support

    Cloud Foundry actuator extensions

    Spring Data Ingalls

    LDAP support

    Loggers endpoint

    Spring Security 4.2 Support

    View Slide

  20. Bootstrap 4

    View Slide

  21. Bootstrap 4

    View Slide

  22. Build Tools
    Java: Maven or Gradle

    AngularJS: Gulp

    Angular: Webpack

    Web Dependencies:

    AngularJS: Bower

    Angular: npm or yarn

    View Slide

  23. View Slide

  24. Get Started with JHipster 4 Demo

    View Slide

  25. AAA Sonar Rating

    View Slide

  26. JHipster Libraries

    View Slide

  27. Thoughtworks Radar

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. Continuous Integration and Deployment
    $ yo jhipster:ci-cd


    Jenkins pipeline

    Travis CI

    GitLab CI

    CircleCI jhipster.github.io/setting-up-ci/

    View Slide

  33. View Slide

  34. Deploying to Production
    Cloud Foundry




    AWS with Boxfuse

    View Slide

  35. Deploy to Google Cloud with Kubernetes
    1. Convert a monolith to a microservice gateway

    hibernateCache: “hazelcast”

    serviceDiscovery: “eureka”

    applicationType: “gateway”

    2. Create microservices app and generate entities

    3. Create UI for entities on gateway using yo jhipster:entity

    4. Clone JHipster Registry in same directory and prove it all works

    View Slide

  36. Deploy to Google Cloud with Kubernetes
    5. Create a sub-directory alongside apps and run yo jhipster:kubernetes

    6. Create a Google Cloud project - console.cloud.google.com

    7. Set project using gcloud config set project $project-name

    8. Create a cluster:

    gcloud container clusters create demo --machine-type=n1-
    standard-2 --scopes cloud-platform
    9. Authenticate:

    gcloud auth application-default login --no-launch-browser

    View Slide

  37. Deploy to Google Cloud with Kubernetes
    10. Run kubectl commands to deploy

    11. Use port-forwarding to see registry locally:

    kubectl port-forward jhipster-registry-0 8761:8761
    12. Scale microservice apps as needed:

    kubectl scale deployment store --replicas=3

    View Slide

  38. Microservices with Docker Demo

    View Slide

  39. Shortcut to becoming a JHipster Expert?

    View Slide

  40. The JHipster Mini-Book
    2.0 Release on Dec 5, 2016




    Write your own InfoQ mini-book! github.com/mraible/infoq-mini-book

    View Slide

  41. Keep in touch!







    View Slide