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

March 21, 2017
Tweet

More Decks by Matt Raible

Other Decks in Technology

Transcript

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

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

    View full-size slide

  3. Authentication Standards

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

    View full-size slide

  7. JHipster Downloads

    View full-size slide

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

  9. Feature In JHipster 4?
    Angular

    Progressive Web Apps

    HTTP/2

    JUnit 5

    Spring 5

    Bootstrap 4

    What’s new in JHipsterLand?

    View full-size slide

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

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

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

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

  14. Build Tools
    Java: Maven or Gradle
    AngularJS: Gulp
    Angular: Webpack
    Web Dependencies:
    AngularJS: Bower
    Angular: npm or yarn

    View full-size slide

  15. Cool Webpack Features
    webpack-bundle-analyzer
    webpack-dashboard

    View full-size slide

  16. Get Started with JHipster 4 Demo

    View full-size slide

  17. AAA Sonar Rating

    View full-size slide

  18. JHipster Libraries

    View full-size slide

  19. JHipster + React

    View full-size slide

  20. Thoughtworks Radar

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

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

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

  26. Microservices with Docker Demo

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide