Matt Raible | @mraible
Spring Boot APIs and Angular Apps: Get Hip with JHipster!
July 19, 2019 Photo by Matthew Whitehead https://www.flickr.com/photos/photonphisher/4715548161
Titanium Sponsors
Platinum Sponsors
Gold Sponsors
Blogger on raibledesigns.com and

developer.okta.com/blog
Web Developer and Java Champion
Father, Skier, Mountain Biker,
Whitewater Rafter
Open Source Developer + User
Who is Matt Raible?
Bus Lover
Okta Developer Advocate
public class Okta {
public Okta(DeveloperDNA developerDna) {
DeveloperRelations devRel = developerDna.getDeveloperRelations();
Assert.notNull(devRel,"Developer Relations is required to operate effectively.");
Set<Developer> team = devRel.getTeam();
Assert.isTrue(!team.isEmpty(),"Team cannot be empty.");
Assert.isTrue(!devRel.getSdks().isEmpty(), "SDKs required for developers.");
}
}
Authentication Standards
What about YOU?
Are you a Java Developer? Web Developer?
How long have you been doing web development?
Do you like JSF? Do you like GWT?
Do you like JavaScript? TypeScript?
Do you want to be a hip Java Developer?
Java 8
Parallel Collections
JSR 310 Date and Time API
Functional Interfaces with default method
Lambda Expressions (a.k.a. Closures)
Nashorn JavaScript Engine
Java 11
New String Methods
File Utility Methods
Local Variable Syntax: var
Java EE and CORBA modules removed
What about Java 12?
Hipster
n. noun
1. One who is exceptionally aware of or interested in the latest trends
and tastes.
Latest trends in JavaLand?
Microservices
Embedded App Servers
Deployment with Containers
Environments: dev, test, production
Auto-Configuration
Monitoring
Spring Boot
Automatically configures Spring whenever possible
Provides production-ready features such as metrics, health checks and
externalized configuration
Absolutely no code generation and no requirement for XML
configuration
Embeds Tomcat, Jetty or Undertow directly
SPRING INITIALIZR @ start.spring.io
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Entity
class Blog {
@Id
@GeneratedValue
private Long id;
private String name;
// getters, setters, toString(), etc
}
@RepositoryRestResource
interface BlogRepository extends JpaRepository<Blog, Long> {
}
@SpringBootApplication
class NotesApplication
fun main(args: Array<String>) {
SpringApplication.run(NotesApplication::class.java, *args)
}
@Entity
data class Note(@Id @GeneratedValue var id: Long? = null,
var text: String? = null,
@JsonIgnore var user: String? = null)
@RepositoryRestResource
interface NotesRepository : JpaRepository<Note, Long>
Microservices with Spring Boot
https://developer.okta.com/blog/2019/05/22/java-microservices-spring-boot-spring-cloud
Latest trends in Web Development?
Progressive Web Applications
JavaScript MVC Frameworks
CSS 3 with Animations
Mobile First
Front-End Optimization
REST and GraphQL APIs
Hot Frameworks hotframeworks.com
Hot Frameworks hotframeworks.com
Jobs on Indeed (US)
July 2019
0
3,000
6,000
9,000
12,000
React Angular Vue Vanilla
Stack Overflow Tags
July 2019
0
45,000
90,000
135,000
180,000
React Angular Vue
GitHub Stars
July 2019
0
37,500
75,000
112,500
150,000
React Angular Vue
“Angular and React dominate:
Nothing else even comes close.”
Wouldn’t it be hip if…?
⚭
@spring_io
#springio17
JHipster jhipster.tech
JHipster is a development platform to generate, develop and deploy 
Spring Boot + Angular/React Web applications and Spring microservices. 
and Vue! ✨
JHipster is Inclusive
https://github.com/jhipster/jhipster-artwork
JHipster is Open Source
Web Statistics, July 2019
356K Page Views / 704K on GitHub
103K Downloads
GitHub Statistics
14K Stars
512 Contributors
JHipster Foundations
Spring Boot
Spring Security
Angular
React
Bootstrap
Micrometer
Maven or Gradle
Authentication Type: cookie-
based, JWT, or OAuth 2.0 / OIDC
Type of Database: SQL or NoSQL
Caching: EhCache or Hazelcast
Elasticsearch
Frameworks Project Options
How to use JHipster
To install JHipster and Yeoman, use npm:
npm install -g generator-jhipster
Then create a directory and cd into it:
mkdir myapp && cd myapp
Then run JHipster:
jhipster
Demo Time!
Generate a basic blog application
Look at its files and configuration


Generate the CRUD entities
Limit blogs to current user, allow HTML
Deploy to … all in 20 minutes!
Demo Entity Diagram
Get Started with JHipster 6 Demo
https://github.com/mraible/jhipster6-demo | https://youtu.be/uQqlO3IGpTU
JHipster 6 with OIDC Authentication
https://developer.okta.com/blog/2019/04/04/java-11-java-12-jhipster-oidc
OAuth 2.0 and OpenID Connect
OpenID Connect
OAuth 2.0
HTTP
OpenID Connect is for
authentication



OAuth 2.0 is for
authorization
React PWA with JHipster 5
https://developer.okta.com/blog/2018/06/25/react-spring-boot-photo-gallery-pwa
Microservices with JHipster 6
https://developer.okta.com/blog/2019/05/23/java-microservices-spring-cloud-config
JHipster is Knowledge
The JHipster Mini-Book
Written with Asciidoctor
Quick and to the point, 164 pages
Developed a Real World App:
www.21-points.com
Free Download from
infoq.com/minibooks/jhipster-mini-book
Lines of Code in 21-Points
0
6500
13000
19500
26000
Project Created Entities Generated Business Logic and UI
25,670
23,590
16,728
Project Creation
Entities Generated
Biz Logic and UI
0 10000 20000 30000
2,999
2,648
1,839
9,472
8,911
5,523
8,383
7,696
5,892
Java TypeScript HTML
Lines of Code by Language
Learn More
stackoverflow.com
Spring Boot
spring.io/guides
JHipster
www.jhipster.tech
Okta APIs
developer.okta.com
Getting Help
stackoverflow.com/tags/jhipster
gitter.im/jhipster/generator-jhipster
github.com/jhipster/.../CONTRIBUTING.md
groups.google.com/.../jhipster-dev
developer.okta.com/blog
@oktadev
Action!
Try Spring Boot
Try Angular, React, or Vue
Try JHipster
Explore PWAs
Enjoy the bootiful experience!
Questions?
Keep in touch!
raibledesigns.com
@mraible
Presentations
speakerdeck.com/mraible
Code
github.com/oktadeveloper

Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019