Гэвин Кинг (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.


Источник: http://www.opennet.ru/opennews/art.shtml?num=30225