SlideShare a Scribd company logo
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

More Related Content

What's hot

RubyMotion #jbday
RubyMotion #jbdayRubyMotion #jbday
RubyMotion #jbday
Dennis Ushakov
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
Domingo Suarez Torres
 
Fighting Ruby code smell
Fighting Ruby code smellFighting Ruby code smell
Fighting Ruby code smell
olegshpynov
 
Robotframework
RobotframeworkRobotframework
Robotframework
Ella Sun
 
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...
Codemotion
 
rsyslog meets docker
rsyslog meets dockerrsyslog meets docker
rsyslog meets docker
Rainer Gerhards
 
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
All Things Open
 
2017 DevSecCon ZAP Scripting Workshop
2017 DevSecCon ZAP Scripting Workshop2017 DevSecCon ZAP Scripting Workshop
2017 DevSecCon ZAP Scripting Workshop
Simon Bennetts
 
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
NETWAYS
 
淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2淺談 Startup 公司的軟體開發流程 v2
淺談 Startup 公司的軟體開發流程 v2
Wen-Tien Chang
 
How to write a web framework
How to write a web frameworkHow to write a web framework
How to write a web framework
Ngoc Dao
 
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
Simon Bennetts
 
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.
Rainer Gerhards
 
Automate Thyself
Automate ThyselfAutomate Thyself
Automate Thyself
Ortus Solutions, Corp
 
Web Exploitation
Web ExploitationWeb Exploitation
Web Exploitation
UTD Computer Security Group
 
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
Kristian Houlberg Øllegaard
 
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
Laura Ojala
 
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
 
Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016
Domingo Suarez Torres
 
2014 ZAP Workshop 1: Getting Started
2014 ZAP Workshop 1: Getting Started2014 ZAP Workshop 1: Getting Started
2014 ZAP Workshop 1: Getting Started
Simon Bennetts
 

What's hot (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 to Afstuderen bij Sogeti Java

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
Guillaume Laforge
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
orkaplan
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
Gonzalo Ayuso
 
How to Contribute to Apache Usergrid
How to Contribute to Apache UsergridHow to Contribute to Apache Usergrid
How to Contribute to Apache Usergrid
David M. Johnson
 
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
johannes_fiala
 
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
Guido Schmutz
 
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
Eddie Lau
 
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
Csaba Toth
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
Javan Rasokat
 
A Brief History of OWIN
A Brief History of OWINA Brief History of OWIN
A Brief History of OWIN
Ryan Riley
 
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...
Speedment, Inc.
 
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...
Malin Weiss
 
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
Amazon Web Services Japan
 
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 !
Florent BENOIT
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
Victor Trakhtenberg
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
Ivan Krylov
 
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)
Ran Mizrahi
 
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
 
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
Stuart (Pid) Williams
 
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
Sean P. Floyd
 

Similar to 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
 
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...
 
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...
 
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
 

More from erwindeg

Optimizing Kubernetes deployments with Helm
Optimizing Kubernetes deployments with HelmOptimizing Kubernetes deployments with Helm
Optimizing Kubernetes deployments with Helm
erwindeg
 
Codemotion reactive-java
Codemotion reactive-javaCodemotion reactive-java
Codemotion reactive-java
erwindeg
 
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
erwindeg
 
Application Modernization
Application ModernizationApplication Modernization
Application Modernization
erwindeg
 
Creating a polyglottestframework
Creating a polyglottestframeworkCreating a polyglottestframework
Creating a polyglottestframework
erwindeg
 
What developers should know about design
What developers should know about designWhat developers should know about design
What developers should know about design
erwindeg
 
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
erwindeg
 
Workshop app-development with wireframes
Workshop app-development with wireframesWorkshop app-development with wireframes
Workshop app-development with wireframes
erwindeg
 

More from 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
 

Recently uploaded

Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
OnePlan Solutions
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
Yara Milbes
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
Anand Bagmar
 
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
dhavalvaghelanectarb
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
Tier1 app
 
Computer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdfComputer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdf
chandangoswami40933
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Software Test Automation - A Comprehensive Guide on Automated Testing.pdf
Software Test Automation - A Comprehensive Guide on Automated Testing.pdfSoftware Test Automation - A Comprehensive Guide on Automated Testing.pdf
Software Test Automation - A Comprehensive Guide on Automated Testing.pdf
kalichargn70th171
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
KrishnaveniMohan1
 
Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
alowpalsadig
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
vaishalijagtap12
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
Pedro J. Molina
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 

Recently uploaded (20)

Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...Transforming Product Development using OnePlan To Boost Efficiency and Innova...
Transforming Product Development using OnePlan To Boost Efficiency and Innova...
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
 
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
 
Computer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdfComputer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdf
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Software Test Automation - A Comprehensive Guide on Automated Testing.pdf
Software Test Automation - A Comprehensive Guide on Automated Testing.pdfSoftware Test Automation - A Comprehensive Guide on Automated Testing.pdf
Software Test Automation - A Comprehensive Guide on Automated Testing.pdf
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
 
Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert42 Ways to Generate Real Estate Leads - Sellxpert
42 Ways to Generate Real Estate Leads - Sellxpert
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 

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