Eclipse запускает язык JDK


Xtend — это новый язык, предназначенный для разработчиков Java, который компилируется в код Java. Это хорошая идея? Как он вписывается в существующий ландшафт языков программирования?

Как раз в тот момент, когда вы подумали, что никто в здравом уме не запустит еще один громкий язык для добавления в Go, Dart, Kotlin, Ceylon, не говоря уже о более известных новых языках, таких как CoffeeScript, Clojure, Scala и так далее, фонд Eclipse стремится удивить. Xtend-очень странная идея и совсем не то, что вы могли бы ожидать. Это Java-подобный язык, но, согласно рекламе, он предназначен не для замены Java, а для его улучшения. Он предназначен для того, чтобы быть,

Язык, созданный для разработчиков Java

но что это значит?

На первый взгляд кажется, что это Java с некоторыми дополнительными битами. Он компилируется в код Java. Да, вы правильно расслышали — он производит читаемый человеком Java, а не машинный исполняемый байт-код. Предполагается, что это означает, что вы можете использовать свои знания Java, чтобы войти и отредактировать скомпилированный исходный код. Вам не нужно долго и упорно думать, чтобы понять, что это не очень хорошая идея. Машинный код редко легко читается, и его изменение-не самый интересный способ скоротать время. Это говорит о том, что Xtend поставляется с хорошей поддержкой Eclipse. 

Интересной новостью является то, что он был реализован с использованием системы Xtext, инструмента, позволяющего легко создавать доменные языки. В этом свете Xtend-действительно впечатляющая демонстрация того, насколько мощным является Xtext. В качестве рекламы для Xtext он выигрывает мгновенно.

Детали языка указывают на то, что он начинается с Java, с аналогичным синтаксисом и идентичной системой статических типов, и он использует JDK в качестве своей библиотеки — учитывая, что он компилируется в Java, любой другой выбор был бы трудным. Одна большая разница в том, что он делает только классы. Это правильно, никаких интерфейсов, никаких перечислений и никаких типов аннотаций.

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

val word=»Привет»

и

строковое слово val=»Привет»

приемлемы.

Еще одним желанным обновлением Java является автоматизация геттеров и сеттеров. Например, если вы пишете:

person.name

тогда это то же самое, что и

person.getName

и

person.name=»майк»

это то же самое, что

person.setName(«майк»)

Есть несколько других синтаксических вариаций, но как насчет чего-то более семантического, чего-то, что действительно расширяет Java? Xtend имеет коллекцию модных новых функций, некоторые из которых будут добавлены в саму Java в следующей версии. Большие два — это методы закрытия и расширения. Закрытие в этом случае также означает анонимную функцию, а также функцию, захватывающую текущую область. Методы расширения используются для добавления методов во встроенные или другие закрытые классы, и они могут быть полезны.

Другие улучшения включают лучшее и менее подверженное ошибкам выражение переключения; диспетчеризацию методов, основанную на времени выполнения, а не на времени компиляции; тип; и некоторые причудливые средства для создания сложных отформатированных строк с шаблонными выражениями.

Без сомнения, есть и другие особенности Xtend, о которых я не упомянул, но если нет чего-то действительно большого, что скрывается, и я сомневаюсь в этом, вывод должен быть таким же. Использование переводчика для преобразования одного языка в хорошо известный и хорошо поддерживаемый язык имеет свои преимущества. Он также имеет недостатки, и, хотя инструменты для компиляции Xtend в Java выглядят хорошо, вам все равно придется работать на двух языках, если вы хотите воспользоваться преимуществами перевода.

Является ли Xtend лучше, чем Java? Ответ должен быть «да» в том смысле, что он очищает много «шума», все еще присутствующего в Java, и добавляет некоторые приятные функции — в частности, закрытие. Тем не менее, Java развивается, и если вы немного подождете, Java будет иметь закрытие и другие блестящие новые функции.

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

Так что в целом, это хорошая попытка, но нет, спасибо.

Что касается Xtext как способа построения DSL — это действительно выглядит так, как будто заслуживает некоторого исследования.

Дополнительная информация:

Xtend

Xtext

Чтобы получать информацию о новых статьях на I Programmer, подпишитесь на RSS-канал, следуйте за нами в Google+, Twitter или Facebook или подпишитесь на нашу еженедельную рассылку


Добавить комментарий