2010-07-25

Java NG

Сейчас много говорят о новых языках работающих в JVM: Groovy, Scala, Clojure, JavaScript (Rhino), etc.

Мне нравятся Clojure и Rhino, остальные попахивают over-engineering'ом или "только для гиков/держать подальше от production".
Т.е. я не против "пусть цветут все цветы", но реальной замены Java пока нет и не наблюдается (очень серьезный конкурент это C# - активно развивается, но развивается IMHO по принципу "запихнем в язык всё что увидим").

Развивать Java надо (Sun развивал Java медленно, медленнее его разве что Borland с Delphi), но не пихая туда всё подряд, не усложняя язык, а наоборот упрощая.

Мой список пожеланий выглядит так:

1. всё что есть в проекте Coin
2. всё что есть в проекте Guava
3. простые замыкания (а не предлагаемый ужас), например: #{тело метода } или #(аргумент1, арг2, ){ тело }. Пример использования: new Thread(#{log.info("hello!"); }).start();
4. конструкцию let, для тел методов, которая бы сама выводила тип переменной. Пример: let myvar = new ConcurrentHashMap<Integer, Set<MyType>>(10); или final let s = "hello"; далее по коду работать с этими переменными как с обычными типизированными
5. авто свойства: если у класса есть getter getFoo(), то можно обращаться a = obj.foo, а если есть setter setFoo(T value), то obj.foo = v1. Внутри самого класса обращение к foo должно работать с переменной T foo, а this.foo - с getters/setter.
6. (мелочи) массивы implements Iterable и for each работающий по Iterable/Iterator/Enumeration

Это сделало бы язык проще и уменьшило бы количество действительно ненужного кода, не превращая язык в Perl.