Delphi Prism: условная кросс-платформенность

28 февраль, 2009 - 10:05Вячеслав Колдовский

Вскоре после того, как подразделение инструментальных средств CodeGear не только выделилось из состава Borland, но и сменило владельца на Embarcadero, анонсы новых продуктов под брендом Delphi посыпались как из рога изобилия. Помимо сугубо маркетинговых наименований вроде Delphi for PHP, которых с Delphi роднит разве что общая идеология RAD в конце прошлого года увидел свет и куда более интересный продукт, Delphi Prism – кросс-платформенная среда разработки на основе диалекта Object Pascal.

Delphi Prism условная кросс-платформенность

В свои лучшие годы компания Borland особо гордилась собственным диалектом языка Object Pascal, впоследствии переименованным в Delphi, который не был ограничен ни промышленными стандартами, ни требованиями какой-либо сторонней компании-разработчика. Продолжительное время Delphi оставался доступным исключительно для платформы Windows, но к началу нового тысячелетия, следуя веяниям моды и запросам пользователей, Borland решилась на создание кросс-платформенной среды разработки, получившей название Kylix. Она должна была предоставить разработчикам на Linux язык программирования, IDE и библиотеку классов, которые максимальным образом были бы схожи с Delphi для Windows. Несмотря на то что лояльные пользователи восприняли эту инициативу с большим энтузиазмом, в целом идея оказалась провальной – не прошло и двух лет коммерческой жизни проекта, как Borland заявила о его закрытии. Доподлинно не известно, что послужило истинной причиной скоропостижной кончины Kylix – то ли неверная оценка потенциального рынка, то ли давление влиятельного конкурента из Редмонда, то ли банальная неспособность создателей обеспечить продукту надлежащее качество, однако с закрытием проекта потеряли многие, а сама Borland (вместе с Delphi) – в наибольшей степени.

Ребрендинг в действии

Delphi Prism условная кросс-платформенность
Полная установка Delphi Prism включает компилятор, интеграцию с Visual Studio (или Visual Studio Shell), примеры проектов и библиотеку Mono 2.0

О том, что в Borland все еще окончательно не отказались от идеи создания на основе Delphi кросс-платформенной среды разработки, слухи ходили очень долго, но только с переходом подразделения CodeGear под патронаж Embarcadero они обрели реальное воплощение. В октябре 2008 г. на конференции PDC 2008 компании Embarcadero и RemObjects объявили о том, что к выходу готовится принципиально новая кросс-платформенная среда разработки Delphi Prism, позволяющая строить приложения на языке Delphi как для .NET Framework для Windows, так и для ее аналога Mono, функционирующего под управлением Linux/Mac OS X. Официальный релиз не заставил себя долго ждать – уже в декабре Delphi Prism стала доступна покупателям как в виде отдельного продукта, так и в составе RAD Studio 2009.

Отметим, что роль компании RemObjects, известной своей инновационной реализацией языка Object Pascal для .NET/Mono, в этом проекте оказалась определяющей – фактически под Delphi Prism скрывается очередная, третья, версия продукта RemObjects Oxygene, объединяющего IDE, основанную на Visual Studio, и кросс-платформенный компилятор языка Object Pascal. Однако Embarcadero выкупила права на Oxygen, и последующие версии этого продукта будут выпускаться уже под ее эгидой. Таким образом, нынешняя Delphi Prism – не что иное, как результат ребрендинга состоявшегося и весьма хорошо себя зарекомендовавшего продукта. В частности, при прямом сравнении Delphi.NET изрядно уступал Oxygen даже в языковых возможностях.

Delphi Prism условная кросс-платформенность
IDE Delphi Prism хорошо знакома разработчикам на Visual Studio, но является совершенно новой для сторонников RAD Studio

С другой стороны, из того, что Delphi Prism – это детище скорее RemObjects, чем Embarcadero, следуют определенные особенности и ограничения. Прежде всего продукт, по сути, является подключаемым модулем и устанавливается либо в качестве расширения для предварительно развернутой на компьютере разработчика Visual Studio 2005/2008, либо вместе с Visual Studio Shell (интеграции с RAD Studio не предусмотрено). Таким образом, хотя Embarcadero обладает собственной мультиязычной IDE, для Delphi Prism используется другая среда, отличающаяся внешним видом, клавиатурными сочетаниями и прочими особенностями, что определенно не обрадует Delphi-разработчиков со стажем. Еще более серьезной проблемой могут оказаться синтаксические отличия языка программирования, диалекта Object Pascal, который разрабатывался компанией RemObjects в рамках проекта Oxygen независимо от Borland/CodeGear. Большинство нюансов имеют «аддитивный» характер (язык от RemObjects синтаксически богаче оригинального Delphi), однако существуют и конфликты – их не слишком много, но достаточно для того, чтобы воспрепятствовать автоматической компиляции одного и того же кода различными компиляторами. В частности, в Delphi Prism методы класса обозначаются ключевым словом method вместо procedure или function, модуль – namespace вместо unit, а конструкторы класса лишены имен.

Соответственно, приобретая Delphi Prism в составе RAD Studio 2009, разработчики должны быть готовы к тому, что получат достаточно независимый и даже относительно «чужеродный» компонент, освоение которого может потребовать дополнительных усилий, а автоматическая перекомпиляция существующих Delphi.NET-проектов под Delphi Prism окажется невозможной.

Возможности продукта

Delphi Prism условная кросс-платформенность
Диалект Object Pascal, используемый в Delphi Prism, несколько отличается от классического Delphi

Что же касается непосредственных возможностей Delphi Prism, то они выглядят довольно заманчиво. Во-первых, сам язык Object Pascal весьма изящно адаптирован для .NET – в этом отношении разработчики из RemObjects продвинулись куда дальше создателей Delphi.NET, обремененных наследием прошлого. Фактически он почти полностью соответствует третьей версии C#, включая поддержку неявной типизации, лямбда-выражений и LINQ. Во-вторых, обеспечивается поддержка актуальной на данный момент версии 3.5 платформы .NET Framework, в том числе разработка для Windows Forms, ASP.NET, WPF и Parallel FX. В-третьих, Delphi Prism получил поддержку некоторых уникальных технологий Embarcadero, в частности, DataSnap – инструменты доступа к данным, используемые при разработке серверов приложений, а также Blackfish SQL – легковесную СУБД. И напоследок, безусловно, стоит упомянуть поддержку Mono (наиболее актуальной на сегодня версии 2.2).

К сожалению, среда разработки доступна исключительно для Windows, кросс-платформенным является только компилятор, сохранивший название Oxygene. Здесь, вероятно, нужно обратить внимание на то, что Kylix, несмотря на неудачу на рынке, все-таки предоставлял полноценную IDE для Linux.

Также к недостаткам следует отнести отсутствие средств рефакторинга кода, что на современном этапе развития средств разработки является серьезным упущением. Документация не входит в поставку – рекомендуется использовать онлайновую версию, хотя она и не отличается особой дружелюбностью. Некоторые возможности среды разработки упрощены по сравнению с Visual Studio (для программирования на C#) – например, имеющийся визуальный генератор классов LINQ to SQL не позволяет получить доступ к сгенерированному исходному коду. А секрет вот в чем: на самом деле применяется стандартный генератор Microsoft для C#, и создаваемый им код (на C#) специально скрывается от программиста.

Заключение

Подводя итоги знакомству с Delphi Prism, отметим, что продукт оставил неоднозначное впечатление. Прежде всего – за счет «чужеродности» в составе RAD Studio: в момент своего появления Kylix был гораздо ближе к традиционной Delphi (на уровне как языка программирования, так и среды разработки), чем Delphi Prism сейчас. С другой стороны, одним из самых существенных недостатков Kylix были проблемы со стабильностью IDE и созданных с ее помощью решений, в Delphi Prism же подобное куда менее вероятно, поскольку это, по сути, – очередная версия проверенного продукта (пусть и под другим названием), уже имеющего немало поклонников.

В любом случае, для того чтобы Delphi Prism не повторил судьбу Kylix, разработчикам из Embarcadero предстоит еще приложить немало усилий. В том виде, в котором Delphi Prism вышел на рынок сейчас, он больше походит на «декларацию о намерениях», чем на серьезный инструмент, способный заинтересовать действующих программистов из мира Delphi. На повестке дня явно стоит вопрос об интеграции Delphi Prism в IDE RAD Studio и формировании некоего универсального языка программирования, как это сделано в Delphi для .NET и Win32. Далее, по-видимому, придется унифицировать средства разработки для .NET на основе Delphi, ведь на текущий момент Embarcadero является владельцем двух совершенно разных продуктов (Delphi.NET и Delphi Prism), предназначенных для создания решений для одной и той же платформы. Подобное дублирование, помимо того, что распыляет ресурсы самой Embarcadero, еще и вносит смуту в ряды клиентов, которые стоят перед неоднозначным выбором и вынуждены лишь догадываться о дальнейших планах самого поставщика. Наконец, если кросс-платформенность Delphi Prism по-настоящему приоритетна для Embarcadero, то следует не ограничиваться лишь компилятором, а позаботиться о предоставлении полноценной IDE под Linux и Mac OS X.

Тем не менее, несмотря на все оговорки, выход Delphi Prism под патронажем Embarcadero следует только приветствовать. Компания демонстрирует приверженность к Delphi как языку программирования и как идеологии быстрой разработки приложений. Шаги, предпринимаемые ею в последнее время, в том числе и приобретение проекта Oxygene у RemObjects, ожидались еще от Borland, но создатель Delphi на них так и не решился. При определенном стечении обстоятельств у Embarcadero есть все шансы перехватить инициативу в области кросс-платформенной разработки приложений для .NET/Mono, ведь у самого принципиального конкурента – Microsoft – на этот рынок несколько иные взгляды.

Сайт автора: koldovsky.com