SlideShare a Scribd company logo
Front End Development for Back End Java Developers
February 4, 2020
Matt Raible | @mraible
Photo by Magnus Johansson flickr.com/photos/120374925@N06/15885090329
OAuth 2.0 Overview
Today’s Agenda
JavaScript / TypeScript
Build Tools
JavaScript Frameworks
CSS
Front End Performance
Progressive Web Apps
Blogger on raibledesigns.com and
developer.okta.com/blog
Web Developer and Java Champion
Father, Husband, Skier, Mountain
Biker, Whitewater Rafter
Open Source Connoisseur
Who is Matt Raible?
Bus Lover
Okta Developer Advocate
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
developer.okta.com
Authentication Standards
What about You?
How many consider themselves backend
developers?
Java, .NET, Python, or Node.js?
Do you write code for UIs?
Do you like JavaScript?
What JavaScript Frameworks do you use?
My Web Dev Journey
What is modern front end development?
Web Frameworks Over the Years
github.com/mraible/history-of-web-frameworks-timeline
JSF
zeroturnaround.com/webframeworksindex
❀
JavaScript Framework Explosion
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Let’s do some learning!
ES6, ES7 and TypeScript
ES5: es5.github.io
ES6: git.io/es6features
ES7: bit.ly/es7features
TS: www.typescriptlang.org
TSES7ES6ES5
caniuse.com/#search=es5
caniuse.com/#search=es6
TypeScript
$ npm install -g typescript
function greeter(person: string) {
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(user);
$ tsc greeter.ts
typescriptlang.org/docs/tutorial.html
bus.ts
TypeScript 2.3+
“Node.js is a JavaScript runtime built on Chrome's V8
JavaScript engine. Node.js uses an event-driven, non-
blocking I/O model that makes it lightweight and eïŹƒcient.
Node’s package ecosystem, npm, is the largest
ecosystem of open source libraries in the world.”
nodejs.org
github.com/creationix/nvm
Front End Build Tools
Old School: Gulp
New School: SystemJS
Hip: Webpack
Web Dependencies:
Old School: Bower
New School: npm
Hip: yarn
Yeoman
The web's scaïŹ€olding tool for modern webapps
Helps you kickstart new projects
Promotes the Yeoman workïŹ‚ow
yeoman.io
Browsersync browsersync.io
Gulp
gulp.task('serve', function() {
browserSync.init({
server: './app'
});
gulp.watch(['app/**/*.js', 'app/**/*.css', 'app/**/*.html'])
.on('change', browserSync.reload);
});
Webpack
Write and Bundle
// bar.js
export default function bar() {
// code here
}
// app.js
import bar from './bar';
bar();
// webpack.config.js
module.exports = {
entry: './app.js',
output: {
filename: 'bundle.js'
}
}
<!-- index.html -->
<html>
<head>
...
</head>
<body>
...
<script src="bundle.js"></script>
</body>
</html>
webpack.conïŹg.js
module.exports = {
entry: './src/app.js',
output: {
path: __dirname + '/src/main/webapp/public',
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}
]
}
};
webpack.academy
xkcd.com/303/
Leading JavaScript Frameworks in 2020
angular.io
reactjs.org
vuejs.org
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
“Angular and React dominate:
Nothing else even comes close.”
Front End Development for Back End Java Developers - Jfokus 2020
“2018: The Year of React
React won the popularity battle in 2017.”
Front End Development for Back End Java Developers - Jfokus 2020
“React kept a ïŹrm grip on its lead in 2018.”
Front End Development for Back End Java Developers - Jfokus 2020
“React Dominated 2019, and Will Probably
Dominate 2020”
Crunch the Numbers
@spring_io
#springio17
Hot Frameworks hotframeworks.com
@spring_io
#springio17
Hot Frameworks hotframeworks.com
@spring_io
#springio17
Jobs on Indeed (Sweden)
February 2020
0
175
350
525
700
Vue React Angular
@spring_io
#springio17
Jobs on Indeed (US)
February 2020
0
2,750
5,500
8,250
11,000
Vue React Angular
@spring_io
#springio17
Stack OverïŹ‚ow Tags
February 2020
0
55,000
110,000
165,000
220,000
Vue React Angular
@spring_io
#springio17
GitHub Stars
February 2020
0
40,000
80,000
120,000
160,000
Vue React Angular Svelte
@spring_io
#springio17
GitHub Star Growth
star-history.t9t.io/#angular/angular&facebook/react&vuejs/vue
@spring_io
#springio17
GitHub Star Growth
star-history.t9t.io/#angular/angular&facebook/react&vuejs/vue&sveltejs/svelte
Hello World with Angular
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `<h1>Hello {{name}}</h1>`
})
export class AppComponent {
name = 'World';
}
<my-app></my-app>
Hello World with Angular
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Hello World with Angular
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule);
Front End Development for Back End Java Developers - Jfokus 2020
Angular CLI
Angular CLI
Ionic Framework
ng-book
A comprehensive guide to developing with
Angular 8
Worth all your hard earned $$$
newline.co/ng-book/2
“Thank you for the awesome book. It's the bible
for Angular.” — Vijay Ganta
Authentication with Angular
Hello World with React
codepen.io/gaearon/pen/ZpvBNJ?editors=0100
<div id="root"></div>
<script>
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
</script>
Learning React
vimeo.com/213710634
Imperative Code
if (count > 99) {
if (!hasFire()) {
addFire();
}
} else {
if (hasFire()) {
removeFire();
}
}
if (count === 0) {
if (hasBadge()) {
removeBadge();
}
return;
}
if (!hasBadge()) {
addBadge();
}
var countText = count > 99 ? "99+" : count.toString();
getBadge().setText(countText);
Declarative Code
if (count === 0) {
return <div className="bell"/>;
} else if (count <= 99) {
return (
<div className="bell">
<span className="badge">{count}</span>
</div>
);
} else {
return (
<div className="bell onFire">
<span className="badge">99+</span>
</div>
);
}
Front End Development for Back End Java Developers - Jfokus 2020
Create React App
Create React App
Authentication with React
Hello World with Vue.js
jsïŹddle.net/chrisvfritz/50wL7mdz/
<div id="app">
<p>{{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
});
</script>
Vue.js Code
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<button v-on:click="clickedButton()">Click here!</button>
</div>
<script>
new Vue({
el: '#app',
methods: {
clickedButton: function(event) {
console.log(event);
alert("You clicked the button!");
}
}
});
</script>
Front End Development for Back End Java Developers - Jfokus 2020
Getting Started
Vue CLI
Vue CLI
Authentication with Vue
Server-Side Support
Angular Universal merged into Angular 4
mobile.twitter.com
Nuxt.js
Server-Side Java Support
Cascading Style Sheets
#app {
background: #eee;
}
.blog-post {
padding: 20px;
}
.blog-post > p:first {
font-weight: 400;
}
img + span.caption {
font-style: italic;
}
Sass: Syntactically Awesome Style Sheets
#app {
background: #eee;
.blog-post {
padding: 20px;
> p:first {
font-weight: 400;
}
img + span.caption {
font-style: italic;
}
}
} sass-lang.com
CSS Frameworks
Bootstrap 4
Bootstrap 4
CSS Framework Stars on GitHub
February 2020
0
35,000
70,000
105,000
140,000
Bootstrap Foundation Pure Skeleton Angular Material Material UI Tailwind CSS
CSS Framework Star History
star-history.t9t.io
Front End Performance Optimization
Reduce HTTP Requests
Gzip HTML, JavaScript, and CSS
Far Future Expires Headers
Code MiniïŹcation
Optimize Images
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
Front-End Performance Checklist 2020
smashingmagazine.com/2020/01/front-end-performance-checklist-2020-pdf-pages
Chrome Developer Tools
Follow Umar Hansa - @umaar
Follow Addy Osmani - @addyosmani
Framework Tools
Angular Augury
React Developer Tools
vue-devtools
Progressive Web Apps
“We’ve failed on mobile”
— Alex Russell
youtu.be/K1SFnrf4jZo
Mobile Hates You!
How to ïŹght back:
Implement PRPL
Get a ~$150-200 unlocked Android (e.g. Moto G4)
Use chrome://inspect && chrome://inspect?tracing
Lighthouse
DevTools Network & CPU Throttling
The PRPL Pattern
Push critical resources for the initial URL route
Render initial route
Pre-cache remaining routes
Lazy-load and create remaining routes on demand
“Reusable UI widgets created using open web technology.” - MDN
Web Components consists of four technologies:
Custom Elements
HTML Templates
Shadow DOM
HTML Imports
Web Components
https://www.polymer-project.org
https://stenciljs.com
https://www.webcomponents.org
Front End Development for Back End Java Developers - Jfokus 2020
Security: OWASP Top 10
1. Injection
2. Broken Auth & Session Mgmt
3. Cross-Site Scripting (XSS)
4. Broken Access Control
5. Security MisconïŹguration
6. Sensitive Data Exposure
7. InsuïŹƒcient Attack Protection
8. Cross-Site Request Forgery
9. Components w/ Vulnerabilities
10. Underprotected APIs
đŸ”„ Micro Frontends micro-frontends.org
đŸ”„ Micro Frontends micro-frontends.org
Micro Frontends
martinfowler.com/articles/micro-frontends.html
single-spa single-spa.js.org
@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! ✹
Get Started with JHipster 6 Demo
github.com/mraible/jhipster6-demo | youtu.be/uQqlO3IGpTU
Front End Development for Back End Java Developers - Jfokus 2020
JHipster 6 Tutorials and Videos
Monolith
github.com/mraible/jhipster6-demo
Microservices
developer.okta.com/blog/2019/05/23/java-
microservices-spring-cloud-conïŹg
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
@jhipster_book
What You Learned
ES6 and TypeScript
Node.js and nvm
Angular, React, and Vue
CSS and Sass
Front End Performance Optimization
Progressive Web Apps
TRY
Action!
Don’t be afraid to try new things
Learn JavaScript or TypeScript
Try one of these frameworks
Form your own opinions
Front End Development for Back End Java Developers - Jfokus 2020
developer.okta.com/blog
@oktadev
Questions?
Keep in touch!
raibledesigns.com
@mraible
Presentations
speakerdeck.com/mraible
Code
github.com/oktadeveloper
developer.okta.com

More Related Content

PDF
Java REST API Framework Comparison - PWX 2021
PDF
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
PDF
How to Win at UI Development in the World of Microservices - THAT Conference ...
PDF
Front End Development for Back End Java Developers - NYJavaSIG 2019
PDF
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
PDF
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
PDF
Front End Development for Backend Developers - GIDS 2019
PDF
Java Web Application Security - UberConf 2011
Java REST API Framework Comparison - PWX 2021
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
How to Win at UI Development in the World of Microservices - THAT Conference ...
Front End Development for Back End Java Developers - NYJavaSIG 2019
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Front End Development for Backend Developers - GIDS 2019
Java Web Application Security - UberConf 2011

What's hot (20)

PDF
Bootiful Development with Spring Boot and React - UberConf 2018
PDF
Seven Simple Reasons to Use AppFuse
PPT
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
PDF
Apache Roller, Acegi Security and Single Sign-on
PPT
Choosing a Java Web Framework
PDF
Front End Development for Back End Developers - vJUG24 2017
PDF
A Gentle Introduction to Angular Schematics - Angular SF 2019
PDF
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
PDF
Web App Security for Java Developers - UberConf 2021
PDF
Comparing JVM Web Frameworks - Rich Web Experience 2010
PPT
Os Johnson
PDF
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
PDF
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
PDF
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
PDF
Hybrid Apps (Native + Web) via QtWebKit
PDF
Spark IT 2011 - Java EE 6 Workshop
PDF
Clojure Web Development
PDF
Spark IT 2011 - Developing RESTful Web services with JAX-RS
PDF
JAX-RS JavaOne Hyderabad, India 2011
PDF
Java Web Application Security - Jazoon 2011
Bootiful Development with Spring Boot and React - UberConf 2018
Seven Simple Reasons to Use AppFuse
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Apache Roller, Acegi Security and Single Sign-on
Choosing a Java Web Framework
Front End Development for Back End Developers - vJUG24 2017
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
Web App Security for Java Developers - UberConf 2021
Comparing JVM Web Frameworks - Rich Web Experience 2010
Os Johnson
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Hybrid Apps (Native + Web) via QtWebKit
Spark IT 2011 - Java EE 6 Workshop
Clojure Web Development
Spark IT 2011 - Developing RESTful Web services with JAX-RS
JAX-RS JavaOne Hyderabad, India 2011
Java Web Application Security - Jazoon 2011
Ad

Similar to Front End Development for Back End Java Developers - Jfokus 2020 (20)

PDF
Front End Development for Back End Developers - Denver Startup Week 2017
PDF
Front End Development for Back End Developers - UberConf 2017
PPTX
Django + Vue, JavaScript de 3ÂȘ generaciĂłn para modernizar Django
PPTX
An introduction to Vue.js
PPTX
JavaScript Perfomance
PPTX
JavaScript Performance (at SFJS)
PPTX
Reactive application using meteor
PPTX
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
PDF
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
PDF
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
PPT
Widget Summit 2008
PDF
It is not HTML5. but ... / HTML5ではăȘă„ă‚”ă‚€ăƒˆă‹ă‚‰HTML5ă‚’è€ƒăˆă‚‹
PDF
From Idea to App (or “How we roll at Small Town Heroes”)
ODP
Desenvolvimento Mobile HĂ­brido
PDF
Vaadin & Web Components
PPTX
Introduction Ă  AngularJS
PDF
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
 
PDF
Building and deploying React applications
PDF
using Mithril.js + postgREST to build and consume API's
PDF
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Front End Development for Back End Developers - Denver Startup Week 2017
Front End Development for Back End Developers - UberConf 2017
Django + Vue, JavaScript de 3ÂȘ generaciĂłn para modernizar Django
An introduction to Vue.js
JavaScript Perfomance
JavaScript Performance (at SFJS)
Reactive application using meteor
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Widget Summit 2008
It is not HTML5. but ... / HTML5ではăȘă„ă‚”ă‚€ăƒˆă‹ă‚‰HTML5ă‚’è€ƒăˆă‚‹
From Idea to App (or “How we roll at Small Town Heroes”)
Desenvolvimento Mobile HĂ­brido
Vaadin & Web Components
Introduction Ă  AngularJS
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
 
Building and deploying React applications
using Mithril.js + postgREST to build and consume API's
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Ad

More from Matt Raible (20)

PDF
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
PDF
Micro Frontends for Java Microservices - Belfast JUG 2022
PDF
Micro Frontends for Java Microservices - Dublin JUG 2022
PDF
Micro Frontends for Java Microservices - Cork JUG 2022
PDF
Comparing Native Java REST API Frameworks - Seattle JUG 2022
PDF
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
PDF
Comparing Native Java REST API Frameworks - Devoxx France 2022
PDF
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
PDF
Native Java with Spring Boot and JHipster - Garden State JUG 2021
PDF
Web App Security for Java Developers - PWX 2021
PDF
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
PDF
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
PDF
Java REST API Framework Comparison - UberConf 2021
PDF
Native Java with Spring Boot and JHipster - SF JUG 2021
PDF
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
PDF
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
PDF
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
PDF
JHipster and Okta - JHipster Virtual Meetup December 2020
PDF
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
PDF
Security Patterns for Microservice Architectures - SpringOne 2020
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Web App Security for Java Developers - PWX 2021
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Java REST API Framework Comparison - UberConf 2021
Native Java with Spring Boot and JHipster - SF JUG 2021
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
JHipster and Okta - JHipster Virtual Meetup December 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Security Patterns for Microservice Architectures - SpringOne 2020

Recently uploaded (20)

PDF
Digital Systems & Binary Numbers (comprehensive )
PPTX
L1 - Introduction to python Backend.pptx
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Nekopoi APK 2025 free lastest update
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
assetexplorer- product-overview - presentation
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Reimagine Home Health with the Power of Agentic AI​
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Digital Systems & Binary Numbers (comprehensive )
L1 - Introduction to python Backend.pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
AutoCAD Professional Crack 2025 With License Key
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Nekopoi APK 2025 free lastest update
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Operating system designcfffgfgggggggvggggggggg
assetexplorer- product-overview - presentation
Monitoring Stack: Grafana, Loki & Promtail
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Navsoft: AI-Powered Business Solutions & Custom Software Development
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Reimagine Home Health with the Power of Agentic AI​
Computer Software and OS of computer science of grade 11.pptx
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
17 Powerful Integrations Your Next-Gen MLM Software Needs
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025

Front End Development for Back End Java Developers - Jfokus 2020