Reactive Streams in the Web. Florian Stefan ebay Classifieds Group GOTO Berlin 2017

Size: px
Start display at page:

Download "Reactive Streams in the Web. Florian Stefan ebay Classifieds Group GOTO Berlin 2017"

Transcription

1

2 Reactive Streams in the Web Florian Stefan ebay Classifieds Group GOTO Berlin 2017

3 Who am I? Florian Stefan mobile.de (ebay Classifieds Group)

4 Why are we here? Concurrent Remote BFF Calls HTTP Service A Topic Event-Driven Service B Topic Systems Database

5 HTML Rendering Widget Widget Server-Side Rendering Widget Concurrent Remote BFF Calls Widget Widget AJAX

6 HTML Rendering Server-Side Rendering Time To First Byte Prerendering / Caching

7 HTML Rendering AJAX Head-of-line blocking Multiplexing with HTTP/2

8 The Reactive Landscape Concurrent Remote Calls Backpressure Marble Diagrams RxJava Distributed Systems Reactive Streams Reactive Extensions Event-Driven Systems Akka Streams Higher-Order Functions Reactor Declarative Programming

9 The Reactive Landscape Concurrent Remote Calls Backpressure Marble Diagrams RxJava Distributed Systems Reactive Streams Reactive Extensions Event-Driven Systems Akka Streams Higher-Order Functions Reactor Declarative Programming

10 Reactive Extensions Network Boundary Service API some thing public Something loadbyid(int id) { return Service API Resource somethings.loadbyid(id); public } interface Somethings { Something loadbyid(int id); }

11 Reactive Extensions Network Boundary Service API public CompletableFuture<Something> Service loadbyid(int API id) { Resource return supplyasync(() -> somethings.loadbyid(id), executor); } some thing

12 Reactive Extensions Network Boundary Service API some thing public CompletableFuture<Something> loadbyid(int id) { Service API Resource CompletableFuture<Something> eventualsomething = new CompletableFuture<>(); public interface Somethings { somethings.loadbyid(id, (error, something) -> { void if loadbyid(int (error!= null) id, { BiConsumer<Exception, Something> callback); eventualsomething.completeexceptionally(error); } } else { eventualsomething.complete(something); } }); } return eventualsomething;

13 Reactive Extensions CompletableFuture<T> represents an already scheduled task completes only once Mono<T> represents a building plan (caller has to subscribe) emits at most one value Flux<T> represents a building plan (caller has to subscribe) emits many values subscribe {, }

14 Reactive Extensions [,, ] Publisher fromarray { } wraps Operator map { } subscribes to Subscribe r subscribe { }

15 Reactive Extensions Circle[] circles = { Circle.of(BLUE),... }; Flux.fromArray(circles).map(circle -> Square.of(circle.getColor())).log().subscribe(...); [main] INFO - onsubscribe() [main] INFO -? [main] INFO - onnext(square(blue)) [main] INFO - onnext(square(yellow)) [main] INFO - onnext(square(green)) [main] INFO - oncomplete()

16 The Reactive Landscape Concurrent Remote Calls Backpressure Marble Diagrams RxJava Distributed Systems Reactive Streams Reactive Extensions Event-Driven Systems Akka Streams Higher-Order Functions Reactor Declarative Programming

17 Backpressure onnext( ) Publisher subscribe Subscriber

18 Backpressure java.util.concurrent.rejectedexecutionexception: Task rejected from ThreadPoolExecutor [ Running, pool size = 2, active threads = 2, queued tasks = 4, completed tasks = 0 ] onnext( 5 ) Publisher Subscriber ExecutorService executorservice = new ThreadPoolExecutor( nthreads, nthreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(capacity) ); ids.stream().map(id -> executorservice.submit(() -> somethings.loadbyid(id))).collect(tolist()).stream().map(waitforsomething()).foreach(handlesomething());

19 Backpressure onnext( ) Publisher request(2) request(3) subscribe Subscriber

20 Backpressure onnext( 5 ) Publisher Subscriber ExecutorService executorservice = new ThreadPoolExecutor( nthreads, nthreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(capacity) ); Scheduler scheduler = Schedulers.fromExecutorService(executorService); Flux.fromIterable(ids).log().flatMap(id -> Mono.just(id).map(somethings::loadById).subscribeOn(scheduler), 3).doOnNext(handleSomething()).subscribe();

21 Backpressure Calling Thread Scheduler flatmap { } subscribeon { }.flatmap(id -> Mono.just(id).map(somethings::loadById).subscribeOn(scheduler), 3) subscribe { }

22 Backpressure onnext( 5 ) Publisher Subscriber [main] INFO - onsubscribe() [main] INFO -? request(3) [main] INFO - onnext(1) [main] INFO - onnext(2) [main] INFO - onnext(3) [pool-1] INFO - request(1) [pool-1] INFO - onnext(4) [pool-2] INFO - request(1) [pool-2] INFO - onnext(5) [pool-2] INFO - oncomplete() ExecutorService executorservice = new ThreadPoolExecutor( nthreads, nthreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(capacity) ); Scheduler scheduler = Schedulers.fromExecutorService(executorService); Flux.fromIterable(ids).log().flatMap(id -> Mono.just(id).map(somethings::loadById).subscribeOn(scheduler), 3).doOnNext(handleSomething()).subscribe();

23 The Reactive Landscape Concurrent Remote Calls Backpressure Marble Diagrams RxJava Distributed Systems Reactive Streams Reactive Extensions Event-Driven Systems Akka Streams Higher-Order Functions Reactor Declarative Programming

24 Progressive HTML Rendering Widget Widget Transfer-Encoding: chunked Widget Concurrent Remote BFF Calls Widget Widget

25 Progressive HTML Rendering <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-webflux</ artifactid> </dependency>

26 Progressive Hello public class Application { Hello Hello public static void main(string[] args) { Hello SpringApplication.run(Application.class, args); = "hello") public Flux<String> sayhello() { return Flux.interval(Duration.ofMillis(500)).map(tick -> "Hello\n"); } } curl -i -N localhost:8080/hello HTTP/ Content-Type: text/plain Transfer-Encoding: chunked

27 Progressive HTML Rendering Publisher Spring 5 WebClient Processor Reactive-Friendly Thymeleaf View Subscribe r Reactive Web Server

28 Progressive HTML Rendering Publisher Spring 5 WebClient URI uri =... String name =... Mono<Pagelet> pageletmono = webclient.get().uri(uri).exchange().flatmap(res -> res.bodytomono(string.class)).map(body -> new Pagelet(name, body)); List<Mono<Pagelet>> pageletmonos =...;... = Flux.merge(pageletMonos);

29 Progressive HTML Rendering Processor Reactive-Friendly Thymeleaf = "/widgets") public String widgets(model model) { List<String> pageletnames = widgetservice.getpageletnames(); Flux<Pagelet> pagelets = widgetservice.loadpagelets(); model.addattribute("pageletnames", pageletnames); model.addattribute("pagelets", ReactiveDataDriverContextVariable new ReactiveDataDriverContextVariable(pagelets, 1)); return "widgets"; }

30 Progressive HTML Rendering Processor Reactive-Friendly Thymeleaf View <article th:each="pagelet: ${pagelets}" class="..."> <section class="..."> <div class="..."> <div th:utext="${pagelet.content}" class="..."></div> </div> </section> </article> List<Mono<Pagelet>> pageletmonos =...;... = Flux.merge(pageletMonos);

31 Progressive HTML Rendering Processor Reactive-Friendly Thymeleaf View <script <article th-inline="javascript" th:each="pageletname: th:each="pagelet ${pageletnames}" : ${pagelets}"> class="..."> (function() { <section var element class="..."> = document.getelementbyid("[[$ {pagelet.name}]]"); <div th:id="${pageletname}" class="..."> if(element) <div class="...">...</div> { </div> element.innerhtml = "[(${pagelet.content})]"; </section> } </article> })(); </script>

32 Progressive HTML Rendering

33 What s more? Reactive Systems Cold Streams vs. Hot Streams Reactive Database Drivers Backpressure Strategies Threaded vs. Evented Server Model WebSockets and Server-Sent Events

34 Thank you!

35 Questions?

36

Spring MVC 4.x Spring 5 Web Reactive

Spring MVC 4.x Spring 5 Web Reactive Part 1 Spring MVC 4.x Spring 5 Web Reactive Rossen Stoyanchev @rstoya05 Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive Shortcut Annotations @RequestMapping @GetMapping @PostMapping

More information

Going Reactive with Spring 5. JavaSkop 18

Going Reactive with Spring 5. JavaSkop 18 Going Reactive with Spring 5 JavaSkop 18 Who am I? Java Technical Lead at Seavus 17 years in the industry Spring Certified Professional You can find me at: drazen.nikolic@seavus.com @drazenis programminghints.com

More information

Spring Framework 5.0 Reactive Web Application

Spring Framework 5.0 Reactive Web Application 2017 2016 Pivotal Software, Inc. All rights reserved. # Spring Framework 5.0 Reactive Web Application Toshiaki Maki (@making) 2016-05-17 Java Day Tokyo 2017 Who am I? Toshiaki Maki (@making) https://blog.ik.am

More information

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru

Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase. Naresh Chintalcheru Writing Reactive Application using Angular/RxJS, Spring WebFlux and Couchbase Naresh Chintalcheru Who is Naresh Technology professional for 18+ years Currently, Technical Architect at Cars.com Lecturer

More information

Reactive Programming in Java. by Vadym Kazulkin and Rodion Alukhanov, ip.labs GmbH

Reactive Programming in Java. by Vadym Kazulkin and Rodion Alukhanov, ip.labs GmbH Reactive Programming in Java by Vadym Kazulkin and Rodion Alukhanov, ip.labs GmbH ip.labs GmbH Agenda Reactive Programming in general Reactive Streams and JDK 9 Flow API RxJava 2 Spring Reactor 3 Demo

More information

Streams, Functional & Reactive Programming with Java & Spring WebFlux WORKSHOP

Streams, Functional & Reactive Programming with Java & Spring WebFlux WORKSHOP Streams, Functional & Reactive Programming with Java & Spring WebFlux WORKSHOP 1 INTRODUCTION Goal for today: create a reactive REST service and actually know what we are doing To do that we ll explore

More information

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel

Reaktive Anwendungen mit RxJava. Dr. Michael Menzel Reaktive Anwendungen mit RxJava Dr. Michael Menzel DIGITALIZATION DIGITALIZATION DIGITALIZATION DIGITALIZATION REACTIVE ARCHITECTURES How can we build highly interactive (responsive) systems, which are

More information

Got a question during this session? Post it on sli.do ( #K100 )

Got a question during this session? Post it on sli.do ( #K100 ) Got a question during this session? Post it on sli.do ( #K100 ) RxJava, RxJava 2, Reactor State of the art of Reactive Streams on the JVM David Wursteisen Writing asynchronous code: it sucks Future ExecutorService

More information

An overview of (a)sync & (non-) blocking

An overview of (a)sync & (non-) blocking An overview of (a)sync & (non-) blocking or why is my web-server not responding? with funny fonts! Experiment & reproduce https://github.com/antonfagerberg/play-performance sync & blocking code sync &

More information

Session 24. Spring Framework Introduction. Reading & Reference. dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p

Session 24. Spring Framework Introduction. Reading & Reference. dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p Session 24 Spring Framework Introduction 1 Reading & Reference Reading dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p http://engineering.pivotal.io/post/must-know-spring-boot-annotationscontrollers/

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Functional Programming as in Java 8 Streams of Java 8 Lambda expressions Method references Expectations

More information

Fire Exit Announcement

Fire Exit Announcement Fire Exit Announcement Please note the locations of the surrounding emergency exits & located the nearest lit EXIT sign to you In the event of a fire alarm or other emergency, please calmly exit to the

More information

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Reactive Programming in Java. Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved. Prerequisites: Core Java Lambda Expressions Method references Functional Programming Web - application development

More information

Remote controlling Parrot AR Drone with Spring Boot & Vaadin. Peter expert & trainer

Remote controlling Parrot AR Drone with Spring Boot & Vaadin. Peter expert & trainer Remote controlling Parrot AR Drone with Spring Boot & Vaadin Peter Lehto @peter_lehto expert & trainer Vaadin & GWT Vaadin Spring Integration Spring Boot How to get started? QA Drone Server driven UI

More information

Reactive programming: origins & ecosystem. Jonas Chapuis, Ph.D.

Reactive programming: origins & ecosystem. Jonas Chapuis, Ph.D. Reactive programming: origins & ecosystem Jonas Chapuis, Ph.D. Timeline Functional Reactive Animation (Fran Library, Haskell) Rx 1.0 for.net, Erik Meijer & team at Microsoft Elm language Rx for Java, Netflix

More information

Sébastien

Sébastien Why Spring Sébastien Deleuze @sdeleuze Kotlin Today most popular way to build web applications + Spring Boot 2 Let s see why and how far we can go with... + Spring Boot 3 Kotlin 4 Sample Spring Boot blog

More information

RxJava. and WHY you should care. Jeroen Tietema

RxJava. and WHY you should care. Jeroen Tietema RxJava and WHY you should care Jeroen Tietema Overview intro of RxJava why? some tips What is RxJava? Java implementation of Reactive Extensions Reactive Extensions is.net implementation of Reactive Programming

More information

Achieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc.

Achieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc. Achieving Scalability and High Availability for clustered Web Services using Apache Synapse Ruwan Linton [ruwan@apache.org] WSO2 Inc. Contents Introduction Apache Synapse Web services clustering Scalability/Availability

More information

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower Reactive Java: Promises and Streams with Reakt Geoff Chandler and Rick Hightower What is Reakt in 30 seconds! Reakt General purpose library for callback coordination and streams Implements JavaScript

More information

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Simone Bordet sbordet@intalio.com 1 Agenda What are Comet web applications? Impacts of Comet web applications WebSocket

More information

WebTestClient. Version RELEASE

WebTestClient. Version RELEASE WebTestClient Version 5.0.9.RELEASE WebTestClient is a thin shell around WebClient, using it to perform requests and exposing a dedicated, fluent API for verifying responses. WebTestClient bind to a WebFlux

More information

Asynchronous API with CompletableFuture

Asynchronous API with CompletableFuture Asynchronous API with CompletableFuture Performance Tips and Tricks Sergey Kuksenko Java Platform Group, Oracle October, 2017 Safe Harbor Statement The following is intended to outline our general product

More information

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke Going Reactive Reactive Microservices based on Vert.x JavaLand Kristian Kottke Whoami Kristian Kottke Lead Software Engineer -> iteratec Interests Software Architecture Big Data Technologies Kristian.Kottke@iteratec.de

More information

DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS

DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS Use non blocking I/O for scalable and resilient server applications MAGNUS LARSSON, PÄR WENÅKER, ANDERS ASPLUND 2014-10-23 CALLISTAENTERPRISE.SE AGENDA The

More information

Exercise for OAuth2 security. Andreas Falk

Exercise for OAuth2 security. Andreas Falk Exercise for OAuth2 security Andreas Falk Table of Contents 1. What we will build....................................................................... 1 2. Step 1....................................................................................

More information

Completable Future. Srinivasan Raghavan Senior Member of Technical Staff Java Platform Group

Completable Future. Srinivasan Raghavan Senior Member of Technical Staff Java Platform Group Completable Future Srinivasan Raghavan Senior Member of Technical Staff Java Platform Group Program Agenda 1 2 3 4 java.util.future Introduction Cloud Services Design and the fight for Performance CompletableFuture

More information

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard Fellow

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard  Fellow Four times Microservices: REST, Kubernetes, UI Integration, Async Eberhard Wolff @ewolff http://ewolff.com Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/

More information

C25: Creating Web Services using the Spring Framework

C25: Creating Web Services using the Spring Framework CISC 3120 C25: Creating Web Services using the Spring Framework Hui Chen Department of Computer & Information Science CUNY Brooklyn College 5/9/2018 CUNY Brooklyn College 1 Outline Recap & Review The Model-View-Controller

More information

Practical RxJava @SimonBasle @Couchbase @InfoQFR @bbl_fr the Plan & Goals RxJava 101 RxJava 101 migrate a Legacy application RxJava 101 learn Operators of interest migrate a Legacy application RxJava 101

More information

CPL 2016, week 6. Asynchronous execution. Oleg Batrashev. March 14, Institute of Computer Science, Tartu, Estonia

CPL 2016, week 6. Asynchronous execution. Oleg Batrashev. March 14, Institute of Computer Science, Tartu, Estonia CPL 2016, week 6 Asynchronous execution Oleg Batrashev Institute of Computer Science, Tartu, Estonia March 14, 2016 Overview Studied so far: 1. Inter-thread visibility: JMM 2. Inter-thread synchronization:

More information

Module 6 Node.js and Socket.IO

Module 6 Node.js and Socket.IO Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides

More information

Introduction to Spring Framework: Hibernate, Spring MVC & REST

Introduction to Spring Framework: Hibernate, Spring MVC & REST Introduction to Spring Framework: Hibernate, Spring MVC & REST Training domain: Software Engineering Number of modules: 1 Duration of the training: 36 hours Sofia, 2017 Copyright 2003-2017 IPT Intellectual

More information

Asynchronous API with CompletableFuture

Asynchronous API with CompletableFuture Asynchronous API with CompletableFuture Performance Tips and Tricks Sergey Kuksenko Java Platform Group, Oracle November, 2017 Safe Harbor Statement The following is intended to outline our general product

More information

Business Logic and Spring Framework

Business Logic and Spring Framework Business Logic and Spring Framework Petr Křemen petr.kremen@fel.cvut.cz Winter Term 2017 Petr Křemen (petr.kremen@fel.cvut.cz) Business Logic and Spring Framework Winter Term 2017 1 / 32 Contents 1 Business

More information

The Reactive Landscape Clement Escoffier, Vert.x Core Developer, Red Hat

The Reactive Landscape   Clement Escoffier, Vert.x Core Developer, Red Hat The Reactive Landscape http://bit.ly/jfokus-reactive Clement Escoffier, Vert.x Core Developer, Red Hat Reactive all the things??? Elasticity Manifesto Actor System Asynchrony Programming Events 2 Message

More information

BE PROACTIVE USE REACTIVE

BE PROACTIVE USE REACTIVE BE PROACTIVE USE REACTIVE This morning we re going to talk about reactive programming. We ll cover some of the what, why, and how, hopefully with a bend towards grasping the fundamentals. We ll have some

More information

SPRING CLOUD AGIM EMRULI - MIMACOM

SPRING CLOUD AGIM EMRULI - MIMACOM SPRING CLOUD AGIM EMRULI - MIMACOM AGIM EMRULI @AEMRULI AEMRULI AGIM.EMRULI@ MIMACOM.COM XD BOOT GRAILS CLOUD IO EXECUTION STREAMS, TAPS, JOBS FULL STACK, WEB SERVICE REGISTRY, CIRCUIT BREAKER, METRICS

More information

Performance Case Study

Performance Case Study Performance Case Study @Fabian_Frank Yahoo! Search, Engineer Youthmedia.eu, Volunteer A Dynamic Website self-contained App self-contained App self-contained App node v0.4.x multi-core

More information

Spring Framework 5.0 Themes & Trends

Spring Framework 5.0 Themes & Trends Spring Framework 5.0 Themes & Trends a.k.a. Reactive Microservices on JDK 9 Juergen Hoeller Spring Framework Lead Pivotal 1 Spring Framework 4.3 Last 4.x feature release! 4.3 GA: June 2016 Extended support

More information

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu GETTING STARTED WITH TYPESCRIPT Installing TypeScript Compiling the code Building a simple demo. UNDERSTANDING CLASSES Building a class Adding properties Demo of

More information

Implementing Microservices Tracing with Spring Cloud and Zipkin

Implementing Microservices Tracing with Spring Cloud and Zipkin Implementing Microservices Tracing with Spring Cloud and Zipkin Marcin Grzejszczak, @mgrzejszczak 1 2017 Pivotal About me Spring Cloud developer at Pivotal Working mostly on Spring Cloud Sleuth Spring

More information

User Interaction: jquery

User Interaction: jquery User Interaction: jquery Assoc. Professor Donald J. Patterson INF 133 Fall 2012 1 jquery A JavaScript Library Cross-browser Free (beer & speech) It supports manipulating HTML elements (DOM) animations

More information

Module 3 Web Component

Module 3 Web Component Module 3 Component Model Objectives Describe the role of web components in a Java EE application Define the HTTP request-response model Compare Java servlets and JSP components Describe the basic session

More information

CS 3305 Intro to Threads. Lecture 6

CS 3305 Intro to Threads. Lecture 6 CS 3305 Intro to Threads Lecture 6 Introduction Multiple applications run concurrently! This means that there are multiple processes running on a computer Introduction Applications often need to perform

More information

Spring Professional v5.0 Exam

Spring Professional v5.0 Exam Spring Professional v5.0 Exam Spring Core Professional v5.0 Dumps Available Here at: /spring-exam/core-professional-v5.0- dumps.html Enrolling now you will get access to 250 questions in a unique set of

More information

Introduction to Spring Framework: Hibernate, Web MVC & REST

Introduction to Spring Framework: Hibernate, Web MVC & REST Introduction to Spring Framework: Hibernate, Web MVC & REST Course domain: Software Engineering Number of modules: 1 Duration of the course: 50 hours Sofia, 2017 Copyright 2003-2017 IPT Intellectual Products

More information

CSP IN JAVASCRIPT.

CSP IN JAVASCRIPT. CSP IN JAVASCRIPT Page 1 of 31 VINCENZO CHIANESE BUGS INTRODUCER AT APIARY https://github.com/xvincentx @D3DVincent https://vncz.js.org Page 2 of 31 COMMUNICATING SEQUENTIAL PROCESSES Page 3 of 31 THE

More information

Reactive programming and its effect on performance and the development process

Reactive programming and its effect on performance and the development process MASTER S THESIS LUND UNIVERSITY 2017 Reactive programming and its effect on performance and the development process Gustav Hochbergs Department of Computer Science Faculty of Engineering LTH ISSN 1650-2884

More information

Assignment, part 2. Statement and concepts INFO-0010

Assignment, part 2. Statement and concepts INFO-0010 Assignment, part 2 Statement and concepts INFO-0010 Outline Statement Implementation of concepts Objective Mastermind game using HTTP GET and HTTP POST methods The platform Architecture Root page ("/")

More information

Spring Cloud Stream Reference Guide

Spring Cloud Stream Reference Guide Chelsea.RELEASE Sabby Anandan, Marius Bogoevici, Eric Bottard, Mark Fisher, Ilayaperumal Gopinathan, Gunnar Hillert, Mark Pollack, Patrick Peralta, Glenn Renfro, Thomas Risberg, Dave Syer, David Turanski,

More information

UI-Testing, Reactive Programming and some Kotlin.

UI-Testing, Reactive Programming and some Kotlin. UI-Testing, Reactive Programming and some Kotlin anders.froberg@liu.se Load up your guns, and bring your friends This is the end, My only Friend, the end Äntligen stod prästen i predikstolen I ll be back

More information

Mobile application development using the ReactiveX framework

Mobile application development using the ReactiveX framework Masaryk University Faculty of Informatics Mobile application development using the ReactiveX framework Bachelor s Thesis Robin Křenecký Brno, Spring 2018 Masaryk University Faculty of Informatics Mobile

More information

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service

Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Overview In this lab, you'll create advanced Node-RED flows that: Connect the Watson Conversation service to Facebook

More information

CSCI 201L Written Exam #1 Fall % of course grade

CSCI 201L Written Exam #1 Fall % of course grade Name Final Score /15 ID Extra Credit /0.5 Lecture Section (circle one): TTh 8:00-9:20 TTh 9:30-10:50 TTh 11:00-12:20 CSCI 201L Fall 2017 15% of course grade The exam is one hour and 50 minutes and is closed

More information

Comprehensive Angular 2 Review of Day 3

Comprehensive Angular 2 Review of Day 3 Form Validation: built in validators: added to template: required minlength maxlength pattern form state: state managed through NgModel classes: control has been visited: ng-touched or ng-untouched control

More information

The New HTTP Client API in Java 11

The New HTTP Client API in Java 11 The New HTTP Client API in Java 11 Sergey Kuksenko Java Platform Group, Oracle October, 2018 Safe Harbor Statement The following is intended to outline our general product directon. It is intended for

More information

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Microservices Implementations not only with Java. Eberhard Wolff Fellow Microservices Implementations not only with Java Eberhard Wolff http://ewolff.com @ewolff Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/ http://microservices-book.com/

More information

Modern app programming

Modern app programming Modern app programming with RxJava and Eclipse Vert.x #QConSP @vertx_project Who am I? Vert.x core team member since 2016 Working at since 2012 Contributing specifically to monitoring and clustering @tsegismont

More information

Reactive Programming with Vert.x

Reactive Programming with Vert.x Reactive Programming with Vert.x Embrace asynchronous to build responsive systems Clement Escoffier Principal Software Engineer, Red Hat Reactive The new gold rush? Reactive system, reactive manifesto,

More information

PLCHESSQL. - SCHACH MIT APEX, NODEJS UND TWITTER AUTHOR: MORITZ SCHENKEL SYNTEGRIS INFORMATION SOLUTIONS GMBH

PLCHESSQL.  - SCHACH MIT APEX, NODEJS UND TWITTER AUTHOR: MORITZ SCHENKEL SYNTEGRIS INFORMATION SOLUTIONS GMBH PLCHESSQL - SCHACH MIT APEX, NODEJS UND TWITTER AUTHOR: MORITZ SCHENKEL www.syntegris.de whoami 31 years old married 2 cats MSc Strategic Information Management Consultant at Syntegris information solutions

More information

The Road to Reactive with RxJava. Or: How to use non blocking I/O without wanting to kill yourself

The Road to Reactive with RxJava. Or: How to use non blocking I/O without wanting to kill yourself The Road to Reactive with RxJava Or: How to use non blocking I/O without wanting to kill yourself Legacy An accomplishment that remains relevant long after a person has died Software is not so lucky

More information

Reactive Programming with RxJS

Reactive Programming with RxJS Extracted from: Reactive Programming with RxJS Untangle Your Asynchronous JavaScript Code This PDF file contains pages extracted from Reactive Programming with RxJS, published by the Pragmatic Bookshelf.

More information

CS 498RK FALL RESTFUL APIs

CS 498RK FALL RESTFUL APIs CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources

More information

[module lab 1.2] STRUCTURING PROGRAMS IN TASKS

[module lab 1.2] STRUCTURING PROGRAMS IN TASKS v1.0 Sistemi Concorrenti e di Rete LS II Facoltà di Ingegneria - Cesena a.a 2008/2009 [module lab 1.2] STRUCTURING PROGRAMS IN TASKS 1 STRUCTURING CONCURRENT PROGRAMS INTO TASKS Task concept abstract,

More information

What is Spring Cloud

What is Spring Cloud What is Spring Cloud 1 What is Spring Cloud Service Discovery (Eureka) API Gateway (Zuul) Config Server (Spring Config) Circuit Breaker (Hystrix, Turbine) Client Side Load-balancing (Ribbon) Distributed

More information

Jinx Malware 2.0 We know it s big, we measured it! Itzik Kotler Yoni Rom

Jinx Malware 2.0 We know it s big, we measured it! Itzik Kotler Yoni Rom Jinx Malware 2.0 We know it s big, we measured it! Itzik Kotler Yoni Rom This is how your browser looks like before Jinx has loaded This is how your browser looks like after Jinx has loaded Did you see

More information

Spring Data JPA, QueryDSL 실습 JPAQueryFactory 이용

Spring Data JPA, QueryDSL 실습 JPAQueryFactory 이용 Spring Data JPA, QueryDSL 실습 JPAQueryFactory 이용 이전예제의 QueryDSL 작성부분만 JPAQueryFactory 를사용하여구현해보자. 다른점은 JPAQueryFactory 인스턴스생성을위해스프링부트메인에 @Bean 으로정의한부분과 EmpRepositoryImpl 의쿼리작성부분이조금다르고 groupby 처리메소드가추가되었다.

More information

Final Concurrency. Oleg October 27, 2014

Final Concurrency. Oleg October 27, 2014 Final Concurrency Oleg Šelajev @shelajev oleg@zeroturnaround.com October 27, 2014 Feedbacks Task Executors Fork-Join framework Completable Future Agenda 2 HOMEWORK 4 FEEDBACK THREAD LOCAL VARIABLES TASK

More information

State of the real-time web with Django

State of the real-time web with Django State of the real-time web with Django Aymeric Augustin - @aymericaugustin DjangoCon US - September 5th, 2013 1 What are we talking about? 2 Real-time 1. Systems responding within deadlines 2. Simulations

More information

ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I

ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I ECE 587 Hardware/Software Co-Design Spring 2018 1/15 ECE 587 Hardware/Software Co-Design Lecture 07 Concurrency in Practice Shared Memory I Professor Jia Wang Department of Electrical and Computer Engineering

More information

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro

Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o

More information

Patterns of Resilience How to build robust, scalable & responsive systems

Patterns of Resilience How to build robust, scalable & responsive systems Patterns of Resilience How to build robust, scalable & responsive systems Uwe Friedrichsen (codecentric AG) GOTO Night Amsterdam 18. May 2015 @ufried Uwe Friedrichsen uwe.friedrichsen@codecentric.de http://slideshare.net/ufried

More information

Common Java Concurrency pitfalls. Presented by : Kunal Sinha Austin Java Users Group 03/26/2019

Common Java Concurrency pitfalls. Presented by : Kunal Sinha Austin Java Users Group 03/26/2019 Common Java Concurrency pitfalls Presented by : Kunal Sinha Austin Java Users Group 03/26/2019 About me Seasoned software engineer primarily working in the area of Identity and access management. Spent

More information

CONCURRENCY IN JAVA Course Parallel Computing

CONCURRENCY IN JAVA Course Parallel Computing CONCURRENCY IN JAVA Course Parallel Computing Wolfgang Schreiner Research Institute for Symbolic Computation (RISC) Wolfgang.Schreiner@risc.jku.at http://www.risc.jku.at Java on a NUMA Architecture Loading

More information

Session 25. Spring Controller. Reading & Reference

Session 25. Spring Controller. Reading & Reference Session 25 Spring Controller 1 Reading Reading & Reference www.tutorialspoint.com/spring/spring_web_mvc_framework.htm https://springframework.guru/spring-requestmapping-annotation/ Reference Spring home

More information

CSCI 201L Written Exam #1 Fall % of course grade

CSCI 201L Written Exam #1 Fall % of course grade Final Score /15 Name SOLUTION ID Extra Credit /0.5 Lecture Section (circle one): TTh 8:00-9:20 TTh 9:30-10:50 TTh 11:00-12:20 CSCI 201L Written Exam #1 Fall 2017 15% of course grade The exam is one hour

More information

Interactor Tree. Edith Law & Mike Terry

Interactor Tree. Edith Law & Mike Terry Interactor Tree Edith Law & Mike Terry Today s YouTube Break https://www.youtube.com/watch?v=mqqo-iog4qw Routing Events to Widgets Say I click on the CS349 button, which produces a mouse event that is

More information

VS08 This One Goes to Going Parallel with PFX, PLINQ, TPL and Async Keywords

VS08 This One Goes to Going Parallel with PFX, PLINQ, TPL and Async Keywords VS08 This One Goes to Going Parallel with PFX, PLINQ, TPL and Async Keywords Brian Noyes Chief Architect, IDesign Inc (www.idesign.net) brian.noyes@idesign.net, @briannoyes About Brian Chief Architect

More information

Reactive Application Development

Reactive Application Development SAMPLE CHAPTER Reactive Application Development by Duncan DeVore, Sean Walsh and Brian Hanafee Sample Chapter 7 Copyright 2018 Manning Publications brief contents PART 1 FUNDAMENTALS... 1 1 What is a reactive

More information

Lecture 1: Overview of Java

Lecture 1: Overview of Java Lecture 1: Overview of Java What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed for easy Web/Internet applications Widespread

More information

Thread Pools SE 441. Prof. Bullinger

Thread Pools SE 441. Prof. Bullinger Thread Pools SE 441 Prof. Bullinger Thread Pools Thread Pool Limitations Sizing Thread Pools ThreadPoolExecutor Queuing Tasks Parallelizing Loops Thread Pool Limitations Task Dependencies Different types

More information

6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics

6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics 6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics Grab Bag & Perspective January 31, 2014 6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics January 31, 2014 1 / 19 Outline 1 Perspective

More information

OAuth2 Autoconfig. Copyright

OAuth2 Autoconfig. Copyright Copyright Table of Contents... iii 1. Downloading... 1 1.1. Source... 1 1.2. Maven... 1 1.3. Gradle... 2 2. Authorization Server... 3 3. Resource Server... 4 I. Token Type in User Info... 5 II. Customizing

More information

C# Asynchronous Programming Model

C# Asynchronous Programming Model Spring 2014 C# Asynchronous Programming Model A PRACTICAL GUIDE BY CHRIS TEDFORD TABLE OF CONTENTS Introduction... 2 Background Information... 2 Basic Example... 3 Specifications and Usage... 4 BeginInvoke()...

More information

Developing ASP.NET MVC 5 Web Applications

Developing ASP.NET MVC 5 Web Applications 20486C - Version: 1 23 February 2018 Developing ASP.NET MVC 5 Web Developing ASP.NET MVC 5 Web 20486C - Version: 1 5 days Course Description: In this course, students will learn to develop advanced ASP.NET

More information

Microservices with Node.js

Microservices with Node.js Microservices with Node.js Objectives In this module we will discuss: Core Node.js concepts Node Package Manager (NPM) The Express Node.js package The MEAN stack 1.1 What is Node.js? Node.js [ https://nodejs.org/

More information

Corey Clark PhD Daniel Montgomery

Corey Clark PhD Daniel Montgomery Corey Clark PhD Daniel Montgomery Web Dev Platform Cross Platform Cross Browser WebGL HTML5 Web Socket Web Worker Hardware Acceleration Optimized Communication Channel Parallel Processing JaHOVA OS Kernel

More information

Execution Architecture

Execution Architecture Execution Architecture Software Architecture VO (706.706) Roman Kern Institute for Interactive Systems and Data Science, TU Graz 2018-11-07 Roman Kern (ISDS, TU Graz) Execution Architecture 2018-11-07

More information

Name Default Type Description. id null String Unique identifier of the component.

Name Default Type Description. id null String Unique identifier of the component. 3.116 TabView PrimeFaces Userʼs Guide TabView is a tabbed panel component featuring client side tabs, dynamic content loading with ajax and content transition effects. Info Tag Component Class Component

More information

Project Avatar: Server Side JavaScript on the JVM GeeCon - May David Software Evangelist - Oracle

Project Avatar: Server Side JavaScript on the JVM GeeCon - May David Software Evangelist - Oracle Project Avatar: Server Side JavaScript on the JVM GeeCon - May 2014! David Delabassee @delabassee Software Evangelist - Oracle The following is intended to outline our general product direction. It is

More information

CS333 Intro to Operating Systems. Jonathan Walpole

CS333 Intro to Operating Systems. Jonathan Walpole CS333 Intro to Operating Systems Jonathan Walpole Threads & Concurrency 2 Threads Processes have the following components: - an address space - a collection of operating system state - a CPU context or

More information

Java with Node.js Powering the Next Generation of Web Applications

Java with Node.js Powering the Next Generation of Web Applications Java with Node.js Powering the Next Generation of Web Applications Oracle Code One, Oct 23rd 2018 Chris Bailey Chief Architect, Cloud Native Runtimes @IBM baileyc@uk.ibm.com @Chris Bailey CloudNativeJS.io

More information

Akumina Digital Workplace

Akumina Digital Workplace Akumina Digital Workplace Developer Guide Version 1.1 (May 2016) Table of Contents TABLE OF CONTENTS... 2 AN INTRODUCTION TO THE DIGITAL WORKPLACE FRAMEWORK... 3 Understanding Callbacks... 3 Understanding

More information

Programming Paradigms for Concurrency Lecture 10 The Actor Paradigm

Programming Paradigms for Concurrency Lecture 10 The Actor Paradigm Programming Paradigms for Concurrency Lecture 10 The Actor Paradigm Based on a course on Principles of Reactive Programming by Martin Odersky, Erik Meijer, Roland Kuhn Modified by Thomas Wies New York

More information

Future Web App Technologies

Future Web App Technologies Future Web App Technologies Mendel Rosenblum MEAN software stack Stack works but not the final say in web app technologies Angular.js Browser-side JavaScript framework HTML Templates with two-way binding

More information

Parallel Task Executor in Java

Parallel Task Executor in Java Parallel Task Executor in Java Niravkumar Patel Computer Science Department San Jose State University San Jose, CA 95192 425-772-2509 niravkumar.patel1989@gmail.com ABSTRACT In software development there

More information

SSC - Web applications and development Introduction and Java Servlet (I)

SSC - Web applications and development Introduction and Java Servlet (I) SSC - Web applications and development Introduction and Java Servlet (I) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics What will we learn

More information

Stream and Batch Processing in the Cloud with Data Microservices. Marius Bogoevici and Mark Fisher, Pivotal

Stream and Batch Processing in the Cloud with Data Microservices. Marius Bogoevici and Mark Fisher, Pivotal Stream and Batch Processing in the Cloud with Data Microservices Marius Bogoevici and Mark Fisher, Pivotal Stream and Batch Processing in the Cloud with Data Microservices Use Cases Predictive maintenance

More information

Web Architecture Review Sheet

Web Architecture Review Sheet Erik Wilde (School of Information, UC Berkeley) INFO 190-02 (CCN 42509) Spring 2009 May 11, 2009 Available at http://dret.net/lectures/web-spring09/ Contents 1 Introduction 2 1.1 Setup.................................................

More information

DOT NET Syllabus (6 Months)

DOT NET Syllabus (6 Months) DOT NET Syllabus (6 Months) THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In- Time Compilation and CLS Disassembling.Net Application to IL

More information