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

What's New in JHipsterLand - Devoxx US 2017

What's New in JHipsterLand - Devoxx US 2017

YouTube: https://youtu.be/N5bN-wvLZMg

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. Possible topics include Angular 2, Progressive Web Apps, HTTP/2, JUnit 5 and Spring 5.

Demo code: https://github.com/mraible/devoxxus-jhipster-microservices-demo

Matt Raible
PRO

March 21, 2017
Tweet

More Decks by Matt Raible

Other Decks in Technology

Transcript

  1. What’s New in JHipsterLand
    Matt Raible • @mraible •

    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
    Okta Developer Evangelist

    View Slide

  3. View Slide

  4. Authentication Standards

    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, February 2017
    500K Page Views
    39K Downloads
    GitHub Statistics
    6388 Stars
    309 Contributors
    www.openhub.net/p/generator-jhipster

    View Slide

  8. JHipster Downloads

    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?
    Angular

    Progressive Web Apps

    HTTP/2

    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
    # ===============================================================================================
    jhipster:
    http:
    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. Cool Webpack Features
    webpack-bundle-analyzer
    webpack-dashboard

    View Slide

  25. Get Started with JHipster 4 Demo

    View Slide

  26. AAA Sonar Rating

    View Slide

  27. JHipster Libraries

    View Slide

  28. JHipster + React

    View Slide

  29. View Slide

  30. Thoughtworks Radar

    View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. Continuous Integration and Deployment
    $ yo jhipster:ci-cd
    Supports:
    Jenkins pipeline
    Travis CI
    GitLab CI
    CircleCI jhipster.github.io/setting-up-ci/

    View Slide

  36. View Slide

  37. Deploying to Production
    Cloud Foundry
    Heroku
    Kubernetes
    AWS
    AWS with Boxfuse

    View Slide

  38. 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

  39. 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 $project-name --machine-
    type=n1-standard-2 --scopes cloud-platform
    9. Authenticate:
    gcloud auth application-default login --no-launch-browser

    View Slide

  40. 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
    13. Screencast of these steps: https://youtu.be/dgVQOYEwleA

    View Slide

  41. Microservices with Docker Demo

    View Slide

  42. Shortcut to becoming a JHipster Expert?
    JUST DO IT.

    View Slide

  43. The JHipster Mini-Book
    2.0 Release on Dec 5, 2016
    jhipster-book.com
    21-points.com
    @jhipster_book
    Write your own InfoQ mini-book! github.com/mraible/infoq-mini-book

    View Slide

  44. Keep in touch!
    raibledesigns.com
    @mraible
    Presentations
    speakerdeck.com/mraible
    Code
    github.com/mraible
    Questions?

    View Slide