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:
Post a Comment