Modern Java for Fun and Profit
Currently i’m trying to find the proper platform for next big project of mine. My first candidate is .NET 5.0 because i can use C# as the language of choices. I read all chapters in CLR in C# and see that the runtime is good. But unfortunately the world told me the different story.
After bugging bunch of people from all over the world. From JVM Indonesia, Microsoft, Azul, Consultant, my ex-CTO and bunch of other smarter people than me. I draw a conclusion that i can’t force to push .NET to fix my problem. Need to get real with the current reality and focus on solving the problem at hand.
In this project what matters is performance. But also the time to market as the time is the essence. So i can simplify my goal should be
Creating high quality platform that focus on profitable business and developer’s happiness. So we can move at high speed and achieve more with less.
There’s nothing in there that told us about it has to be in .NET or C#. So why Java?
The JVM is the best even Oracle make us annoying with their licensing scheme. But the ecosystem is very mature, so currently Java is like C/C++. A lot of investment there and it won’t go. Well it will stay with us forever.
The cool stuff that fit my needs also written in Java. It’s open source messaging transport called Aeron from Martin Thompson, Todd Montgomery and bunch of smart people that care about mechanical sympathy. This is the main reason.
From another conversation i found that Java is used a lot in the Financial Industry, Hedge Fund and other system that required speed. So it’s quite convincing as the use case is quite similar. The JIT and GC in Java is quite a bit more advanced. Especially in Zing JVM. They have lots of magic like C4, Falcon, ReadyNow, that created by Gil Tene the JVM expert that founded Azul.
Big Data world is full with JVM kind of system. Apache Spark, Apache Flink, Kafka, Pulsar, Dremio and lot more. Even some tiny part is written in C/C++. I don’t think it really matter. Not touching that any time soon. I will if i need to, but until then i will stick with Java. I need faster time to performance.
Microsoft ❤ Java
A huge investment is also coming to Java from the father of .NET. They basically acquired Java company and hire a bunch of Java geeks that breath, live, and ready to die for Java. They are quite serious with Java world. Look at VSCode improvement for Java tooling. Seems i will need to uninstall my Jetbrains and unsubscribe from them.
Java gRPC also the clear winner on the server benchmark, created by Bruno Borges. Quite impressive. I think lots of stuff can be done faster if we know how to do it correctly and easier than struggling with C/C++/Rust.
Java Guy will win in this kind of competition that called “Who is the fastest programmer to write faster code?”
We will still need Go as a lot of Cloud Native tools is written with that. For data services, API and other lightweight stuff i think it will be very easy to do in Go. Spring Boot is quite heavy and we already have some codebase in Go. So…
Rust is too heavy for that kind of stuff. Not worth the pain on learning and making it work just to do simple stuff like getting and saving row from and into database. I can just hire a bunch of programmer and teach them easily to learn Go. As that one will be small but a lot.
Python will have it place on the analytics side. It quite obvious that we have a lot of data science tools there. Where we just need to do exploratory data analytics. Creating model, do some testing or prototype of algorithm. Find out if the idea or algorithm works faster. Anyone with basic programming skill can do it basically. Way easier than Go. We don’t expect data scientist or research scientist to deploy one python file that consist of main program that has 10.000 lines of code into production right? Especially when money on the line.
So no native code?
Well, as all consultant always said. It depends. We will definitely fallback to C/C++/Rust when required. Everything is possible. We don’t want to get fixated and take it as a gospel. At the end it’s only tools. Our job as engineer is focus on the core domain.
Make it works, make it clean and make it fast.
Nothing worst than writing faster code that always failed and produce wrong result in production. It’s all about delivering value faster for the business. And happy developer that can sleep at night when their code survive in production.
Happy developers, Happy Business. Live happily ever after.
Basically i need to uninstall all fancy and shiny .NET related stuff and JetBrains. Live peacefully with non-C# language and VSCode. Life is simpler that way. After that we need to do something that pays the bill and better sleep. :)
How about you?