Will Java have the same importance it had in the past, or it will be less relevant than nowadays?
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!
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.
- 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.
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.
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.
As of October 2011, BlackBerry seems to be in decline. Android is still going strong.
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:
Java has some awesome libraries.
The JVM is an awesome platform.
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.
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.
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.........
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:
- 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.
- 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.
- 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?
- 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.
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.
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.
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).
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).
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.
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.
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.
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
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.
Here is an article from ReadWriteEnterprise on Java's decline:
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.