
Ask HN: Is it worth to learn Java? - watermel0n
I'm currently a CS student in Italy. Is it worth to learn Java nowadays? We have two courses about Java programming languages and servlet jsp, then everything is on C++.<p>My question is based on the growing ascend of programming languages such as Python, Ruby or Javascript. I would like to have knowledge about all of them, but I know that this is like impossible to achieve. C++ is a good programming language, as a compiled one, is very fast and realiable, but I cannot find libraries or frameworks for C++, like Java or Python ones.<p>What do you think?
======
argonaut
I completely disagree with lutusp. _It depends_. I cannot give you an
unequivocal yes-no answer.

You don't learn a language for the sake of learning a language. You learn a
language in order _to accomplish something_. So what is that "something" that
you want to accomplish?

If you want to build a web app, you don't learn Java, you learn Python or Ruby
(and use one of the web frameworks). If you want to build the front-end of a
website, learn Javascript, HTML, and CSS. If you want to build an iPhone/Mac
app, you learn Objective-C. If you want to build an Android app, learn Java.
If you want to work with machine learning, consider learning Java or Python or
C++, depending on what libraries you use. If you want to build Windows apps,
learn C# or Python or Java. Etc. Etc.

EDIT (reply to below):

I learned Java in school (the language and most of the essentials of the
standard library). I have never touched it again. If you ask me to build a
real-world product (i.e not just implement an algorithm or something) in Java
today, I would not be able to do anything until I teach myself the necessary
libraries. Not to mention that _precisely because_ I never built any large
projects in Java, my understanding of Java is very weak. If you're going to
learn a language, you might as well learn the language that lies on the path
to building something useful.

Most employers are going to hire you based on what you're capable of building,
not what languages you know. (I think the exception would be "big" companies
who are not technically focused).

~~~
lutusp
> You don't learn a language for the sake of learning a language. You learn a
> language in order to accomplish something.

Yes, and if what you want to accomplish is to be well-versed in modern
technologies including the common variety, you will be familiar with Windows,
OSX, Java and a few other things. Not because these represent the pinnacle of
technical sophistication, but because clients and/or employers will expect you
to be familiar with them.

> So what is that "something" that you want to accomplish?

The OP is a student, asking what technologies he needs to be familiar with in
order to be functional in modern computer technology. That's what he wants to
accomplish.

~~~
duiker101
I feel I have to agree with argonaut.

Even if OP is a student there must a be a project he wants to work on.
Whatever it is, it can probably be done in java, and it's worth doing it to
learn.

Trying to learn a language without actively using it to build something on
which you can experiment more than just the examples of some book is really
really important and you will learn way faster.

------
lutusp
> Is it worth to learn Java nowadays?

Yes. Not because it's the pinnacle of computer languages (hardly!), but just
because it's ubiquitous. You would have a hard time functioning as a modern CS
professional and never encounter Java.

Asking about Java is like asking, "Should I be familiar with the Windows OS?"
The argument isn't that Windows is the pinnacle of sophistication, the
argument is that it's everywhere.

------
Proleps
Java is still used in a lot of companies. I'm from the Netherlands and a lot
of the jobs here are Java or C# jobs(I think this is probably the same in
Italy). I think this is a good enough reason to learn the language.

It may be slower than C++ , but it is a lot faster than python, ruby or
Javascript. Another reason to learn Java is that it is used for Android
development.

The current JEE(Servlets and jsp) version is a lot better than the old
one(J2EE). You no longer have to configure lots of very big XML files.

As a dynamic language you should probably learn Javascript first because it is
used on the client side of web applications and some mobile platforms are
moving to Javascript.

------
cafard
I noticed long ago that it is a very rare musician who knows only one
instrument. A musician will almost always have one instrument at which he/she
is much more proficient, but your violinist probably plays the piano, and your
flutist might be passable at the violin. Much the same seems to be true of
persons who are good at a foreign language (immigrants up against necessity
perhaps excepted).

Learning Python, Ruby, or Javascript in a certain timeframe may be impossible
to achieve. But quite likely you will find yourself at 30 knowing two of them
reasonably well, and several other languages also. I don't think that Java is
going away soon.

------
sampsonjs
Nowadays, there's two different things: the core language, then the numerous
frameworks. The core language is the first thing you need to know and a lot
easier to learn than any of the frameworks. So just study the core language in
case it comes up on a job interview, you can study the frameworks(a lot of
which suck) later if you have to(like it's part of your job or you really need
it to pass an interview). Study some C# too, it's cleaner, and besides static
typing is awesome.

------
X4
An Android Developer earns more than a Software-Developer (both writing Java).

And it's always worth learning.

