What do you think of the future of Java?

Ben on September 05, 2018

I am Java developer. Most of application are built on top of application. I find this programming extremely awesome. One class for one file gen... [Read Full]
markdown guide
 

I don't think that anybody is trying to replace Java, it's just that Java is solving problems that don't exist anymore. Also, Oracle is starting to screw it up.

So I'd say, Java is the new COBOL.

 

Thats pretty damning to compare it to COBOL and grossly unfair.

Ive been a java developer for most of my career and when faced with most problem, Java would be one of the first tools I would reach for when building APIs and systems that move alot of data around. There are better languages to work with but consider for a second how much the JVM helps when it comes to optimising your code out of the box. Since the arrival of Java 8 and with libraries like RXJava, its pretty easy to write highly concurrent applications without delving into the shit storm that is multi-threading in Java.

People said the samething about C and C++ but people are still writing lots of critical applications using it and the same applies to Java. There are many more days in the old dog yet.

 

I'm not judging COBOL nor Java (in this thread at least).

Though Java brings a good compromise between C and purely interpreted languages, computers are so fast and JIT compilers became so advanced that the compromise line is leaning much more towards JavaScript or Python nowadays.

Also don't forget what they say about hammers and nails :)

 

Would you be kind and articulate on those problems that aren't there no more?

Open JDK still exists, and Oracle JDK also exists... Companies will keep buying Oracle JDK or turn to OpenJDK, it doesn't mean everything should always be free. Java ain't going anywhere, it will keep being dominant at the entreprise level. One thing that is interesting in the world is that Licensed and priced products are almost always more solid and good quality than open-source. It's just a fact... So Open JDK is good and will keep working(feel opensource), it's just that people aren't paying attention to it, they just wanna mummer about oracle this, oracle that... Oracle is not java.

 

I feel like the Oracle factor is understated here. This is gonna cause some major issues in the enterprise development world, and I could definitely see Java adoption falling in the near future.

 

What is advantage of java? I love java because there are a lot of awesome libraries and users. They can change my way of developing. Most importance is they use java.

 

Good point. No one has time to redefine those libraries in another language, which isn't any better in solving problems compared to java. They are only interesting in adding more features. OpenJDK is the future of Java, so be it. PEACE TO THE EXPERTS...

"What's an expert anyway? Just some guy out of town." Larry Ellison.

 

I actually think Java is not fading away, I think it's going to remain alive for quite sometime actually. Java is used with android, and as you know mobile is getting more and more popular. So, apps for android will be built in what? Java mainly. Most IoT will be powered by android too, so even more Java...

In my opinion, there's a language for every porpuse, and our job as developers is to get better and better by learning them!

 

While Java still have a bright future with Android development let's not forget two huge things:

  1. Kotlin
  2. Flutter

I don't know Kotlin much but from what I've heard it clearly has a lot of potential and could easily replace Java for native Android development (it's officially supported).

As for Flutter, well, it's still young but very promising. It's not a language, it's a full framework to create Android and iOS apps... as well as Fuschia apps. So I guess Google has great plans for it in the future and I wouldn't be surprised to see it become a standard way of developing mobile apps.

 

I've been working a lot recently with Kotlin, and if anything, I think it will actually help prolong the lifespan of Java. While Flutter requires you to completely restart your app in Dart, Kotlin compiled directly to Java classfiles, which allows the transition to be as quick or as gradual as needed.

Kotlin is an amazing language, but a large part of why it is so great is because it is basically just (a lot of) syntactic sugar over Java itself. This keeps people in the Java ecosystem, and it has no intention of replacing the ecosystem.

When people talk about "java going away", I don't think they really realize how huge the Java ecosystem is. The Java ecosystem isn't going anywhere, and neither Kotlin, Scala, Groovy, or anything else is seeking to usurp the Java ecosystem. Rather, these languages are all great because of that ecosystem, and they are all helping to keep the Java language alive and push it more into being a better language itself. I don't think we would have seen functional programming brought to Java 8 if not for Scala, and similar small things, like better type inference the var keyword in Java 10, stem from Kotlin. Java is growing an evolving just like any major language, and its platform is just getting bigger and better along with it. It is not going anywhere, either as a language or as a platform.

On another note, I've never understood why so many people see C# as modern, while calling Java old. C# was created in 2000, just 4 years after Java, which means it is nearly as ancient a language (by computing standards) as Java (1996) and PHP (1995).

What you are saying is right. The most relevant difference for me would be that it is Open Source. So imagine having to choose between paying for Java updates or using something that looks like Java but it's free, what would you do?

Are you aware of OpenJDK? It's opensource, so why the heck pay for updates?

 

That is true in my opinion, there is a lot of stuff already written in Java and someone has to maintain it. Java will not die for many years.

 

I learnt Java and C# at school and I loved both of them.
Then, I worked with both and I came to hate Java and love C#/.net.

As other pointed out, what you like in Java can be found in other languages too so I don't see any real reason to use Java anymore.

It used to be enticing because you could use it on all platforms but now you have node.js, C# (mono), python, Ruby etc ... that can do that so Java is losing its appeal to me.

And what killed it for me is the problems we always had when deploying!
If you don't have the exact same JVM/JRE on the production server, your deployment fails and in big companies where you're not the one in charge of the server, you have a high chance to have a different version and added to that, someone else doing the deployment.
So you need to be on call for any issue that happens following the release during the week-end for example ...

I worked 2-3 years in Java and 5-6 years in C# (sometimes in the same time) and I C# was my favorite experience.
Mind that it was C# 2.0 and we didn't have all the fancy things like WPF, .net core etc ...

Working on private project, I recently migrated to .net core to node.js ecosystem and I think I'm ready to let C# go too ;)
All that to say I'm not here to promote C#, just my opinion... which is I think Java is going to fade away, especially since Sun was bought by Oracle, a lot of people gave up.

 

Why do you think c# is somehow better than java.

Yes. I am fan just because I have been working with Java for many year.

  • maven vs nugget
  • hibernate / mybatis vs entity framework
  • spring mvc vs asp mvc
  • eclipse vs visual studio
  • tomcat vs iis

I have tried node. I do not why I think java is better. It may be due to I just get used to.

Something I think java is better than node

  • maven is better than npm
  • one class one file of java is better than node
  • I think java do somehow better on entity and mvc design (because the awesome library such as hibernate, spring)
  • I think transactional is extreme great ( because of spring)
 

What I like with C# was that you had a framework to base yourself on (.net) and all "works".
Java, you had things that were not really integrating well, maybe because they were no made by sun or something like that.

(bear in mind that it's what I used to thing. I now love NodeJS and open-source because you have many choices of source)

  • maven vs nugget
    Never used those so can't say.

  • hibernate / mybatis vs entity framework
    I remember coming to hibernate after entity framework.
    To be honest, it was better than I thought but the solution from Microsoft was more complete and finished to me.
    Maybe now they are comparable.
    That being said, Microsoft's solution can also be frustrating if you don't want to follow their exact way of doing things.

  • spring mvc vs asp mvc
    I mostly used asp.net MVC so I may be biased but same point as above, I found spring MVC not as finished. It was less easy to use to me.

  • eclipse vs visual studio
    I will sound like a fanboy but nothing beats visual studio to me.
    I use vscode for nodejs now and I miss visual studio (I guess I could use it for nodejs, I'll have to research).
    I don't even remember eclipse but I remember it was frustrating ... can't tell you why now though ...

  • tomcat vs iis
    They were equivalent when I tried them but IIS was easier to set up due to a better interface. It does not mean it was a good interface anyway ...

Keep in mind that I don't hate Java. Programming with it is nice enough.
The deployment, I hate but I guess if your company makes sure you always have the correct versions and all ... why not.

One point I did not mention is the GUI ... java's GUI are usually ugly.
We had 3rd party tools at my previous work and even non-programmer were joking about it. Like "wow! that tool looks so bad, it has to be Java!" (it was)...

You should really try other languages.
Not because Java is not good but because you'll see that a lot of them are fun and you will learn new things (method, paradigms etc ...)

And you can still use Java in the same time ;)

You should really try other languages.
Not because Java is not good but because you'll see that a lot of them are fun and you will learn new things (method, paradigms etc ...)

^ Honestly, this.

It sounds like you've only used Java. It would be good for you to learn other platforms. Pick another language, whichever, and give it proper time. It doesn't mean that you need to abandon Java, but it will give you some more perspective.

When you're only used to one particular platform, whenever you try anything different, it feels awkward and harder, but that's because you're too used to the way things are done in your first platform, not because the new one is objectively worse.

Across the years, I've done professionally a lot of Java, Python and, more recently, nodejs; plus some Lisp and Elm in my side projects. And I hate all of them equally. That's not entirely true, I hate Java a bit more than the others, but that's only because it's the language I've used the longest.

When Java was all I knew, I thought that it was wonderful and amazing and I wondered how anybody could possibly prefer anything else. Then I learned another platform and I found out that it had awesome features that I never knew I was missing in the Java ecosystem. But after learning them, I could never stop missing them in Java. At the same time, I was annoyed that some things that where straightforward with Java, all of a sudden were harder. Learning yet another platform only expanded my realisation that the platforms I knew where missing some great ideas, while the new platform was also lacking great things I was used to.

The good thing is that when you learn a new language, you always learn new approaches to solving problems, and you might get one or two great ideas that you can use in the languages that you already know. You also learn that discussions about language A is better than language B are pointless because all languages suck. They suck at different things, though, so it's a matter of finding which language sucks less for your particular style and problem.

That's really true.
And to add to that, learning a new language may enlighten you on things you thought you understood in Java, or things you were not so sure.

When I moved from Asp.net MVC to .net core, I was frustrated with the new way of doing things ... and the language was the same!
I learned how to use it but recently, coming to NodeJS environment, I saw that it had a similar way (I think Microsoft realized the way the evolution in the javascript world was worth emulating?) but in the NodeJS "world", everything was so far better explained that I started to understand what I was doing.
Then, reflecting on my .net core application, I finally understood why it was working the way it does!

All that to say that you may learn to understand Java even more by doing other things ;)

 

You don't sound like an experienced(despite your records provided) and dedicated developer. There's literally no main technical reason you'd leave .NET CORE for NodeJs. LOL! you're confused with the JS experts. You just wanna be like "Oh Yeah, I use node too." lol and then come Deno in 5 years, and you'd be like "flip node is gibberish, deno is my new ecosystem". It's your opinion afterall. Why initially ruby based companies switched to java? not to mention the likes of Twitter, Air BnB... I find your comment very unworthy.

 

I didn't state there was a technical reason for me to move on to NodeJS.
I just prefer it, that's all.
In my professional life, I still use C# and I'm happy about it but if I have the opportunity to use Node, I will.

You don't sound like an experienced(despite your records provided) and dedicated developer

If you say so.
And what is a dedicated developer?

You just wanna be like "Oh Yeah, I use node too."

Oh you mean that the company I've started and the platform I'm building using Node is just a way to sound cool or something?
Wow, I think you should be a therapist, you'd be good!

It's your opinion afterall

True.
But let's look at the title of this article.
"What do you think of the future of Java?"
My native language is not English so excuse me if I'm wrong but I think OP is asking for opinions. But feel free to ask OP for clarifications.

Why initially ruby based companies switched to java?

I don't know, ask them.

I find your comment very unworthy.

And I find yours even worse so imagine how low you are!

You know, you can say that you like Java, it's ok, we accept everyone.
You don't need to be on the defensive about it or you'll get an ulcer.

 

For your own sake you should get out of the Java bubble more often, learn new languages and paradigms, just saying. You will be a better developer.

Your reasons to like Java are superficial because they apply to other languages as well, and they are subjective.

Other than C# I don't know of any language that is trying to replace Java, the other solve specific problems, some better than Java can (which is good for everything).

 

Why do you think C# is trying to replace Java?

 

It doesn't really, but is the only one that it could, as in the broad raw of language features it can offer to tackle about the same amount of problems in the same way (lots of features, big accent on OOP with a small amount of FP).

They are both corporate-level-monolith based languages, they feel good in that area where you have thousands and thousands of classes everywhere, with long build duration.

Is java or c# is good for enterprise just because of thousand and thousand of class?

 

Java has a lot more staying power than people give it credit for. While it might not be trendy or flashy, it's going to be around in the enterprise for a long time. The ecosystem is huge and there are lots of good libraries/frameworks for getting things done. Deployment can be a hassle in certain environments but starting with Java 10 there's much better support for running in a container.

It'll be interesting to see what happens now that Java 8 support is starting to taper off. Ignore the FUD about Oracle charging for Java, this is purely to continue getting updates for Java 8 using the Oracle JRE/JDK. If you move to an OpenJDK build you're all good, see here for details on the options available. Going forward it's going to be a best practice to stay in step with the latest Java releases.

To echo several other people here, I'm really a lot more excited about Kotlin's future. It can take advantage of the existing ecosystem seamlessly making the transition nearly painless (especially because of IntelliJ's terrific support). On top of being a "better" Java, it also has a ton of potential because it can compile to targets other than JVM bytecode. Being able to compile to JavaScript and native binaries is huge. I'm really excited to see where they go from here.

 

With regard to the enormous amount of existing Java-based systems it is safe to say that any rumours of Javas demise have been greatly exaggerated.

The change of the release cycles and of the licensing model have caused some turmoil, that's true. At out company, we are evaluating to switch completely to OpenJDK as a consequence. Also the transfer of the Java EE APIs to the Jakarta EE project under the umbrella of the Eclipse Foundation is a thing where it is not yet clear how it will work out; but I from my perspective it looks quite promising.

I'm quite certain that the ecosystem will stabilize itself relatively soon.

Of course, there is a lot of competion. The JVM is a lot more than just the Java language. In the Android world Kotlin has become a first class citizen for example.

Java is far from becoming a niche. Its ecosystem is mature. It is still expanding, albeit not with the same pace as, say Node. The recent developments will surely be consolidated and sorted out in a reasonable time frame.

But I'd consider being polyglot and having an open mind to be beneficial for any dev.

 

Well, It's great that I only got to read this article now. Like before, you hear experts saying JS is the future with the introduciton of NodeJs... it just isn't happening and I must say that the opensource community with libraries and features that aren't entreprise proof it's very unlikely for JS to win the game. Experts don't look at the root of why something was started, they just say it's fun and everyone loves it so it will win... hah aha by just loving it. But well, am I not supposed to be commenting about java? Yes.. Here we go, Java is everywhere Iot, Servers, Desktop Apps so because languages like Kotlin, c#, python exists doesn't mean java dies. As C++ recently passed python by popularity, was anyone expecting that? nooo, I don't think so. So as a developer it isn't about knowing 10 languages but it's about learning one or few languages well and be good at them. It doesn't you're stupid for being good at one language.

So guys, java isn't going anywhere. As powerful as open source is today, OpenJDK is gaining the momentum and oracle doesn't have guts to kill java, big java users red hat, ibm will etc keep developing java at the entreprise level atleast that's what I've been reading in recent years feel free to ask google to direct you to the right infomation. Andoid has no power to guide the future of java and Android will never atleast for the next 30+ years drop java. It doesn't mean everyone just turned to Kotlin, I am certain, personally, that over 75% of Android developers still uses java. So new Kotlin User... Just chill a bit please. Java will only die if C/C++ dies. lol!

But I love ASP.NET CORE... What a product!

 

I personally approach programming languages as just tools to get things done. The things that matter most are on a level above language syntax or libraries.

Having said that, Java is still my favourite tool, first and foremost because both the language and the ecosystem are dependable. That includes libraries such as the Apache Commons family and frameworks such as Hibernate and Spring, as well as infrastructure technologies such as Maven (it mostly 'just works' - no contest when comparing that to npm and nugget). As for difficulties in getting things up and running, Spring Boot is a shining example of how things can be made easy.

As I see it, the main reason for the dependability is the (prevalent in not prevailing) mindset that applications can live for a long time, so languages, libraries and frameworks need to accommodate that fact. That's something that's mostly missing in e.g. the JavaScript ecosystem (which is why I love JavaScript but shudder at the npm ecosystem).

 

I think Java will stay alive as C, java stayed the first used language in a lot of analytics this last year, and even if he falls he will all the time stay in top 5 for a very long year.

 

What would be next one? Or Microsoft can expand C# market share?

 

Microsoft is trying to make easy what Oracle made it hard and Microsft are doing far better in updates than Oracle, well Java EE/JVM platform is really robust, and pretty widely respected. .NET is not so widely discussed and right now what can make dev switch from java to c# is the visual studio IDE since he may be the best one in the world, so if they make.NET better I guess C# may take first place to JAVA.

Haha. Recently, I think Microsoft made a lot of awesome stuff such as TypeScript, Visual Studio Code, .Net Core.

 

Java is not going anywhere in the near future. It seems like Java is always reinventing itself, in more recent years is used on Android, the most prominent usage, it is also used in embedded devices, IoT in general, the language has also been evolved to address the concerns of the developers and now with this new release model, although I don't know if it is going to have the expected effects, the expectation is to evolve even faster. Java is the leader in enterprise applications. I don't think there is any web framework as complete as Spring Framework and if there is, I would like to know, honest question. So, I don't think it will end any time soon, many languages came and went in the past 22 years and Java is still here.

 

I am no fan of Java, but I have to admit: Java was, is and will be a good workhorse. It is not the sexiest mare in your stable but a real reliable one.
Java will not go away.

 

Java is the new pascal. It's only purpose is to expose students to a programming language in an outdated curriculum.

code of conduct - report abuse