Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Graduation
@@
Sogeti JavaSogeti Java
Java EE, REST,
AngularJS, Code
generation,
Erwin de Gier
generation,
Websockets, NoSQL
Erwin de Gier
Sogeti Java CoE
Amste...
WhoAmI
• Erwin de Gier
• Software Architect• Software Architect
• Coach Young Professionals
• Technical coach graduation
a...
Introduction
• Graduation assignments, the technical
sideside
• Product owner / Technical coach
• Research topic (technolo...
Projects
• NLJUG Registration system
• Code generation• Code generation
• Remote Presentation environment
• Websockets, Ja...
NLJUG Registration system
6
Design
7
Generating HTML
public class Employee {
private String firstname;private String firstname;
private String lastname;
privat...
Java Reflection API
for(Field field : employee.getClass().getDeclaredFields()){
Element div = new Element(Tag.valueOf("div...
JSoup and Servlets
protected void doGet(HttpServletRequest request,
HttpServletResponse response){
Element page = generate...
JSR 303 Bean validation
public class Employee {
@NotNull
@Size(Max=25)@Size(Max=25)
@CustomMessage(message="Use at most 25...
Pros / Cons
• Pros:
• No manual HTML work (Costs / Time)
• Consistent look and feel, use of• Consistent look and feel, use...
In summary
• Java EE
• JPA, EJB, Servlets, JSF• JPA, EJB, Servlets, JSF
• Custom HTML Generator
• Jsoup
• Bean validation
...
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 s...
Available protocols
• Stomp https://stomp.github.io/
• WAMP http://wamp.ws/• WAMP http://wamp.ws/
• JSON - RPC
http://www....
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>
<HeaderNa...
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 / ...
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://doc...
Result
30
In Summary
• Project management
• Excel• Excel
• Web application
•Angular
•REST
• More possibilities!
31
• More possibilit...
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 clus...
Reactive Ready
package examples;
public class MyVerticle extends AbstractVerticle {
public void start() throws Exception {...
Open Source Big Data
• Apache Spark
• Apache Hadoop• Apache Hadoop
• MongoDB
• Spring XD
36
Upcoming SlideShare
Loading in …5
×

Afstuderen bij Sogeti Java

96 views

Published on

Presentation introducing the interesting graduation assignments done at the Sogeti Java Business Line.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Afstuderen bij Sogeti Java

  1. 1. Graduation @@ Sogeti JavaSogeti Java
  2. 2. Java EE, REST, AngularJS, Code generation, Erwin de Gier generation, Websockets, NoSQL Erwin de Gier Sogeti Java CoE Amsterdam, September 2015
  3. 3. WhoAmI • Erwin de Gier • Software Architect• Software Architect • Coach Young Professionals • Technical coach graduation assignments 3
  4. 4. Introduction • Graduation assignments, the technical sideside • Product owner / Technical coach • Research topic (technology selection) • Development of an application 4
  5. 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
  6. 6. NLJUG Registration system 6
  7. 7. Design 7
  8. 8. Generating HTML public class Employee { private String firstname;private String firstname; private String lastname; private Date birthday; } 8
  9. 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. 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. 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. 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. 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
  14. 14. Remote presentations 14
  15. 15. Design 15
  16. 16. Technology • Websockets • Javascript• Javascript • Protocol selection 16
  17. 17. Websockets 17
  18. 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. 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. 20. Protocol functions • RPC (WAMP,JSON-RPC, MSG-RPC) getUserProfile() -> {'user':'bob','id':'1'} • PUB/SUB (WAMP, Stomp) 20
  21. 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. 22. Protocol functions • REST (Swagger Socket) GET /product/123GET /product/123 DELETE /product/123 22
  23. 23. Example - RPC 23
  24. 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. 25. Knowledge Map • Project management • Skill insufficiencies• Skill insufficiencies • Quality control • Currently Excel 25
  26. 26. Design 26
  27. 27. Technology 27
  28. 28. REST API DELETE /knowlegdemap/<id> 28
  29. 29. Angular JS • SPA (Single Page Applications) • Data binding• Data binding • Reusability (Components) 29 source: https://docs.angularjs.org/guide/databinding
  30. 30. Result 30
  31. 31. In Summary • Project management • Excel• Excel • Web application •Angular •REST • More possibilities! 31 • More possibilities!
  32. 32. Modern TechnologyTechnology SogetiSogeti
  33. 33. Sneak peaks • Enterprise Stack of the Future: Reactive ReadyReady • Data analysis with Open Source Big Data solutions 33
  34. 34. Reactive Ready • Reactive JVM Applications • Distributed Eventbus and Shared cluster• Distributed Eventbus and Shared cluster data • NoSQL Datastore 34
  35. 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. 36. Open Source Big Data • Apache Spark • Apache Hadoop• Apache Hadoop • MongoDB • Spring XD 36

×