Компания Red Hat представила язык программирования Ceylon 1.1.0

Представлен язык программирования Ceylon 1.1.0, развиваемый компанией Red Hat в качестве языка общего назначения, претендующего на роль замены Java. Написанные на языке Ceylon программы и модули могут выполняться в стандартной виртуальной машине Java (JVM) или компилироваться в JavaScript для выполнения в web-браузере или под управлением Node.js. Для разработки приложений предоставляются Ceylon SDK, коллекция модулей и интегрированная среда разработки Ceylon IDE, построенная на основе платформы Eclipse. Код связанных с языком компонентов распространяется под лицензией GPLv2, а код среды разработки под лицензией EPL. Бинарные пакеты можно загрузить в форматах deb и rpm. Лидером разработки является Гэвин Кинг (Gavin King), основатель проектов Hibernate и Seam. Целью создания Ceylon было желание избавить Java от устаревших концепций и подходов, которые мешают дальнейшей эволюции языка и достижению более высокого уровня эффективности. Кроме реализации лучших возможностей Java, в Ceylon также заимствованы некоторые дополнительные конструкции из языков Smalltalk, Python и ML. Поддерживается бесшовная интеграция с другими языками, базирующимися на JVM, например, модули на языке Ceylon можно использовать в программах на Java и наоборот.

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

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

По сравнению с прошлым выпуском внесено более 1400 изменений. Из наиболее заметных улучшений можно отметить:

Оптимизация производительности, в том числе сокращение времени компиляции в среде разработки; Более гладкое взаимодействие с перегрузкой (overloading) и шаблонами (generic) Java; Поддержка из коробки средств для развёртывания Ceylon-модулей в контейнерах OSGi; Расширение возможностей Ceylon SDK, добавление новых базовых модулей платформы ceylon.promise, ceylon.locale и ceylon.logging, существенное улучшение ранее доступных модулей ceylon.language, ceylon.collection, и ceylon.test; Добавление новых возможностей в среду разработки Ceylon IDE, таких как новая система автоформатирвоания кода; Поддержка расширение инструментов командной строки через плагины. Например, представлены плагины для форматирования кода и обеспечения сборки; Подготовлен официальны модуль для интеграции с JVM-платформой Vert.x. Некоторые Особенности Ceylon:

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

© OpenNet