Red Hat передаёт язык Ceylon на попечительство организации Eclipse Foundation

Компания Red Hat инициировала процесс передачи управления над разработкой языка программирования Ceylon некоммерческой организации Eclipse Foundation, курирующей развитие платформы для создания интегрированных сред разработки и различных проектов на языке Java. Основной целью передачи проекта является воплощение в жизнь независимой от конкретного производителя модели управления, которая позволит привлечь к разработке новых участников и повысить популярность платформы среди пользователей.

Организация Eclipse Foundation утвердила приём Ceylon в число проектов Eclipse и начала процесс интеграции в инкубаторе. Кроме дистрибутива Ceylon, включающего компиляторы, утилиты, базовые библиотеки и стандартный набор модулей, в руки Eclipse также перейдут SDK, транслятор Java2Ceylon, сервер Ceylon Herd для распространения модулей, интегрированная среда разработки Web IDE, а также плагины для Eclipse IDE и IntelliJ IDE. После перехода под крыло Eclipse Foundation код Ceylon будет распространяться под лицензиями Apache 2.0 и Eclipse Public License 1.0. (ранее, некоторые компоненты поставлялись под AGPL).

Из планов по дальнейшему развитию Ceylon в составе сообщества Eclipse отмечается перевод JVM-бэкенда на ECJ (Eclipse Compiler for Java), завершение реализации средств для обобщённого программирования высшего порядка (higher-order generics), добавление поддержки async/await, обеспечение переносимости с языком TypeScript, реализация в плагине для Eclipse техники отложенной генерации бинарных файлов, интеграция поддержки среды разработки Eclipse Che.

Напомним, что язык Ceylon был создан компанией Red Hat в 2011 году с целью избавить Java от устаревших концепций и подходов, которые мешают дальнейшей эволюции языка и достижению более высокого уровня эффективности. Кроме реализации лучших возможностей Java, в Ceylon были заимствованы некоторые дополнительные конструкции из языков Smalltalk, Python и ML. Написанные на языке Ceylon программы и модули могут выполняться в стандартной виртуальной машине Java (JVM) или компилироваться в JavaScript для выполнения в web-браузере или под управлением Node.js. Поддерживается бесшовная интеграция с другими языками, базирующимися на JVM, например, модули на языке Ceylon можно использовать в программах на Java и наоборот.

Язык использует статическую типизацию и спроектирован с оглядкой на простоту изучения, лёгкость восприятия кода и разработку больших проектов, в которых участвует большое число программистов. Синтаксис Ceylon во многом напоминает Си, Java и C#. При помощи Ceylon значительно проще создавать фреймворки и библиотеки классов, а также естественно описывать древовидные структуры (в частности, формировать пользовательский интерфейс). В язык добавлены элементы, упрощающие написание кода, который можно использовать повторно в других проектах.

Модули на языке Ceylon упаковываются в архивы .car и помещаются в специальные репозитории. В процессе выполнения приложения нужные модули загружаются сразу из внешнего или локального репозитория, не требуя предварительной установки. Язык поддерживает архитектуру модульной «peer-to-peer» загрузки классов, обладающую такими возможностями как учет требований приложения к версиям модулей и поддержку работы сразу с несколькими репозиториями модулей, как локальными, так и внешними.

Некоторые особенности Ceylon:

  • Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;
  • Отсутствие специальных типов, всё реализовано в виде объектов;
  • Именованные и опциональные параметры;
  • Nullable-типы (кроме значений базового типа, допускается использование состояний NULL);
  • Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);
  • Определение типов для локальных блоков (через ключевое слово «local»);
  • Удобная организация работы с последовательностями (массивами);
  • Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;
  • Использование для присвоения первоначальных значений (инициализации переменных) оператора »:=»;
  • Новый синтаксис интерполяции строк;
  • Новые типы: Natural, Numeric и т.п.
  • Классы, методы и атрибуты выглядят одинаково;
  • Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;
  • Упрощение уровней public, protected, private access, visibility;
  • Определение inline-функций в стиле Smalltalk.

© OpenNet