SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Graduation
@@
Sogeti JavaSogeti Java
Java EE, REST,
AngularJS, Code
generation,
Erwin de Gier
generation,
Websockets, NoSQL
Erwin de Gier
Sogeti Java CoE
Amsterdam, September 2015
WhoAmI
• Erwin de Gier
• Software Architect• Software Architect
• Coach Young Professionals
• Technical coach graduation
assignments
3
Introduction
• Graduation assignments, the technical
sideside
• Product owner / Technical coach
• Research topic (technology selection)
• Development of an application
4
Projects
• NLJUG Registration system
• Code generation• Code generation
• Remote Presentation environment
• Websockets, Javascript
• Knowledge Map (Roy Straub)
•Java EE, Angular JS
5
•Java EE, Angular JS
NLJUG Registration system
6
Design
7
Generating HTML
public class Employee {
private String firstname;private String firstname;
private String lastname;
private Date birthday;
}
8
Java Reflection API
for(Field field : employee.getClass().getDeclaredFields()){
Element div = new Element(Tag.valueOf("div"), "");
//Generate Label//Generate Label
Element label = createLabel(field.getName());
div.appendChild(label);
//Check type of field (String, Date, Number, etc.
Class<?> type = field.getType();
//Generate input field
Element input = createInput(type);
div.appendChild(input);
}
9
JSoup and Servlets
protected void doGet(HttpServletRequest request,
HttpServletResponse response){
Element page = generateHTML(request,response);Element page = generateHTML(request,response);
String html = page.html();
request.setAttribute("html",html);
}
<h:outputText value="${html}" />
10
JSR 303 Bean validation
public class Employee {
@NotNull
@Size(Max=25)@Size(Max=25)
@CustomMessage(message="Use at most 25 characters")
private String firstname;
@Temporal(javax.persistence.TemporalType.DATE)
private Date birthday;
@Hidden
private long id;
}
11
}
Pros / Cons
• Pros:
• No manual HTML work (Costs / Time)
• Consistent look and feel, use of• Consistent look and feel, use of
components
• Validation on client and server
• Cons:
• Investment
• Only suits CRUD-like operations
12
• Only suits CRUD-like operations
• Pages must use standard structure
In summary
• Java EE
• JPA, EJB, Servlets, JSF• JPA, EJB, Servlets, JSF
• Custom HTML Generator
• Jsoup
• Bean validation
• Java Reflection API
13
• Java Reflection API
Remote presentations
14
Design
15
Technology
• Websockets
• Javascript• Javascript
• Protocol selection
16
Websockets
17
Problem with websockets
• Low level protocol
• No receipt conformation• No receipt conformation
• No messages types
• No standard headers
• No heartbeat
• Every project implements own
18
• Every project implements own
messaging system
Available protocols
• Stomp https://stomp.github.io/
• WAMP http://wamp.ws/• WAMP http://wamp.ws/
• JSON - RPC
http://www.jsonrpc.org/specification
• MSG-RPC
https://github.com/rooseve/msg-rpc
•Swagger Socket (REST over websockets)
19
•Swagger Socket (REST over websockets)
https://github.com/swagger-
api/swagger-socket
Protocol functions
• RPC (WAMP,JSON-RPC, MSG-RPC)
getUserProfile() -> {'user':'bob','id':'1'}
• PUB/SUB (WAMP, Stomp)
20
Protocol functions
• Headers / Body (Stomp, Swagger)
<StompCommand><StompCommand>
<HeaderName_1>:<HeaderValue_1>
<HeaderName_2>:<HeaderValue_1>
<FrameBody>
• Message types (WAMP, Stomp, JSON-
RPC)
[WELCOME, Session|id, Details|dict]
21
[WELCOME, Session|id, Details|dict]
CONNECT
accept-version:1.2
host:stomp.github.org
Protocol functions
• REST (Swagger Socket)
GET /product/123GET /product/123
DELETE /product/123
22
Example - RPC
23
Summary
• Protocol functions
• Available client and server libraries• Available client and server libraries
• Standards / community support
• Maturity
• After the protocol selection is made
the client and server technology can be
24
the client and server technology can be
selected
Knowledge Map
• Project management
• Skill insufficiencies• Skill insufficiencies
• Quality control
• Currently Excel
25
Design
26
Technology
27
REST API
DELETE /knowlegdemap/<id>
28
Angular JS
• SPA (Single Page Applications)
• Data binding• Data binding
• Reusability (Components)
29
source: https://docs.angularjs.org/guide/databinding
Result
30
In Summary
• Project management
• Excel• Excel
• Web application
•Angular
•REST
• More possibilities!
31
• More possibilities!
Modern
TechnologyTechnology
SogetiSogeti
Sneak peaks
• Enterprise Stack of the Future: Reactive
ReadyReady
• Data analysis with Open Source Big
Data solutions
33
Reactive Ready
• Reactive JVM Applications
• Distributed Eventbus and Shared cluster• Distributed Eventbus and Shared cluster
data
• NoSQL Datastore
34
Reactive Ready
package examples;
public class MyVerticle extends AbstractVerticle {
public void start() throws Exception {
vertx.setPeriodic(1000, arg -> {
vertx.eventBus().publish("event",
new JsonObject().put("eventmessage", "hello"));
});
}
}
35
Open Source Big Data
• Apache Spark
• Apache Hadoop• Apache Hadoop
• MongoDB
• Spring XD
36

Más contenido relacionado

La actualidad más candente

Fighting Ruby code smell
Fighting Ruby code smellFighting Ruby code smell
Fighting Ruby code smell
olegshpynov
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
Jan Gehring
 

La actualidad más candente (20)

RubyMotion #jbday
RubyMotion #jbdayRubyMotion #jbday
RubyMotion #jbday
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
Fighting Ruby code smell
Fighting Ruby code smellFighting Ruby code smell
Fighting Ruby code smell
 
Robotframework
RobotframeworkRobotframework
Robotframework
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
 
rsyslog meets docker
rsyslog meets dockerrsyslog meets docker
rsyslog meets docker
 
The Many Ways to Test Your React App
The Many Ways to Test Your React AppThe Many Ways to Test Your React App
The Many Ways to Test Your React App
 
2017 DevSecCon ZAP Scripting Workshop
2017 DevSecCon ZAP Scripting Workshop2017 DevSecCon ZAP Scripting Workshop
2017 DevSecCon ZAP Scripting Workshop
 
OSMC 2017 | Troubleshooting-icinga 2 by Thomas Widhalm
OSMC 2017 |  Troubleshooting-icinga 2 by Thomas WidhalmOSMC 2017 |  Troubleshooting-icinga 2 by Thomas Widhalm
OSMC 2017 | Troubleshooting-icinga 2 by Thomas Widhalm
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
 
2020 ADDO Spring Break OWASP ZAP Automation
2020 ADDO Spring Break OWASP ZAP Automation2020 ADDO Spring Break OWASP ZAP Automation
2020 ADDO Spring Break OWASP ZAP Automation
 
RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.
 
Automate Thyself
Automate ThyselfAutomate Thyself
Automate Thyself
 
Web Exploitation
Web ExploitationWeb Exploitation
Web Exploitation
 
Implementing real time web applications with Django
Implementing real time web applications with DjangoImplementing real time web applications with Django
Implementing real time web applications with Django
 
Robot Framework for beginners and what is new at 2019
Robot Framework for beginners and what is new at 2019Robot Framework for beginners and what is new at 2019
Robot Framework for beginners and what is new at 2019
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
 
Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016
 
2014 ZAP Workshop 1: Getting Started
2014 ZAP Workshop 1: Getting Started2014 ZAP Workshop 1: Getting Started
2014 ZAP Workshop 1: Getting Started
 

Similar a Afstuderen bij Sogeti Java

Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
Ran Mizrahi
 

Similar a Afstuderen bij Sogeti Java (20)

Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
 
How to Contribute to Apache Usergrid
How to Contribute to Apache UsergridHow to Contribute to Apache Usergrid
How to Contribute to Apache Usergrid
 
How to generate a REST CXF3 application from Swagger ApacheConEU 2016
How to generate a REST CXF3 application from Swagger ApacheConEU 2016How to generate a REST CXF3 application from Swagger ApacheConEU 2016
How to generate a REST CXF3 application from Swagger ApacheConEU 2016
 
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-FormatsBig Data, Data Lake, Fast Data - Dataserialiation-Formats
Big Data, Data Lake, Fast Data - Dataserialiation-Formats
 
Women Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API WorkshopWomen Who Code - RSpec JSON API Workshop
Women Who Code - RSpec JSON API Workshop
 
Setting up a free open source java e-commerce website
Setting up a free open source java e-commerce websiteSetting up a free open source java e-commerce website
Setting up a free open source java e-commerce website
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
A Brief History of OWIN
A Brief History of OWINA Brief History of OWIN
A Brief History of OWIN
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
 
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
Hacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeHacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or Runtime
 

Más de erwindeg

Más de erwindeg (8)

Optimizing Kubernetes deployments with Helm
Optimizing Kubernetes deployments with HelmOptimizing Kubernetes deployments with Helm
Optimizing Kubernetes deployments with Helm
 
Codemotion reactive-java
Codemotion reactive-javaCodemotion reactive-java
Codemotion reactive-java
 
Reactive Java: The state of the world
Reactive Java: The state of the worldReactive Java: The state of the world
Reactive Java: The state of the world
 
Application Modernization
Application ModernizationApplication Modernization
Application Modernization
 
Creating a polyglottestframework
Creating a polyglottestframeworkCreating a polyglottestframework
Creating a polyglottestframework
 
What developers should know about design
What developers should know about designWhat developers should know about design
What developers should know about design
 
Sogeti Guru Night 2015: Changes in-software-development
Sogeti Guru Night 2015: Changes in-software-developmentSogeti Guru Night 2015: Changes in-software-development
Sogeti Guru Night 2015: Changes in-software-development
 
Workshop app-development with wireframes
Workshop app-development with wireframesWorkshop app-development with wireframes
Workshop app-development with wireframes
 

Último

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Último (20)

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 

Afstuderen bij Sogeti Java

  • 2. Java EE, REST, AngularJS, Code generation, Erwin de Gier generation, Websockets, NoSQL Erwin de Gier Sogeti Java CoE Amsterdam, September 2015
  • 3. WhoAmI • Erwin de Gier • Software Architect• Software Architect • Coach Young Professionals • Technical coach graduation assignments 3
  • 4. Introduction • Graduation assignments, the technical sideside • Product owner / Technical coach • Research topic (technology selection) • Development of an application 4
  • 5. Projects • NLJUG Registration system • Code generation• Code generation • Remote Presentation environment • Websockets, Javascript • Knowledge Map (Roy Straub) •Java EE, Angular JS 5 •Java EE, Angular JS
  • 8. Generating HTML public class Employee { private String firstname;private String firstname; private String lastname; private Date birthday; } 8
  • 9. Java Reflection API for(Field field : employee.getClass().getDeclaredFields()){ Element div = new Element(Tag.valueOf("div"), ""); //Generate Label//Generate Label Element label = createLabel(field.getName()); div.appendChild(label); //Check type of field (String, Date, Number, etc. Class<?> type = field.getType(); //Generate input field Element input = createInput(type); div.appendChild(input); } 9
  • 10. JSoup and Servlets protected void doGet(HttpServletRequest request, HttpServletResponse response){ Element page = generateHTML(request,response);Element page = generateHTML(request,response); String html = page.html(); request.setAttribute("html",html); } <h:outputText value="${html}" /> 10
  • 11. JSR 303 Bean validation public class Employee { @NotNull @Size(Max=25)@Size(Max=25) @CustomMessage(message="Use at most 25 characters") private String firstname; @Temporal(javax.persistence.TemporalType.DATE) private Date birthday; @Hidden private long id; } 11 }
  • 12. Pros / Cons • Pros: • No manual HTML work (Costs / Time) • Consistent look and feel, use of• Consistent look and feel, use of components • Validation on client and server • Cons: • Investment • Only suits CRUD-like operations 12 • Only suits CRUD-like operations • Pages must use standard structure
  • 13. In summary • Java EE • JPA, EJB, Servlets, JSF• JPA, EJB, Servlets, JSF • Custom HTML Generator • Jsoup • Bean validation • Java Reflection API 13 • Java Reflection API
  • 16. Technology • Websockets • Javascript• Javascript • Protocol selection 16
  • 18. Problem with websockets • Low level protocol • No receipt conformation• No receipt conformation • No messages types • No standard headers • No heartbeat • Every project implements own 18 • Every project implements own messaging system
  • 19. Available protocols • Stomp https://stomp.github.io/ • WAMP http://wamp.ws/• WAMP http://wamp.ws/ • JSON - RPC http://www.jsonrpc.org/specification • MSG-RPC https://github.com/rooseve/msg-rpc •Swagger Socket (REST over websockets) 19 •Swagger Socket (REST over websockets) https://github.com/swagger- api/swagger-socket
  • 20. Protocol functions • RPC (WAMP,JSON-RPC, MSG-RPC) getUserProfile() -> {'user':'bob','id':'1'} • PUB/SUB (WAMP, Stomp) 20
  • 21. Protocol functions • Headers / Body (Stomp, Swagger) <StompCommand><StompCommand> <HeaderName_1>:<HeaderValue_1> <HeaderName_2>:<HeaderValue_1> <FrameBody> • Message types (WAMP, Stomp, JSON- RPC) [WELCOME, Session|id, Details|dict] 21 [WELCOME, Session|id, Details|dict] CONNECT accept-version:1.2 host:stomp.github.org
  • 22. Protocol functions • REST (Swagger Socket) GET /product/123GET /product/123 DELETE /product/123 22
  • 24. Summary • Protocol functions • Available client and server libraries• Available client and server libraries • Standards / community support • Maturity • After the protocol selection is made the client and server technology can be 24 the client and server technology can be selected
  • 25. Knowledge Map • Project management • Skill insufficiencies• Skill insufficiencies • Quality control • Currently Excel 25
  • 29. Angular JS • SPA (Single Page Applications) • Data binding• Data binding • Reusability (Components) 29 source: https://docs.angularjs.org/guide/databinding
  • 31. In Summary • Project management • Excel• Excel • Web application •Angular •REST • More possibilities! 31 • More possibilities!
  • 33. Sneak peaks • Enterprise Stack of the Future: Reactive ReadyReady • Data analysis with Open Source Big Data solutions 33
  • 34. Reactive Ready • Reactive JVM Applications • Distributed Eventbus and Shared cluster• Distributed Eventbus and Shared cluster data • NoSQL Datastore 34
  • 35. Reactive Ready package examples; public class MyVerticle extends AbstractVerticle { public void start() throws Exception { vertx.setPeriodic(1000, arg -> { vertx.eventBus().publish("event", new JsonObject().put("eventmessage", "hello")); }); } } 35
  • 36. Open Source Big Data • Apache Spark • Apache Hadoop• Apache Hadoop • MongoDB • Spring XD 36