Статья только в электронной версии журнала

Статья только в электронной версии журнала

Обзор

С++ Builder 4 поддерживает CORBA и COM, но плохо оптимизирует исполняемый код

Мартин Геллер (для PC Week Labs)

Появление в С++ Builder 4 корпорации Inprise (Скотс-Вэйли, шт. Калифорния) поддержки CORBA и COM делает эти технологии доступными корпоративным разработчикам приложений. В новом релизе сохранены и развиты все сильные стороны версии 3.0, помогающие быстро создавать прикладные программы: удобный интерфейс, широкий спектр поддерживаемых технологий и возможность взаимодействия с ПО разных поставщиков.

В PC Week Labs была протестирована окончательная бета-версия С++ Builder 4. Мы освоились с обширным набором возможностей, научились избегать некоторых вызывающих раздражение недоделок и пришли к выводу, что этот инструмент - весьма продуктивная среда программирования. Мы рекомендуем его разработчикам внутрикорпоративных приложений, особенно тем, кто использует CORBA.

Между тем С++ Builder 4 оптимизирует генерируемый код неважно. Разработчики коммерческого ПО, вероятно, предпочтут компилятор Visual C++ 6.0 корпорации Microsoft, который создает более быстрый и компактный код.

Переход на С++ Builder 4 оправдан для большинства пользователей С++ Builder 3 и Borland С++. Организации, отказавшиеся от использования С++ Builder 3 из-за трудностей переноса в него проектов, выполненных в Borland С++ или Visual C++, должны обратить внимание на четвертую версию этого пакета. Ее следует приобрести и компаниям, собирающимся создавать на Си++ распределенные CORBA-приложения для платформ Windows.

Однако фирмы, использующие библиотеку активных шаблонов (ATL) для разработки объектов COM в Visual C++, скорее всего решат сохранить верность продукту Microsoft - по крайней мере до тех пор, пока Inprise не улучшит конвертирование проектов Visual C++ в проекты C++ Builder.

С++ Builder 4 выпускается в двух вариантах: Enterprise Edition ценой $2499 и Professional Edition. В последнем варианте отсутствует поддержка распределенных приложений и клиент-серверного доступа к базам данных. В Enterprise Edition сохранились имевшиеся у C++ Builder 3.0 великолепные возможности работы методом “перетащи и оставь” в среде, допускающей двунаправленное визуально-текстовое программирование приложений с использованием библиотеки визуальных компонентов (Visual Component Library, VCL), а также улучшена поддержка библиотеки базовых классов корпорации Microsoft (Microsoft Foundation Classes, MFC) и библиотеки объектов Windows (Object Windows Library, OWL).

Кроме того, в C++ Builder 4 усовершенствованы средства ручного кодирования: введены функции Code Completion, Parameter ToolTips, Symbol ToolTips и Symbol Hyperlinking. Эти управляемые всплывающими меню инструменты повышают эффективность работы разработчика за счет динамической компиляции: C++ Builder 4 компилирует код в фоновом режиме во время написания кода, генерирует таблицу символов и прекомпилирует заголовки, но не генерирует окончательный код и не пишет его на диск до тех пор, пока программист не отдаст команду “построить проект”. Новые средства помощи в написании кодов вполне могут конкурировать с аналогами из Visual C++ 6.0.

Мы использовали C++ Builder для разработки распределенного банковского приложения на базе CORBA

Несмотря на то, что в C++ Builder 4 нет функции “отредактировать и продолжить”, а также возможности построения проекта в фоновом режиме, он строит проект за разумное время (успеть выпить кофе можно, а пообедать - вряд ли) и быстро перестраивает его после внесения изменений. Так, после замены нескольких строк текста в примере MFC Scribble процесс перестраивания на машине с 400 МГц Pentium II занял 3 секунды.

Построение проектов, использующих VCL, как правило, занимало менее секунды. Для сложной отладки, когда требуется выполнение длинных отрезков кода, функция “отредактировать и продолжить” из Visual C++ 6.0 дает ощутимые преимущества. Однако для большинства разработок высокая скорость перестройки возмещает отсутствие такой функции.

Тест Tak, в котором интенсивно используется целочисленная арифметика, C++ Builder 4 выполнял на 25% медленнее, чем Visual C++ 6.0 и при этом сгенерированный исполняемый модуль оказался на 30% больше. В обоих случаях компиляция выполнялась с оптимизацией кода по скорости. В тесте Tak в вычислениях с плавающей запятой скомпилированный C++ Builder 4 код уступал в скорости выполнения коду компилятора Microsoft чуть менее чем на 10%.

Работа большинства корпоративных приложений не связана с большими объемами вычислений, а разница в размере кода для крупных проектов часто не так важна, поэтому мы не считаем это серьезным недостатком C++ Builder 4.

Встроенная поддержка CORBA - главное преимущество этого комплекта. В пакет включены брокер запросов CORBA (object request broker, ORB) - VisiBroker - и мастера для генерации CORBA-серверов, клиентов, файлов описания интерфейсов и реализаций объектов, совместимых с VisiBroker и другими ORB, удовлетворяющими стандарту CORBA 2.0. Когда пользователь вносит изменения в интерфейсы объектов, среда автоматически генерирует proxy- и skeleton-классы, а также реализации классов. Microsoft не предлагает никаких инструментов, позволяющих делать то же самое.

Конечно, Microsoft обеспечивает превосходную поддержку COM и ActiveX, но C++ Builder 4 и здесь оказывается достойным конкурентом. Он может за один шаг генерировать элемент управления ActiveX и автоматически импортировать библиотеки объектов COM. Классы EZ-COM C++ Builder 4 “обертывают” импортируемые COM интерфейсы и упрощают их использование. Кроме того, C++ Builder 4 может “обертывать” COM-классы для их использования в CORBA-средах.

У C++ Builder отсутствует имеющаяся в Visual C++ директива импорта, которая широко используется в объектах COM и ActiveX, построенных с помощью ATL. ATL-проекты Microsoft можно преобразовать вручную. Организации, использующие систему подсказок Delayload корпорации Microsoft, помогающую уменьшить время загрузки исполнимых модулей и достигнуть лучшей совместимости, будут разочарованы, не обнаружив аналогичной функции в C++ Builder 4.

Мартин Геллер - писатель, консультант и разработчик программного обеспечения. Живет в г. Андовере (шт. Массачусетс). Его адрес: meh@mheller.com.

Резюме для руководителей

C++ Builder 4, бета-версия

Поддержка CORBA - главное нововведение в этом продукте, до сих пор являющемся единственной средой программирования на Си++, которая поддерживает разработку методом “перетащи и оставь”. В новой версии автоматизирован импорт проектов OWL и MFC, хотя проекты ATL все еще необходимо дорабатывать вручную.

( + ) Система действительно быстрой разработки на Си++; упрощает создание распределенных приложений CORBA и COM; высококачественные драйверы баз данных; удаленная и мультипроцессная отладка; автоматический импорт большинства проектов Visual C++ и Borland C++.

( - ) Неблестящая генерация кодов; проблемы совместимости при импортировании ATL-проектов Microsoft.

Методика оценки: www.pcweek.com/reviews/meth.html.