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

Поділіться у соцмережах:

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

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

Ребрендинг у дії

Повна установка Delphi Prism включає компілятор, інтеграцію з Visual Studio (або Visual Studio Shell), приклади проектів та бібліотеку Mono 2.0

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

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 виявиться неможливою.

Можливості продукту

Діалект 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 – на цей ринок дещо інші погляди.