top of page

All the languages are means to an end - to solve a business use case

Updated: May 18, 2023

An interview with Michael Simons, Java Champion and Staff Software Engineer at Neo4j.

About Java from a very balanced point of view. _____________________________________________________________________________________

Of all programming languages, why JAVA? 

I started working in the IT industry way back in 2000. We built database centric applications on top of Oracle Databases, back then, with Oracle Forms Client/Server. Forms Client/Server eventually got discontinued but for our clients (no pun intended), a 3 tier architecture based on newer Forms versions wasn’t the way to go. We did some experiments with Java Swing and that got us settled.  For our business, Geo information systems (GIS), good performance for large scale maps, was crucial and we could achieve that with Swing. Later, with new clients, we went for J2EE (yes, that was the name back then, today it’s Jakarta EE) and Spring based solutions.

What is the most exciting news in the industry?

You probably expect me to answer something, something AI here, but while I do think that large lange models and tools like ChatGPT are cool tech, I’m not the biggest fan of those stochastic parrots. 

Really, I don’t know for sure. Looking at the large rounds of lay-offs in the tech industry, I might hope that we as workers in that industry stop taking for granted that we are so much better than other workers just because many of us get well compensated. Heck, even realize that unions aren’t the worst of all ideas.

On the technical side of things, I am still excited about GraalVM native image (that is ahead-of-time compiled Java into native binaries) and also GraalVM polyglot, that allows you use Java from JavaScript, Python etc. or vice versa.

"All the languages are means to an end - to solve a business use case."

What are the differences that the new Java features add to this programming language? 

I’m a big fan of the pattern matching in instances (like `if(foo instances Integer theNumber)`and its combination with for example the enhanced switches.

Records and text blocks are great and so are the many small API enhancements.

One of the biggest game changers in the future of Java will be Project Loom.

As someone who actually wrote a reactive implementation of an Object Mapper (Spring Data Neo4j), I am quite optimistic that project loom will solve a bunch of issues that come with reactive programming and especially reactor. 

While Reactor has a lot of features (as it is clearly visible in the plethora of operators), I doubt that too many projects benefit from it and would rather gain from easier, structured concurrency.

Which version of Java do you regularly use and why? 

8 and 17.

We maintain a bunch of libraries for Neo4j that are still used in Projects that are baselined on 8 (such as everything Spring 5.x).

8 (and 11) is also important for Amazon AWS lambdas, as they only go up to 11.

Otherwise, 17 is the baseline because it’s considered as the current LTS. While all other releases are stable too, it’s hard to convince enterprises to use them.

What would you say to someone that just started working in Java?

Get the basics of the language straight. Before adding a lot of libraries and frameworks to your program, understand what’s already in the JDK.

Don’t see yourself as a Spring- or Quarkus-Developer. You most likely will touch one of the bigger frameworks, but that’s not Java itself, it is built on Java.

I do think it’s valuable to add at least one more language to it: SQL or Cypher, both database query languages. They are declarative languages, and you need to think a bit differently to use them efficiently. 

Java is a great language and especially, the way the JDK architecture team evolves it, but of course, it’s not the only fruit in the basket. Be open to other inputs, too.

In the end, all the languages are means to an end: To solve a business use case.

You can listen to Michael at Java Summit 2023. Learn about Neo4j-Migrations and how it gives you an easy way to apply schema changes to Neo4j. Unlike Liquibase, It is almost dependency free and runs right on the Neo4j Java Driver, with no need to work with JDBC. Neo4j-Migrations integrates Spring Data Neo4j with JHipster and has been in production since summer 2020.



bottom of page