Jump to content

Экстенд

Экстенд
Xtend-логотип
Парадигма Объектно-ориентированный , императивный , функциональный
Разработано Свен Эффтинге, Себастьян Зарнеков
Разработчик печатная лиса
Впервые появился 2011
Стабильная версия
2.25.0 / 2 марта 2021 г .; 3 года назад ( 2021-03-02 ) [1]
Дисциплина набора текста Статический , сильный , предполагаемый
Платформа Виртуальная машина Java
ТЫ Кросс-платформенный
Лицензия Публичная лицензия Eclipse
Веб-сайт затмение .dev /Xтекст /xtend /
Под влиянием
Java , Scala , Groovy , Smalltalk , Xpand

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

Язык Xtend и его IDE разработаны как проект на Eclipse.org. [2] и участвует в ежегодном выпуске Eclipse. Код имеет открытый исходный код под лицензией Eclipse Public License . Тем не менее, язык можно скомпилировать и запустить независимо от платформы Eclipse .

Xtend произошел от Xtext , технологии, используемой для определения языка и редактора. Xtend был впервые выпущен как часть Xtext в версии Eclipse Indigo. [3] в июне 2011 года. С момента выпуска Eclipse Juno [4] (Июнь 2012 г., Xtend версия 2.3) Xtend стал самостоятельным проектом.

Описанный здесь язык Xtend не следует путать со старым языком с таким же названием в Xpand. [5] проект. Первоначально Xtend назывался Xtend2 для лучшего отличия. Букву «2» вскоре убрали для простоты. Благодаря своим шаблонным выражениям Xtend задуман как замена всей технологии Xpand.

Философия

[ редактировать ]

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

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

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

Xtend IDE на базе Eclipse предлагает подсветку синтаксиса, завершение кода, рефакторинг, навигацию и отладку. Он интегрируется с набором инструментов разработки Java Eclipse. [6]

Семантика

[ редактировать ]

Xtend напоминает Java во многом . Вот пример файла Xtend:

package sample

import java.util.List

class Greeter {
  def greetThem(List<String> names) {
    for(name: names) {
      println(name.sayHello)
    }
  }

  def sayHello(String name) {
    'Hello ' + name + '!'
  }
}

Xtend обеспечивает вывод типа , т.е. тип name а типы возвращаемых значений методов можно вывести из контекста. Классы и методы public по умолчанию поля private. Точки с запятой необязательны.

В примере также показан метод sayHello вызывается как метод расширения , т.е. как функция его первого аргумента. Методы расширения также могут предоставляться другими классами или экземплярами.

Вместо использования императивного цикла for можно использовать лямбда-выражение функционального стиля в квадратных скобках и вызывать функцию высшего порядка. forEach в синтаксисе расширения в списке:

def greetThem(List<String> names) {
  names.forEach [ println(sayHello) ]
}

Обратите внимание, что параметр лямбды, если он не указан, называется it, который можно пропустить, например this на Яве. Его тип определяется как строка. Лямбда-выражения также автоматически приводятся к интерфейсам с одним методом, так что их можно передавать, например, как java.lang.Comparable.

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

def sayHello(String name) '''
    Hello «name» !
'''

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

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

  1. ^ «Xtend — Примечания к выпуску» . eclipse.org . Проверено 5 апреля 2021 г.
  2. ^ Свен Эффтинге. «Официальная домашняя страница Xtend» . Eclipse.org . Проверено 14 сентября 2013 г.
  3. ^ «Релиз Eclipse Indigo» . Wiki.eclipse.org. 30 марта 2011 г. Проверено 14 сентября 2013 г.
  4. ^ «Выпуск Eclipse Juno» . Wiki.eclipse.org. 17 марта 2012 г. Проверено 14 сентября 2013 г.
  5. ^ «Xpand» . Wiki.eclipse.org. 04.06.2013 . Проверено 14 сентября 2013 г.
  6. ^ «ДжДТ» . Eclipse.org . Проверено 14 сентября 2013 г.

Библиография

[ редактировать ]
  • Лоренцо Беттини, Реализация предметно-ориентированных языков с помощью Xtext и Xtend - второе издание, Packt Publishing, 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: eb01a55ad2d5ee0a183b3ba1a647b704__1703347920
URL1:https://arc.ask3.ru/arc/aa/eb/04/eb01a55ad2d5ee0a183b3ba1a647b704.html
Заголовок, (Title) документа по адресу, URL1:
Xtend - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)