Мы пойдем другим путем
АрхивПрограммазм (архив)Borland отвечает Microsoft или "Язык программирования Delphi".
Несколько месяцев назад компания Borland представила свой вызов Microsoft — седьмую версию популярного продукта Delphi. Borland пошла даже на такой нетривиальный шаг как переименование языка программирования, которым, отныне, является не Object Pascal, а «Язык программирования Delphi». Смена имени языка вполне закономерна: в Visual Basic языком программирования является Бейсик, в Visual C, естественно Си, а в Delphi был — Паскаль. Как-то не вполне логично. Впрочем, важно на самом деле другое: в отличие от Microsoft, которая кардинально перекроила VB (см. статью «Basic форева?»), Borland решила не устраивать революций, а пошла по эволюционному пути. Язык не пострадал — он просто эволюционировал.
Гардероб
Если театр начинается с вешалки, то новая версия ПО — с компонентов, подвергшихся апгрейду. При знакомстве с Visual Studio .NET меня неприятно удивило, во-первых, требование весьма немалого объема памяти (от 64 Мб в NT 4.0 до 192 Мб в Win2000 Server), а во-вторых, что еще неприятнее, отказ работать в Windows 98 [1]. Delphi 7 в этом смысле оказался гораздо терпимее: младшенький из семейства (Delphi 7 Personal Edition) работает на P233 о 48 мегабайтах памяти. По крайней мере, в этих суровых условиях среда реально запускается, а на более мощных (и, главное, обеспеченных памятью) машинах IDE функционирует в нормальном режиме.
Что касается многочисленных нововведений, то мне не хотелось бы пересказывать секцию документации под названием "What`s new", благо, что в Сети уже есть нормальный перевод. Поэтому остановлюсь лишь на самых важных и интересных моментах. Как и следовало ожидать, появился целый ряд новых компонентов. Во-первых, новый генератор отчетов — Rave. Помимо удобств, которые обеспечивает визуальный редактор (рис. 1), поддерживается вывод во все самые распространенные форматы: обычный текст, HTML, RTF и PDF. В версиях выше персональной можно использовать данный генератор и в CLX-приложениях. Естественно, вывод на печать и предварительный просмотр выше всяких похвал, так что остается надеяться, что в восьмой версии Delphi Borland будет дальше развивать Rave, а не изменит ему с новым ставленником.
Рисунок 1
Следующий момент носит скорее эмоционально-эстетический характер. Теперь с помощью встроенных средств Delphi можно создавать приложения, меню и панели инструментов которых даже в Windows 98 будет выглядеть в духе WinXP (рис. 2).
Рисунок 2
Среда разработки изменилась сравнительно мало — разве что появилось автозавершение кода для HTML, WML, XHTML и XSL.
Интернет остается основной движущей силой прогресса, поэтому вполне закономерно появились новые средства и инструменты, направленные на упрощение работы с вебом. Во-первых, в Delphi 7 значительно расширен список серверов и клиентов (Internet Direct — Indy), так что теперь создать свой собственный «мини-Апач» (а заодно и FTP, и почтовый сервер с поддержкой IMAP и POP, и сервера IRC, Telnet, Whois... в общем, «много-много в одном») можно буквально на коленках. Во-вторых, добавлена поддержка одного из самых популярных веб-серверов — Apache 2.0.
Еще одно нововведение — мощное средство для создания серверных приложений IntraWeb (рис. 3). При этом серверная часть может быть не только самостоятельным приложением (в виде Windows service), но и модулем для Apache или IIS. Клиентом же выступает браузер — заявлено о поддержке IE, Netscape и Mozilla.
Рисунок 3
Следующие изменения характеризуют взросление продукта: наконец-то добавился целый ряд серьезных инструментов для разработчиков. Во-первых, появился нормальный UDDI (Universal Description, Discovery and Integration) браузер. Во-вторых, в состав дистрибутива входит ModelMaker, инструмент для разработки, настройки и обслуживания интерфейсов и классов. В-третьих, расширена поддержка XML.
И, наконец, следует упомянуть ставшую уже обязательной поддержку манифеста для Windows XP, так что теперь любое приложение, созданное с использованием Delphi 7, автоматически сможет менять «шкурки» через встроенный в WinXP механизм.
Проблемы
Несмотря на значительные улучшения, существует целый ряд моментов, которые несколько портят общее впечатление. Во-первых, Borland переняла у Microsoft дурную манеру просто так, за здорово живешь, удалять популярные компоненты и модули. Так, в новой версии пострадали старые «отчетные» компоненты, FastNet, сокеты и некоторые компоненты для работы с базами данных. Безусловно, всем им есть более чем достойная замена — только вот тем разработчикам, которые использовали эти компоненты, можно лишь посочувствовать: код придется переписать. Следующим неприятным моментом стала несколько большая «падучесть» IDE даже в весьма банальных ситуациях, таких как вызов браузера объектов или операции вставки элементов управления из буфера. По-прежнему есть определенные недоработки в IDE — например, нельзя просто открыть текст процедуры или функции, если их код находится не в теле модуля, а во внешнем файле и подключен через
Поддержка .NET
Если предназначением шестой версии было обеспечение совместимости с Kylix, то седьмая версия несет флаг .NET. Надо сказать, что, несмотря на нетривиальность задачи, специалистам Borland удалось выпустить .NET-компилятор в срок [2]. Несмотря на статус "Preview", пока ничего плохого про него сказать нельзя. Хотя сам компилятор первоначально не интегрирован в IDE [3], путем несложных манипуляций в командной строке вполне реально получить работоспособный .NET-код. Кроме того, для зарегистрированных пользователей Delphi 7 доступно обновление Delphi for .NET Preview, включающее предварительную версию VCL .NET.
Помимо компилятора, доступны и другие весьма полезные возможности: во-первых, можно беспрепятственно импортировать и использовать .NET-сборки (assembly), как обыкновенные COM-объекты [4]. Верно и обратное, COM-объекты, созданные Delphi, можно будет беспрепятственно использовать в .NET-приложениях.
Во-вторых, добавлены специальные опции компилятора — .NET-специфические предупреждения. Компилятор «просматривает» программу и предупреждает о «потенциально опасных» (unsafe) участках кода. Несмотря на кажущуюся бесполезность, это дает уникальные возможности по отлову «неуловимых» ошибок времени исполнения, когда приложение попросту виснет с ошибкой доступа к памяти.
Продукты третьих фирм
Каким бы замечательным продукт не был, так устроен человек, что ему всегда не хватает какой-нибудь «мелочи». Для Delphi-программистов такими мелочами стали дополнительные компоненты, расширяющие и без того богатую палитру. Здесь можно сказать, что практически все популярные пакеты совместимы с новой версией и либо вышли уже со специальными настройками и установочными файлами для Delphi 7, либо могут быть установлены в обычном для Delphi 6 порядке. Сказанное касается и самого популярного отечественного пакета RxLib, где последний из релизов RX Library JEDI (jvcl.sourceforge.net) без проблем ставится на новый Delphi.
Пока не ушел поезд
В общем, я бы взял на себя смелость утверждать, что продукт удался. Borland успела таки вскочить на уходящий поезд, не забыв на всякий случай и собственную, конкурирующую с .NET платформу J2EE, что в конечно счете на руку пользователям. Конечно, такое постоянно сидение на двух стульях обычно ни к чему хорошему не приводит, яркие тому примеры — полуживые BDE и CORBA, так и не совладавшие с ADO и COM соответственно. С другой стороны, у меня язык не поворачивается критиковать компанию за постоянные попытки на равных конкурировать с гигантом из Редмонта. Вполне возможно, что если бы не такой технологический прессинг, MS никогда бы не пошла на довольно революционные шаги, плодами которых все мы (с удовольствием или без) пользуемся.
[1] — Важно, что под Windows 98 не работает именно среда разработки. Сделанные программы в этой операционной среде работать будут.
[обратно к тексту]
[2] — Предупреждение специально для любителей приобретать все новинки не у официальных дилеров, а в Митино: подавляющее большинство пиратских CD Borland Delphi 7 не содержат .NET-компилятор. Комплект ПО должен быть как минимум на двух CD: на первом собственно Delphi 7, на втором дополнительные компоненты.
[обратно к тексту]
[3] — Проблема решается путем установки патча, доступного на Borland Community, который интегрирует компилятор в среду разработки.
[обратно к тексту]
[4] — На самом деле объекты .NET используются не напрямую, а через своеобразную «обертку» CCW — COM Callable Wrapper.
[обратно к тексту]