Цель лекции: Получить общее представление о библиотеке и входящих в ее состав инструментах разработки
Как известно, C++ — язык кроссплатформенный на уровне компиляции, т.е. программа для какой-либо операционной системы, написанная на нем, может быть откомпилирована и запущена в другой без каких-либо модификаций (либо с минимальными изменениями) исходных текстов. Однако вышесказанное относится лишь к консольным программам. Функции интерфейсов прикладного программирования (application programming interface, API) для создания графических приложений разнятся для различных операционных систем. В то же время графический интерфейс пользователя (
Поэтому программист, планирующий создавать свои продукты для различных платформ, должен определиться с инструментом для разработки переносимого графического интерфейса. В настоящее время библиотек, предоставляющих такую возможность, существует довольно много: Qt, GTK, Motiff, Tk, U++ и другие. К их числу относится и Juce (Jules' Utility Class Extensions) — кроссплатформенная библиотека для создания приложений для Linux, Windows, Mac OS X, iOS и
Подобно многим другим кроссплатформенным библиотекам (Qt, GTK, U++ и др.), Juce является универсальной, т.е. предоставляет не только средства для разработки графического интерфейса пользователя (GUI toolkit), но и набор классов для различных нужд (работа с графикой, звуком, сетью, XML и т.п.). За счет этого разработчики могут создавать с помощью Juce приложения различной направленности без использования дополнительных библиотек. Именно это и является основной целью Juce и определяет ряд особенностей, выделяющих ее в ряду других универсальных GUI toolkit'ов. В отличие от тех же Qt и GTK кроссплатформенность Juce достигается за счет прорисовки собственных оригинальных элементов пользовательского интерфейса с применением низкоуровневых системных функций вместо использования "родных" компонентов / виджетов для каждой платформы (рис 1.1). Даже заголовок и рамку окна Juce по умолчанию рисует самостоятельно, хотя можно программно переключиться на стандартное обрамление окон.
(рис 1.1) Оригинальный внешний вид виджетов в демонстрационной программе Juce Demo, входящей в поставку библиотеки (версия 1.53)
Подобный подход можно рассматривать и как достоинство, и как недостаток библиотеки. С одной стороны, этим достигается попиксельная идентичность интерфейсов приложений на всех поддерживаемых платформах, а для Linux — решение проблемы множественной зависимости. С другой стороны, Juce не слишком подходит для приложений, интегрированных в ту или иную графическую среду, поскольку принципиально не может эмулировать внешний вид системных компонентов / виджетов. Тем самым, основная цель Juce — создание программ с оригинальным внешним видом, не зависящих от внешних библиотек.
Впрочем, Juce предоставляет возможность по выбору программиста использования элементов оформления целевой операционной системы (заголовок окна, системные диалоги).
Первоначально Juce была разработана как часть кроссплатформенного аудио-редактора и
Однако Juce содержит достаточно средств для разработки и иных программ любой степени сложности, и автор надеется, что этот курс вызовет заслуженный интерес к этой замечательной библиотеке.
Официально подтверждена правильная работа Juce со следующими компиляторами:
Во избежание ошибок на этапе компиляции при работе под Windows не рекомендуется использование MinGW, но поскольку среда разработки MS Visual Studio Express Edition вполне официально бесплатна, то выбор компилятора не должен стать проблемой для тех, кто собирается использовать Juce для разработки открытых приложений или в учебных целях.
Права на библиотеку Juce принадлежат компании Raw Material Software ( http://www.rawmaterialsoftware.com/juce.php), расположенной в Великобритании, хотя по сути инструмент разработки написан и поддерживается одним-единственным человеком, программистом Julian Storer (рис 1.2).
(рис 1.2) Julian Storer, разработчик библиотеки Juce. Шутливая подпись под фотографией сообщает, что каждый волосок в бороде соответствует одной строчке кода визуального редактора компонентов библиотеки, Jucer
Далее мы будем работать с Open-Source версией библиотеки. Загрузить ее актуальную версию можно с SourceForge по следующей ссылке: http://sourceforge.net/projects/juce/files/. Актуальной на момент создания курса была версия 2.0 библиотеки.
Для установки библиотеки необходимо собрать ее из исходных текстов и просто поместить папку juce с собранной библиотекой в каталог, где будут находиться папки с вашими проектами Juce-программ. Кроме того, для комфортной работы нам потребуется откомпилировать две вспомогательные программы: Introjucer (для создания проектов Juce; в старых версиях библиотеки она называлась Jucer) и the jucer (для визуальной компоновки и редактирования компонентов с последующей генерацией C++ кода).
Здесь мы рассмотрим сборку библиотеки версии 1.53 для Linux и Windows. Установка Juce 2.0 не требует ее сборки и описана в конце лекции.
Распакуйте архив с Juce в какой-нибудь каталог. Откройте консоль и перейдите в папку <каталог Juce>/juce/Builds/Linux. Наберите в консоли make, после чего библиотека будет собрана.
После этого откомпилируем Introjucer. Откройте консоль и перейдите в папку <каталог Juce>/juce/extras/Introjucer/Builds/Linux. Наберите в консоли ). В этом случае необходимо отредактировать Makefile вручную, добавив в секцию LDFLAGS соответствующие флаги связывания (например, мне понадобилось добавить -ldl и -lXext).
(рис 1.3) Иногда при сборке программ, использующих Juce, в Linux возникает ошибка связывания
Сборку Linux-проектов Juce целесообразно проводить в дистрибутивах, основанных на Debian; в этом случае ошибок не возникает. Поскольку библиотека Juce связывается статически, никаких проблем зависимостей при запуске программ, созданных на ее основе, под другими дистрибутивами не будет.
Сборку the jucer осуществляют аналогично, перейдя в папку <каталог Juce>/juce/extras/the jucer/build/linux. В случае ошибки связывания отредактируйте файл Jucer.make вручную, добавив в секцию LDFLAGS флаги -ldl, -lXext и -lrt.
Для знакомства с возможностями Juce будет нелишним собрать демонстрационную программу Juce Demo (рис 1.1). Откройте консоль и перейдите в папку <каталог Juce>/juce/extras/JuceDemo/Builds/Linux. Наберите в консоли make GONFIG=Release. В случае ошибки связывания отредактируйте файл Makefile вручную, добавив в секцию LDFLAGS флаги -ldl и -lXext.
Распакуйте архив с Juce в какой-нибудь каталог. Перейдите в папку <каталог Juce>/juce/Builds/VisualStudio2010 (подразумевается, что в качестве среды разработки используется MS Visual C++ 2010; в противном случае перейдите в соответствующую папку в каталоге Builds). Откройте решение Juce.sln и нажмите клавишу F7, после чего библиотека будет собрана.
После этого откомпилируем Introjucer. Откройте консоль и перейдите в папку <каталог Juce>/juce/extras/Introjucer/Builds/VisualStudio2010. Откройте решение The Introjucer.sln, выберите в выпадающем списке "Конфигурация решений" стандартной панели инструментов значение Release и нажмите клавишу F7, чтобы собрать программу.
В составе библиотеки Juce 1.53 для сборки the jucer имеются лишь проекты MS Visual C++ 6 и MS Visual C++ 2008. Тем не менее, последний вполне успешно компилируется в MS Visual Studio 2010 (рис 1.4). Перейдите в папку <каталог Juce>/juce/extras/the jucer/build/vc8, откройте проект jucer.vcproj, выберите в выпадающем списке "Конфигурация решений" стандартной панели инструментов значение Release и нажмите клавишу F7, чтобы собрать программу.
(рис 1.4) Проект the jucer собран в MS Visual Studio 2010
Для знакомства с возможностями Juce будет нелишним собрать демонстрационную программу Juce Demo (рис 1.1). Перейдите в папку <каталог Juce>/juce/extras/JuceDemo/Builds/VisualStudio2010 и нажмите F7.
Теперь у вас есть все необходимые инструменты для написания программ, использующих Juce.
В отличие от версии 1.53, Juce 2.0 не требует сборки. Установка библиотеки заключается в распаковке архива ), которая при запуске загрузит модули библиотеки.
Для Linux готовой сборки Introjucer нет. Для того, чтобы собрать программу, необходимо перейти в каталог juce, после чего в extras/Introjucer/Builds/Linux и набрать make.
Introjucer позволяет обновлять модули Juce. Для этого необходимо выбрать в меню ).
(рис 1.5) Окно выбора модулей Juce для обновления
Juce представляет собой кроссплатформенный инструмент для разработки графического интерфейса пользователя, а также универсальную библиотеку классов для решения различных задач.
Компоненты, входящие в состав Juce, обеспечивают попиксельную идентичность интерфейса создаваемых программ под различными операционными системами.
Основное предназначение Juce — создание программ с оригинальным внешним видом, не зависящих от внешних библиотек, а также приложений для обработки звука.
Распространяется Juce в виде исходных текстов под двумя типами лицензий: свободной и коммерческой.
В состав Juce входят вспомогательные программы: Introjucer для создания проектов и the jucer, отвечающий за визуальное проектирование компонентов.
Соберите библиотеку Juce версии 1.53 (либо установите Juce 2.0), а также соберите входящие в ее состав вспомогательные программы и демонстрационное приложение для платформы, под которой Вы намерены вести разработку.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.