Hello friends! jLove is ready to rock!
We had a lovely conversation with our speakers Gunnar Morling & Hans-Peter Grahsl and we want to invite you to join their presentation Change Data Streaming Patterns in Distributed Systems on the 25th of June at 13.30 CEST!
You will explore how to:
Employ the outbox pattern for reliable, eventually consistent data exchange between microservices, without incurring unsafe dual writes or tight coupling
Gradually extract microservices from existing monolithic applications, using CDC and the strangler fig pattern
Coordinate long-running business transactions across multiple services using CDC-based saga orchestration, ensuring such activity gets consistently applied or aborted by all participating services
Gunnar is a software engineer and open-source enthusiast by heart. He is leading the Debezium project, a tool for change data capture (CDC). He is a Java Champion, the spec lead for Bean Validation 2.0 (JSR 380), and has founded multiple open source projects such as Deptective and MapStruct. Prior to joining Red Hat, Gunnar worked on a wide range of Java EE projects in the logistics and retail industries. He's based in Hamburg, Germany.
Hans-Peter is a technical trainer at NETCONOMY. As an independent engineer and consultant, he helps customers to build cloud-based or on-premises data architectures using modern technology stacks and NoSQL data stores. He is also an associate lecturer for Software Engineering at CAMPUS 02 and is speaking at tech-related and developer conferences. For his code contributions, conference talks, and blog post writing at the intersection of the Apache Kafka and MongoDB ecosystems, Hans-Peter received the Confluent Community Catalyst award twice and became one of the founding members of the MongoDB Champions Program
What new countries have you “visited” thanks to the online format?
Hans-Peter: I would have to double-check... but from the top of my head I think the one new country I had the chance to at least virtually visit was Brasil - and it was really great. I was
fortunate enough to be among this year's speakers at The Developers Conference 2021 Connections earlier this June.
If there are Java Champions, perhaps we should add Java Princesses and Java Dragons,too?
Gunnar: Oh, yes I’d love to see a whole family of Java-tastic people. The more people that share the love and knowledge of Java, the better!
How has your programming style with Java evolved over the past couple of years? What aresome of the things that led to the significant improvements?
Hans-Peter: What I realized by looking at my own code over time is, that it has become slightly more functional since Java 8+. Other than that, I try to make use of modern language constructs beyond JDK11 in case projects are running on newer versions. However, I think in shared code bases it's important not to excessively apply all new language constructs/features just because they are available to use.
Do you have any personal habits around development or self-care that you would like to share with our audience?
Hans-Peter: It's really important to me that I can take regular breaks from challenging technical tasks, no matter if its about coding, design, review or other technical matters. What works best for me to "free my mind" is doing any kind of sports activity or just hanging around with the kids for a while.
Hans-Peter Grahsl🙇♂️ honoured and humbled to co-present together with this talented guy at @jloveconf this Friday! 👇 twitter.com/jloveconf/stat…18:45 PM - 22 Jun 2021jLove - JVM festival, free, June 25th - 26th @jloveconfA reach experience in #Java EE projects in the logistics & retail industries and running #OSS. A prolific blogger, check what he's up to currently https://t.co/sBmpz4HgUL Gunnar leads the Debezium project at @RedHat Welcome #jlove speaker @gunnarmorling , one of @Java_Champions https://t.co/CUbAKCjhfr
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?
Gunnar: One of the overarching trends in Java through the last years is to opening it up for more and more use cases, which were not that much in the focus for the platform before. E.g. take SIMD support via the vector computation API (developed in the Panama project). I think it’s great how Java makes such capabilities available to a much larger number of developers.Project Amber, bringing support for long-awaited language features like records, text blocks or switch expressions. Loom for making multi-threaded programming much more approachable.
I’m really excited about seeing all these developments, I think it hasn’t been such a great time for being a Java developer as it is right now in a long time.
What is planned for Java after Java 17? How will it change the everyday life of a Java developer?
Gunnar: That’s of course up to the OpenJDK team to decide. Personally, I can’t wait to see Project Loom mature, this has a huge potential for the Java platform as a whole. The standardization of AOT compilation via Project Leyden is another think I’m really looking forward to, as again it brings Java to many new exciting use cases where it wasn’t ideally suited before.
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.
Gunnar:Actually I’m pretty happy with Java, not only with the runtime environment, but also with the language. But of course there are some things to wish for, e.g. a stronger type system which prevents null pointer exceptions and allows for union and intersection types, as pioneered by Ceylon. One thing I’d really love to see is the ability to amend the AST by allowing annotation
processors to create partials for existing classes, as supported by C#. But nobody is listening to me ;)
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?
Hans-Peter: Obviously, I don't want to start a framework flame war here. Throughout my career I've probably written most code based on Spring. This notwithstanding, I recently took a closer
look into Quarkus which I really enjoy working with so far. What’s more important though, and really inspires me the most, is the sheer breadth of different Java framework options in the wild.
The Java ecosystem is extremely strong and the many useful JVM-based open-source projects out there make the Java platform really shine.
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?!
Hans-Peter: After some "early adventures" with Ant during my studies I was introduced to Maven and liked it enough that I'm still almost exclusively using it today. The thing is, "my mom
always said life was like a box of gradle scripts. You never know what you're gonna get." :) The actual reason is that I was never required to work with Gradle on a regular basis, let alone need its often praised feature set. In the end, it's personal preference more than anything else.
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?
Gunnar: Modules allow to organize a code base into multiple packages (thus declaring public types), while still not exposing all the types to the outside world. So they are a great win when it comes to organizing larger applications into multiple cohesive units with well-defined relationships. As an opens-source software author I really appreciate the ability to clearly define and limit the public API of my libraries. So far adoption of modules has been slow, in particular as it can be challenging to migrate existing code bases which had been created not with modularity in mind. I hope there’ll be an uptake for new applications and libraries going forward.