Hello our lovely friends!
We are so glad that our speakers are so different but equally cool and talented! Our next speaker is on parental leave, has two little children but super active in the community and will be presenting at our jLove Conference this year!
Get applause to Rafael Winterhalter!
Rafael works as a software consultant in Oslo, Norway. He is a proponent of static typing and a JVM enthusiast with a particular interest in code instrumentation, concurrency, and functional programming. Rafael blogs about software development regularly present at conferences and were pronounced a JavaOne Rock Star. When coding outside of his workplace, he contributes to a wide range of open-source projects and often works on Byte Buddy, a library for simple runtime code generation for the Java virtual machine. For his work, Rafael received a Duke's Choice award and was elected a Java Champion.
What new countries have you “visited” thanks to the online format?
I have taken the pandemic rather slow. I have two small children and speaking from my house is rather complicated due to the constant activity level. I have therefore only given few talks but one I have done for a Canadian Java user group. That would have been rather unlikely without an online format.
If there are Java Champions, perhaps we should add Java Princesses and Java Dragons, too?
Sure, all the titles. There are so many appreciation programs, I lost overview. Maybe they already exist.
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?
A lot of code I develop is low on the stack and must support older JVMs, therefore most of my code still follows old conventions. But when working with newer versions, it is certainly more functional thanks to lambda expressions. That has changed my style a lot to go from classes as functional placeholders to using inlined expressions.
Do you have any personal habits around development or self-care that you would like to share with our audience?
Children certainly help to not think about programming too much once they are around. I would not exactly call this self-care but it helps to keep a different perspective than computers from time to time.
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?
I think especially Loom will change a lot for the average application. The ‘thread per workflow’ model is rather simple to develop and debug, more structured concurrency often comes and goes with the one developer that created it. For Java apps that often work in the enterprise for decades, that is not a viable option. There will certainly be growing pain when these features come but there’s little to be skeptical about.
What is planned for Java after Java 17? How will it change the everyday life of a Java developer?
Java 18, of course. The platform will continue to evolve in small, incremental but solid iterations. None of the major projects is yet merged into main line, there’s a lot to look forward to.
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 think these languages often feel fresher then Java since they were developed with a different mind set and are simply different than what people already know. Personally, I enjoy programming in Java more, the language feels more mature and evolves more stably. But in the end, a lot of it is a question of personal taste.
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?
Spring Boot is certainly a very useful tool for enterprise programming. At my current customer, we are power users of it and it improves productivity by a lot.
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?!
I am all for Maven, but I have used Gradle quite a bit and I see the apeal for some builds. Personally, I prefer builds to be declarative, XML configuration that Maven offers even works for more complex projects I worked on, so don’t fix what is not broken.
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?
Sure, the more libraries adopt them, the more likely this will end up being used. There’s a natural adoption gap in modules, Java 8 is still the most popular Java version but once Java 8 is died out, I see a good chance that libraries will generally be shipped with a module descriptor what makes it first relevant to end users.
If you want to get more information about runtime code generation and its use on the Java platform you should join Rafael's session on the 26th of June at 12.45 CEST!
Top comments (0)