After reading this post about C#, it is very interesting to hear what you consider wrong with Java and what would you like to change? I bet on "call to super|this must be first statement in constructor".
|
closed as not constructive by Mark Trapp Aug 4 '11 at 19:24
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
|
This has been discussed quite heavily in the blogsphere recently with the various Java 7/8 feature announcements and the the debate on backwards incompatible Java. You should pick up Stephen Colebournes's talk at Devoxx (parleys.com) For me?
Much of what I want is coming, it's good to see the JDK moving again. |
|||||||||||||||||
|
|
I second every point of Martijn's answer (especially the full generics support), which leaves less for me:
|
|||||
|
|
There are so many things fundamentally wrong with Java, and the language has moved so slowly, that I think it may be too late to fix. People who care have already moved to newer languages like Groovy, Clojure, and Scala. The most important thing to do now is to improve the JVM to support these languages as efficiently as possible. Here's my list of fundamental Java deficiencies:
|
|||||||||||||||||
|
|
Embrace Lisp. In the same way that Java contains a Javascript engine as part of the standard runtime, which is scriptable with JSR-233, it would be really nice to have a well-integrated Lisp engine in the JRE. |
|||||||||||||||||
|
|
I would make Groovy as fast as Java. Groovy has implemented evrything I wanted I'm Java. |
|||
|
|
|
Java should really have Software Transactional Memory, because it greatly simplifies concurrency issues. After that, it would be really nice to have functional lambdas. |
|||
|
|
|
Java over the years has become a monster of "features" added "because XXX" has it. Generics, built-in web servers, automatic type conversions, and now people want function pointers as well. It used to be a great platform to work on, but ever more it feels like I'm programming using some sort of Frankenstein monster JCRuby#++ rather than Java. Revert all that rubbish and return the language to what it was designed to be. |
|||||||
|
|
For me, it is JVM speed. Now many here will come and say that "Java is slow" is a myth from the old days. Some may pull out benchmarks, that refute any claims about Java being slow. As a developer I am also a user. The tools I use are running on the CLR, the JVM, the AVM2, the V8 or are natively compiled. Of all those tools the ones in Java are the ones that let me wait. The best example is, I have 2 compilers for the same platform, one of which is written in Java and will take longer for an incremental build, than the one written in OCaml will use for a complete build (and compiling here is just parsing, type checking and issuing some opcodes, which are really almost just a representation of the AST). I have very few apps or tools that require much time to launch or tend to become unresponsive. Those that do, are written in Java. Possibly because the JVM spends so much time booting and JITing (?). I think, this is really a pitty, because the JVM has quite a high market penetration and the Java ecosystem is immense, with a lot of tools and languages. But I really just use it, when I have no other choice, which is why I don't consider Java as a preferable platform until I eventually get the UX I want to give my users. |
|||||||||||
|
|
In addition to what everyone has mentioned, can we have smaller function names? for a simple output statement, its not fun to write system.out.println("Hello World") Relatively the code needed for learning Java is much more then that needed for C (hello world, and even other academic programs are much smaller in C than Java) |
|||||||||||
|
|
If I had a change, I want these 4 properties in |
|||||||||
|
