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.
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
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
10.
11. Feature In JHipster 4?
Angular ✅
Progressive Web Apps ❌
HTTP/2 ✅
JUnit 5 ❌
Spring 5 ❌
Bootstrap 4 ✅
What’s new in JHipsterLand?
12.
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
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);
});
}
}
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: <your-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)
19. Spring Boot 1.5
Apache Kafka Support
Cloud Foundry actuator extensions
Spring Data Ingalls
LDAP support
Loggers endpoint
Spring Security 4.2 Support
32. Continuous Integration and Deployment
$ yo jhipster:ci-cd
Supports:
Jenkins pipeline
Travis CI
GitLab CI
CircleCI jhipster.github.io/setting-up-ci/
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
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
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
40. 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