If you learn Java you will be able to get a job doing it. So in that sense it is relevant. I personally feel it is a dead end though. And this is coming from someone who loved Java when he first played with it 15 years ago (previous experience was C++ / VB6 / BBC Basic though!)
If you want to enjoy your job, or your hobby, choose a better language.
I'd suggest Clojure or Haskell. But where I live at least it is a fight to get to do paid work in those languages, but a fight that is worth it.
Hard to explain why Haskell is better than Java in a little comment. I say learn some Haskell and Java and discover for yourself what you prefer.
I have been looking around for jobs here in Spain, a lot of the better paid senior level stuff is for either MS stack, or Java (they all seem pretty corporate style). There are Python jobs around, but more mid level.
Same problem here. It takes some ingenuity to get paid well and use the stack you love. I am working on it. One way is to convince your current company to try something new on a small project to get its feet wet.
Any MS shop could consider F# and Java shop could consider Scala/Clojure as in each case it compiles down to compatible ones and zeros.
Or it could be a case of get a .NET/Java job at an open-minded enough company.
One of my arguments to introduce F# (when I am ready to) is that F# is now (a probably better version of) what C# is going to be in 5-10 years time, so lets get ahead of the curve.
This is probably an unsatisfying answer, but large tech companies (such as Google) generally want to conduct interviews in Java or C++. Python seems to be an outside option. So for that reason alone, you might want to learn java.
On the bright side, if that's what you're using Java for, you might not mind it so much. Academic-leaning data structures and algorithms problems don't require the heavy frameworks that got Java a bad reputation[1], nor do they deal with programming cultures that prefer method names that read like the first 5 chapter titles of the GOF design patterns book. If you need to write code to find a cycle in a linked list, or find the sub matrix with the largest sum, or find a sub tree in a BST, I don't think you'll find Java particularly onerous.
[1] I've heard things have improved considerably, and that Java frameworks are now much lighter than they were in the early days of spring, struts, and hibernate.
Yes I enjoy programming in Java. On the server-side its performance is very good. As far as the enterprise goes, it will be in use for years to come.
It is a bit verbose but I'm ok with it. I know its fashionable to hate on it but I find it a comfortable language to work in. So, yes it's still very relevant in business and is worth learning.
Did you have a look into Java 8 features? The Lambda notation brings nice functional features to java and is also able to remove a lot of boilerplate code. Streams help to make threading easier to handle. Its worth an in depths look.
My opinion: If you're interested in learning a JVM language such as Scala or Clojure or Groovy, it makes sense to to know at least a little bit of Java because you can't really take the "Java" out of "JVM" with a library and error messages will often be provided relative to the underlying Java implementation - i.e. Clojure and Scala often throw Java errors.
Short answer. No.
Long answer. Java is very similar to C# and so time would be better spent learning C# as the language is more evolved and so you will get to learn more by default in learning C#. Also I believe your next best bet would be Python as the language concepts are similar.
Yes there are still companies that use it and if you want to learn Android programming you have to know Java because Android has a Java virtual machine in it.
Microsoft made their own Java and got sued by Sun, so they made Visual C# and the Dotnet languages to compete with Java.
When I started learning Java in 1995 I used Windows Notepad because there was nothing else I could find. There was no Hacker News to get good advice from, and paper based Java book to read from instead of free ebooks on the Internet and Github repositories for example code. Sometimes I had to pay money to get a floppy disk postal mailed to me with example code on it.
It is worth noting the limitations of the GIL. However, there are many situations where GIL won't slow down multitasking. There are also plenty of different strategies for mitigating this problem.
It is certainly not outdated. I do not enjoy it as much as I enjoy other languages, and I do think it's too verbose, but it's incredibly relevant. Most enterprise software is written in Java, and that's not going to change any time soon. And big companies need lots of programmers.
Some of the advantages of Java are that even mediocre programmers can be productive in it, and it scales very well to even ridiculously large, complex projects. Of course those can also be considered disadvantages from certain viewpoints, but from the viewpoint of large companies (and therefore job opportunities), they are definitely big advantages.
Personally, I'm convinced that Java is the Cobol of the future.
I am not a fan of the language myself, but Java is definitely still worth learning. It might not be the flavour of the week like Javascript or Go, but a lot of companies still use it (popular in the enterprise) and if you want to build an Android application, you'll need to develop using Java. Once you learn Java, you will find learning other languages like C# or C++ will be a lot easier, it's a great exercise in patience and a gateway to other languages.
I disagree with comments saying it is outdated. It is not. Choose your audience, choose your stack.
Is COBOL/DB2 outdated? Probably, but not sufficiently so to mean companies have moved their infrastructure away from it. There are good jobs to be found in mainframe land, many, and in great demand with great reward.
Java is probably not COBOL in audience, but it is engrained in a lot of enterprises, or as another commenter mentioned, even Android. It is here to stay.
As other users said, It depends on what would be the purpose of learning it. I'm currently consuming data from different API's and currently using Python. So the next step is learning Java and some Apache technologies: Kafka, Hadoop, Storm which are built in it.
I also will need to code a native mobile app and Java is the language of choice for Android.
Interesting responses. Java and C#.Net are by far the biggest languages used in developing enterprise business software at the back end. Also big tech companies such as Google use Java extensively.
A company will assume if you graduated in CompSci in the last decade or so that you have used Java fairly extensively.
Java is fast to run, and pretty fast to develop in due to static typing and when using an IDE although there might be some additional boilerplate code. I enjoy using it and there are plenty of Java options if you want a more RAD style of development like Rails e.g. Spring Data/Batch, Play, Grails etc.
Not as much Java as the JVM, because even if people are abandoning Java the language, the JVM will survive I think since not-insignificant languages such as Clojure and Scala are using it.
Learning Java to a comfortable degree will most likely expose you to the JVM and its inner workings, which is really a good piece of engineering.
Good if you want to use JavaSCRIPT. But most people prefer to use Dalvik becauz it runs on ARM which is much cheaper than ms windows devices. But JVM Cobol is probably more backward compatible
If you want to enjoy your job, or your hobby, choose a better language.
I'd suggest Clojure or Haskell. But where I live at least it is a fight to get to do paid work in those languages, but a fight that is worth it.
Hard to explain why Haskell is better than Java in a little comment. I say learn some Haskell and Java and discover for yourself what you prefer.