Monday, July 26, 2010

Java NG

Java Next Generation (или Java NG, она же Java ++) - ветвь языков программирования, основанных на использовании JVM. Весьма горячая тема в последнее время. Это гостевой пост от Andrew Fink - что хотелось бы увидеть в new Java:

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

Мне нравятся Clojure и Rhino. Clojure жутко прикольный, а Rhino это JavaScript т.е. никогда не повредит потренировать, остальные либо over-engineering, либо new Perl, либо "только для гиков".

Т.е. я не против! "Пусть цветут все цветы", но реальной замены 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.

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

P.S. От редакции:

- согласны с замечанием про ужос с замыканиями

- весьма консервативно смотрим на сам язык - может вообще его не трогать? Кажется, что проблемы Java лежат в окружении. Реально, многие вещи в веб-программировании быстрее (следовательно - проще) сделать в PHP, например. Именно из-за огромного выбора готового кода. Java традиционно увлекалась именно фрейворками (абстрактными инструментами), нежели более прикладными вещами и, кажется, потеряла в связи с этим некоторый мейнстрим.

No comments: