Гэвин Кинг (Gavin King), основатель проектов Hibernate и Seam, раскрыл на конференции QCon некоторые детали, связанные с проектом Ceylon, нацеленным на создание нового промышленного языка программирования и связанного с ним комплекта разработки (SDK), претендующих на роль замены Java. Проект уже два года развивается в компании Red Hat в условиях большой секретности. Информация о языке Ceylon изложена в двух презентациях: "Введение в Ceylon" и "Система типов Ceylon".

Судя по опубликованной информации, язык Ceylon нацелен в первую очередь на создание приложений для бизнеса. При проектировании Ceylon были учтены сильные и слабые стороны языка Java: Ceylon предназначен для выполнения в стандартной виртуальной машине JVM, использует статическую типизацию, поддерживает функции высшего порядка, спроектирован с оглядкой на простоту изучения и лёгкость восприятия кода.

Необходимость создания замены Java связана с тем, что несмотря на популярность языка, его надёжность и наличие огромного количества готовых библиотек классов, в Java накопилось достаточно много устаревших концепций и подходов, которые мешают дальнейшей эволюции языка и достижения того уровня эффективности, который можно наблюдать в таких языках, как Groovy, Python и C#.

В настоящее время уже проделана большая работа по становлению Ceylon: сформирован дизайн языка, ведётся работа по созданию готового к промышленному использованию компилятора и SDK. Тем не менее, до завершения разработки ещё очень далеко, например, не решены некоторые проблемы с организацией модульной структуры и интеграции с существующими Java-проектами и библиотеками. Предполагается, что раскрытие завесы тайны над языком Ceylon связано с тем, что Red Hat пытается найти партнёров для доведения разработки до конца. Как и другие проекты Red Hat, код Ceylon будет доступен в рамках свободной лицензии.

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

Статическая типизация (тип любого значения любого выражения может быть определён без исполнения программы), позволяющая выявлять ошибки на этапе компиляции, а не в процессе исполнения;

Отсутствие специальных типов, всё реализовано в виде объектов;

Именованные и опциональные параметры;

Nullable-типы (кроме значений базового типа, допускается использование состояний NULL);

Отсутствие необходимости явного указания геттеров/сеттеров (getter/setters);

Определение типов для локальных блоков (через ключевое слово "local");

Удобная организация работы с последовательностями (массивами);

Реализация функций высшего порядка, аргументом или возвращаемым результатом в которых выступают другие функции;

Использование для присвоения значений оператора ":=";

Новый синтаксис интерполяции строк;

Новые типы: Natural, Numeric и т.п.

Классы, методы и атрибуты выглядят одинаково;

Использование для определения существующих языковых концепций новых ключевых слов: shared, satisfies, assign, variable, local;

Упрощение уровней public, protected, private access, visibility;

Определение inline-функций в стиле Smalltalk.


2012-02-15 • Просмотров [ 2510 ]