Компания Red Hat представила язык программирования Ceylon, призванный заменить Java
Гэвин Кинг (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.
© OpenNet