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

What's New in JHipsterLand - DevNexus 2017

Matt Raible
February 24, 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 full-size 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 full-size slide

  3. Stormpath User Management

    View full-size slide

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

    Do you like JavaScript? TypeScript?

    Anyone using Angular?

    Have you used JHipster before?

    View full-size slide

  5. JHipster jhipster.github.io

    View full-size slide

  6. JHipster is Open Source
    Web Statistics, January 2017

    282K Page Views


    GitHub Statistics

    6229 Stars

    298 Contributors

    View full-size slide

  7. 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 full-size slide

  8. Feature In JHipster 4?

    Progressive Web Apps


    JUnit 5

    Spring 5

    Bootstrap 4

    What’s new in JHipsterLand?

    View full-size slide

  9. 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 full-size slide

  10. 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 full-size slide

  11. 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 full-size slide

  12. Spring Boot 1.5
    Apache Kafka Support

    Cloud Foundry actuator extensions

    Spring Data Ingalls

    LDAP support

    Loggers endpoint

    Spring Security 4.2 Support

    View full-size slide

  13. Build Tools
    Java: Maven or Gradle

    AngularJS: Gulp

    Angular: Webpack

    Web Dependencies:

    AngularJS: Bower

    Angular: npm or yarn

    View full-size slide

  14. Get Started with JHipster 4 Demo

    View full-size slide

  15. AAA Sonar Rating

    View full-size slide

  16. JHipster Libraries

    View full-size slide

  17. Thoughtworks Radar

    View full-size slide

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


    Jenkins pipeline

    Travis CI

    GitLab CI

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

    View full-size slide

  19. Deploying to Production
    Cloud Foundry




    AWS with Boxfuse

    View full-size slide

  20. 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 full-size slide

  21. 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 full-size slide

  22. 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 full-size slide

  23. Microservices with Docker Demo

    View full-size slide

  24. Shortcut to becoming a JHipster Expert?

    View full-size slide

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




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

    View full-size slide

  26. Keep in touch!







    View full-size slide