Третья мировая война 10.02.2004 Андрей Драница
Подключаются и сторонние средства отладки и профилирования и даже инструменты визуального проектирования пользовательского интерфейса приложений (GUI). На последнем стоит остановиться. С одной стороны, реальный кроссплатформенный подход требует кроссплатформенной же библиотеки пользовательского интерфейса, например Qt. С другой, отказываться от VCL, мягко говоря, неразумно, ведь тогда все программы, имеющие графический интерфейс, придется переписывать. Разумный баланс был найден в Delphi 8, где VCL плавно мутировала в VCL.NET, но беда в том, что .NET - такая же Windows-ориентированная среда, по крайней мере, пока. Так что разработчикам на С++BuilderX не повезло. Если прислушаться к наиболее резким мнениям, высказываемым в онлайновых сообществах программистов, то общий знаменатель таков: "Borland нас кинула". В одной из своих статей я уже писал, что при переходе от версии к версии целый ряд невизуальных компонентов претерпевали существенные изменения, вплоть до полного исчезновения. Так было с FastNet (исчезнувшим в Delphi 7), с компонентами отчетов и баз данных, и вот теперь компания нанесла еще один чувствительный удар - в виде новой графической библиотеки. Надо сказать, что тут Borland "шутила" и раньше: путь до нынешней библиотеки выглядел как слалом для профессионалов - TurboVision, OWL версий 1.0 и 2.0, потом вроде устоявшийся стандарт VCL, потом CLX, претендующая на кроссплатформенность. Теперь еще одно новое имя - wxFramework. Почему wxFramework, а не Qt, на основе которой работала CLX?
Сначала несколько слов о том, как соотносятся CLX и Qt. Все началось с Kylix - среды разработки Linux-приложений, своеобразного "Delphi для Linux". Стандартная дельфовая библиотека VCL использует "родные" элементы Windows (кнопки, списки, текстовые поля), а значит, не может выйти за пределы этой ОС. Дабы не переделывать VCL, изобретая велосипед, Borland обратила внимание на библиотеку Qt от фирмы Trolltech, создающую интерфейс с нуля и работающую на множестве платформ. Так как Qt - это мультиплатформная среда разработки C++-приложений, а в Kylix используется Object Pascal, была создана своеобразная "обертка" CLX, служащая для обращения к Qt4.
Qt - проект open-source, что, впрочем, не мешает ему быть коммерческим. Для частного разработчика ситуация вполне прозрачна: никаких отчислений за установленные (проданные) программы нет. Все, что требуется - приобрести лицензию (персональная лицензия на библиотеку Qt, работающую на одной, любой по выбору, платформе, стоит 1550 долларов США). А вот что касается договора между Borland и Trolltech по поводу включения Qt, можно предположить, что отчисления оказались слишком велики…
Впрочем, в качестве альтернативы wxFramework (точнее, набор библиотек wxWindows; www.wxwindows.org) почти идеальна. Она тоже open-source, но бесплатна, поддерживает аж двенадцать платформ, помимо визуальных компонентов, содержит и некоторые продвинутые модули: виртуальную файловую систему, встроенные диалоги печати и просмотра HTML, поддержку OpenGL. В этом аспекте меня заботит лишь один вопрос - где гарантия, что следующая версия C++BuilderX будет работать с wxWindows, а не сменит фаворита?
Скорее жив, чем мертв
Наверное, главным сюрпризом для поклонников старого доброго Delphi (но, конечно, не для нас, закаленных новостью о мумифицировании C++Builder) является то, что "восьмерка" - совершенно новый продукт, заточенный под разработку .NET-приложений. Импорт до .NET-овских программ хотя и возможен (например, демонстрационный проект FishFact переносится из седьмой версии в восьмую вообще без изменений), но сопряжен с целым рядом трудностей5. К счастью, переделки GUI для программ на Delphi минимальны - VCL.NET очень похожа на VCL, вплоть до совпадения методов и свойств. Что касается традиционных Win32-программ, то здесь ситуация похожа на реверансы с C++Builder и Microsoft Visual C++. Как известно, с выходом Visual Studio.NET и флагманского продукта Visual C# софтостроителям оставили возможность работать с Visual C++ путем включения его в комплект поставки. Borland поступила аналогично: Delphi 7 завершает линейку Delphi для платформы Win32, поэтому в комплект с Delphi 8 входит и "семерка", которая, похоже, больше развиваться не будет6.
Теперь коснемся собственно новинки. Как уже было сказано, старые Win32-программы, написанные с использованием VCL, будут нормально работать с .NET Framework. Кроме того, Delphi 8 поддерживает весь спектр .NET-инициатив - ASP.NET, Web и Windows Forms, XML Web, управляющие элементы Microsoft ADO.NET, плюс содержит инструментарий для доступа к базам данных Borland Data Provider (BDP) и, безусловно, годится для создания веб-служб. Наконец, нельзя не упомянуть такой хит, как концепция Borland Enterprise Core Objects (ECO). Это изобретение парней из Ирландии7 - попытка существенно облегчить разработку больших корпоративных приложений, и ориентировано оно не на рядовых кодеров, а на архитекторов ПО. Сама по себе концепция приложений, управляемых моделью, не нова, но именно Borland внедряет ее столь настойчиво и в интеграции с другими, сопутствующими компонентами.
Кроме того, Delphi 8 включает целый ряд новшеств, отсутствующих в С#, претендуя, тем самым, на роль пророка в чужом отечестве8. И Microsoft с этим уже ничего поделать не может: пойдя на стандартизацию C#, корпорация добровольно отказалась от возможности произвольного внесения изменений в язык.
Изменения претерпела и IDE (рис. 3-6). Первое впечатление при старте - что перед тобой окошко VS.NET: та же приветственная страничка со списком последних проектов, ссылками на справку и пр. По-прежнему на полную катушку используется "перетаскивание и бросание" при визуальном конструировании форм, правда, теперь можно бросать не только VCL-компоненты, но и стандартные .NET-элементы (рис. 7). Немного изменился редактор кода (рис. 8), расширились возможности поиска и т. д. Но, по большому счету, все изменения носят косметический характер, главные новинки - в C#Builder и C++BuilderX.
 
Лучшая оборона - нападение
Если Delphi 8 и C++BuilderX являются, скорее, ответом на вызовы Microsoft, то C#Builder стал неожиданной контратакой. Впечатление от C#Builder двоякое. Казалось бы, это первый достойный конкурент VS.NET, вполне справляющийся с поставленной задачей генерации кода. Помимо базового функционала есть поддержка всего спектра дополнительного ПО, выпущенного компанией: Together UML, CaliberRM, StartTeam, к тому же, C#Builder без проблем работает с Janeva. С поддержкой баз данных тоже все в порядке: C#Builder может подключаться к Borland InterBase, Microsoft SQL Server 2000, IBM DB2. Естественно, обеспечивается полная совместимость с ADO.NET, возможно создание веб-сервисов с помощью ASP.NET, доступны все визуальные компоненты, как родные WinForms, так и "левые" (в хорошем смысле этого слова) от ComponentOne.
4 По сути, для тех же целей нужна и VCL, транслирующая запросы на Delphi к WinAPI. 5 По меньшей мере, потребуется модификация кода в следующих частях: обращение к Win32 API; работа с COM- и OLE-объектами, описаниями объектов ядра ОС (хэндлами); вызовы внешних динамических библиотек DLL. Часть возможностей Win32 в .NET отсутствует: абсолютные директивы; типизированные файлы (текстовые файлы поддерживаются); манипуляции с памятью GetMem, FreeMem, ReallocMem; механизмы AfterConstructor и BeforeDestructor. 6 Хотя пока декларируется обратное (см. [2]). 7 Где 23 года назад и была основана компания Borland. Хотя поговаривают, что ее настоящим рождением следует считать открытие в 1983 году офиса в Калифорнии и назначение Филиппа Канна на должность президента. 8 Например, виртуальные и именованные конструкторы (Virtual, Named constructors), обращение к сборкам внутри откомпилированного кода с помощью Delphi package syntax, обращение к управляемому .NET-коду напрямую из Win32 x86-программ и т. д.
|