40
votes

Will Java have the same importance it had in the past, or it will be less relevant than nowadays?

7
  • 4
    Java will always stay relevant in the programming industry. How do you suggest we write anything without it?! ;)
    – deceze
    Sep 15, 2010 at 4:31
  • 7
    The language or the platform?
    – MIA
    Sep 15, 2010 at 4:40
  • @Jim: great point, decoupling the future of Java language and JVM.
    – azheglov
    Sep 23, 2010 at 2:00
  • 2
    @Chankey - See Meta: meta.programmers.stackexchange.com/questions/1/… Oct 21, 2010 at 18:24
  • 1
    We don't do "look into the future and predict what will happen" kind of questions anymore.
    – Adam Lear
    Nov 7, 2011 at 20:59

25 Answers 25

30
votes

Java is relevant and will continue to be relevant for many years in the Enterprise computing world.

Whether it continues to be relevant in other areas depends a lot on what Oracle does. If they inject some life (and resources) into ME, desktop applications and other areas, and if they press on with the evolution of the Java language, then Java will do well.

But if Oracle cuts back on R&D and/or tries to stomp other players in the Java space, there's a good chance that someone / some company will develop a better (and more open) Java-like language. If Oracle win their lawsuit against Google, I predict that the next generation of the Android platform will have a new language, just like happened with C#. If Google get the openness right ... then, the game is on!

7
  • 1
    Agree. Oracle itself has invested too much of its Enterprise application stack into Java to allow it to decline. Interesting that a lot of the other answers seem to focus on the mobile platform.
    – Gary
    Sep 13, 2010 at 4:10
  • 10
    IBM supports Java on all their major platforms. This means that even if Java should disappear from the face of the Earth it will still be the running on the mainframes (like COBOL). The primary advantage for programmers is the ability to develop locally, and the strictness of the JVM meaning it will run in a predictable way.
    – user1249
    Oct 17, 2010 at 14:52
  • +1 especially for I predict that the next generation of the Android platform will have a new language, just like happened with C#. Don't forget that Gosling now works for Google; nighthacks.com/roller/jag/entry/next_step_on_the_road
    – Qwerky
    May 12, 2011 at 15:04
  • @Qwerky He now works for Liquid Robotics. nighthacks.com/roller/jag/entry/i_ve_moved_again
    – user1249
    Oct 30, 2011 at 10:31
  • Let's not forget what Borland did to Delphi. It was so abandoned that most people today thinks of Delphi as a dying out of business solution. But Embarcadero rescued the product and now it is open for java, mac, html5, android and other programming areas.
    – NaN
    Apr 4, 2013 at 16:01
47
votes

Yes, Java will certainly continue to be relevant and will probably maintain its position as no.1 overall platform for software development for a long time.

Firstly, reasons why Java is and will continue to be a strong choice:

  • Java is still the most popular langauge - and this means it has the most developers, most ongoing development, largest installed base etc. There is no sign of any sharp decline - if you look at the TIOBE trend for example it could easily continue to be No.1 for the next 10-15 years

  • Java, despite its flaws, is still an excellent language for developing enterprise applications. The fact that it is verbose and tends to promote a fairly standardized style of OOP development is a good thing when applications need to be maintained by many different developers over many years in a fairly standardized way. Smart CIOs realize this, which is why you won't see Java disappearing in the enterprise any time soon. BTW, and explicit goal of Java when it was created was that it should be "simple, object oriented, and familiar".

  • The sucess of languages is not just about the language itself, but around the ecosytem of libraries available for the language. In this respect, Java is second to none, with a massive array of open source and commercial libraries.

  • Performance - JIT compiled code on modern JVMs runs very close to optimised native code in terms of speed. In practice, this means that Java is typically one of the fastest language/implementation combinations available (see flawed benchmarks if you like). Anyone who thinks that Java is slow (or, for goodness sake, "interpreted") needs to update their facts from the last century.

  • Major corporate backing - Java is a strategic platform supported by many of the worlds largest and most important technology companies and organisations - we are talking about Google, Oracle, IBM, the Apache Software Federation etc. Java also has substantial support from major users of technology - banks, media companies etc. No other language/platform has such broad industry support (even if the players have the occasional tiffs :-) )

  • Android - is giving a major boost to Java in the mobile space. Lots of startups are targeting this, and it's not unreasonable to expect that mobile startups will also have good reason to pick Java on the server side as well.

  • Portability: Java is the closest thing in existence to a genuine cross-platform programming environment. It's on everything from high end servers to smartphones, and compiled pure Java code will run unmodified on all these platforms. Very few languages can say this with the same degree of credibility. Also as a bytecode language, Java has an inherent advantage in the library space because compiled libraries are inherently portable across platforms.

  • Excellent tools - most of which are free and/or open source. Netbeans and Eclipse are great examples in the IDE space. Developers need good tools to be fully productive, so this is an important factor in language/platform choice.

  • Java is Open Source - not going to go into why this is a good thing here, but suffice it to say that both a) the core Java implementation in the OpenJDK and b) most of the interesting Java libraries and tool are open source.

  • Java is not just a language, it's a platform: there are many promising languages on the JVM such as Clojure and Scala that represent the future of the platform on the language front. My prediction would be that the Java language continues to recieve minor enhancements to features (JDK 7, 8 etc.) while these new JVM languages are where the cutting edge innovation will happen. But it is all part of the Java platform.

Secondly, how will Java get replaced? Let's look at the alternative contenders:

  • C/C++ - will continue to be important in terms of systems programming and for highly optimised native code requirements such as gaming. But that will continue to be a specialised niche and will never take them past Java, which is more suitable for general purpose application development.
  • Microsoft.NET - C# is a nice language for sure (an improved/polished clone of Java, in essence), but the entire .NET platform represents vendor lock-in to the Microsoft software stack. A large number of people will never adopt a vendor-specific strategy having been burned by this in the past. Mono, despite being a nice open source project, is never going to be fully compatible so most businesses won't bet on this as an option. .NET/C# will continue to be very important in the windows space, but won't be able to displace Java overall.
  • Objective-C - will no doubt continue to occupy a major niche in Apple-specific development, but probably won't have much traction outside that space. Also, Java has a very compelling counter-story in the mobile space thanks to Android
  • Python, Ruby - nice languages again, very productive in their niches. But nowhere near the JVM in terms of performance, industry acceptance or range of libraries. Will continue to be successful for sure, but they aren't shaping up to be Java-killers.
  • JavaScript - will continue to have an important role in client side web development. But no real strength outside that space that is likely to threaten Java anytime soon.
  • Haskell, OCaml (and various other academic/FP languages) - great languages, but have nowhere near the library support Java has, so not particularly practical for real-world usage. Also, offer no compelling advantages over JVM languages such as Clojure or Scala (which can use Java libraries painlessly)
  • Clojure or Scala - actually really compelling in the medium/long term. Might actually replace Java in 10-15 years, but both really count as part of the Java platform anyway since they are JVM languages. So Java investments will be safe.
  • Mysterious unknown new language? - might happen, but history has shown that no matter how compelling a language is, it takes a long time for traction to develop, developers to learn new skills, significant investment by companies to happen etc.

Finally, some conclusions / predictions:

  • The overall relative positions (in terms of market share) of the major languages will evolve a bit over the next few years but won't change much. Java will stay No.1.

  • You won't go wrong in choosing the Java platform for the next 10-15 years. Don't worry about Java going away any time soon.

  • In the near term, Java-the-language is a safe, reliable bet. In the longer term, or if you're feeling the need to be more at the cutting edge of innovation / language design, I'd recommend Clojure or Scala as new JVM languages

  • People will continue to spread FUD about Java. Just ignore it.

13
  • 2
    Great post, people who are using languages like Ruby and Python think that their language is the best thing ever but the reality is that for large-scale intensive applications a dynamic language isn't going to cut it May 13, 2011 at 5:41
  • 4
    This is not the earliest response but it is by far the most detailed and convincing as of mid-2011, and thus deserves to be the top answer. +1
    – limist
    Aug 1, 2011 at 16:37
  • @programmx10: Is there more overhead in dynamic languages than there is in Java frameworks like Spring? Oct 30, 2011 at 1:49
  • @Kevin: Spring's typically just used for application configuration, so the cost isn't terrible. OTOH, if it was used also for the actual computation and IO servicing, it would be at about the speed of the dynamic languages. The key is that Spring-based apps are really partially scripted — which is actually a great place to be — but we don't tell the bosses that as they like to believe that absolutely everything has to be compiled. Oct 30, 2011 at 17:01
  • 1
    Good post. Where do you see Go and maybe Dart in this spectrum? Nov 24, 2012 at 13:32
17
votes

Even in the worst (best?) case, I can't imagine Java becoming irrelevant within 5 years. Java has been used enough that it's roughly in the same situation as COBOL, Fortran, etc. -- even if everybody with existing code decided to rewrite all the existing systems in another language as quickly as reasonable, it would take more than 5 years to replace it all (and 5 years from now, there would still be enough left in active use that a fair amount of maintenance would still be happening).

Realistically, that's unlikely to happen -- while there are certainly differing opinions of Oracle, I can't imagine them doing anything so obviously awful that all the major players who have huge investments in Java would drop it very quickly. In all honesty, it would probably take close to 5 years of obviously bad decisions before IBM (for example) would even consider working toward using something else in Java's place. They have a large enough investment in Java that they're unlikely to drop it until or unless they believe they have virtually no alternative.

1
  • +1 for the connection to COBOL. Some say that because of Java acting as the modern COBOL, it's fitting for Oracle to have it.
    – Macneil
    Oct 30, 2010 at 4:57
17
votes

I would say it's on a decline. It's not gone, but it's past its peak.

21
  • 13
    Source? (15 chars)
    – TheLQ
    Sep 1, 2010 at 23:04
  • 13
    @Kop - "this is a stackexchange websites for subjective opinions". That is to misstate the purpose of this site. Subjective opinions are OK, but objective facts are clearly more valuable. And it is legitimate to challenge any subjective statement to elicit possible objective supporting evidence.
    – Stephen C
    Sep 13, 2010 at 10:17
  • 12
    @Lorenzo Over the last decade Java has been about as mainstream as it gets and probably the most widely used programming language in industry and education. I agree with Fishtoaster that it is in decline now, largely due to a lack of direction and progress on Java 7 and the rejection by programmers of heavyweight JavaEE solutions in favour of lighter alternatives in other languages.
    – Dan Dyer
    Sep 13, 2010 at 17:52
  • 17
    I don't know if I agree with this terse answer, but the 15 upvotes just demonstrate that I have to stop hanging out in this zoo. This answer has no reasoning and cites nothing. Which is what "source?" probably meant. I don't mind opinions, but "Java dead!" or "Java alive and well!" are both completely unvotable to me. +0. Oct 17, 2010 at 19:00
  • 5
    -1: no facts or argument in this answer whatsoever. subjective != random unsupported assertions
    – mikera
    Mar 14, 2011 at 13:46
17
votes

Two answers:

1)Android

2)Blackberry

Seriously though, on the desktop, it may be in decline, but it powers the two competitors to iPhone.

Also, last year, I helped a bunch of people with Java homework for school. Point being, java is still taught in colleges.

Edit:

As of October 2011, BlackBerry seems to be in decline. Android is still going strong.

5
  • A whatberry? Are they still going? They are to the 2000s what Palm was to the 90s... :) Sep 13, 2010 at 19:22
  • @adolf garlic - So what, they are not sold to HP yet ;) That's why there are two answers, anyway. Android is to the 2010s what iPhone is to the 90's. Android's not up to the fading phase yet.
    – Moshe
    Sep 13, 2010 at 21:41
  • 8
    It was never that relevant on the desktop. The meat and bulk of Java development is on the back-end, OLTP market. Oct 13, 2010 at 3:09
  • @Luis.espinal - I was grouping servers, desktop in one group, mobile in the other.
    – Moshe
    Oct 13, 2010 at 13:45
  • @luis.espinal , +1 Oct 29, 2011 at 14:15
14
votes

It was losing importance in the mobile market, but with Android, it has regained it again.

4
  • 1
    The Android effect could be short-lived if sl4a gets completed. The eventual goal of sl4a is to allow people to write apps for Android in any programming language. Also, cross-platform toolkits like Appcellerator make it at least partially unnecessary to learn Java for Android development. Sep 2, 2010 at 1:05
  • 3
    It will take a long time for sl4a to take off for general development due to performance concerns. I'm still not sold on cross-platform toolkits for high quality applications. For something quick/limited resources, sure
    – Casebash
    Sep 2, 2010 at 1:48
  • what performance concerns? The Python version is native CPython with all the APIs being called via a Dalvik bridge (IIRC). So it should be nearly as performant as "native" Dalvik code, in the absence of a JIT. Android 2.2 does have a JIT, but at that point, there's no reason not to use Jython anymore, since it would be faster than CPython and not hugely slower than Java. Sep 2, 2010 at 12:25
  • +1 for inspiring @Chinmay Kanchi's comment. Didn't know athat sl4a is that interesting. Oct 17, 2010 at 19:03
13
votes

Java will be relevant for the foreseeable future, even if you define relevant to only include new code, not legacy maintenance mode. Yes, the language sucks and treats its programmers like naughty children instead of consenting adults and hasn't had a facelift since the Stone Age. On the other hand:

  1. Java has some awesome libraries.

  2. The JVM is an awesome platform.

  3. You don't have to program in Java to use these libraries, now that there's been a proliferation of JVM languages.

IMHO the way things will evolve is that Java in the JVM world will become what C is in the natively compiled world. People will use Scala, Jython, Groovy, etc. in day to day coding, but will keep calling old, crufty Java code from these languages for eternity. Certain performance-critical code might still be written in Java, because it's probably the lowest-level, most efficient JVM language. Old libraries will need new features added. Therefore, Java will remain highly relevant even if it's not used by the average programmer day to day.

1
  • makes me feel old, when you say java will become a native language. sigh Feb 15, 2013 at 21:12
7
votes

I think so. I anticipate that its popularity will increase over the next couple of years, with recent improvements in the plug-in and the syntactic enhancements coming in Java 7. And it has the advantage of the huge range of good open-source libraries (as compared to .NET) that could easily keep it alive for another 10 years.

2
  • 4
    Java 7 rejected many of the best ideas
    – Casebash
    Sep 5, 2010 at 1:02
  • 1
    @Casebash: Which were those?
    – Chris
    Oct 21, 2010 at 18:32
5
votes

Currently Qt is killing Java in Desktop Applications.There are many rewrite from Java to Qt.Currently i'm working on one of them. Since the day i started my programming carrer there is always a rumour that Something would kill C++ . For Ex . Visual basic, Java, C#, but in reality C++ is still going. It has many disadvantages but it is still going. All other Competitors had sad death.........

4
votes

I don't think it'll lose relevance. Java 7 is just coming out with a lot of neat features that will help developers create great software easier.

Also Java is used to create Blackberry applications; one of the leading corporate mobile phone. It's safe to say it's not going anywhere soon.

2
  • And powers Android, a cell phone gaining momentum and popularity everywhere
    – TheLQ
    Sep 2, 2010 at 2:09
  • I went to Java One this year. Some of the cool things coming: support of automatic use of multiple cores, automatically offloading to the GPU and automatically offloading to the CPU's vector unit is going to make Java a very efficient platform. And all Java programmers writing the "new" idiomatic java will get it for free. There are some scarily smart guys who have been given some money by Oracle to make Java better. Project Lambda is going to supply closures and do so in a way that works AND is totally backwards compatible without any pain. SAM conversion rocks. Good things are coming. Oct 22, 2010 at 0:18
4
votes

I'm primary a .NET developer, although I do work with other languages (including Java) as needed to get the task at hand. As such, based upon my own experience working with the language, I don't think it's going away anytime soon, here's why:

  1. Current Install Base - There are enough programs out there that are going to need long term support that there is a reason for new developers to learn the language.
  2. Use in the Academic Setting - Most colleges and universities are using as one of their introductory languages to teach OOP and other fundamental concepts, this means that there will continue to be new developers graduating and entering the workforce that will be familiar with the language when they get started.
  3. It's Cross-Platform Nature - An obvious one, but the fact that it is cross-platform is a big deal, even more so as smart phones at support for Java to new devices. The prospect of only having to maintain one code base, but being able to deploy (i.e. sell) apps for multiple platforms is going to be a bit deal. Can you imagine if iOS and Droid both supported apps written in Java?
  4. No Strong Competitor - At this point in time I can't name a language that I consider a strong competitor to Java. Sure C# is starting to show up on more platforms thanks to Mono, but that's not quite the same as having the same cross platform that Java has. Granted there are a number of languages that do what Java does (and it some cases better) they tend to be tailored to what they are doing and for some large projects it doesn't make sense to have a ton of languages to maintain if you can accept any performance hit that Java might have.
4
votes

Java the language may be in slow decline, but Java the platform (JVM + JDK) has definitely been booming during the last couple of years (Scala, Clojure and many other languages; Android framework). It's easily the best (only viable?) multi-architecture, multi-OS, multi-language platform out there, scaling from embedded mobile devices to mainframe enterprise, and there are no comparable rivals currently AFAIK. So I would expect Java the platform to be relevant in 5 years, and even in 15 years. That also makes Java the language relevant in the long term, even if its popularity may be past the peak.

4
votes

TIOBE rates language uses... http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Based off their stats Java leads the way and will probably do so for a long time to come - #1 since 2005. I have used Java over my career and everywhere I have ever worked had Java applications/developers - even in places that considered themselves Microsoft Dev Shops. Java is just such an easy language to pick up when you have to develop solutions on a Mac or Linux Server.

Also, good ole C/C++ are still holding strong at #2 and #3 - while C# - the language everyone thinks it is the most popular (MS marketing at its best) - isn't even close! I use C# now, but it will take years to equal the amount of code I've written in Java and Delphi.

So don't be afraid to learn or use Java - there is always jobs posted for them. So, yes Java will will be very relevant for a long time to come.

1
3
votes

It's one of the biggest names in Enterprise programming (J2EE). I'm pretty sure we won't be seeing it going down for the next couple of years.

3
votes

Not sure about JAVA. But surely the JVM will remain relevant supporting many other languages.

3
votes

It depends on how the language will evolve.

At present state Java is not very actractive as language. It was born to support one (and just one) paradigm: OOP. It places itself somewhere midway between languages that permit higher level abstractions (like C++ and its metaprogramming features) and scripting languages with reflection capabilities (like the Python "exec" and "dir" commands) but somehow it fails to find its real place. It's basically becoming obsolete as "language". Weren't for the fact it's a de-facto standard on mobile devices I think it would be dead by now.

As for the fact it's a good teaching language for OOP I have my doubts from what I can see: all Java-born programmers just spawn Visitor and Observer patterns everywhere but it's not that I have a great experience with Java programmers.

Still there is a lot of legacy code and on mobile devices it's a standard. That said I'd never choose Java for either a desktop or a web application. There is no reason to, apart business ones (most managers nod if you say "Java" and that is, I suppose, the reason it's a standard on mobile devices).

2
  • Does anybody remember when someone from SUN said "Java doesn't need" enums ? C# / VB.NET has enums, and where later added to Java
    – umlcat
    Mar 14, 2011 at 16:12
  • 1
    its widely used for large-scale apps, sure the "coders", "scripters" and "ROR ninjas" don't like it but thats because its a real programming language and is used for building apps that do a lot more than just CRUD applications do, if you have a lot of intensive things going on in the server-side of an app Java is usually the most attractive choice before you would have to go to using C++ or another lower level language May 13, 2011 at 5:44
3
votes

IMHO, Java is going to stay very relevant and grow in use, even though it is not really evolving in its constructs or powers.

Here is my reasoning: - There is a lot of code out there, and maintenance requires more people than writing new code.

  • The "VM languages are too slow" camp is slowly losing (especially as Java made it successfully into algo trading).

  • Major companies still use it across all sectors, including Oracle.

  • The android platform is growing faster than iOS, with no other competitor in sight, and that does bring in more people to the langauge.

  • It is more straightforward for folks to use than functional languages. It's easy for language purists and academics to appreciate functional languages and their capabilities, but most newbies without CS degrees do not fully appreciate the power of the Lambda. So I don't think that these languages would take off.

  • It is fully free (unlike .NET which is still closer to the windows ecosystem despite alternatives).

2
votes

Java will not completely lose it's relevance for many more years, but it is certainly on a decline. If recent developments will affect that or if Oracle can change that remains to be seen. But I do think that one day I might be like COBOL, no new projects, but never quite dying either.

2
votes

COBOL, Fortran, and C are still relevant. What's the chance that Java will go away in five years? Conceivably there won't be much new Java development in five years, but I'd bet against that, too, since there's lots of people who use Java and shops are rather slow to switch their preferred languages.

1
vote

I suspect all languages eventually go through a phase where pundits will say "[Language] is the COBOL of the [insert decade here]".

Java has become a standard tool, exclusively or one of the main tools, in a number of areas of software development. Its VM is popular as a platform upon which to build new languages. It'll be around way too long just from its massive inertia even as newer better languages become popular.

1
  • But, Java did become the COBOL, mainframe, server speaking
    – umlcat
    Mar 14, 2011 at 16:13
1
vote

There have been some trends in the Java world -- particularly the absolutely brilliant adoption of JRuby and Rails or Groovy and Grails -- that indicate that Java still has a lot of life in it. Then there's the Android situation, which is also in Java's favor. As recently as Snow Leopard on Mac, certains changes -- now supporting Midi with no external drivers -- make it so that it's also gaining in possibilities on the desktop. And Swing apps finally look 99% native (or at least there are a lot of nutcases that believe this now: 10 years ago there were none).

Java had an amazing moment in the 90s where it seemed like it was the solution for everything. Now it's clear that nothing is the solution for everything. .Net is kicking ass, and Ruby, and Python, and PHP (with goofy CMS solutions and entire frameworks that people get married to for life!), and Java (with Groovy JRuby JPython whatever), and a whole bunch more. The answer is:

Expect a Pluralistic Universe

Will Java continue to play a major role in this Universe? If you mean "languages that run on the JVM" the answer is most definitely. If the answer is just Java (language, JVM, etc.), then the answer is "maybe not so major." But come on, even Cobol is still hanging in.

1
vote

I think academic still need the value of open source in JAVA. There are so many many powerful library (focused on academic purposes) developed on JAVA.

I agree that JAVA will remain relevant, but for smaller segment.

1
vote

Google writes a lot in Java and Google is the biggest company in the web. I think the web is the future - web application , cloud computing - and so I think Java is still relevant in the future.

And there is Android, which is the future of smart phones in my opinion. And some people say smart phones are the future of the computer - whats not my opinion :) - but whould also gave Java a big future. So go Java :D

1
  • I'll second that Google is pushing a lot of its internal tools and libraries (e.g., GWT, Guava, etc.) to the community, so it does have external impact beyond just the X number of engineers using it.
    – Uri
    Mar 14, 2011 at 15:19
0
votes

If it's bound to some industry (i.e. banking; mobile platforms; etc.) it's like asking "Will Internet Explorer still be relevant in 5 years.." 5 years ago. Today there are many companies that have IE-specific internal websites that can't be rewritten from scratch. So it's not "relevant" but "unavoidable".

To come to your question-- no, it's not relevant as a driving force for innovation; but yes, it's relevant because many industries will require java applications to be maintained for many years to come.

0
votes

Here is an article from ReadWriteEnterprise on Java's decline:

http://www.readwriteweb.com/enterprise/2011/02/javas-not-dying-its-mutating.php

What we're witnessing is not the death of Java, but its transformation. It's moving from being just a general use platform that dominated the enterprise to being the guts of many disparate technologies for various special applications.

It also addresses how specific tools are providing alternatives to Java technology, but not necessarily replacing it:

Although NoSQL databases provide an alternative to relational databases, it doesn't mean that relational databases will go away. Likewise, Node.js provides a specialized alternative to Apache, but won't kill Apache.

1

Not the answer you're looking for? Browse other questions tagged or ask your own question.