SlideShare una empresa de Scribd logo
1 de 26
Giedrius Smolskas, 2015
DEVOXX BE 2015
KEY NOTES
Conference Overview
Java 9 and Modular Programming (1)
Java 9 and Modular Programming (2)
• module = group of packages with a name
• module includes module-info.java descriptor
• prevents from internal code exposure (public ≠ accesible)
• dependency validation on VM startup, not runtime
• command line support for compiling, running, packaging and
linking modules:
– jlink command for module dependency linking
– -modulepath param for javac, java and jlink
– jar support for modules
– module path and classpath can be mixed
– jdeps for dependency check
Java 9 and Modular Programming (3)
HTTP/2 and Java 9 (1)
Reasons and features:
• no more domain sharding and image spriting;
• async and prioritization of frames lifting
restrictions on connections count;
• correlated resources: download all at once;
• header compression (up to 85% gain).
HTTP/2 and Java 9 (2)
HTTP/2 and Java 9 (3)
HTTP/2 and Java 9 (4)
Requirements and support:
• existing apps work as is
• TLS (SSL) for browsers
• JDK 8, Servlet 4.0 for servers
• Jetty, Tomcat to support from v.9
• HTTP/2 Client API in JDK 9
Other Java Enhancements
• New Collections API:
– collection literals: List.Of(…), Set.Of(…), Map.Of(..);
– immutable collections.
• Value types considered for Java 10:
– type specialisation using primitives (List<int>);
– tuples (e.g. multi-valued returns).
JSON API Upgrades for Java EE 8 (1)
• JsonArray using JsonArrayBuilder:
JsonTarget target = Json.createArrayBuilder()…;
JsonArrayBuilder builder = Json.createJsonArrayBuilder(target);
JsonArray result = builder.add(…).set(…).remove(…).build();
• JsonPointer for getting JsonValue at a
specific path:
JsonPointer p = new JsonPointer(“path/key”);
JsonValue v = p.getValue(json);
//p.add(…); p.replace(…); p.remove(…);
JSON API Upgrades for Java EE 8 (2)
• JsonPatch for document modifications:
– allows changes to be applied in bulk;
– can provide diffs between two docs.:
JsonArray diff = JsonPatch().diff(doc1, doc2);
• Json Queries:
– can filter out into JsonObject or JsonArray;
– supports groupBy and queryAndPatch
(filter and update) operations.
Spring Roadmap
• Spring 4.3 to show up in Q2/2016
• more annotations for DI and HTTP binding
(@RestController, @Get/@Post, @SessionScope)
• last version to be supported by Java 6/7
• Spring 5 to be released in Q4/2016
• JDK 8+, including Java 9
• will support HTTP/2
Understanding Git Internals (1)
Git’s data structure:
commit > tree > blob(s)
• Commit – results in a new tree, points to its parent
commit (backwards)
• Tree – points to blobs and other trees, is a snapshot of
a single commit
• Blob – points to objects. Any change to file
results in a new blob
Understanding Git Internals (2)
Understanding Git Internals (3)
ref – pointer to an object
branch – commit with two childs
merge – child with two parents
tag – not-updated ref with a name
reset – tag manipulation moving pointer back in the tree
See git reflog
Principles of Microservices (1)
Microservices –
small autonomous
services that work
together and are
modelled around a
business domain
Principles of Microservices (2)
Principles of Microservices (3)
• Model Around a Business Domain – more stable APIs
• Culture of Automation – much more to deploy
• Hide Implementation Details – every service should evolve
independently
• Decentralize – self-service oriented, creates autonomy
• Deploy Independently – deploy changes without changing everything
else
• Customer First – thinking outside-in, not inside-out; users should drive
the API
• Isolate Failure – fail fast; improved resilience
• Highly Observable – a lot of interaction and logging is going on
Best Practices for Java Deployment (1)
Best Practices for Java Deployment (2)
Best Practices for Java Deployment (3)
Codebase – use version control (duh); 1 repo for 1 app
Dependencies – explicitly declared and isolated; no jars in SC
Configs – changes between deployment envs.; part of envrmnt., not app
Backing services – should be attachable via single URL
Build, Release, Run – three discrete steps should be present
Processes – should be stateless and fail-safe
Concurrency – workload diversity; scale out, kind of microservices approach
Disposable – quick to start-up, graceful to shut down, resilient to failure
Dev/Prod Parity – keep dev. environment as similar to prod as possible
Vizualizing Architecture
When visualizing:
• use different abstraction levels for
different levels of information details;
• imagine code as a map – zoom into it as
much as necessary to see the required i
mage.
Top Talks
1. Get a Taste of Lambdas and Get Addicted to Streams
2. The Silver Bullet Syndrome
3. Design Patterns in the Light of Lambda Expressions
4. Core Design Principles for Software Developers
5. Hand's on Web Components with Polymer 1.0
6. Java pub quiz (BoF)
7. Getting started with Spring Cloud
8. Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap
9. From Junior to professional in 20 * 15000ms
10. Hands on Ratpack
Materials to Check
All Devoxx Belgium 2015 Top Talks
Devoxx 2015 Youtube Channel
Devoxx Belgium 2015

Más contenido relacionado

La actualidad más candente

Turn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmTurn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmDimitris Andreadis
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Robert Scholte
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringarSqueed
 
QConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemQConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemLeonardo Zanivan
 
Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Robert Scholte
 
Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8Dimitris Andreadis
 
Discuss about java 9 with latest features
Discuss about java 9 with latest featuresDiscuss about java 9 with latest features
Discuss about java 9 with latest featuresNexSoftsys
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the UnionDimitris Andreadis
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesKenny Gryp
 
XNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC UploaderXNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC UploaderJohn Paulett
 
Gradle notes
Gradle notesGradle notes
Gradle notesDum My
 
End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusEnd-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusVMware Tanzu
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Robert Scholte
 
Linq difference faqs- 1
Linq difference faqs- 1Linq difference faqs- 1
Linq difference faqs- 1Umar Ali
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdVaclav Tunka
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterKenny Gryp
 

La actualidad más candente (20)

Turn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmTurn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly Swarm
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringar
 
MaxScale - the pluggable router
MaxScale - the pluggable routerMaxScale - the pluggable router
MaxScale - the pluggable router
 
QConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemQConSP 2018 - Java Module System
QConSP 2018 - Java Module System
 
Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)
 
Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8Introduction to Role Based Administration in WildFly 8
Introduction to Role Based Administration in WildFly 8
 
How To Scale v2
How To Scale v2How To Scale v2
How To Scale v2
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Discuss about java 9 with latest features
Discuss about java 9 with latest featuresDiscuss about java 9 with latest features
Discuss about java 9 with latest features
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the Union
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
 
XNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC UploaderXNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC Uploader
 
Gradle notes
Gradle notesGradle notes
Gradle notes
 
End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and ProteusEnd-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
End-to-End Reactive Data Access Using R2DBC with RSocket and Proteus
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
 
Linq difference faqs- 1
Linq difference faqs- 1Linq difference faqs- 1
Linq difference faqs- 1
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpd
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
 

Similar a Devoxx Belgium 2015

Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application developmentClarence Ho
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)Markus Günther
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overviewjhierrot
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyRodney Barlow
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEQAware GmbH
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
스프링 프레임워크
스프링 프레임워크스프링 프레임워크
스프링 프레임워크Yoonki Chang
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...OpenStack
 
1java Introduction
1java Introduction1java Introduction
1java IntroductionAdil Jafri
 
Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Robert Scholte
 
Struts2-Spring=Hibernate
Struts2-Spring=HibernateStruts2-Spring=Hibernate
Struts2-Spring=HibernateJay Shah
 
Migrating traditional Java EE Applications to mobile
Migrating traditional Java EE Applications to mobileMigrating traditional Java EE Applications to mobile
Migrating traditional Java EE Applications to mobileSerge Pagop
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileRed Hat Developers
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyWill Gage
 

Similar a Devoxx Belgium 2015 (20)

Database CI/CD Pipeline
Database CI/CD PipelineDatabase CI/CD Pipeline
Database CI/CD Pipeline
 
Framework adoption for java enterprise application development
Framework adoption for java enterprise application developmentFramework adoption for java enterprise application development
Framework adoption for java enterprise application development
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overview
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
스프링 프레임워크
스프링 프레임워크스프링 프레임워크
스프링 프레임워크
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...
The Why and How of HPC-Cloud Hybrids with OpenStack - Lev Lafayette, Universi...
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)
 
Struts2-Spring=Hibernate
Struts2-Spring=HibernateStruts2-Spring=Hibernate
Struts2-Spring=Hibernate
 
Migrating traditional Java EE Applications to mobile
Migrating traditional Java EE Applications to mobileMigrating traditional Java EE Applications to mobile
Migrating traditional Java EE Applications to mobile
 
java completed units.docx
java completed units.docxjava completed units.docx
java completed units.docx
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse Microprofile
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
java full 1.docx
java full 1.docxjava full 1.docx
java full 1.docx
 

Devoxx Belgium 2015

  • 1. Giedrius Smolskas, 2015 DEVOXX BE 2015 KEY NOTES
  • 3. Java 9 and Modular Programming (1)
  • 4. Java 9 and Modular Programming (2) • module = group of packages with a name • module includes module-info.java descriptor • prevents from internal code exposure (public ≠ accesible) • dependency validation on VM startup, not runtime • command line support for compiling, running, packaging and linking modules: – jlink command for module dependency linking – -modulepath param for javac, java and jlink – jar support for modules – module path and classpath can be mixed – jdeps for dependency check
  • 5. Java 9 and Modular Programming (3)
  • 6. HTTP/2 and Java 9 (1) Reasons and features: • no more domain sharding and image spriting; • async and prioritization of frames lifting restrictions on connections count; • correlated resources: download all at once; • header compression (up to 85% gain).
  • 9. HTTP/2 and Java 9 (4) Requirements and support: • existing apps work as is • TLS (SSL) for browsers • JDK 8, Servlet 4.0 for servers • Jetty, Tomcat to support from v.9 • HTTP/2 Client API in JDK 9
  • 10. Other Java Enhancements • New Collections API: – collection literals: List.Of(…), Set.Of(…), Map.Of(..); – immutable collections. • Value types considered for Java 10: – type specialisation using primitives (List<int>); – tuples (e.g. multi-valued returns).
  • 11. JSON API Upgrades for Java EE 8 (1) • JsonArray using JsonArrayBuilder: JsonTarget target = Json.createArrayBuilder()…; JsonArrayBuilder builder = Json.createJsonArrayBuilder(target); JsonArray result = builder.add(…).set(…).remove(…).build(); • JsonPointer for getting JsonValue at a specific path: JsonPointer p = new JsonPointer(“path/key”); JsonValue v = p.getValue(json); //p.add(…); p.replace(…); p.remove(…);
  • 12. JSON API Upgrades for Java EE 8 (2) • JsonPatch for document modifications: – allows changes to be applied in bulk; – can provide diffs between two docs.: JsonArray diff = JsonPatch().diff(doc1, doc2); • Json Queries: – can filter out into JsonObject or JsonArray; – supports groupBy and queryAndPatch (filter and update) operations.
  • 13. Spring Roadmap • Spring 4.3 to show up in Q2/2016 • more annotations for DI and HTTP binding (@RestController, @Get/@Post, @SessionScope) • last version to be supported by Java 6/7 • Spring 5 to be released in Q4/2016 • JDK 8+, including Java 9 • will support HTTP/2
  • 14. Understanding Git Internals (1) Git’s data structure: commit > tree > blob(s) • Commit – results in a new tree, points to its parent commit (backwards) • Tree – points to blobs and other trees, is a snapshot of a single commit • Blob – points to objects. Any change to file results in a new blob
  • 16. Understanding Git Internals (3) ref – pointer to an object branch – commit with two childs merge – child with two parents tag – not-updated ref with a name reset – tag manipulation moving pointer back in the tree See git reflog
  • 17. Principles of Microservices (1) Microservices – small autonomous services that work together and are modelled around a business domain
  • 19. Principles of Microservices (3) • Model Around a Business Domain – more stable APIs • Culture of Automation – much more to deploy • Hide Implementation Details – every service should evolve independently • Decentralize – self-service oriented, creates autonomy • Deploy Independently – deploy changes without changing everything else • Customer First – thinking outside-in, not inside-out; users should drive the API • Isolate Failure – fail fast; improved resilience • Highly Observable – a lot of interaction and logging is going on
  • 20. Best Practices for Java Deployment (1)
  • 21. Best Practices for Java Deployment (2)
  • 22. Best Practices for Java Deployment (3) Codebase – use version control (duh); 1 repo for 1 app Dependencies – explicitly declared and isolated; no jars in SC Configs – changes between deployment envs.; part of envrmnt., not app Backing services – should be attachable via single URL Build, Release, Run – three discrete steps should be present Processes – should be stateless and fail-safe Concurrency – workload diversity; scale out, kind of microservices approach Disposable – quick to start-up, graceful to shut down, resilient to failure Dev/Prod Parity – keep dev. environment as similar to prod as possible
  • 23. Vizualizing Architecture When visualizing: • use different abstraction levels for different levels of information details; • imagine code as a map – zoom into it as much as necessary to see the required i mage.
  • 24. Top Talks 1. Get a Taste of Lambdas and Get Addicted to Streams 2. The Silver Bullet Syndrome 3. Design Patterns in the Light of Lambda Expressions 4. Core Design Principles for Software Developers 5. Hand's on Web Components with Polymer 1.0 6. Java pub quiz (BoF) 7. Getting started with Spring Cloud 8. Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap 9. From Junior to professional in 20 * 15000ms 10. Hands on Ratpack
  • 25. Materials to Check All Devoxx Belgium 2015 Top Talks Devoxx 2015 Youtube Channel

Notas del editor

  1. ePCR – Electronic Patient Care Reporting