Обзор C++Builder 2007
Судьба продуктов семейства C++Builder – всегда оставаться в тени своего «старшего брата», ориентированного на Object Pascal. Среда разработки CodeGear C++Builder (C++Builder 2007) была представлена общественности три месяца спустя после выхода Delphi 2007, и список внесенных в нее изменений почти совпадает со списком новшеств последней версии Delphi. Впрочем, язык C++ (который, в отличие от Object Pascal, не является почти безраздельной вотчиной Borland/CodeGear) оказывает и собственное влияние на эволюцию C++ IDE. Таким образом, все новые функции и возможности, которые мы встретим в C++Builder 2007, можно разделить на две категории – новшества, унаследованные от Delphi 2007, и новшества, связанные со спецификой C++.
На первый взгляд
Заставку Delphi 2007 украшает безмятежный лик Аполлона Дельфийского – символ Delphi на протяжении многих лет. Символом C++Builder долгое время был строительный кран, а теперь на заставке программы изображена голова Юпитера, что, судя по всему, отражает мысль разработчиков о сходстве, а, возможно, и превосходстве C++Builder над Delphi. В обзорах Delphi 2007 некоторые писали, что новая среда загружается быстрее предшественницы. Ничего подобного я про C++Builder 2007 сказать не могу. Среда C++Builder 2007, конечно, загружается быстрее, чем BDS 2006, но не быстрее (или, по крайней мере, не на много быстрее), чем запущенная отдельно C++Builder 2006. Интерфейс оболочки IDE выполнен в том же стиле, в котором он выполняется со времен Delphi 8, а вот функциональная организация интерфейса претерпела небольшие изменения.
Много численные элементы окна Project Options сгруппированы более рационально. Например, все опции, связанные с совместимостью с другими версиями и средами разработки на C++, теперь объединены в две группы настроек проекта: General Compatibility и C++ Compatibility. Появились и новые окна настроек C++, о которых будет сказано ниже. Симпатичное окошко File Browser (команда View|FileBorowser), реализованное ранее в Delphi 2007, позволяет выполнять различные операции с файлами, не покидая оболочку IDE.
Новшества, унаследованные от Delphi 2007
Как и Delphi 2007, новая среда C++Builder поддерживает систему MSBuild, грозящую стать стандартным средством сборки на платформе Microsoft Windows. Интеграция поддержки MSBuild, в свою очередь, привела к необходимости переработать многие компоненты системы сборки C++Builder 2007. Файлы проектов теперь получили расширение cbproj, а их новый XML-синтаксис соответствует формату MSBuild. Попробуем собрать простой проект с помощью MSBuild. Создайте проект приложения C++Builder и сохраните его на диске. Если вы просто откроете окно консоли и наберете в ней
msbuild
скорее всего, ничего не случится. Хотя утилита MSBuild уже установлена в вашей системе, переменные окружения, необходимые для ее запуска, не настроены. Чтобы не настраивать их вручную, воспользуйтесь консолью RAD Studio Command Prompt, в которой все необходимые переменные уже настроены. Ярлык RAD Studio Command Prompt расположен в группе CodeGear RAD Studio меню «Все программы» меню кнопки «Пуск». Запустите консоль RAD Studio и скомандуйте:
msbuild myproject.cbproj
где myproject.cbproj – имя проекта C++Builder 2007.
В результате экран консоли заполнится сообщениями, как это бывает при сборке проектов с помощью make-файлов и, если все прошло удачно, в конце ваша программа будет собрана.
Разумеется, ничто не мешает вам собирать проекты C++Builder по старинке, с помощью команды меню Project|Build.
Как и Delphi 2007, новый C++Builder позволяет создавать «события сборки» - наборы команд, которые могут быть выполнены на определенных этапах сборки (раньше можно было создавать специальные наборы команд только для выполнения перед началом сборки и после ее окончания).
Вслед за Delphi в C++Builder 2007 обновилась подсистема dbExpress (которая теперь именуется DBX framework). Все драйверы DBX написаны на Delphi и эта же среда может использоваться для написания новых драйверов. Новая модель драйверов DBX позволяет создавать делегированные драйверы, которые играют роль прослойки между приложением и драйвером BDX. Делегированные драйверы могут использоваться для отладки и мониторинга приложений баз данных. Их также можно задействовать для реализации дополнительной функциональности в BDX. Одно из применений делегированных драйверов – создание потокобезопасных интерфейсов BDX, в которых делегированный драйвер берет на себя функции синхронизации обращений из разных потоков. Наконец-то была реализована поддержка Unicode в драйверах для Oracle, Interbase, и MySQL.
По-моему, ни один новый релиз Delphi/Borland C++Builder не обходился без добавления новых компонентов VCL. Не стал исключением и CodeGear C++Builder 2007. В палитру VCL были добавлены компоненты, реализующие диалоговые окна Windows Vista - TFileOpenDialog, TFileSaveDialog, TTaskDialog (в общей сложности в VCL добавлено 18 новых классов). Значительно усовершенствован интерфейс менеджера памяти (для работы с ним добавлено десять функций и переменных).
Отметим еще одну маленькую, но приятную мелочь – в окне Project Manager теперь можно выбрать сразу несколько файлов для дальнейших операций над ними.
Наконец-то вариант среды разработки для C++ обзавелся полноценными средствами блочного тестирования (Unit testing), которые ранее были реализованы в Delphi. В C++ IDE встроена версия Borland Together с ограниченной функциональностью (вариант Together для C++Builder 2007 позволяет создавать диаграммы кода и генерировать документацию).
Собственные новшества C++Builder 2007
Как уже отмечалось, в новой версии C++Builder значительно усовершенствована система сборки. Однако новшества этой системы в C++Builder не ограничиваются тем, что было реализовано в Delphi. У среды C++ всегда была своя специфика механизма сборки, связанная, в частности, с конфигурациями. Помимо стандартных конфигураций Debug и Release в C++Builder 2007 введена базовая конфигурация сборки Base (нечто подобное давно уже существует в Microsoft Visual C++). Базовая конфигурация содержит настройки проекта, которые наследуются по умолчанию всеми создаваемыми конфигурациями (в новых конфигурациях унаследованные настройки, естественно, могут быть изменены). Специальный флажок Merge позволяет использовать в текущей конфигурации настройки из базовой конфигурации, не меняя самих текущих настроек. Как и в Delphi 2007, в C++Builder 2007 появилась возможность создавать именованные наборы настроек (named option sets). Именованные наборы настроек создаются независимо от проектов и сохраняются в специальных файлах. Создав именованный набор настроек, вы можете затем применить его к любой конфигурации настроек любого проекта.
В соответствии с требованиями системы MSBuild порядок сборки проекта теперь определяется расширениями файлов (раньше он определялся структурой проекта). Согласно новым правилам сначала компилируются файлы .pas, затем файлы .c/.cpp, затем файлы .asm, и, наконец, файлы .rc. Однако порядок расположения файлов в каталогах также влияет на порядок сборки (сначала собираются все файлы в одном каталоге, затем – в другом, и т.д.). Для того чтобы совместить старое и новое, разработчики из CodeGear пошли на оригинальный шаг: файлы проекта можно группировать в виртуальные каталоги. Фактически виртуальные каталоги позволяют определять произвольный порядок сборки файлов, не нарушая ни физической структуры проекта, ни правил MSBuild.
Расширены возможности Web-служб C++Builder 2007, в частности интерфейсы Web-служб могут теперь содержать необязательные элементы.
Помимо всего прочего C++Builder 2007 может компилировать пакеты времени разработки, содержащие Delphi-код (аналогичная возможность для пакетов времени выполнения, была, разумеется, урезана специально, чтобы разработчики не могли использовать C++Builder 2007 как две IDE «в одном флаконе»).
Итоги
В общем и целом C++Builder 2007 производит впечатление классической, IDE в традиционно добротном стиле Borland/CodeGear, с достойным для очередного релиза набором новшеств. Однако после тщательного знакомства с новой средой разработки возникает и легкое чувство досады. Последним версиям продуктов Borland/CodeGear не хватает того, что отличало ранние версии – новаторства. Да что там говорить о новаторстве, если средства разработки Delphi и C++ до сих пор не освоили поддержку Unicode и, судя по всему, не освоят эту, далеко не новую, технологию в обозримом будущем. Подводя итоги можно сказать, что разработки CodeGear по-прежнему добротны и, безусловно, найдут свою нишу, но в то же время, современная CodeGear, это, скорее компания, стремящаяся остаться наплаву, нежели смело прокладывающая новые пути.