views:

613

answers:

13

I'm an experienced Java programmer that for the last two years have programmed for necessity in C# and Javascript. Now with this two languages I have used some interesting features like closures and anonymous function (in effect with the c/c++ I had already used pointer functions) and I've appreciated a lot how the code has became clearer and my style more productive. Really also the event management (event delegation pattern) is clearer then that used by Java...

Now, in my opinion, it seems that Java is not so innovative as it was in past...but why???

C# is evolving (with a lot of new features), C++0x is evolving (it will support lambda expression, closures and a lot of new features) and I'm frustrated that after spending a lot of time with Java programming it is decaying without any good explanation and the JDK 7 will have nothing of innovative in the language features (yes it will optimize the GC, the compiler etc) but the language itself will have few important evolutionary changing.

So, how will be the future? How can we still believe in Java? Gosling, where are you???

+3  A: 

You might take a look at this:

Will Sun ever make the step to “Java 3”? [closed]

ivan_ivanovich_ivanoff
+11  A: 

C has not changed much in years, still it remains one of the most popular languages. I don't believe Java has to add syntatic sugar to remain relevant. Believe me Java is here for a long time yet. Far better for Java would be reified generics.

You don't have to believe in Java, if you don't like it choose another language, there are many. Java's survival with hinge on business interest, and whether it can achieve business goals. Not on whether its cool or not.

ng
Agreed, except that I think Java desperately needs full closures to remain relevant. However, if groovy deployed as part of the JVM and JDK I would be programming in that.
Software Monkey
Have to agree with Software Monkey. I don't think any future language could hope to adopt mainstream usage without closures, and I believe the relative gap in power between Java and all other languages will only increase until it catches up with the mainstream.
Juliet
+2  A: 

I have heard Gosling talk on this issue and (I hope I don't mangle his message too much) he said something along the lines of... there's a limit to how much you can and should put in the language, the future of programming lies in the tools that we will use.

I tend to agree with him, a lot of the requested features for java take it away from the principle of OOP, but if you find they work for you then there are other languages that can be deployed to the java platform as well, so your language preference should be able to co-exist with your knowledge of the java stack.

CurtainDog
+5  A: 

I think you're going thorough the classic phase of disillusionment that most java programmers going for trips into C# experience. I regained my confidence in java, simply because even though not much changes with the language, there's so much happening to java as an ecosystem. I would love to have closures and proper method types, but at the end of the day I get by anyway. The pure vibrancy of java still outshines C#, even though not much happens at the language level.

krosenvold
Is there a term for that disillusionment? I never really felt it because my first contact was with .NETv1 but I want to google it.
CurtainDog
I've been going back and forth since the first releases of .net, and it's gotten progressively worse with each fancy new feature that's been added to C#. I've discussed this with others in the same situation, but AFAIK there's no special term for it.
krosenvold
First disillusionment, then conformism.
Juliano
I hardly think the stuff I'm doing in java is conformant; there's so many different levels at which beauty can be expressed. At the micro-syntactical level java doesn't win any prizes. You can still make beautiful software.
krosenvold
+3  A: 

I think at least some of the innovation goes to other script-like languages that also run on the same JVM, then you have Java as the back-bone, and other cool new features in various languages to make all the bells and whistles.

Also a language can't really make a mark if it's constantly changing - how many drastic changes and how often were made on C and C++ ?

A mature language is also a stable one.

Liran Orevi
+1  A: 

The actual language should be almost frozen as this allows progress to be available to older versions of Java too. We have customers who are on Java 1.4 (which is supported from the vendor). By putting progress and development in the libraries they are available to these scenarios too.

Thorbjørn Ravn Andersen
+5  A: 

If you want the toolset of Java the platform without the limitations of Java the language, you should definitely be taking a look at some of the next-generation JVM languages. Groovy, Scala, and Clojure are gaining momentum in many sectors (for example, Twitter is written in Scala).

John Feminella
+3  A: 

Have a look at the Java 7 proposals, and in particular the Project coin work (the language changes). The latter incorporates such things as better collection initialisation, type inference for generics etc.

Of course it's important to consider the platform Java as well as the language Java. More progress is being made with languages like Scala / Groovy / Clojure and (of course) these can leverage off the available Java libraries.

Brian Agnew
+3  A: 

I am probably not half as good as some of the programmers who have let their comments, but with my current level of intelligence this is what I think -

If a language makes programming easier / expressive / more concise, then is it not a good thing? Is evolution of languages not a good thing?

If C, C++ are excellent languages because they have been used since decades then why did Java became so popular? I guess thats because Java helped in getting rid of some of the annoying problems and reduced the maintenance costs. How many large scale applications are now written in C++ and how many in Java?

I doubt whether is argument of not changing something is better than changing something for a good reason.

Puneet
I don't really buy the argument that Java was just so awesome that it eventually took over the world. OCaml came out right around the same time as Java, and if you compare OCaml of 1996 with its closures, fast-as-C runtime, type inference, generic everything, classes, functors, and virtually equivalent base class library, you have to ask yourself: why did a weak language like Java take over the world when powerful OCaml remained virtually unheard of? Answer: $$$$$. Java was backed by Sun, OCaml was backed by a small research group in France. The end result was predictable.
Juliet
+2  A: 

Java does seem to have stood still for some time, but there's been a lot of innovation in other languages that run on the JVM, such as Scala and Clojure and I suspect that they are where the future lies. It's not the Java language that's important, it's the virtual machine...

Having said this, there's a lot to be said for a language that isn't a moving target. Much as I love C# it seems that there's a new version every year or so. Although Java has added some features from C# (such as annotations) it's good that it hasn't got into a language "arms race" with C#

Sean
A: 

Java was never "innovative". It began as a crippled, "programmer-friendly" version of C++, and then started to slowly reintroduce missing features which have been existing in other programming languages for a looong time. Only that those decades-old "novelties" were mangled in order to make them fit into the limitations of the JVM.

But maybe I misunderstand your notion of "innovative".

zvrba
Java does one thing which very few other programmings languages do well, namely handle execution of untrusted code. You do not see buffer overruns or stack manipulation tricks in Java Byte Code. THAT is what Java was designed for - security - and that single design desicion has eventually influenced everything else.
Thorbjørn Ravn Andersen
@zvrba I would understand if were are lisp programmer, but c++... seriously?
CurtainDog
+1  A: 

Think Cobol!

In the IBM world, Java _IS_ the new Cobol... Applications live eternally :)
Thorbjørn Ravn Andersen
A: 

Java is still the #1 language at this time :-)

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

silmx