top | item 19826712

(no title)

djvu9 | 6 years ago

Java the language is slightly different than JVM but nevertheless the future is not very bright IMO. So far there are a few areas Java/JVM still holds a strong position but if you take a look at GitHub trending there is little or now new blood coming in.

- Android. No serious competitor to Java yet (JVM is irrelevant). But the Google lawsuit could have some complication.

- Spring stuff. I won't be surprised if they will be replaced by golang and nodejs (along with react/angular/vue etc). Same path for RoR.

- Data processing: Spark stuff, PrestoDB, Flink, Kafka, Hive, HBase, Lucene/Elastic etc. Java/JVM is still dominant but golang could be a future contender. A few new application databases/KV stores are implemented in golang.

The problem for Java is that the last category is mostly services (instead of libraries/frameworks) so you can potentially use any language to work with them, and the industry probably won't create many jobs for building generic services especially in the cloud era. So having the dominance doesn't provide a lot of protection.

discuss

order

stickfigure|6 years ago

Golang, at least in its current incarnation, has no chance of replacing Java in its core use case - business processing. Golang is replacing infrastructure that used to be written in C, which makes sense considering that's what it was designed for.

It's weird that you put Spring and react/angular/vue in the same sentence, because there is no overlap in these problem domains.

djvu9|6 years ago

Just take a look around to check out new enterprise MIS projects being implemented with a simple golang backend + reactjs etc frontend. The adoption of intereactive/responsive and single page web UI, and the more iterative development practices are certainly driving to a different direction compared to Spring (and RoR etc). I think the main force is from the frontend tech here and that is why you see them in the same sentence.

xorcist|6 years ago

Perhaps Golang was designed to replace C, but from what I've seen that doesn't seem to be happening. Most converts seems to come from the other direction, from Python and server side Javascript.

There is a clear trend there to grow static features, and I think a lot of people ask themselves why they shouldn't go directly to a more traditionally compiled language then.

james-mcelwain|6 years ago

Spring is really nice, but all the flexibility comes at a cost. Annotation meta-programming, runtime reflection, constructing proxies, classpath scanning... all contribute to a perception of slow JVM startup times that makes something like Spring Boot unsuitable for really small services or utilities.

I know there are other Java frameworks out there that are more optimized for smaller modular projects, but there's also the cost of operationalizing the JVM in something like Docker. Fat JAR deployments are relatively simple, but tuning the JVM isn't always straightforward. I'm definitely jealous of the simplicity of producing a single binary as your deployment artifact.

jayd16|6 years ago

I can see you're a Go fan but I think .NETcore has potential to start eating away at Java in a big way if Microsoft continues on its current path. They can actually provide the enterprise level support big corps want.

djvu9|6 years ago

.NET's developer community is in no place comparable Golang's or Javascript's. Just take a look at GitHub's trending page by programming languages. Javascript is really bad for server side applications, and yet here we are with so many nodejs server apps. It doesn't matter much how good a tech is. What matters more is what the new generation is using, which you can get a sense from the trending page on GitHub.

bubblewrap|6 years ago

I've hated Java for years, but recently I think it has become usable again. I've looked at GoLang and Node, but I've kind of given up on them, too. GoLang I would consider for specific use cases. NodeJS just seems to insecure and "wild".

Was hoping that Kotlin+Spring could be a good alternative to GoLang for realtime apps, but haven't tried it yet.