Each year, hundreds of technology enthusiasts secure a spot at the Spring I/O conference in Spain. As the name states it and the organizers simply put it, it is the leading European conference focused on Spring Framework Ecosystem.
For the past few years, the conference has been held in one of the most fascinating and architecturally astounding cities of Spain, Barcelona. Spread across two intense and fully exciting days, May 18th and 19th, this year’s 5th edition has brought together more than 450 attendees from over 25 countries and 45+ speakers, leading to a total number of 50 sessions and workshops.
Vlad Muresan, our senior Java engineer colleague at COERA, has attended this year’s edition and we’ve invited him to have a little chat with us and reveal some insights he gathered at the conference. This will be the first article in a series of conference talks with our colleagues who had the pleasure of partaking in both national and international conferences this year.
Alexandra Spiridon: Bearing in mind a bigger picture of this year’s Spring I/O conference edition, in what way do you think it contributed most significantly to the tech community’s development?
Vlad Muresan: It’s very important that this conference managed to bring together a lot of passionate programmers, and delivered a lot of innovative ideas and solutions to existing problems, in an environment where criticism was welcomed. Taking into consideration Spring’s popularity, I think this conference set the trend for the next year(s) with reactive programming in Java community.
AS: Why this particular conference, Spring I/O 2017?
VM: A colleague and friend here at COERA attended it for three years in a row and that’s how I found out about it initially. I did some research and it turned out everybody already knew about it. It is one of the most important or ample European conference focused on Spring.
In terms of preparing yourself, you study the speaker’s background, see what he is known for. If he has good feedback from the community and has previously held interesting presentations, then most probably this one will be interesting too. If not, it depends on your luck. I researched the topics beforehand a little bit, I singled out the ones I positively wanted to see and concerning the ones I wasn’t sure about, I decided on the spot. In these situations, you win some, you lose some. That is because if you attend to a presentation and you can tell it isn’t what you expected, sometimes you can go to another track and try to catch up. If it’s highly technical, you’ve already lost the other presentation.
AS: How relevant have you found the conference topics, for your day-to-day work?
VM: About all the technologies we use were topics at this conference. For example, we already started three greenfield projects using jHipster. This is a scaffolding tool which practically generates a skeleton with a Spring Boot in the back, using a large number of available databases, and an Angular client app. It’s a continuously evolving tool. Since we first started using it, it grew even more complex and popular and we’ve had success for all these three applications. This saved us about a month’s worth of intense work, for each of them. One of the presentations tackled precisely this subject: jHipster - how to use it in an app and how to take it from development to production. This wasn’t a necessarily useful presentation for me because I was already familiar with the topic. But overall it was a relevant subject to discuss.
Spring is what we primarily use for our Java web apps. We work with a large number of Spring possessions: Spring, Spring Data, Spring Boot, Spring Security and there is room to add a lot of other modules. We use MongoDB, which is nice because it allows reactive access. For example, if we would have used an SQL database, it would have been very difficult to use these new Spring 5 concepts with reactive streaming, since JPA doesn’t support reactive interactions. Besides this, we also use Angular 1. Nowadays the trend is to use Angular 2, or 4, but between Angular 1 and 2 there’s a great difference and it may take some effort to upgrade.
AS: I noticed many of the presentation topics revolved around Spring 5. Could you please elaborate on some of the main topics discussed at the conference?
VM: Yes, Spring 5 was the main topic. It’s the version that started to be released this year. Due to the fact that there are a lot of modules, they make separate releases instead of a single, major one. There’s Spring 5, Spring Boot 2, that helps you create a Spring project fairly easily and you have an embedded server that helps you run the application. You can readily create microservices using this and you can also create classic monolithic applications. There were a lot of discussions about microservices and how nice they are, but a lot of the times it’s an overhead. My opinion is that it’s not always worth it, this overhead.
A lot of things have been proven useful. Especially the Reactive module in Spring. It’s pretty new and quite heavy. Until recent about everything was imperative in Java, but it has started to evolve into a more functional style. Moreover, Spring fully embraced this and went even further as to establish support especially concerning asynchronous tasks. For example, if you use an asynchronous service and want to return something, if the answer is singular, it is pretty easy to carry this process out using Java 8. You can return a CompletableFuture, which allows to wait for an asynchronous answer in a non-blocking way. In Spring framework, the equivalent for this is the Mono type. But if you have, for example, a list of answers, you cannot complete this task using Java 8. However, Spring proceeded to introduce a new concept in which you can accomplish this task, and it’s called Flux. This has been designed to deal with operations with latency, such as I/O operations.
For us this is quite fitting, because we have already started using many asynchronous tasks in our foreign exchange hedging platform application. We also benefit from the use of WebSocket for our clients, in order to facilitate our communication with infinite streams of data. For example, if you want to display a number of rates from some FX instruments you will make a request. However, those rates permanently change. They can change even four times per second. So one can send a Flux with the rates from backend. You don’t want the client constantly having to refresh the page, you want to change whatever you’re interested in. Therefore, you can use a WebSocket while at the same time maintaining this connection active. If you don’t want to make it too heavy, you can share this data stream among several clients. For instance, if you offer the same quotations for everyone, 200 clients from different places, i.e., different browsers, will connect to the same data stream at the same time, and you will not be urged to add more pressure to the server, you will simply convey the same result.
AS: How do you foresee the future concerning both your current projects, and the advancements happening in your technological field?
VM: Concerning Spring, there’s this new version with Reactor. Until now Spring only supported Java, but now there’s a new language named Kotlin. It still runs on a Java virtual machine and it pretty much took all the good stuff from Java, left out the bad ones, took all the good stuff from Groovy too. It’s made by the guys at JetBrains, who also offer the IDE’s we are working with.
Lately Kotlin has been receiving more and more support. Now Spring announced their support. You can give up annotation style and go full functional with reactive programming. The syntax is pretty similar , more simplified, it runs on the same JVM, so you could use Java and Kotlin within the same project, and the learning curve is relatively short. They even tried to make a client-side framework, in Kotlin, and have it compile in JavaScript afterwards. At the moment it is still rather low-performant, it generates a lot of code, but they are working on it
Google announced its official support too. They had some problems with Oracle since it bought Java. Now Android is going to support Kotlin and it will no longer be based on Java. And also, Gradle, which is a build and dependency management tool that we utilize, is based on Groovy as well and now they announced support for Kotlin. So a lot of people became interested in this new language and it’s nice because we would be able to have one language for everything.
AS: Tell me more about some other aspects of the conference that sparked your interest and that you consider brought a valuable input to your experience.
VM: I think this was the first conference in which I had the opportunity to talk further with the speakers and with everybody else there. I’ve been to other Romanian conferences, but since you usually attend with a group of friends, you do socialize, but not at such an extended level. For example, I was expecting a presentation on asynchronous testing as well, but nobody talked about it. I had the opportunity to discuss with a speaker who presented some testing aspects and he suggested that the reason nobody approached this subject is because there are no good solutions for the problem. It was nice to find out his take on the matter.
The second conference day started with the most awaited presentation. It was held by the rockstar of the conference, Josh Long. He’s very charismatic and a very good presenter. He’s exceptionally involved in Spring Boot and everything Spring, and his was one of the most successful presentations. Josh Long works at Pivotal and he’s primarily dealing with Spring Boot and introducing the Reactor framework, which is made by Pivotal. Presently, Spring offers full integration with it, as well as with Spring Data, Spring Security, with all of them.
AS: Would you recommend this experience to someone else and what would you advise them if they wished to fully embrace this opportunity?
VM: Yes, I really do recommend it. I think it helps a lot. I’m very enthusiastic every time I come from a conference, I feel like my batteries are fully charged and I’m excited to do a lot of things. Further, it’s nice to travel around and see new places. Networking is another enjoyable aspect.
What I recommend is for them to do their homework thoroughly and go to every event. For example, there were a few other people who suggested I should attend this conference, and they mentioned this group activity organized at the end of the first conference day. They said it was no fun at all and that there were only a few people attending. I told myself I should go anyway, see what it’s all about. I definitely would have regretted it if I hadn’t. I would recommend everyone to try all of the activities!
AS: Lastly, if you were to describe this conference in three words, what would they be?
VM: This is a tough one. Let me think...the keywords would be trending, innovation and networking.
Vlad is one of our senior software engineers at COERA. Within our organization, he brings strong knowledge and expertise in our Java web development projects, having more than 5 years of experience, mostly focused on software for the financial industry. Along with his team, Vlad is currently elaborating an innovating fintech product in the area of FX trading and hedging, that strives to improve the risk management and operational efficiency for international active companies working with multiple foreign currencies.