Архивы: по дате | по разделам | по авторам

Третья мировая война

Архив
автор : Андрей Драница   25.02.2004

Первая война Microsoft с равным по силе соперником была разыграна как по нотам. Вторая война, с маленьким, но хитрым соперником тянулась чуть дольше, но для проигравшего закончилась полным разгромом. И вот развязана третья.

Меня посещают мысли о смерти. Смерти всех, на чей рынок приходит гигант, независимо от того, насколько многочисленны и могущественны его противники. В чем причина этого - в харизме вождя, силе тотема или в чем-то еще - не важно, важен итог.

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

Речь, конечно, о Microsoft и ее победах над IBM и Netscape. В роли третьей жертвы выступает Borland, поле битвы - средства разработки. Почему я говорю о войне только сейчас, ведь противостояние длится уже очень долго? Только потому, что до недавнего времени у "мелкомягких" не было ни малейшего шанса: Microsoft принципиально не играла на поле Java, тогда как флагманским продуктом Borland был именно JBuilder. Cейчас Microsoft наносит ответный удар, стремясь своей .NET-инициативой подмять под себя рынок, занимаемый Java. Естественно, Borland не спит, и вот уже как из рога изобилия посыпались ответные инициативы.

Ножа не бойся, бойся вилки

В роли вилки выступает целый выводок продуктов - C++BuilderX, Delphi 8 и C#Builder, но прежде чем их рассмотреть, бросим взгляд на идеологическую подоплеку событий. Итак, всем фанатам Borland надо смириться с тем, что впредь компания будет идти на поводу у Microsoft1. Являясь, по сути, монополистом на рынке настольных ОС, последняя диктует правила игры разработчикам RAD, а любые попытки гнуть свою линию ни к чему хорошему не приводят. В Borland это уяснили с самого начала и поступили весьма разумно: вместо того чтобы воевать с колоссом, компания встала ему на плечи. Сейчас в очередной раз рынок трясет. Так было при переходе с однозадачной DOS к многозадачной Windows 3.1. Потом при миграции на 32-битное семейство Windows. Нынешний катаклизм проходит под флагом перехода к управляемому и потенциально межплатформенному .NET-коду.

Как будут развиваться события? Дать точный прогноз мало кому под силу, но основные тенденции налицо. Как известно, следующая версия ОС от Microsoft - Longhorn - будет основана на .NET, к чему разработчиков приучают постепенно. Сначала .NET Framework ставится поверх обычной Windows, как это происходит сейчас (напомню, что .NET работает на всех ОС, начиная с Windows 98). Дальше, с внедрением ядра WinFX, поддержка старых Win32-приложений будет осуществляться через новое ядро, а уж потом выйдет Longhorn, где родными будут .NET-приложения, а старые Win32-программы будут работать в режиме эмуляции. Стратегия Borland в этом отношении прозрачна: хотите программировать под Windows - переходите на .NET. Второй приоритет - Java-продукты. В этом нет ничего странного, ведь, по оценкам специалистов из той же Borland, сегодня рынок поделен так: 40% .NET, 40% Java и 20% все остальное. Ясно, что JBuilder должен покрывать вторую половину, а Janeva (программное обеспечение, обеспечивающее взаимодействие .NET-приложений и серверных компонентов J2EE и CORBA), как я уже писал2 - снимать сливки с консолидации.

Новое платье короля

Кто-то любит кофе, кто-то чай. В Borland всегда отдавали предпочтение Java Builder и Delphi, а не C++Builder. Сначала очередные версии Delphi и C++Builder выходили примерно в одно время, потом последний стал отставать и, в конце концов, загнулся на цифре 6, тогда как Delphi уже переживает восьмую3 реинкарнацию. Вышло даже специальное прощальное письмо [1], суть которого в следующем: в связи с тем, что существующий продукт не отвечает веяниям времени, было решено резко сменить курс. Так как перевести старый Builder на новые рельсы не представляется возможным, шестая версия будет последней из доступных для создания Win32-программ, а достойным продолжателем дела становится C++BuilderX, который мы рассмотрим поподробнее. Но сначала о причинах диверсификации. Их всего две, но они четко отражают ситуацию на рынке. Во-первых, появление "икса" обусловлено желанием обеспечить реальную кроссплатформенность создаваемых приложений (читай, возможность запуска программ и на Windows, и на Linux - другие платформы не в счет). Во-вторых, нужно было как-то выйти на быстрорастущий рынок средств разработки для мобильных и встраиваемых систем. Все остальные декларируемые предпосылки - желание обеспечить работу с компиляторами сторонних производителей, ориентация на С++ как промышленный стандарт, легкость адаптации унаследованного кода, конечно, существуют, но они вторичны.

Теперь немного сухих фактов. О кроссплатформенности: С++BuilderX портирован на Linux (декларируется нормальная работа под Red Hat), Windows (2000 и XP) и Solaris (см. рис. 2). Поддержка мобильных платформ тоже впечатляет. В специальной редакции Borland C++BuilderX Enterprise Studio for Mobile есть поддержка всех SDK для мобильной ОС Symbian. К тому же, объявлено о лицензировании PalmSource SDK и обеспечении возможности написания программ для Palm OS, что является серьезной заявкой на успех.

В целом, я бы сравнил С++BuilderX с хорошим конструктором. Он поддерживает множество компиляторов:

- Intel C++ (вместе с библиотеками Intel Performance и системой анализа характеристик Intel VTune для операционных систем Windows и Linux и процессоров Intel Pentium, Itanium и XScale);
- GCC for Windows/Linux/Solaris;
- Metrowerks CodeWarrior C++ compiler for Windows;
- Microsoft Visual C++ 7.1;
- Sun Forte C++ compiler for SPARC (Solaris);
- MinGW GCC compiler for Windows;
- Borland C++ BCC32 for Windows.


1 Из ответов Дэвида Интерсаймона, вице-президента Borland по связям с разработчиками, на Borland Developer’s Day 2003: "Borland всегда идет по пути, намеченному Microsoft".
2 "Java против .NET", "КТ" #516.
3 На самом деле, седьмую. Почему, читайте ниже.

Подключаются и сторонние средства отладки и профилирования и даже инструменты визуального проектирования пользовательского интерфейса приложений (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-программ и т. д.

Короче говоря, если почитать пресс-релизы и прочие агитки, то накатывает умиление, от которого можно довольно быстро избавиться. Как? Достаточно поработать с системой и попытаться съехать с автотрассы на бездорожье. И вот тут начинаются мелкие пакости и неувязки. Начнем с того, что подключить сторонний компилятор, а именно Mono, мне так и не удалось (и не только мне). Насколько я понял, это связано с тем, что в настройках железно прописано: компиляция осуществляется только через CSC.exe, так что ни подключить другой компилятор, ни использовать, например, C++ не получится. То есть имеется поддержка только C# и VB.NET, хотя во вкладке нового проекта VB.NET отсутствует. Со справочной системой тоже не все в порядке: порой создается ощущение, что ее тексты "утянуты" из справки Java. И самое главное, разочаровывает IDE. Мало того, что в среде разработчика нет ничего революционного, чего от Borland ожидали многие, так еще и возможности, ставшие стандартом, либо отсутствуют, либо тормозят. Подсветка синтаксиса (рис. 10), множественные закладки и code competition есть, но выполняются медленно, даже на неслабой машине c полугигабайтом памяти. Причем этим мелкие пакости не заканчиваются: есть проблемы с поддержкой рефакторинга, процедура инсталляции может тормозить, да и вообще многие вкусности, присутствующие в IDE JBuilder, почему-то отсутствуют в C#Builder. На мой взгляд, в этом вопросе Borland перестаралась, оптимальным является подход Microsoft - взять, поднатужиться и сделать пусть одну, зато хорошую IDE для всех продуктов. Именно так дело и обстоит в VS.NET (до этого, например, Visual Basic 6 имел другую, пусть и очень похожую среду, нежели VC++ 6). Borland же поступила иначе: теперь IDE, гордо именуемая UDE (универсальная среда разработки), разделена на:

- Borland developer Studio .NET UDE для C#Builder;
- кроссплатформную среду, реализованную на Java для JBuilder;
- Eclipse.

Осилит ли компания поддержку на уровне всех трех UDE, еще тот вопрос.

Разумеется, после таких сюрпризов всякие нюансы вроде сложностей при реинжиниринге баз данных в модели для дальнейшего использования, возможности (читай, необходимости) работать с базами данных через фирменный борландовский провайдер доступа к данным (Borland Data Provider) наряду с ADO.NET не вызывают сильных эмоций.

Театр начинается с вешалки

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

Нишу проектирования занимает пакет Together от TogetherSoft, и хотя признанным лидером в этой области являются продукты Ration Rose, Borland сделала серьезный шаг вперед. Если коротко, Together - это целое семейство продуктов для моделирования на языке UML (версии 1.4), поддерживающее синхронизацию с исходным кодом программ, написанных на Java, C# и Delphi. Вместе с модулем Borland Live пакет обеспечивает синхронизацию в режиме реального времени между проектом приложения и его моделью. Причем взаимосвязь двусторонняя: при изменении исходных текстов тут же меняется модель, если же меняется модель, то изменяются тексты. Помимо генерации кода, Together полезен и для отлавливания ошибок9, проверки соответствия заданным методикам и шаблонам программирования. Пакет не только тесно интегрирован со всеми IDE от Borland, но и допускает работу со сторонними IDE, например, от Microsoft (Together Edition для Microsoft Visual Studio .NET).

Далее логично перейти к StarTeam (от StarBase). Формально это комплексная автоматизированная система управления конфигурацией программного обеспечения (Software Configuration Management, SCM), которая передает рычаги управления жизненным циклом приложения из рук разработчиков в руки проектировщиков. Ее главное назначение - контроль версий, но в StarTeam есть и зачатки средств совместной работы типа Novell GroupWise (естественно, ориентированных на разработчиков ПО с их специфическими требованиями). Так что архитекторам достается интегрированная среда, позволяющая управлять техническими характеристиками приложений и их изменением, контролировать потоки, возникающие баги и процедуру их устранения (bug track), что позволяет автоматизировать обработку практически всего спектра вопросов, всплывающих при проектировании ПО. К тому же, в программе есть инструментарий для управления потоком задач и управления проектом, дискуссионные форумы, и все это - с поддержкой распределенных проектных групп, что обеспечивает совместную работу удаленных участников. В качестве системы версионного контроля у StarTeam есть свои вкусности: например, она может организовывать на клиенте личный репозиторий разработчика, позволяет работать не только с собственной базой данных, но и с базами VSS и PVCS.

Название третьей "примочки" - CaliberRM - очень напоминает модную нынче аббревиатуру CRM (управление отношениями с клиентами). Не знаю, случайно это или нет, но система CaliberRM отвечает именно за управление требованиями к приложению, то есть адекватное донесение требований заказчиков до конечных исполнителей. Естественно, с отслеживанием процесса выполнения пожеланий народа - от отправки запроса через его исполнение и тестирование до "сдачи-приемки". Каждому требованию могут быть назначены разнообразные свойства, например, приоритет или взаимосвязь с другими требованиями, причем, что особенно приятно, для последнего аспекта поддерживается и графическая визуализация, а не просто табличка.

Все упомянутые модули (CaliberRM, StarTeam, Together) тесно связаны друг с другом и с IDE, так что многие функции не привязаны к какому-то одному модулю, а "возникают" при интеграции. Собственно, в такой тотальной интеграции среды разработки со всем сопутствующим ПО и лежит один из новых принципов "программирования по Борланду" - управление жизненным циклом приложения (Application Life Cycle Management, ALM).

Немного грустный постскриптум

Безусловно, новые продукты порадуют фанатов Borland. Вроде бы компания живет и развивается, но если заглянуть в прошлое, то новые инициативы вызывают сомнения: а сдюжит ли? Сидение на двух стульях - Java и .NET - занятие не только трудоемкое, но и почти взаимоисключающее, ведь эти платформы конкурируют в целом ряду ниш. Справится ли маркетинговая машина с работой на два фронта? Сможет ли Borland создавать лучшие продукты для .NET, чем Microsoft? Посмотрим.

Неодназначна и ситуация с унаследованным ПО. Представьте такую ситуацию: вы создавали некий коммерческий (или заказной) продукт на C++Builder, и тут вам заявляют, что следующей версии вашей RAD не будет. Как при минимальных затратах перевести приложение на новые рельсы? Формально разработчиков на C++Builder призывают вставать под знамена C++BuilderX. С другой стороны, ваша программа была ориентирована только на Windows (ведь ни на чем другом программы, писанные на C++Builder, не работали), так что переходить надо на C#Builder - новое средство именно для Windows-программирования. В результате, многие пребывают в тягостных раздумьях: порой легче все переписать заново, чем перейти на C++BuilderX. Переход на C#Builder проще, но он проигрывает VS.NET. Я не проводил достаточно репрезентативных опросов, но как мне кажется, происходит плавная миграция на VS.NET, на Delphi 8 и только в последнюю очередь - на C++BuilderX или C#Builder.

Для тех, кто ждал новостей про Kylix, у меня только печальные вести. На вопрос, как насчет дальнейшей разработки Delphi под Linux и развития Kylix, на конференции Borland Developer’s Day 2003 был дан примерно такой ответ: "Никак. Сейчас Delphi развивается в направлении .NET".


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

Ссылки по теме:
[1] Open Letter to the Borland C++ Developer Community by J. P. LeBlanc (http://bdn.borland.com/article/0,1410,31277,00.html ).
[2] Открытое письмо Саймона Торнхилла, вице-президента корпорации Borland и генерального директора подразделения решений для .NET, сообществу разработчиков на Delphi (http://info.borland.ru/events/open_letter/index.html).
[3] Материалы конференции Borland Developer’s Day 2003 (http://info.borland.ru/bdd2003/index.html).

© ООО "Компьютерра-Онлайн", 1997-2021
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.