Harri Pesonen wrote:
> > > http://bugs.sun.com/bugdatabase/view...bug_id=4472509
> >
> > The problem with Sun's RFE system is that there doesn't seem to be a
> > way to vote /against/ things.
>
> Why would anyone want that Java is not improved?
I /certainly/ want Java to be improved. But this proposal isn't an improvement
in my book.
> Java 1.5 focuses on
> "Ease of Development". It does it by taking many things from C#:
A poor place to look, in my not particularly knowledgeably opinion.
There are lots of things that I'd like to see changed; messing around with
syntax to make an easy tasks imperceptibly easier is not on the list.
Just to put my money where my mouth is (iyswim), here are a few of the things
/I'd/ like to see (but don't expect that I ever shall).
* Rules for interfaces relaxed so that a method can satisfy an interface if it
is at least as visible as the interface rather than being required to be
public.
* The built-in type char expanded to 32 bits (not quite as radical a change as
it sounds, since chars are mostly handled internally as 32-bit anyway).
* String refactored to allow physical storage of character-sequence data in
UTF-8, UCS-2, UTF-16, or UTF-32 (and, perhaps, other formats too).
* NoSuchMethodException to be specified to record the values of the parameters
to the method call. (And similarly for assigns to non-existent fields.)
* Find some way of removing the clutter of from mis-designed API left over from
Java's early days.
* Deprecate wait(), and notify[All]() (and, perhaps, even "synchronized") and
replace them with something that doesn't require the brains of a Turing or a
Von Newman to get right. The new APIs in 1.5 are a step in the right
direction here.
* Retrofit arrays with a common superclass(es) other than Object, and make them
act as proper Collections. Allowing array syntax for "real" Collections is
probably a worthwhile bit of sugar.
* Deprecate /anonymous/ inner classes, which I think experience has shown to be
badly obfuscating.
* ...but add proper closures.
* Since they've insisted on cluttering-up the language with so many frivolous
constructs that it's not reasonable to expect ordinary skilled programmers to
be able to do any real meta-programming, there should be support for it at the
language definition level.
* Using fixed-width arithmetic with silent wrap-around /by default/ is an
engineering disaster. Such low-level arithmetic should be /available/ as an
optimisation to advanced programmers who can deal with the implications, but
there's no way it should ever have been the default.
* I'd like to remove generics before they even appear, and instead focus on
trying to /reduce/ the amount of early, static, analysis that the Java compiler
imposes on the JVM semantics.
* I'd /really/ like to get rid of the non-OO mess we currently have with
"constructors" and "static methods", but that's too much even to dream of, I
suppose... If we can't have that then at least allow constructors to inherit.
*** stuff for the JVM rather than Java-the-language ***
* The JVM developers to stop thinking of modifying a class definitions as a
mere
debugging aid, and make it work properly, at full speed, and be non-optional.
* The JVM developers to implement their /own/ spec for re-starting JVM
instances within one process (and ideally allow more than one).
* Add a way to discover all instances of a class at runtime. Should be
reasonably fast too. (NB: /not/ a debugging feature)
* Similarly, add a way to discover all effervescences to an object at runtime.
In short: concentrate on making stuff /simpler/ and more /general/, not on
trying to out-Perl Perl.
-- chris