LINUX.ORG.RU

Eclipse Foundation создал вспомогательный язык для программистов на Java

 , , , xtend


0

2

Eclipse Foundation выпустил новый язык программрования Xtend, созданный специально для разработчиков на Java, работающий поверх JVM.

Как заявляют разработчики, новый язык не имеет цель полностью заменить Java во всех областях её применения, а лишь будет очень удобной альтернативой для использования там, где Java слишком многословна и не очень удобна в написании.

Главные особенности Xtend:

  • генерация понятного листинга на Java;
  • работа с использованием инструментов Eclipse IDE с полной поддержкой её функциональности;
  • Java-подобный синтаксис;
  • статическая типизация;
  • использование библиотек JDK;
  • работа только с классами (интерфейсы, аннотации и перечисления описываются так же, как в Java).

Зачем использовать Xtend, если он не реализует альтернативы для всего? Во-первых, он и не пытается. Это не самостоятельный язык, а вспомогательный. Во-вторых, он избавляет программиста от многословности Java, позволяя создавать те же языковые конструкции, но с помощью более лаконичного синтаксиса, код на Xtend более удобен для чтения и понимания:

  • код избавляется от избыточных указаний типов объектов (хотя если вам удобнее везде писать типы — это ваше право);
  • новый продуманный синтаксис акцессоров;
  • опциональность скобок для вызова методов и точек с запятой в конце строк.

Описанная «чистка» кода может быть воспринята двояко, но есть ещё третий пункт в списке достоинств — дополнительные языковые конструкции и функциональность, однажды воспользовавшись которыми вы уже не сможете жить без них в дальнейшем:

  • замыкания, которые всегда были так необходимы в Java;
  • переработанная и элегантная реализация switch, от которой не болит голова при перехвате исключений и кастинге типов;
  • поддержка шаблонов и многострочности для строк;
  • возможность добавления новых расширенных методов к уже существующим объектам без вмешательства в их структуру (поэтому язык и называется Xtend — «расширять»);
  • перезагрузка операторов;
  • множественный вызов виртуальных функций для семейств классов с помощью ключевого слова dispatch.

Для того, чтобы начать использовать Xtend прямо сейчас, нужно просто установить свежую версию IDE Eclipse и добавить Xtend SDK через менеджер дополнений (ссылка на релиз).

Документация: онлайн, PDF.

>>> Страница проекта

★★★★★

Проверено: Shaman007 ()
Последнее исправление: adriano32 (всего исправлений: 2)

Ответ на: комментарий от yyk

Ну только шаблоны, и то особо не щупал, ибо в репах суси немае, а вот каракатицы из анонимных классов там все еще будут.

_________

//wfrr

anonymous
()

Все последнее время пилят свою замену Java. Но не книг, ни уроков и опытных разработчиков у этих языков не наблюдается. Вывод - оно не будет особо популярно.

lucentcode ★★★★★
()
Ответ на: комментарий от X-Pilot

А я уж думал про Kotlin забыли :)

На котлине можно писать хотя бы из патриотизма, а эта вещь как-то совсем..., ну вы поняли.

FENix
()
Ответ на: комментарий от JFreeM

>>код избавляется от избыточных указаний типов объектов

назад в java 1.4.2?


Где ты видел type inference в 1.4.2?

замыкания, которые всегда были так необходимы в Java;

нахер они не были нужны отродясь. Анонимные иннер классы всегда отлично с этим справлялись.


Здоровые ноги не нужны отродясь. Костыли всегда отлично с этим справлялись.

pitekantrop ★★★
()
Ответ на: комментарий от pitekantrop

>Костыли всегда отлично с этим справлялись.

емнип лямбды в жабке будут через эти самые костыли.

_________

//wfrr

anonymous
()
Ответ на: комментарий от lucentcode

> Но не книг, ни уроков и опытных разработчиков у этих языков не наблюдается.

Покажи мне хоть одного хорошего Java-разработчика, который до сих пор не освоил Scala. Книг тоже вагон.

pitekantrop ★★★
()
Ответ на: комментарий от pitekantrop

ой не скажи, это как с генериками с виду побарабану как реализовано, а потом вылезает куча «особенностей» (type erasure например), так шо хочется закопать гения который это придумал.

_________

//wfrr

anonymous
()

Больше костылей, хороших и разных?

Obey-Kun ★★★★★
()
Ответ на: комментарий от pitekantrop

>Где ты видел type inference в 1.4.2?
значит, корявый перевод. Кстати, type inference в джаве тоже нафиг не нужен. Строгая статическая типизация - наше все.

Здоровые ноги не нужны отродясь. Костыли всегда отлично с этим справлялись.

с точки зрения обьектно-ориентированной парадигмы, как раз замыкания являются костылем.

Я реально не понимаю, нахрена в отличную обьекто-ориентированную джаву вводить элементы чуждых парадигм - из функциональщины что-то прут. Ну хотите вы писать в функциональном стиле - пишите, ради бога, только при чем тут джава?

JFreeM ★★★☆
()
Ответ на: комментарий от tailgunner

>Вложенные классы поддерживаются в языке программирования Java, начиная с версии 1.1,

Неужели вы застали те времена? Я лично нет.

JFreeM ★★★☆
()
Ответ на: комментарий от anonymous

> ой не скажи, это как с генериками с виду побарабану как реализовано, а потом вылезает куча «особенностей» (type erasure например), так шо хочется закопать гения который это придумал.

Придумал Одерский. Почему type erasure, он объяснял — из-за требования совместимости с предыдущими версиями. Так что хочется закопать не его, а Гослинга с сотоварищи.

pitekantrop ★★★
()
Ответ на: комментарий от pitekantrop

>требования совместимости с предыдущими версиями

Это я знаю, а вот кто требовал совместимости, врядли гослинг, скорее всего менеджмент.

_________

//wfrr

anonymous
()
Ответ на: комментарий от JFreeM

> Кстати, type inference в джаве тоже нафиг не нужен. Строгая статическая типизация - наше все.

Ппц у тебя каша в голове. Одно другому не мешает, а даже очень наоборот.

с точки зрения обьектно-ориентированной парадигмы, как раз замыкания являются костылем.

Ещё один знаток ООП парадигмы с 3-мя классами ЦПШ.

Костылём чего в ООП являются замыкания? Если ты думаешь, что анонимных классов, то могу тебя обрадовать: концепция анонимных классов является куда более чужеродной, т.к. нарушает основные принципы ООП.

pitekantrop ★★★
()
Ответ на: комментарий от anonymous

> Это я знаю, а вот кто требовал совместимости, врядли гослинг, скорее всего менеджмент.

Гослинг херни наворотил, с которой потом совместимость пришлось делать.

pitekantrop ★★★
()
Ответ на: комментарий от pitekantrop

>Ппц у тебя каша в голове. Одно другому не мешает, а даже очень наоборот.
Ага, то есть определение типа переменной при компиляции по ее значению отлично укладывается в понятие статической типизации. http://en.wikipedia.org/wiki/Type_inference читать до просветления.

Ещё один знаток ООП парадигмы с 3-мя классами ЦПШ.

та конечно, куда мне до вас :D

Костылём чего в ООП являются замыкания?

замыкание - работа над данными. ООП - работа над обьектами, моделирование обьектов и процессов. Теперь дошло?

концепция анонимных классов является куда более чужеродной, т.к. нарушает основные принципы ООП.

А ну-ка, ну-ка расскажите нам, каким это образов inner классы нарушают принципы ООП? Вот вам для справки прнципы ООП, если вы их не знаете: http://en.wikipedia.org/wiki/Object-oriented_programming#Fundamental_features...

JFreeM ★★★☆
()
Ответ на: комментарий от pitekantrop

>Гослинг херни наворотил, с которой потом совместимость пришлось делать.
вероятно господин анонимус является автором гораздо более популярного и широкоиспользуемого языка. Вам корона не жмет?

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

> Неужели вы застали те времена? Я лично нет.

Свои первые программы на жабе писал на JDK 1.0.2. Тогда ещё в жабьем GUI для обработки событий нужно было наследоваться от компонента и переопределять handleEvent. Точь в точь как в Turbo Vision.

pitekantrop ★★★
()
Ответ на: комментарий от JFreeM

> Ага, то есть определение типа переменной при компиляции по ее значению отлично укладывается в понятие статической типизации. en.wikipedia.org/wiki/Type_inference читать до просветления.

Чего ты мне ссылки даёшь, смысл которых не понимаешь? То, что *существуют* ЯП со строгой статической типизацией *и* выводом типов, для тебя не аргумент?

Костылём чего в ООП являются замыкания?

замыкание - работа над данными. ООП - работа над обьектами, моделирование обьектов и процессов. Теперь дошло?

Костыль — неполноценная замена чего-либо. Теперь дошло?

А ну-ка, ну-ка расскажите нам, каким это образов inner классы нарушают принципы ООП?

Нарушают принципы инкапсуляции данных и взаимодействия через обмен сообщениями, очевидно же.

pitekantrop ★★★
()

Наконец-то новый язык без жирного рантайма, будет на чем писать под андроид кроме голой джавы.

anonymous
()

Это у кого это болит голова от switch-ей? У Eclipse Foundation? А от собственного говноподелия у Вас голова не болит?

FeyFre ★★★★
()

Процитирую Фредди Меркюри: «Biiiiicycle! Biiiiicycle!»

burjui
()

> Java-подобный синтаксиc

более лаконичного синтаксиса

новый продуманный синтаксис

не распарсил

Nxx ★★★★★
()
Ответ на: комментарий от Nxx

>не распарсил

«СИНТАКСИС (от греч. 'строй, порядок'), в традиционном понимании совокупность грамматических правил языка, относящихся к построению единиц, более протяженных, чем слово: словосочетанию и предложению»

KRoN73 ★★★★★
()
Ответ на: комментарий от pitekantrop

>То, что *существуют* ЯП со строгой статической типизацией *и* выводом типов, для тебя не аргумент?
это не аргумент чтобы тянуть в джаву всякое г-но. К счастью, это никогда не попадет в JSR

JFreeM ★★★☆
()
Ответ на: комментарий от FENix

>На котлине можно писать хотя бы из патриотизма

Настоящие патриоты пишут только на «1С»!

X-Pilot ★★★★★
()
Ответ на: комментарий от JFreeM

>> Вложенные классы поддерживаются в языке программирования Java, начиная с версии 1.1,

Неужели вы застали те времена?

По сути, я в основном их и застал (последний раз писал на Яве в 2000-м). И анонимные вложенные классы справляются с работой отнюдь не «отлично».

tailgunner ★★★★★
()

Java RIP

Вот так вот. Жаба показала свою перегруженность и несостоятельность - для её спасения костыль сделали.

Quasar ★★★★★
()
Ответ на: комментарий от JFreeM

> то есть определение типа переменной при компиляции по ее значению отлично укладывается в понятие статической типизации.

Именно так. Все типы известны на этапе компиляции, это и есть статическая типизация.

замыкание - работа над данными. ООП - работа над обьектами

Замыкание тоже работает над объектами.

Теперь дошло?

До меня - нет.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Именно так. Все типы известны на этапе компиляции, это и есть статическая типизация.
Окей, погуглил, признаю, ошибался.

JFreeM ★★★☆
()
Ответ на: комментарий от tailgunner

>По сути, я в основном их и застал (последний раз писал на Яве в 2000-м)
ага, теперь я понимаю кто громче всех на ЛОРе кричит про тормознутость явы - люди, которые с ней последний раз работали в 2000 году. Это обьясняет отсутствие у вас актуальных данных о мощи и производительности языка и платформы.

JFreeM ★★★☆
()
Ответ на: комментарий от pitekantrop

>инкапсуляции данных
доступ к приватным членам из иннер класса != нарушение инкапсуляции. Ну представьте себе, что иннер класс - это просто сгруппированные методы внешнего класса.

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

> теперь я понимаю кто громче всех на ЛОРе кричит про тормознутость явы

Ы? Я не ору про тормознутость Явы, и уже лет 5 являюсь довольным пользователем Eclipse (хотя я и считаю, что Eclipse был бы быстрее, если бы был на Си++ %)).

- люди, которые с ней последний раз работали в 2000 году.

У меня она и тогда не тормозила (хотя MS JVM заруливала Sun JVM в минуса).

Это обьясняет отсутствие у вас актуальных данных о мощи и производительности языка и платформы.

Отсуствие у меня актуальных данных о мощи Явы объясняется тем, что они мне просто не нужны.

tailgunner ★★★★★
()
Ответ на: комментарий от Komintern

Да вполне прилично. Всяко быстрее будет, чем если то же самое через «+» конкатенировать.

KRoN73 ★★★★★
()
Ответ на: комментарий от ovk48

Скала компилируется в байткод, а екстенд — в жаболистинг.

stevejobs ★★★★☆
()
Ответ на: комментарий от anonymous

а потом вылезает куча «особенностей» (type erasure например)

кое-кто этими «особенностями» даже специально пользуется ;)

stevejobs ★★★★☆
()
Ответ на: комментарий от pitekantrop

Покажи мне хоть одного хорошего Java-разработчика, который до сих пор не освоил Scala. Книг тоже вагон.

за использование Scala в реальной жизни — отрывают руки, ноги и прочие конечности. Так что им никто не пользуется.

stevejobs ★★★★☆
()
Ответ на: комментарий от JFreeM

Неужели вы застали те времена? Я лично нет.

хочешь машину времени — запрогай хэлловорлд для Блэкберри. Не совсем 1.1, но радости огребешь полные штаны :)

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

> за использование Scala в реальной жизни — отрывают руки, ноги и прочие конечности.

Бояться, чтоб разрабы умными не стали и не убежали кодить на лиспе?

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

> Бояться, чтоб разрабы умными не стали и не убежали кодить на лиспе?

боятся что если придется менять команду программистов (например, менять дорогой elaboration/development team на более дешевый support team), не найдут дешевых программистов, могущих справиться и с тем, и с тем, и уж тем более с их объединением.

stevejobs ★★★★☆
()
Ответ на: комментарий от JFreeM

А видеоконвертера на жабке так по сию пору никто и не написал... Такая вот она традиционно производительная, ммда.

A-234 ★★★★★
()
Ответ на: комментарий от stevejobs

Натуральный фашизм. С таким подходом на Scala и новые проекты не будут начинать. Java мир настолько замкнут на Java? Кому тогда вообще уперлись все эти Clojure и прочие Kawa, если все равно придет «более дешевый support team» кроме жабы ни на чем не кодящий?

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

новые проекты на скале, где скала действительно вперлась (например, веб-гуй) — расово-верно. Но всё равно придется убеждать, убеждать, убеждать.

у заказчиков критерий очень простой. Открывается интернет и ищется количество вакансий и резюме по java и scala. Тыкается в соотношение количества тех и тех. После чего задается добивающий вопрос: «ну и кто о вашей скале вообще знает? что это за очередная академическая поделка?».

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

> у заказчиков критерий очень простой. Открывается интернет и ищется количество вакансий и резюме по java и scala.

Я это знаю, но чай жаба - не хацкель с лиспами. За ее плечами вся жабская инфраструктура, либы и даже синтаксис привычный. Scala по своей сути = продвинутая Java. Откуда тогда столько трусости перед более выразительным языком с привычной парадигмой, да еще и с Java inside? Не иначе как фашизм.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

>С таким подходом на Scala и новые проекты не будут начинать. Java мир настолько замкнут на Java? Кому тогда вообще уперлись все эти Clojure и прочие Kawa, если все равно придет «более дешевый support team» кроме жабы ни на чем не кодящий?

Первые тракторы и станки тоже были неоправданно дорогими - толпа босяков с мотыгами была дешевле (а где-то и до сих пор дешевле). Вот когда в какой-то сфере толпы простых босяков будет недостаточно - вспомнят и про скалу и про всё остальное.

yyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.