45
Matt Raible | @mraible Bootiful Development w/ Spring Boot and Angular September 20, 2017 Connect.Tech https://www.flickr.com/photos/rockmixer/2806330093

Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Embed Size (px)

Citation preview

Page 1: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Matt Raible | @mraibleBootiful Development w/ Spring Boot and Angular

September 20, 2017 Connect.Tech

https://www.flickr.com/photos/rockmixer/2806330093

Page 2: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Blogger on raibledesigns.com

Web Developer and Java Champion

Father, Skier, Mountain Biker, Whitewater Rafter

Open Source Connoisseur

Who is Matt Raible?

Bus LoverOkta Developer Advocate

Page 3: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017
Page 5: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

What about You?

Page 7: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

OAuth 2.0 Overview

Today’s AgendaWhy Spring Boot?

Demo: Developing with Spring Boot

Introduction to ES6 and TypeScript

Why Angular?

Demo: Developing with Angular

Introduction to PWAs and JHipster

Page 8: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

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

Page 9: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

SPRING INITIALIZR @ start.spring.io

Page 11: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@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> { }

Page 12: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

Microservices with Spring Boot

https://developer.okta.com/blog/2017/06/15/build-microservices-architecture-spring-boot

Page 14: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Demo: Build a Spring Boot API

Page 15: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

ES6, ES7 and TypeScript

ES5: es5.github.io

ES6: git.io/es6features

ES7: bit.ly/es7features

TS: www.typescriptlang.org TSES7 ES6 ES5

Page 16: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

http://caniuse.com/#search=es5

Page 17: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

http://caniuse.com/#search=es6

Page 18: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

TypeScript$ npm install -g typescript

function greeter(person: string) { return "Hello, " + person;} var user = "Jane User"; document.body.innerHTML = greeter(user);

$ tsc greeter.ts

https://www.typescriptlang.org/docs/tutorial.html

Page 20: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

“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 efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.”

https://nodejs.org

https://github.com/creationix/nvm

Page 21: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

Leading JavaScript Frameworks in 2017

angular.io

facebook.github.io/react

vuejs.org

Page 22: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017
Page 23: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017
Page 24: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

Jobs on IndeedSeptember 2017

0

1,750

3,500

5,250

7,000

Angular Aurelia Backbone Ember Knockout React Vue

Page 25: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

Stack Overflow Tags

September 2017

0

20,000

40,000

60,000

80,000

Angular Aurelia Backbone Knockout Ember React Vue

Page 26: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

GitHub StarsSeptember 2017

0

20,000

40,000

60,000

80,000

Angular Aurelia Backbone Knockout Ember React Vue

Page 27: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

GitHub Star Growth

Page 28: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

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>

Page 29: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Hello World with Angularimport { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component';

@NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

Page 30: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

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);

Page 31: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017
Page 32: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Angular CLI

Page 33: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Angular CLI

Page 34: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Get Started with Angular

Angular QuickStart

https://angular.io/docs/ts/latest/quickstart.html

Angular Seed

https://github.com/mgechev/angular-seed

Angular Seed Advanced

https://github.com/NathanWalker/angular-seed-advanced

Page 35: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Demo: Build an Angular Clientexport class BeerListComponent implements OnInit { beers: Array<any>;

constructor(private beerService: BeerService, private giphyService: GiphyService) { }

ngOnInit() { this.beerService.getAll().subscribe( data => { this.beers = data; for (let beer of this.beers) { this.giphyService.get(beer.name).subscribe(url => { beer.giphyUrl = url; }); } }, error => console.log(error) ) } }

Page 36: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@spring_io #springio17

Progressive Web Apps

Page 38: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017
Page 39: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

The JHipster Mini-Book

4.0 Release on Sep 22, 2017

jhipster-book.com

21-points.com

@jhipster_book

Write your own InfoQ mini-book! github.com/mraible/infoq-mini-book

Page 40: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Action!

Try Spring Boot

Try Angular

Explore PWAs

Enjoy the bootiful experience!

Page 41: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

🔐 it down with Okta!

https://developer.okta.com/blog/2017/09/19/build-a-secure-notes-application-with-kotlin-typescript-and-okta

Page 42: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

@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>

Page 44: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

developer.okta.com/blog

Page 45: Bootiful Development with Spring Boot and Angular - Connect.Tech 2017

Questions?Keep in touch!

raibledesigns.com

@mraible

Presentations

speakerdeck.com/mraible

Code

github.com/oktadeveloper