The month of July was a whole lot of traveling — buses, trains, planes and even a few ferries! Now that I’m back to reality I want to share a very important event in the life of RebelLabs.
Back in June I’ve been to Devoxx UK in London along with colleagues Simon and Shayna. It’s a great conference, consistent with the excellence of Devoxx experience you’d expect. The best speakers from all over the world, excellent session on everything from Java concurrency to microservices and IoT, to talks about data mining. Directly following, Simon and I traveled to Krakow to participate in Devoxx Poland. What a show that was, 2000 people in a spectacular venue, amazing sessions by world famous speakers and great experience altogether.
One of the things that set this Devoxx UK conference apart for me was the expo floor where we had a community booth representing RebelLabs and VirtualJUG. It’s been a wonderful experience seeing people coming to a community booth without any major swag or chance to win a flying drone and talk to us about the report and the content we’ve been publishing and saying how much they appreciate the session on VirtualJUG. This is what keeps us going and everyone who has found time to come and chat, thank you! We appreciate it a lot!
Another great community initiative ZeroTurnaround was apart of at Devoxx UK is sponsorship for Devoxx4Kids. The program shows kids there are more creative and useful ways to use a computer than just playing games or chatting with friends. Introducing young minds to engineering and programming is a great cause. Actually, we didn’t stop there- soon you can enjoy the VirtualJUG session with Arun Gupta, a founding member of Devoxx4Kids USA, talking about introduction to Java programming, modding minecraft and trying to interest kids in creating and messing around with software.
The main attraction of any conference are the sessions that you can learn from or get inspired by. So here is a short recap of the sessions that Simon and I presented at Devoxx UK and Devoxx Poland. You can also view all recorded sessions from Devoxx UK here.
Is your profiler speaking the same language as you? by Simon Maple
This was a great introductory sessions to profiling your code. Simon has answered a set of basic questions about profiling that any developer should know:
- What is a hotspot?
- What is the difference between sampling and instrumentation from the profiler point of view?
- What are the problems with either of those methods?
- What is the time budget of the application?
But the main attraction of the session was of course the showcasing of XRebel, the lightweight Java profiler. Naturally, XRebel is developed by ZeroTurnaround, but it doesn’t stop it from being awesome. What we know for a fact now is that the earlier you find and fix performance problems (even the simplest ones) the less likely any performance issues will affect your end-users. So XRebel, being a profiler for developers to spot and fix the common issues like having excessive database accesses or incredibly time-consuming SQL queries exactly during the development stage can help a lot.
However, the session had quite some theoretical details about profiling the code and how to access the performance of your application. Good job, Simon!
Internals of JRebel by Simon Maple
JRebel is the flagship product of ZeroTurnaround, the javaagent that allows you to reload the code changes instantly without waiting for the JVM to restart or to redeploy your web-application. Now the technology behind that is really exciting and seems almost magical when you just use it. Simon has gone over the essential pieces of architecture of JRebel, explained how it creates a mapping between the loaded classes and the class files on the disk, showed the basic architecture of JRebel plugins, that make it possible to reload frameworks related code (say add a new Spring bean into your app without reloading the full Spring context). I always love sessions that talk about the real products from the code point of view, how do they deal with challenges, what design decisions were taken, etc. Always fascinating to listen to those.
Now personally, I didn’t have a chance to present at Devoxx UK. So here’s a short shout out to the talks I’ve given at Devoxx Poland in Krakow.
Flavors of Concurrency in Java
This was the first time for me delivering that session, but it was a great experience. We’ve managed to talk about the different models for concurrency support in Java, starting from managing bare threads manually, to using executors, to ForkJoinPool, to CompletableFuture based design. The session was largely inspired by the posts about concurrency, ForkJoinPool and JavaMemoryModel.
The more advanced frameworks like actor based model, fibers and software transactional memory didn’t get as much time as they deserve, so but I hope people got inspired to read the best book about concurrency that I know of: The Art of Multiprocessor Programming.
Unlocking the Magic of Monads in Java 8
Oh, poor monads, again we were talking about them. This is a curious session, I’ve tried not to dive into the algebraic data types and the need to contain side-effects that many tutorials on monads are doing. Instead we started with devising a type for chaining asynchronous execution of functions and then showed that it is monadic. Naturally, one session is not enough to make people comfortable with functional programming or the concept of monads, but I think the audience got a glimpse at the usefulness of using monadic constructs and will learn to recognize them in the future. There’s an older post, where I go through a similar process as during the session to devise a monadic Future type. Check it out!
Java Bytecode Explained
This one was a fun one! Java bytecode is if not the heart then the blood of the JVM, making the portability of the programs, dynamic classloading and all the JVM languages possible. During the session we tried to understand what does a stack-based virtual machine mean, what types of instructions Java bytecode has and learn typical constructs one can find in the bytecode.
I’ve showed how to use javap and mentioned JITWatch, which is strictly speaking is not the bytecode only tool, but gives you a chance to look at how the Java code that you write gets transformed into the code executed by the hardware.
Hope this session inspired people to look further under the hood of the JVM they use and understand how the code that they are actually writing becomes transformed and optimized at runtime.
Naturally, this list doesn’t even scratch the surface of the amount of great talks that happened during both Devoxx conferences. Those have been great events and the only thing that I can say in conclusion is that I’m looking forward to participating in Devoxxes next year!