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)

ОМГ, ну сколько можно клепать недоязыков на JVM.

ИМХО, выбрать пару альтернатив Java (например Groovy и Scala), а остальное - в топку.

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

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

Можно представлять что угодно. Тем не менее, в классическом ООП объекты не имеет прямого доступа к полям других и взаимодействуют исключительно через отправку сообщений друг другу (т.е. вызов методов).

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

> Джава предлагает очень элегантные и весьма легкочитаемые конструкции. В отличие от того же питона, например.

Можно хотя бы несколько примеров, пожалуйста? Сойдут для начала и causal evidence.

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

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

Отрывают руки за использовании X в проекте на Y. А проекты на Скале таки есть, хоть и мало.

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

За приравнивание отправки сообщений к вызову методов надо уже бить автором некоторых книжек. Первое было в Smalltalk, второе в C++, и второе сильно уже.

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

> Яву не знаешь, но на ней кодишь?

Яву знаю и на ней программирую уже много лет. А если некоторые личности здесь желают поднять своё ЧСВ за мой счёт, я с ними спорить не собираюсь, у меня есть множество куда более интересных занятий.

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

И в чем концептуальные а не терминологические отличия? За исключением возможно асинхронности.

_________

//wfrr

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

> scala - не хацкель с лиспами.

А мне кажется, что перед тем, как писать что-либо на Скале, надо изучить Хаскель хотя бы на начальном уровне (без стрелок и монад трансформеров). Скала, по-моему, слишком монструозна для изучения функционального программирования.

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

> За приравнивание отправки сообщений к вызову методов надо уже бить автором некоторых книжек.

С точки зрения теории ООП вызов метода — это посылка синхронного сообщения объекту. Я думаю, знатоки пародигм, вроде JFreeM, должны это знать, а для остальных написал пояснение в скобочках.

pitekantrop ★★★
()

ёще один костыль....

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

Ага, особенно в языках со строгой типизацией и определением состава класса во время компиляции. И хочу асинхронные да.

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

>А мне кажется, что перед тем, как писать что-либо на Скале, надо изучить Хаскель хотя бы на начальном уровне (без стрелок и монад трансформеров).

вот и я так думал, открыл Real World Haskell, дошел до стрелочек, иду дальше, на Scala забил, как наркоман прямо.

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

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

_________

//wfrr

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

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

_________

//wfrr

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

> Ага, особенно в языках со строгой типизацией и определением состава класса во время компиляции.

А в чем проблема? См. opDispatch в D.

tailgunner ★★★★★
()

если они так долго будут собирать нвоые кеды , в кубунту-бэкпортс, то потеряют ещё 1 голос. Уже блин чакра релизнулась на 4.7.3 и для сусе наверняка в билдсервисе лежит сборак, а тут фиг.

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

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

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

Если выражаться «по ленински», то говно это а не статическая типизация. Видим у переменной значение равное единице, значит у неё тип байт, а про то что кто-то потом захочет положить туда миллиард, компилятор наверняка знать не может.

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

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

в нашей сираной рашке? какбы пишут что в Лондонах и Парижах на которые моцква постоянно оглядывается уже внедряют скалу: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=830850&ms...

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

> Если выражаться «по ленински», то говно это а не статическая типизация

А ты старайся не выражаться по-ленински - ты отнюдь не Ленин.

Видим у переменной значение равное единице, значит у неё тип байт

Для тебя, может, и значит.

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

>А ты старайся не выражаться по-ленински - ты отнюдь не Ленин.

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

Для тебя, может, и значит.

Для меня значит что неудобства вылезут позднее, но в общем-то по барабану.

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

> Но и отнюдь не отношусь к классу, про который он в таких тонах скаламбурил.

'Надя со свойственной ей прямотой посоветовала своему любимому вытатуировать на заднице слова: «Я сын трудового народа», и предъявлять их обществу в качестве последнего довода' (c)

Да, и посмотри в словаре, что такое «каламбур».

Видим у переменной значение равное единице, значит у неё тип байт

Для тебя, может, и значит.

Для меня значит что неудобства вылезут позднее

А не назовешь язык, в котором 1 считается значением типа «байт»?.

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

> Видим у переменной значение равное единице, значит у неё тип байт, а про то что кто-то потом захочет положить туда миллиард, компилятор наверняка знать не может.

Позорник, вот тебе вопрос на засыпку: какой тип у числового литерала 1 в жабе?

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

>Да, и посмотри в словаре, что такое «каламбур».

Может ты назовёшь цитату, которая тут обыгрывалась?

А не назовешь язык, в котором 1 считается значением типа «байт»?.

Разновидность английского, на котором выплёвывает ошибки компиляции паскалевская иде, а жаба тут чисто для повышения кругозора - с недавних пор сабж освоил «компиляцию» в жабий байткод и скудность типов явы дала о себе знать. Спорить на тему явы мне не интересно, можешь не троллить, я тут просто читаю «жареные новости» ввиду их отсутствия в других свежих темах.

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

> Может ты назовёшь цитату, которая тут обыгрывалась?

«Интеллектуальные силы рабочих и крестьян растут и крепнут в борьбе за свержение буржуазии и ее пособников, интеллигентиков, лакеев капитала, мнящих себя мозгом нации. На деле это не мозг, а говно». Никакого каламбура и близко нет, обычная брань.

Спорить на тему явы мне не интересно

С тобой никто и не собирался спорить на тему Явы.

А не назовешь язык, в котором 1 считается значением типа «байт»?.

Разновидность английского, на котором выплёвывает ошибки компиляции паскалевская иде

Мне кажется, ты нездоров.

tailgunner ★★★★★
()

Опять? Еще один? Продолжайте распыляться.

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

Никакого каламбура и близко нет, обычная брань.

Но как ни странно, там есть крупица истины, как это ни прискорбно.

Разновидность английского, на котором выплёвывает ошибки компиляции паскалевская иде

Мне кажется, ты нездоров.

Попытка оправдать собственное незнание методом перевода стрелок не засчитана. Если быть точным, 1 это ShortInt а 130 это Byte. Машинный разум их так классифицирует, по меньшему из возможных типов.

var
s: string;
begin
s:=130;
end. 
$fpc demo.pp
Error: Incompatible types: got "Byte" expected "ShortString"
:)

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

> Попытка оправдать собственное незнание методом перевода стрелок не засчитана

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

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

>Ты считаешь, что я пытался оправдаться за незнание малоизвестного диалекта Паскаля, невесть зачем приплетенного тобой в разговор о выводе типов? Ты сильно ошибаешься.

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

Napilnik ★★★★★
()

ispolzovali na JAVA proekte horoshaya shtuka

ispolzovali dlya generacii JAva GUI classov. generirovali Modeli ,Views and Controllers. 80% of generated classes rabotali out of the box the other 20% dopilivali cherez subclass.

udobno kogda common issue can be fixed across all classes by fixing generator

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

> Ты хотел пример, ты его получил, в чём претензии?

Я хотел пример языка с выводом типов, а получил Паскаль. Если выражаться по-ленински, это не пример, а говно.

tailgunner ★★★★★
()
Ответ на: ispolzovali na JAVA proekte horoshaya shtuka от anonymous

наглядный пример концепции отдельности мух и котлет, точнее — ее нарушения.

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

>Hello World и во что он компилируется

Очень похоже на конвертирование xsl в html средствами M$.

vada ★★★★★
()

Дауж... Еще один мертворожденный ребенок.

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

У нас в уберконсервативном гигантском инвестиционном банке Scala одобрили официально как «готов к продакшну». Ждем проектов

vertexua ★★★★★
()
Ответ на: ispolzovali na JAVA proekte horoshaya shtuka от anonymous

>udobno kogda common issue can be fixed across all classes by fixing generator

так еще vsl об этом твердил и даже хвастался что написал такой generator

Karapuz ★★★★★
()

>Вот вылечили-бы Ленина от сифилиса вовремя - многое бы могло случится по другому

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

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

>Я хотел пример языка с выводом типов, а получил Паскаль.

То что ты хотел, никому неизвестно, телепаты в отпуске.

Если выражаться по-ленински, это не пример, а говно.

Говно статические типы, которые жёстко не прописаны в исходнике и меняются при смене платформы или по желанию правой пятки компилятора.

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

>> Я хотел пример языка с выводом типов, а получил Паскаль.

То что ты хотел, никому неизвестно

Речь шла о выводе типов, и естественно, что пример ожидался из числа языков с выводом типов. Если ты этого не понял, это только твоя проблема.

Говно статические типы, которые жёстко не прописаны в исходнике и меняются при смене платформы или по желанию правой пятки компилятора.

Поскольку языками с выводом типов ты не пользовался, твое мнение ничего не стоит.

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

>Поскольку языками с выводом типов ты не пользовался, твое мнение ничего не стоит.

Поскольку ничем кроме явы ты не пользовался, твоё мнение ничего не стоит.

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

Это эволюция, придурок. Той же Scala не было бы, если бы не сотни никому не известных, сдохших при рождении язычков.

anonymous
()

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

это - 5!

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

Кстати, да. Скала - не первый язык у Мартина Одерского.

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

Обратно же придурок. Твоей разлюбезной жабки тоже не было бы, если бы не сотни никому не известных языков до нее.

Вот интересно, откуда вы все повылазили? Откуда на ЛОРе столько дебилов?

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