This year I attended the Spring I/O conference and this is my experience from the conference.
Spring I/O 2016 Format
Spring I/O is a two day conference full of Java with Spring content with keynotes, presentations and workshops.
A day's schedule would look like:
- Registration phase (8-9 am)
- a keynote presentation ~(9-10 am) (everybody attended)
- presentations (1 hour duration)/workshops (2 hour content)
- coffee breaks and lunch break
What happened in Keynote
The conference opened of course with an emphasis on the changes that are coming to Spring Framework.
Spring Boot 1.4 GA is coming out soon with features like
- error page convention (e.x. 404.html)
- constructor injection without @Autowired
- Caffeine cache
- better test support
- paving the way for the new release of Spring Framework 5
Spring Framework will bring Reactive Support through Project Reactor and will compile against JDK9 (in spite of JDK9 planned GA release of March 2017)
Spring Framework 5 is scheduled to go GA in December 2016. Spring Framework 4 will get into maintenance mode for 4 years. Spring Framework 3 will seize to be maintained (already completed its 4 year maintenance releases support)
Http/2 will become common thing with the adoption of Tomcat/Jetty/Undertow/Netty native http/2 support
Project Web Reactive will be merged into the Spring master branch soon.
DDD & REST – DOMAIN DRIVEN APIS FOR THE WEB by OLIVER GIERKE (2 hour workshop)
Really loved his presentation, the guy knows his stuff. I am a fan of the Spring Data project and I love the power and flexibility that it gives you.
https://www.infoq.com/minibooks/domain-driven-design-quickly- Domain Driven Design 100 page summary
https://speakerdeck.com/olivergierke/domain-driven-design-and-rest-1 - workshop slides
A LITE RX API FOR THE JVM by SÉBASTIEN DELEUZE and STEPHANE MALDINI
I found the reactive workshop really helpful and informative. It gave me a lot of bits that I was missing. Spring Reactor overall support is still not there yet (Spring Data, Security etc, database non-blocking drivers).
The guys compared Mono and Flux to Future and CompletableFuture from Java and Observable/Single from RxJava. What really struck me was that although CompletableFuture is a nice tool (I use it sparingly in my code) it is still pull based and would consume more memory than any other push based implementation (vs Observable/Single or vs Flux/Mono). These guys are also working on the reactive streams specification that will be included in JDK9.
IMHO: Reactive is over hyped, imperative programs are easier to code and maintain and of course reactive programming is not the silver bullet for every problem. Spring will make it easier to code "the reactive way" but that doesn't mean that as programmers we should use it without grasping it.
https://speakerdeck.com/sdeleuze/a-lite-rx-api-for-the-jvm - first hour presentation
https://github.com/reactor/lite-rx-api-hands-on - workshop code
http://akarnokd.blogspot.gr/2016/03/operator-fusion-part-1.html - from RxJava core committer
http://www.reactive-streams.org/ - reactive streams abstract specification
https://mongodb.github.io/mongo-java-driver-reactivestreams/ - mongodb reactive streams implementation
https://github.com/couchbase/couchbase-java-client - supports non-blocking through RxJava and Netty
https://github.com/alaisi/postgres-async-driver - postgres async driver
CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES by MICHAEL PLÖD
Caching was a great talk also. It had the second highest attendance.
Caching seems simple but many fellow devs seem to get it wrong all the time.
MODERN JAVA COMPONENT DESIGN WITH SPRING 4.3 by JUERGEN HOELLER
Design components showed around the quirks and annotations of spring framework (no field injection allowed :p).
JUNIT 5 – SHAPING THE FUTURE OF TESTING ON THE JVM by SAM BRANNEN
Junit5 guy is a great speaker. Core committer on the jUnit5, he showed us the bits around new features support for Spring and even printed out emoji after test execution.
Really enjoyed the talk.
Talks (pending links)
|TALK||LINK TO PRESENTATION|
|KEYNOTE – FROM SPRING FRAMEWORK 4.3 TO 5.0 by JUERGEN HOELLER, STÉPHANE NICOLL AND PHIL WEBB|
|CLOUD NATIVE JAVA by JOSH LONG|
|ARCHITECTING YOUR CODEBASE by KAMIL SZYMAŃSKI|
|CUSTOMIZE YOUR SPRING BOOT EXPERIENCE BY WRITING YOUR OWN SPRING BOOT STARTER by MICHAEL SIMONS||https://github.com/michael-simons/springio2016|
|10 WAYS TO GET SUPER-PRODUCTIVE WITH SPRING BOOT by BRIAN CLOZEL AND STÉPHANE NICOLL|
|WHAT’S NEW IN JHIPSTER IN 2016 by JULIEN DUBOIS|
|BRINGING NEW LIFE TO THE VIEW LAYER OF SPRING WEB APPS WITH THYMELEAF by DANIEL FERNÁNDEZ|
|DDD & REST – DOMAIN DRIVEN APIS FOR THE WEB by OLIVER GIERKE||https://speakerdeck.com/olivergierke/domain-driven-design-and-rest-1|
|SPRING CLOUD *: EXLORING SPRING CLOUD IMPLEMENTATIONS by SPENCER GIBB|
|WHAT’S NEW IN SPRING DATA? by OLIVER GIERKE||https://speakerdeck.com/olivergierke/whats-new-in-spring-data-3|
|FLAVORS OF CONCURRENCY IN JAVA by OLEG ŠELAJEV||https://speakerdeck.com/shelajev/flavors-of-concurrency-in-java-spring-i...|
|CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES by MICHAEL PLÖD||https://www.innoq.com/de/talks/2016/05/caching-spring-best-practices/|
|BUILDING PROGRESSIVE WEB APPS WITH SPRING BOOT AND POLYMER by MATTI TAHVONEN||https://github.com/vaadin-marcus/polymer-spring-boot|
|EXTENDING SPRING DATA by PETAR TAHCHIEV|
|A LITE RX API FOR THE JVM by SÉBASTIEN DELEUZE AND STEPHANE MALDINI||https://speakerdeck.com/sdeleuze/a-lite-rx-api-for-the-jvm|
|MODERN JAVA COMPONENT DESIGN WITH SPRING 4.3 by JUERGEN HOELLER||https://speakerdeck.com/rigadevday/modern-java-component-design-with-spr...|
|SECURING RESTFUL SERVICES WITH SPRING HATEOAS AND HDIV by ROBERTO VELASCO|
|DEVELOPING A GEOSPATIAL WEBSERVICE WITH KOTLIN AND SPRING BOOT by SÉBASTIEN DELEUZE||https://spring.io/blog/2016/03/20/a-geospatial-messenger-with-kotlin-spr...
|JUNIT 5 – SHAPING THE FUTURE OF TESTING ON THE JVM by SAM BRANNEN||http://www.slideshare.net/sbrannen/junit-5-from-lambda-to-alpha-and-beyond|
|GRPC 101 FOR SPRING DEVELOPERS by RAY TSANG|
|SPRING DATA COUCHBASE: A COMING OF AGE by SIMON BASLE|
|CLOUD NATIVE APPLICATIONS WITH SPRING CLOUD & NETFLIX OSS by SPENCER GIBB|