Наталия Елманова

Опытные разработчики помнят, какую бурю восторгов вызвало появление первой, еще 16-разрядной, версии Borland Delphi десять лет назад. В те времена о простом и надежном средстве разработки, с визуальным дизайнером форм и полноценным компилятором, поддерживающим работу с базами данных большинства ведущих производителей и не требующим ни длительной компиляции, ни написания сотни строк кода для открытия единственного окна, мечтали многие. Выбор инструментов для создания Windows-приложений в середине 90-х был невелик - ранние версии Visual Basic, позволявшие рисовать формы и создавать приложения, внедрение которых превращалось в сплошную головную боль, да несколько средств разработки, основанных на разных компиляторах C++, - неудачное кодирование с их помощью обрушивало ранние версии Windows еще до того, как разработчик успевал понять, что же произошло. А уж о поддержке баз данных не стоит и вспоминать - ничего лучше решений, созданных с помощью великолепного по тем временам (и ныне почти забытого) компилятора Clipper для DOS, в те времена, пожалуй, не было. Да, нехватка средств разработки для относительно новой платформы - явление вполне обычное, но как объяснить это заказчикам, которые, обзаведяcь Windows, тут же начинали требовать приложения, функционирующие именно на этой платформе?

Оглядываясь на события тех лет, я с уверенностью могу сказать: появление первой версии Delphi десять лет назад было более чем своевременным. Идеи, лежащие в основе этого продукта, равно как и качество их реализации, были таковы, что у Delphi практически не оказалось конкурентов. Зато у этого продукта моментально появилось множество пользователей, и до сих пор Delphi остается одним из самых популярных средств разработки приложений в нашей стране, несмотря на то, что многие идеи, впервые реализованные в этом продукте, сейчас вовсю используются и другими производителями. Именно этот продукт определил основные направления развития средств разработки для Windows и других платформ с графическим пользовательским интерфейсом. Позже начали говорить о том, что механизм доступа к данным, использовавшийся в ранних версиях Delphi, был не слишком удачен, справочная система не идеальна, а Delphi 8 вроде бы и вообще страшно использовать… Но это было уже потом.

Десять лет на рынке средств разработки- срок почти рекордный. Технологии развиваются быстро, инновации нужно своевременно начинать поддерживать и при этом сохранять совместимость новых версий продуктов с кодом, унаследованным от предыдущих версий. В таких условиях соблазн прекратить выпуск инструмента-долгожителя и создать принципиально новый продукт, не обремененный обязательствами по отношению к унаследованному коду, очень велик. К чести компании Borland, пока она этому соблазну не поддается, хотя после выпуска в конце 2003 г. восьмой версии Delphi, предназначенной только для создания .NET-приложений и не поддерживавшей даже технологию ADO, такое вполне можно было заподозрить.

Дальнейшее направление развития Delphi стало более или менее очевидно после появления очередной версии этого продукта - Delphi 2005, предназначенной для создания приложений для двух платформ - Windows и .NET. Данный продукт обладает возможностями, о которых пользователи прежних версий могли только мечтать. В этой статье мы и рассмотрим основные особенности Delphi 2005.

Платформы

Несмотря на активное продвижение корпорацией Microsoft платформы .NET и наличие у этой платформы немалых преимуществ, значительная (если не наибольшая) часть разрабатываемых приложений по-прежнему создается для платформы Win32. Причина подобного консерватизма среди разработчиков очевидна - пока не началось массовое применение в корпоративном секторе ОС для рабочих станций, в состав которых входит .NET Framework, .NET-приложения будут проигрывать приложениям для Win32 в стоимости внедрения и сопровождения. Вот выйдет ОС, называемая сейчас Windows Longhorn, пройдет еще пара-тройка лет, и, возможно, соотношение числа приложений, разрабатываемых под указанные платформы, радикально изменится. Но это произойдет не сейчас и не мгновенно, и планировать, что все будут создавать только .NET-приложения, пока еще рано.

Итак, Delphi 2005 предоставляет возможность создавать приложения и для .NET Framework, и для платформы Win32. При этом платформа .NET поддерживается как для языка Delphi, библиотек VCL.NET, Windows Forms, Web Forms, так и для языка C# ( приложения Windows Forms и Web Forms) - средство разработки Borland C#Builder теперь не выпускается как отдельный продукт, а входит составной частью в Delphi 2005. Фактически Delphi 2005 объединяет комплекс средств, содержавшихся в Delphi 7, Delphi 8 и C#Builder, а также включает ряд дополнительных инструментов, речь о которых пойдет чуть ниже.

Среда разработки

Приложения для обеих платформ можно создавать внутри единой среды разработки. При создании VCL-приложений для Win32 и .NET разработчики могут использовать "классический" вариант размещения инструментов среды с "плавающим" дизайнером форм и модулей данных наравне с новой "многостраничной" организацией среды разработки, знакомой многим по таким продуктам, как Delphi 8, JBuilder и Visual Studio .NET (рис. 1).

Fig.1
Рис. 1. Среда разработки Delphi 2005.

Чтобы упростить создание наиболее часто встречающихся типов приложений, в среде Delphi, начиная с первой версии, всегда присутствовало большое количество так называемых мастеров, генерирующих код и формы. По мере добавления поддержки все новых технологий число этих мастеров расширялось - за десять лет появились средства создания элементов управления ActiveX и других типов COM-приложений, поддержки COM+, создания Web-приложений и Web-сервисов, распределенных приложений. В Delphi 2005 к ним добавились инструменты для импорта компонентов .NET в проекты, предназначенные для платформы Win32. Отметим также, что приложения, создаваемые с использованием VCL.NET, можно создавать и с помощью компонентов Windows Forms, для чего в среде Delphi также предусмотрен специальный мастер. Претерпели некоторые изменения средства импорта в проекты описаний объектов и событий COM+, создания удаленных модулей данных, библиотек типов, элементов управления ActiveX.

Помимо инструментов собственно создания форм и кода приложений, среда разработки Delphi 2005 содержит встроенную клиентскую часть средства конфигурационного управления для коллективной работы StarTeam, позволяющего работать и с различными версиями файлов, и с запросами на изменения (change requests, включая отчеты об ошибках), и с требованиями и задачами (tasks). Кроме того, пользователи Delphi 2005 Enterprise и Architect получают в составе продукта полнофункциональную редакцию StarTeam Standard.

Из иных полезных инструментов отметим средства моделирования приложений, рефакторинга, инструменты для проведения блочного тестирования на основе библиотеки классов DUnit (для Win32) и NUnit (.NET), а также многие другие инструменты, повышающие эффективность создания приложений.

Отметим также изменения в механизме вывода интерактивной справки - в Delphi 2005 она появляется прямо в редакторе кода при наборе имени класса. При желании авторы кода могут создавать такую справку сами - достаточно внести в код комментарии, начинающиеся с "///". В дальнейшем компилятор сохраняет такие комментарии в отдельном XML-файле, который используется для генерации интерактивной справки.

Fig.2
Рис. 2. Интерактивная справка, появляющаяся в редакторе кода.

Из иных полезных мелочей отметим средства размещения компонентов на форме путем перетаскивания мышью (они поддерживаются для обеих платформ); несколько новых визуальных компонентов типа TButtonGroup и TCategoryButtons; изменения во внешнем виде и в функциональности некоторых окон среды разработки, например, инспектора объектов, панели инструментов, менеджера проектов.

Языки программирования и компиляторы

Как было сказано выше, Delphi 2005 позволяет создавать приложения и для .NET Framework, и для платформы Win32; при этом создание .NET-приложений поддерживается для языков Delphi и C#. Соответственно в состав продукта входят три компилятора - Delphi для платформы Win32 и Delphi и C# для платформы .NET.

Из изменений в языке Delphi отметим появление синтаксической конструкции for..in..do, аналогичной конcтрукции for each, известной пользователям Visual Basic, например:

var
 StringSet: TStrings;
 St: string;
….
for St in StringSet do
 Memo1.Lines.Add(St);

Помимо этого, компилятор Delphi 2005 поддерживает файлы в кодировках Unicode и UTF-8 и позволяет применять символы Unicode в идентификаторах переменных и импортировать их из сборок .NET. Данная особенность в некоторых случаях упрощает работу с базами данных, создатели которых позволили себе в свое время именовать по-русски таблицы и поля, а также позволяет, если это для чего-то понадобится, именовать по-русски и переменные.

Отладка и рефакторинг

Из средств, повышающих продуктивность разработки, следует особо отметить инструменты отладки и рефакторинга (автоматического преобразования кода при внесении изменений в имена и параметры методов, имена переменных и классов, архитектуру построения кода).

В Delphi 2005 отлаживать код для обеих платформ можно одновременно, поскольку отлаживаемый код .NET существует внутри обычного процесса Windows. Кроме того, можно редактировать код прямо в процессе отладки (этого всегда не хватало многим пользователям более ранних версий Delphi) и регистрировать в среде разработки несколько отладчиков.

О средствах рефакторинга, предоставляемых новым продуктом, также давно мечтают многие разработчики. Вот лишь один пример: если нужно переименовать переменную, класс, метод, то достаточно выделить фрагмент кода и в любом месте выделенного фрагмента заменить соответствующий код. Одновременно с этим во всем выделенном фрагменте произойдет соответствующее переименование всех ссылок (рис. 3).

Fig.3a
Fig.3b
Рис. 3. Переименование переменной средствами рефакторинга: вверху код до преобразования; внизу - после преобразования.

Другой достойный особого внимания механизм рефакторинга в Delphi 2005 - извлечение методов. Этот механизм позволяет генерировать новые методы на основе существующих, автоматически создавать параметры методов, генерировать локальные переменные, хранить историю изменений методов.

Приложения ASP.NET

В Delphi 2005 по сравнению с Delphi 8 определенные изменения претерпели средства создания приложений ASP.NET, в частности, инструменты редактирования кода и HTML-тегов, средства завершения кода для каскадных таблиц стилей и инструменты форматирования кода (рис. 4).

Fig.4
Рис. 4. Приложение ASP.NET в Delphi 2005.

Одно из нововведений в средствах поддержки ASP.NET - мастер развертывания приложений ASP.NET Deployment manager wizard, упрощающий развертывание и внедрение приложений данного типа.

Поддержка баз данных

Пользователи Delphi 5, 6 и 7, применявшие для доступа к данным универсальный механизм доступа ADO (ActiveX Data Objects), были разочарованы фактом полного отсутствия в Delphi 8 поддержки этой технологии, равно как и фактом отсутствия средств переноса существующих ADO-приложений для платформы Win32 на Microsoft .NET (напомню, что для пользователей Visual Basic 6 корпорация Microsoft предоставила неплохие средства переноса существующего ADO-кода на новую платформу). В тот момент казалось, что перенести на новую платформу унаследованные проекты уже никогда не удастся, и многим архитекторам и руководителям проектов приходилось выслушивать нарекания от заказчиков по поводу выбора технологии ADO для приложений, которые могут потребовать обновления.

К чести Borland, настоятельные требования пользователей ее продукта были учтены - поддержка ADO в Delphi 2005 присутствует не только для приложений Win32, но и для приложений Microsoft .NET. В Delphi 2005 пользователям Delphi 7 предоставлена возможность перенести в .NET приложения, написанные на Delphi версий 5-7 с помощью компонентов dbGo (ранее они носили название ADO Express). Правда, перенесенные таким образом приложения будут использовать не ADO.NET, а именно ADO (c неуправляемым кодом и неуправляемыми OLEDB-провайдерами), а также средства .NET для работы с COM-объектами - COM Interop. Но в любом случае это намного лучше, нежели полное отсутствие поддержки данной технологии.

Изменения в технологии BDP (Borland Data Providers), впервые появившейся в предыдущей версии Delphi и предназначенной для управляемого доступа к данным из .NET-приложений, включают поддержку управления метаданными. Теперь с помощью этого механизма доступа к данным можно выполнять DDL-операторы для создания и удаления индексов, таблиц, представлений, автоматически обновлять данные, в том числе полученные в результате запроса к нескольким таблицам. Кроме того, внесены изменения и в провайдеры данных BDP - сейчас они поддерживают пакеты Oracle, таблицы с именами, содержащими не только английские буквы, стала доступной поддержка последних версий серверов компании Sybase.

Из средств построения распределенных приложений, работающих с базами данных, отметим технологию DataRemoting, реализованную с учетом опыта, накопленного Borland со времени использования технологии MIDAS/DataSnap, которая появилась еще в Delphi 3 и, помнится, вызывала немалый интерес у российских разработчиков. Похоже, эта реализация удаленного доступа к данным значительно превосходит своих предшественников по надежности и удобству.

Отметим также появление в Delphi 2005 средств создания типизированных клиентских наборов данных для .NET (Typed datasets). Подобные наборы данных можно получить от Web-сервисов, компилировать в отдельные сборки, в них можно редактировать таблицы и связи.

Технология dbExpress в Delphi 2005 также подверглась усовершенствованиям - внесены улучшения в редактор SQL-запросов, повышена скорость работы некоторых компонентов, реализующих эту технологию, обновлены драйверы dbExpress.

UML-моделирование и MDA

Из инструментов, повышающих продуктивность разработки, особо отметим встроенное в среду Delphi ядро средства UML-моделирования Borland Together (рис. 5). Оно обеспечивает визуализацию кода и его генерацию на основе UML-моделей с использованием средств Borland ECO II (Enterprise Core Objects), первая версия которых была включена в средства разработки C#Builder и Delphi 8.

Fig.5
Рис. 5. UML-визуализация кода в среде Delphi 2005.

В целом в Delphi 2005 возможности применения технологии MDA (Model Driven Architecture - архитектура, управляемая моделью) значительно богаче по сравнению с предыдущей версией. Пользователям Delphi 2005 доступны расширенные масштабируемые средства поддержки в MDA-технологии ASP.NET, они могут создавать Web-сервисы, управляемые моделью ( для этого имеются соответствующие шаблоны приложений), пользоваться поддержкой инфраструктуры и среды исполнения .NET, служб .NET, в том числе функционирующих в масштабах предприятия и взаимодействующих между собой. Важная особенность ECO II - возможность создания ECO-приложений для уже существующих баз данных, унаследованных от вышедших из употребления информационных систем (с подобной задачей сейчас сталкиваются многие предприятия и компании-разработчики). ECO II позволяет даже создавать компоненты для поддержки связей в унаследованных базах данных еще до создания приложения. Кроме того, ECO II содержит средства автокомпиляции и средства помощи, напоминающие, что уже сделано и что еще нужно сделать в приложении. Изменения в ECO run-time включают средства разрешения конфликтов, повышения скорости выполнения приложений и скорости генерации форм.

Интеграция с J2EE и CORBA

И наконец, обсудим то, чего нет у других производителей средств разработки, - средства интеграции .NET-приложений с приложениями J2EE/EJB с применением средства Borland Janeva. Отметим, что технология Janeva, созданная относительно недавно, уникальна. Никто, кроме Borland, не предоставляет отличных от Web-сервисов средств интеграции .NET и J2EE/CORBA, несмотря на немалую востребованность таких средств - на данный момент многие компании, и западные, и российские, сталкиваются с последствиями так называемой стихийной автоматизации, в результате которой внутри информационной системы одной и той же компании зачастую обнаруживаются несовместимые между собой архитектуры, подходы и технологические решения (это могло произойти как по причине неумелого управления процессами внедрения ИТ в 90-е годы, так и просто в ходе слияния мелких предприятий в более крупные).

Создавать клиентов для EJB (Enterprise Java Beans) можно с помощью языков Delphi и C#; можно также извлекать один EJB из целого архива, можно разбирать автоматически описания Deployment Descriptors для разных серверов приложений (Borland Enterprise Servers, BEA Weblogic или IBM Websphere), можно генерировать клиентские сборки .NET. При этом Janeva позволяет не только создавать клиентские приложения для CORBA-служб на платформе .NET, но и разрабатывать собственные CORBA-серверы.

Заключение

Итак, в Delphi 2005, не в пример предыдущей версии, появилось множество нововведений, повышающих производительность труда отдельных разработчиков и коллективов, позволяющих создавать как известные ранее, так и новые типы приложений для двух платформ и на двух языках программирования, включая такие их уникальные разновидности, как .NET-клиенты для J2EE-приложений, приложения, управляемые UML-моделями. Нововведений в Delphi 2005, на мой взгляд, вполне достаточно, чтобы обратить на этот продукт самое серьезное внимание как минимум тем компаниям, которые разработали много успешно внедренных приложений с помощью ранних версий Delphi, - ведь рано или поздно их клиенты потребуют новых версий используемых ими приложений, не исключено, что им потребуется и поддержка .NET. А в России доля компаний, создававших с помощью Delphi самые разнообразные приложения, как известно, одна из самых высоких в мире.

Говорят, что Delphi 2005 - результат работы новой, достаточно молодой команды менеджеров и разработчиков. Остается пожелать этой команде удачи и ждать от нее новых версий, применение которых не будет вызывать вопросов и сомнений.