[1] https://github.com/toshi-search/Toshi
[1] https://github.com/toshi-search/Toshi
"Native" or not has nothing to do with the garbage collector. Go is a GCed language too, but I really don't think it's as performant or tuneable as Java's.
https://itnext.io/go-does-not-need-a-java-style-gc-ac99b8d26...
Once you put aside all the words and see how things stack up in the real world, Go and Java are pretty comparable, usually with the JVM having a slight edge after the JIT is nice and warm. They go about it in different ways, but there's nothing wrong with that.
But basically, go can get away with a less advanced GC due to having and relying on value types quite often. But Java and certain workloads do require the state-of-the-art GCs that the JVM provides. And a search engine likely constitutes such a one.
Elasticsearch restarting due to out of memory errors was a common occurrence at my last gig where we used it heavily.
The difference between Java GC and Go GC is stark. In several years, I've never had to touch a GC knob on Go, but in Java it is expected, and not usually worth the effort.
The default G1 GC is perfectly fine for the vast majority of workloads as is. In the rare case it is needed, the target pause time setting can be used to swift our preference of latency vs throughput.
In that regard, a Java runtime compiled in AOT form is hardly any different from a Go runtime.
As for the lack of value types, the solution is on the way, and apparently many keep forgetting that writing a JNI based library is much better than throw everything way and start from scratch in random language X.
RAM isn't a bottleneck on most servers these days. Even the cheapest EC2 tends to have 2GB which will run nearly any Java app fine.
Sure, Rust is better. But it will take years to replicate what's already out there in Java.
I'll take a database written in Java over C any day given equivalent choices.
The Rust based search engine Tantivy is handily faster than Lucene and supports pretty much the same features.
Where is a SearchStax SaaS like service using etcd?
It isn't hard to scale, but it is the most expensive thing to scale.
I know it's not equivalent, but Redis is written in C and it's amazing what you can do with it. It is also incredibly efficient and what it does.
I don't get the hate towards C. Is it the security issues? (These exist in Java too you know).
Java is as safe as Rust. It's just 1/2 the speed and uses 2-3X the ram. It was the best C alternative for DB until a couple years ago.
I still think Java has a lot of value to bring or to learn and use for any programmer.
The ecosystem of libraries, software, tooling, cross platform nature and with the advent of GraalVM - Java is still very alive and capable !
As for JVM guys - Kotlin seems be an easy migration.
BTW - what do you think about dart ?
You do not need Rust necessarily. Mixed feelings yet. I am not big fan. Golang is good too
Disclaimer: I'm a cofounder.