Future of Java

A

Alex

Hi Everyone!

I'm a recent college grad and have invested quite a bit of time into
learning Java. I just got a job as a programmer doing Java. However, I know
of Microsoft's .NET Framework is becoming increasingly popular. Is that
going to take over Java? What is everyone's take on the future of Java? I'm
actually thinking that I should know both C# and Java to stay competitive
in this world. Any advice or ideas what will happen with Java?

Thanks!
 
D

David N. Welton

Alex said:
Hi Everyone!

I'm a recent college grad and have invested quite a bit of time into
learning Java. I just got a job as a programmer doing Java. However, I know
of Microsoft's .NET Framework is becoming increasingly popular. Is that
going to take over Java? What is everyone's take on the future of Java? I'm
actually thinking that I should know both C# and Java to stay competitive
in this world. Any advice or ideas what will happen with Java?

Language popularity stats - to be taken with a grain of salt, because
it's not possible to measure this stuff accurately:
http://www.dedasys.com/articles/language_popularity.html

On the economics of programming languages, which explains why Java won't
just go away from one day to the next:
http://www.dedasys.com/articles/programming_language_economics.html

--
David N. Welton
- http://www.dedasys.com/davidw/

Linux, Open Source Consulting
- http://www.dedasys.com/
 
J

Jon Martin Solaas

Alex said:
Hi Everyone!

I'm a recent college grad and have invested quite a bit of time into
learning Java. I just got a job as a programmer doing Java. However, I know
of Microsoft's .NET Framework is becoming increasingly popular. Is that
going to take over Java? What is everyone's take on the future of Java?

It will continue to evolve.
I'm
actually thinking that I should know both C# and Java to stay competitive
in this world.

Jack of all trades master of none ...
 
D

Dag Sunde

Jon Martin Solaas said:
It will continue to evolve.


Jack of all trades master of none ...
Luckily, our trade is programming not a particular language,
so learning one more programming-language will only take you
closer to master.

:)
 
P

Patricia Shanahan

Jon Martin Solaas wrote:
....
Jack of all trades master of none ...

This at least suggests that one should learn just one programming
language, and focus on expertise in that language.

I've seen people who did that for several years, and then hit a
situation in which that language was just not the right tool for the
job. Some of them found it harder to learn another language than the
typical beginner learning their first one.

The problem was that they had completely absorbed the ways of thinking
appropriate to that language as the only right way to think about
programming. They could not see how to use any features in the new
language that were not present in the old language, so they struggled
with a crippled subset of the new language, containing only those parts
of it that matched the old.

For this reason, I strongly advise new programmers to learn at least a
second language as soon as possible. However, C# and Java are a bit too
close together. It might be better to learn an assembly language, or
Smalltalk, or Forth, or Lisp. Anything that requires different mental
models of programming from Java.

As a practical matter, languages change too fast to depend on learning
any one language. From new CS student in late teens learning language #1
to being ready to retire in late 60's spans 50 years. How many languages
have been really good career choices for 50 years? Even Fortran, which
has at least kept the same name for that long, is a very different
language now from what it was in the mid-1950s.

Learning another programming language is both a useful skill and a
mind-stretching mental exercise.

I like to think of myself as a master programmer, who happens to have
done some programming in Java, rather than a Java programmer.

Patricia
 
S

Stefan Ram

Patricia Shanahan said:
I've seen people who did that for several years, and then hit a
situation in which that language was just not the right tool for the
job. (...)
For this reason, I strongly advise new programmers to learn at
least a second language as soon as possible.

If the abovementioned people knows a language, for example,
Java so well and language Java is »just not the right tool«
but, for example, Tcl/Tk is needed, they might as well try to
find someone else to do this task (someone experienced in
Tcl/Tk) and concentrate on doing the things well they can do
well, i.e., search another task, were they can continue to
apply their Java skills.

For example, when a family doctor finds that one of his
patients needs surgery, he often will not take this as a
chance to learn and practice surgery, but pass this patient on
to a surgeon.
 
R

Roedy Green

I'm a recent college grad and have invested quite a bit of time into
learning Java. I just got a job as a programmer doing Java. However, I know
of Microsoft's .NET Framework is becoming increasingly popular. Is that
going to take over Java? What is everyone's take on the future of Java? I'm
actually thinking that I should know both C# and Java to stay competitive
in this world. Any advice or ideas what will happen with Java?

..NET is for a few hardware platforms. Java is for a huge range of
platforms. Obviously any server system that gets too successful will
find itself retooling without .NET to either:

1. use a large farm of cheaper servers
2. use bigger servers.
3. use specialised low power servers (ever more important in the
coming years).

Given the perpetual optimism of the human breast, anyone who plans to
succeed big would avoid .NET from the start.
 
R

Roedy Green

Language popularity stats - to be taken with a grain of salt, because
it's not possible to measure this stuff accurately:
http://www.dedasys.com/articles/language_popularity.html

"We begin by taking a look at the raw google numbers returned by
looking for “perl programming”, “c programming” and so forth."

I wonder how many of those "c programming" were about c and how many
were "c. programming" about programming in general. Further since
both Java and C++ resemble c and since many programmers know c, it
makes sense to introduce a language by comparing it with c, and by
assuring the user you can still interface with your old c programs.

What you want is not the number of google entries, but how many google
queries were about each language. But even that means not much. That
would rank Ruby higher than C since people don't know Ruby yet and are
curious, even if they were actually using C.

One of my measures of trends is feet of shelf space in the bookstores.
It shows where the interests is. Again it overemphasises the latest
fad, which may or may not take off.
 
R

Remon van Vliet

Stefan Ram said:
If the abovementioned people knows a language, for example,
Java so well and language Java is »just not the right tool«
but, for example, Tcl/Tk is needed, they might as well try to
find someone else to do this task (someone experienced in
Tcl/Tk) and concentrate on doing the things well they can do
well, i.e., search another task, were they can continue to
apply their Java skills.

For example, when a family doctor finds that one of his
patients needs surgery, he often will not take this as a
chance to learn and practice surgery, but pass this patient on
to a surgeon.

A valid way of reasoning, but this doesnt always apply to developers i dont
think, and i agree with Patricia's point here. The benefit of learning more
than one language isnt necessarily being more flexible (although that's a
nice bonus) but also to pick up new ways of thinking, or different ways of
solving problems that are quite specific to a certain language. This (i
assume) is why examples such as ANSI C or assembly language are given as an
alternative. As a Java developer you'll automatically get quite proficient
in proper OO design, use design patterns etc. etc. As an assembly language
programmer for example, you'll automatically pick up optimization techniques
and a thorough understanding of how certain algorithms and data structures
work (because you often have to do them from scratch) and their performance
impacts or implementation pitfalls. This kind of knowledge will help the
quality of the code you produce, regardless of the language.

As a practical example, a lot of beginning Java developers could not give
you an answer if you ask them when it's better to use LinkedList and when
it's better to use ArrayList etc. while the average ANSI C developer can
probably give you a reasonably accurate answer just by looking at the class
names, because they probably had to manually implement linked lists and
other collections at some point. I'm sure there are better examples to prove
my point but i think the general idea is clear; the more languages you've
worked with that require a different set of skills, the more complete you
will be as a developer. Certain languages simply force a certain way of
thinking or make you focus on certain problem area, be it performace, OO
design, code readability etc. All that said i think it shouldnt be made a
bigger issue than it really is. Someone that never did anything but Java
isnt by default a less complete developer than someone who knows 10
languages. By the way, C# and Java are almost the same so there isnt any
significant gain in learning both. Just learn the one most relevant for your
career plans i guess.

My $0.02
 
M

Monique Y. Mudama

If the abovementioned people knows a language, for example, Java
so well and language Java is »just not the right tool« but, for
example, Tcl/Tk is needed, they might as well try to find someone
else to do this task (someone experienced in Tcl/Tk) and
concentrate on doing the things well they can do well, i.e.,
search another task, were they can continue to apply their Java
skills.

For example, when a family doctor finds that one of his patients
needs surgery, he often will not take this as a chance to learn
and practice surgery, but pass this patient on to a surgeon.

Yes, but experienced car mechanics who need to change the oil in their
motorcycles are more likely to do it themselves than to pay someone.
 
R

Roedy Green

I'm sure there are better examples to prove
my point but i think the general idea is clear;

One of the most obvious ones is programming in a high level language
will lead you to create better-structured assembler code. Though,
dealing with spaghetti assembler is not quite the problem it once was.

If you wrote in C after exposure to OO, chances are you will organize
your structs and methods in a much more coherent way.

After exposure to Eiffel, you will be much more careful in documenting
the pre and postconditions of a method, and more inclined to pepper
with asserts.
 
D

David N. Welton

Roedy said:
"We begin by taking a look at the raw google numbers returned by
looking for “perl programming”, “c programming” and so forth."

And then we go on to look at a few more numbers...
I wonder how many of those "c programming" were about c and how many
were "c. programming" about programming in general. Further since
both Java and C++ resemble c and since many programmers know c, it
makes sense to introduce a language by comparing it with c, and by
assuring the user you can still interface with your old c programs.

What you want is not the number of google entries, but how many google
queries were about each language.

No, what you really want is to show all the different numbers you can
get your hands on, because all of them are likely to have problems and
insights of some type, by the very nature of the task you're taking on.
So you show all the different stats, and then, just for fun, crunch
them up together for those who just want to look at one chart that
'explains everything'.

--
David N. Welton
- http://www.dedasys.com/davidw/

Linux, Open Source Consulting
- http://www.dedasys.com/
 
O

Oliver Wong

Roedy Green said:
.NET is for a few hardware platforms. Java is for a huge range of
platforms. Obviously any server system that gets too successful will
find itself retooling without .NET to either:

1. use a large farm of cheaper servers
2. use bigger servers.
3. use specialised low power servers (ever more important in the
coming years).

Given the perpetual optimism of the human breast, anyone who plans to
succeed big would avoid .NET from the start.

This is unless Mono.NET really takes off, or at least, finds a niche
among *nix hackers/administrators/developers (perhaps not unlike Perl?)

- Oliver
 
T

Timo Stamm

Remon said:
the more languages you've worked with that require a different set of
skills, the more complete you will be as a developer.

One the other hand, it is not unlikely that you will find Java very
boring after learning too many other languages.

So if you /have/ to work with java, maybe you are better off not knowing
the alternatives ;)


Timo
 
K

Kenneth P. Turvey

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This is unless Mono.NET really takes off, or at least, finds a niche
among *nix hackers/administrators/developers (perhaps not unlike Perl?)

I've never understood the point of Mono. The need it fills is already
filled by Java and it will always be playing catchup with the Windows
implementation. .Net wouldn't even exist if Microsoft could have changed
Java into a proprietary language.

- --
Kenneth P. Turvey <[email protected]>

XMPP IM: (e-mail address removed)
Yahoo IM: kpturvey2
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFEOvz4i2ZgbrTULjoRAo9NAJ992S7BfgQsQru8WLSz2LMM60IC7wCgi4ex
2yXdotPbRp745fC4X9wpe/0=
=GKMB
-----END PGP SIGNATURE-----
 
S

Stefan Ram

Roedy Green said:
After exposure to Eiffel, you will be much more careful in
documenting the pre and postconditions of a method, and more
inclined to pepper with asserts.

So you might send a Java programmer to an Eiffel training for
two weeks. One the other hand, you might also send him to
a training »Design by contract in Java« for two weeks. Why
should the Eiffel training be more succesful than the
»Design by contract in Java« training?
 
S

Stefan Ram

Remon van Vliet said:
As a Java developer you'll automatically get quite proficient
in proper OO design,

I wonder how you are supposed to get this proficiency when in
Java neither ints nor blocks are objects? Java is an
object-oriented language insofar as MySQL is a relational
database. (I.e., according to the definitions of the ones who
invented the terms [Kay and Codd, respectively] they are not).
As a practical example, a lot of beginning Java developers
could not give you an answer if you ask them when it's better
to use LinkedList and when it's better to use ArrayList etc.
while the average ANSI C developer can probably give you a
reasonably accurate answer just by looking at the class names,
because they probably had to manually implement linked lists
and other collections at some point.

So, assume you have a bunch of such programmers in your
company and now they are to be send to a two-week training
in order to do something about the deficiency you mentioned.
Which of the following classes do you choose?

- ANSI C programming for Java developers
(Introduction to ANSI C and especially those features
of the languages that a Java programmer will not know)

- The fine print of Java Collections for Java developers
(Treats many details about the collections that might
have been missed on the first view)
I'm sure there are better examples to prove my point

The most recent ANSI C standard is from 1989, AFAIK.
The current standard is ISO/IEC 9899:1999 (E), which also
might be available from INCITS. So »ISO C« nowadays might
be more appropriate a term than »ANSI C«.
Someone that never did anything but Java isnt by default a less
complete developer than someone who knows 10 languages.

Depends on the point of view, what criteria you choose.
Sometimes when a company delievers some kind of standard
business software that is somewhat customized for each client
(adding some fields to forms and SQL-tables), a programmer
with too much creativity and knowledge of other languages
might be less effective, when all this is not required by the
current task. Sometimes the company does now want »complete
programmers«, but just programmers fitting the current tasks.

See also (somewhat contradicting my point, but worth to be
mentioned nonetheless):

http://www.norvig.com/21-days.html

And a final quotation:

A good C hacker will use Lisp when possible.
Rahul Jain
 
S

Stefan Ram

Roedy Green said:
After exposure to Eiffel, you will be much more careful in
documenting the pre and postconditions of a method, and more
inclined to pepper with asserts.

So you might send a Java programmer to an Eiffel training for
two weeks. One the other hand, you might also send him to
a training »Design by contract in Java« for two weeks.
Why should the Eiffel training be more successful than the
»Design by contract in Java« training?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,170
Latest member
Andrew1609
Top