Our goal for GeeCON 2016 was to broaden our knowledge about topics we encounter on a daily basis at work. We chose talks concerning Java 9 (and 8), microservices, reactive programming and Docker. Here are a few words on some of the most interesting and inspiring ones.
I’ve heard that Sven Peters is a great speaker so without hesitation I chose his Rise of the Machines – Automate Your Development. What a talk it was! Passionate delivery and beautiful slides (do check them out) combined with inspiring content gave me lots of ideas to improve our daily development processes at Espeo. The general idea is to automate all mundane and repeatable processes that do not require human interaction and creativity. The key is to look further than the usual CI/CD tools. I thought that at Espeo we were pretty well automated already but now I know we still have room for improvement. Which is great and I can’t wait to implement a bot or two.
We’ve had Java 8 around for some time now and the direction is ever-changing towards functional programming. But do we really know how to do it and what price we may pay? That’s what Daniel Sawano and Daniel Deogun wanted to explain in their talk “Beyond lambdas – the Aftermath”. It was a code-only presentation and that’s what really matters to us, programmers. They gave us many examples of bad code and showed ways of how to refactor it to remove code smells and side effects. They outlined where the functional style might introduce hidden complexity to our code (coders love those one-liners), generate unnecessary function calls etc. Have you ever analyzed the bytecode of a lambda? Well, at the presentation we did. We learned how to avoid stateful lambdas and how it affects the runtime performance. All in all, a very rich-in-content and detailed talk.
This year’s Geecon was a little bit less interesting than the previous one but I found some interesting speeches. The best one was about Java 9 and its modularity. The runners-up were the charismatic speeches of Josh Long about Spring.
During only 50 minutes, Josh built a brand new application with RESTful services, a pretty GUI and well-designed architecture – all using Spring Boot, convention-over-configuration framework. In another amazing 50 minutes he talked about Spring Cloud – tools for developers to quickly build some of the most common patterns in distributed systems. Examples: configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state. All of this was mentioned in context of microservices – a concept highly recommended and praised, but one which can lead to architectural complexity. In his amazing talk, he talked about how organizations like Ticketmaster, Alibaba, and Netflix cope with this complexity with Spring Boot and Spring Cloud.
What was especially interesting was his incredible performance and fluency in writing good code in an extremely short time. Everyone was amazed of how quickly and easily he created working application using those tools. He is also a very talented speaker. The audience laughed many times during his hilarious jokes and funny tricks like changing the Spring logo to the Nyan cat during the build process. If all speakers could talk about software in such funny and interesting way, showing both great tools, great tips and great jokes – Geecon would be the best conference in entire world.
“Java 9 Modularity in Action”. The Java world has been trying to tackle modularity issues for a long time by initiatives such as OSGi. Yet, they were never highly adopted because of the effort needed to actually understand and use these tools. Project Jigsaw, the highlight of Java 9, promises to deal with the problem of modularity at its roots. Project Jigsaw proposes a revolution by getting rid of classpath and introducing a new concept of highly encapsulated modules (so now we will have a… modulepath). These modules will (or rather – should) only expose interfaces to talk with the outer world, and no implementations. Apart from good modular design, which should be a goal in itself, it also solves some annoying problems like the clash of different versions of the same class on the classpath. Of course, to provide backward compatibility, some tools will be provided to make the transition to the world of Jigsaw more painless. The modules for legacy code will be generated automatically. I was surprised to see a live coding session during this talk, and see this modularity concept working, even though it is still some time before Java 9 will be released.
Nobody expects the Spanish Inquisition, and nobody from the Geecon team expected such an interest in the “Java and Docker, a Good Idea” talk by Christopher Batey. The room was packed to the brim with Docker-hungry programmers. Despite the name of the talk, it was not about the question whether to use Docker with JVM or not. It was focused on the not-really-obvious traps to avoid during running JVM inside Docker containers. especially under high load. For instance, subjects like operating near memory limits and page swapping limits were covered.
There were many more interesting talks on e.g. event sourcing, reactive programming in general and in detail (RxJava), as well as a bird’s-eye view of microservices and gore implementation details. Plus some interesting concepts like self-healing systems and many performance-related talks. Want to know how storage works? How do traditional HDDs work and how they differ from SSDs? What’s coordinated omission in performance testing and why does it matter? Not to mention Big Data topics (we wrote about those too!). All that and much more on GeeCON. Now let’s put theory into practice and see you there next year!