Hello Java Universe!
It's amazing that we have devoted friends! And we are always happy to give it back! Hanno Embregts is our lovely speaker second year in a row! And we really appreciate it!
Hanno is a Java Developer, Speaker, and Teacher at Info Support (the Netherlands). He has over 13 years of experience with both front- and back-end development, with a special interest in automating the software development process to the fullest. He likes his work best when it is fast-paced and versatile, which is why he juggles Java development, public speaking, and teaching courses at Info Support’s Knowledge Centre. When Hanno doesn’t have access to any kind of computer - which can only be called the most desperate of times - he plays in a band as a lead singer and guitar player. He is also a passionate fan of alternative rock band Switchfoot and Dutch football club Feyenoord. Last but not least: he has been told off repeatedly for using Star Wars quotes at work (things didn’t improve much by replying “I find your lack of faith disturbing”).
What new countries have you “visited” thanks to the online format?
No actual new countries, but I've had the opportunity to speak at a few conferences that didn't even exist pre-COVID, like AllTheTalks for example. Also, I have done my talk on music and software a lot more, because it is just so convenient to do from home. No need to haul my guitar and amplifier into airplanes any more! ;-)
If there are Java Champions, perhaps we should add Java Princesses and Java Dragons, too?
Sure! It would actually be really cool if we could choose our own title after we have been acknowledged. I would go for "Java Guitar Hero"!
How has your programming style with Java evolved over the past couple of years? What are some of the things that led to the significant improvements?
I have definitely adopted a more functional programming style every since Java 8 brought us lambda's and streams.
Do you have any personal habits around development or self-care that you would like to share with our audience?
Keep doing what you love, no matter how long you work in your field. Promotions are great, but if you hate your job at the C-level, it would be better for your mental wellbeing to get demoted again. The Peter Principle comes to mind!
Obviously, projects Valhalla, Loom and Amber have received a lot of buzzes, but there is a healthy level of skepticism about the projects. Do you have any thoughts you’d like to share?
The only concern I have is that it takes quite long for features to be released, especially with Valhalla and Loom. That being said, I think Loom will be a great addition to the Java language and it wouldn't surprise me if its features will boost Java's popularity even further.
What is planned for Java after Java 17? How will it change the everyday life of a Java developer?
I'm excited about pattern matching, obviously! In particular the ability to compose patterns to express complicated logic in an elegant way.
There are Groovy, Scala, Kotlin, and many others in the family of JVM languages. What features do we miss in Java in comparison with other JVM languages? Elaborate.
I like Kotlin's 'single line methods' a lot, I hope it makes its way into Java eventually.
There are plenty of reasons why Java, being one of the older software programming languages, is still widely used. For one, the immense power one wields when using Java is enough to make it their staple—coupled with the possibility of using good Java frameworks that can reduce the turnaround time for big projects. Your favorite framework? What advantages and disadvantages it has?
I have to say Spring. Because it is so mature and well-documented. Sure, it is bloated sometimes and not very well-suited for small JAR packages. And I have tried other frameworks as well, but I find that I keep returning to Spring. Especially since Spring keeps adding features that caused competing framework to have an edge over Spring, like native images with Spring Native for example.
In the beginning, Make was the only build automation tool available beyond homegrown solutions. Make has been around since 1976, and as such, it was used for building Java applications in the early Java years. However, many conventions from C programs didn't fit in the Java ecosystem, so in time Ant took over as a better alternative. Maven continues to use XML files just like Ant but in a much more manageable way. And then, Gradle was built upon the concepts of Ant and Maven. Fancy Gradle or old school Maven? Or Ant?!
There's really no reason to choose Ant anymore. Gradle can be just as flexible, while boasting superior performance over Ant.
Although for small modules (like microservices) I would choose Maven over Gradle every time, mainly because its build structure is so recognizable and because with a small module Gradle's performance is not that beneficial. On top of that, a Gradle project configuration can be quite complicated and might take long to understand for a developer that is new to the team.
Are we going to use modules ever? When we create a module, we organize the code internally in packages, just like we previously did with any other project. So why are packages not enough?
I actually quite like the module system, especially if you are working on a library. The ability to shield internal packages from external access can be very valuable. However, like any other Java developer I get frustrated when using dependencies that have not been modularized yet. I sincerely hope this problem will disappear as time goes by.
Suppose you have never been to the Java rock concert! Huh! You should definitely watch Hanno's presentation from the last year!
Intrigued, So, join Hanno on his session on the 26th of June at 18.15 CEST!