Опубликован: 13.07.2012 | Доступ: свободный | Студентов: 460 / 8 | Оценка: 5.00 / 5.00 | Длительность: 18:06:00
Специальности: Программист
Лекция 1:

Введение

Лекция 1 || Лекция 2 >
Аннотация: В этой лекции приводятся общие сведения о библиотеке Juce и рассказывается о ее получении и установке

Цель лекции: Получить общее представление о библиотеке и входящих в ее состав инструментах разработки

Как известно, C++ — язык кроссплатформенный на уровне компиляции, т.е. программа для какой-либо операционной системы, написанная на нем, может быть откомпилирована и запущена в другой без каких-либо модификаций (либо с минимальными изменениями) исходных текстов. Однако вышесказанное относится лишь к консольным программам. Функции интерфейсов прикладного программирования (application programming interface, API) для создания графических приложений разнятся для различных операционных систем. В то же время графический интерфейс пользователя (graphic user interface, GUI) уже давно стал стандартом де-факто по крайней мере для прикладных программ.

Поэтому программист, планирующий создавать свои продукты для различных платформ, должен определиться с инструментом для разработки переносимого графического интерфейса. В настоящее время библиотек, предоставляющих такую возможность, существует довольно много: Qt, GTK, Motiff, Tk, U++ и другие. К их числу относится и Juce (Jules' Utility Class Extensions) — кроссплатформенная библиотека для создания приложений для Linux, Windows, Mac OS X, iOS и Android.

Подобно многим другим кроссплатформенным библиотекам (Qt, GTK, U++ и др.), Juce является универсальной, т.е. предоставляет не только средства для разработки графического интерфейса пользователя (GUI toolkit), но и набор классов для различных нужд (работа с графикой, звуком, сетью, XML и т.п.). За счет этого разработчики могут создавать с помощью Juce приложения различной направленности без использования дополнительных библиотек. Именно это и является основной целью Juce и определяет ряд особенностей, выделяющих ее в ряду других универсальных GUI toolkit'ов. В отличие от тех же Qt и GTK кроссплатформенность Juce достигается за счет прорисовки собственных оригинальных элементов пользовательского интерфейса с применением низкоуровневых системных функций вместо использования "родных" компонентов / виджетов для каждой платформы ( рис. 1.1). Даже заголовок и рамку окна Juce по умолчанию рисует самостоятельно, хотя можно программно переключиться на стандартное обрамление окон.

Оригинальный внешний вид виджетов в демонстрационной программе Juce Demo, входящей в поставку библиотеки (версия 1.53)

Рис. 1.1. Оригинальный внешний вид виджетов в демонстрационной программе Juce Demo, входящей в поставку библиотеки (версия 1.53)

Подобный подход можно рассматривать и как достоинство, и как недостаток библиотеки. С одной стороны, этим достигается попиксельная идентичность интерфейсов приложений на всех поддерживаемых платформах, а для Linux — решение проблемы множественной зависимости. С другой стороны, Juce не слишком подходит для приложений, интегрированных в ту или иную графическую среду, поскольку принципиально не может эмулировать внешний вид системных компонентов / виджетов. Тем самым, основная цель Juce — создание программ с оригинальным внешним видом, не зависящих от внешних библиотек.

Впрочем, Juce предоставляет возможность по выбору программиста использования элементов оформления целевой операционной системы (заголовок окна, системные диалоги).

Первоначально Juce была разработана как часть кроссплатформенного аудио-редактора и MIDI-секвенсера Tracktion, выпущенного Raw Material Software в 2002 году, и лишь в 2004 году была опубликована как самостоятельный инструмент разработки. До сих пор основная ниша Juce — написание приложений для работы со звуком. Библиотека включает в себя поддержку воспроизведения звука через аудио и MIDI интерфейсы, полифонические синтезаторы, понимает файлы распространенных аудиоформатов (таких как WAV, AIFF, FLAC и Vorbis). Начиная с версии 2.0 включена поддержка воспроизведения MP3 и WMA.

Однако Juce содержит достаточно средств для разработки и иных программ любой степени сложности, и автор надеется, что этот курс вызовет заслуженный интерес к этой замечательной библиотеке.

Поддерживаемые компиляторы

Официально подтверждена правильная работа Juce со следующими компиляторами:

  1. для операционной системы Linux это g++, входящий в состав GCC, начиная с версии 3.3;
  2. для операционных систем линейки Windows это Microsoft Visual Studio (начиная с версии Visual C++ 6; поддержка Visual C++ 2010 введена, начиная с версии Juce 1.52). Библиотека Juce обеспечивает взаимную совместимость программ, собранных для Windows XP, Vista и Windows 7;
  3. для Mac OS X это GCC, входящая в состав инструмента разработки XCode (для OS X 10.4 или более поздней);
  4. для создания нативных приложений iPhone и iPad также используется XCode;
  5. для разработки под Android необходимы Ant, Eclipse и Android NDK 5 версии (при сборке проектов Juce с помощью 6 и 7 версий возникает ошибка связывания, linker error). Хотя возможность создания Android-приложений и была включена в Juce, начиная с версии библиотеки 1.53, работа над ее совершенствованием еще продолжается, поэтому разработка под эту операционную систему не рассматривается в данной книге.

Обратите внимание!

Во избежание ошибок на этапе компиляции при работе под Windows не рекомендуется использование MinGW, но поскольку среда разработки MS Visual Studio Express Edition вполне официально бесплатна, то выбор компилятора не должен стать проблемой для тех, кто собирается использовать Juce для разработки открытых приложений или в учебных целях.

Получение и типы лицензий

Права на библиотеку Juce принадлежат компании Raw Material Software ( http://www.rawmaterialsoftware.com/juce.php), расположенной в Великобритании, хотя по сути инструмент разработки написан и поддерживается одним-единственным человеком, программистом Julian Storer ( рис. 1.2).

Julian Storer, разработчик библиотеки Juce. Шутливая подпись под фотографией сообщает, что каждый волосок в бороде соответствует одной строчке кода визуального редактора компонентов библиотеки, Jucer

Рис. 1.2. Julian Storer, разработчик библиотеки Juce. Шутливая подпись под фотографией сообщает, что каждый волосок в бороде соответствует одной строчке кода визуального редактора компонентов библиотеки, Jucer
  1. Juce выпускается под двумя типами лицензий:
  2. GNU Public License, что дает право разработчикам бесплатно получать, распространять библиотеку, используя последнюю для создания исключительно Open-Source приложений;
  3. Коммерческой — для создания закрытых приложений. Коммерческая лицензия на библиотеку не включает ограничений на число мест разработчиков, занятых в проекте, и не предусматривает предоставления технической поддержки: для последней необходимо заключать отдельные контракты. На момент написания курса стоимость одной лицензии составляла ?399 для стран Европейского союза.

Далее мы будем работать с 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 для Linux

Распакуйте архив с Juce в какой-нибудь каталог. Откройте консоль и перейдите в папку <каталог Juce>/juce/Builds/Linux. Наберите в консоли make, после чего библиотека будет собрана.

После этого откомпилируем Introjucer. Откройте консоль и перейдите в папку <каталог Juce>/juce/extras/Introjucer/Builds/Linux. Наберите в консоли make GONFIG=Release для того, чтобы собрать программу. Как правило этого достаточно. В некоторых дистрибутивах Linux (например, Fedora) может появиться ошибка линковщика ( рис. 1.3). В этом случае необходимо отредактировать Makefile вручную, добавив в секцию LDFLAGS соответствующие флаги связывания (например, мне понадобилось добавить -ldl и -lXext).

Иногда при сборке программ, использующих Juce, в Linux возникает ошибка связывания

Рис. 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 для Windows

Распакуйте архив с 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, чтобы собрать программу.

Проект the jucer собран в MS Visual Studio 2010

увеличить изображение
Рис. 1.4. Проект the jucer собран в MS Visual Studio 2010

Для знакомства с возможностями Juce будет нелишним собрать демонстрационную программу Juce Demo ( рис. 1.1). Перейдите в папку <каталог Juce>/juce/extras/JuceDemo/Builds/VisualStudio2010 и нажмите F7.

Теперь у вас есть все необходимые инструменты для написания программ, использующих Juce.

Особенности Juce 2.0

В отличие от версии 1.53, Juce 2.0 не требует сборки. Установка библиотеки заключается в распаковке архива juce_2_0.zip в каталог проектов. Для Windows и Mac OS X существует альтернативный способ: необходимо загрузить исполняемый файл программы Introjucer (по адресу http://sourceforge.net/projects/juce/files/juce/2.0/prebuilt%20binaries/), которая при запуске загрузит модули библиотеки.

Для Linux готовой сборки Introjucer нет. Для того, чтобы собрать программу, необходимо перейти в каталог juce, после чего в extras/Introjucer/Builds/Linux и набрать make.

Introjucer позволяет обновлять модули Juce. Для этого необходимо выбрать в меню Tools > Download the latest JUCE modules. В появившемся диалоговом окне можно выбрать модули для обновления, которые, при наличии активного соединения с интернет, будут загружены ( рис. 1.5).

 Окно выбора модулей Juce для обновления

Рис. 1.5. Окно выбора модулей Juce для обновления

Краткие итоги

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

Компоненты, входящие в состав Juce, обеспечивают попиксельную идентичность интерфейса создаваемых программ под различными операционными системами.

Основное предназначение Juce — создание программ с оригинальным внешним видом, не зависящих от внешних библиотек, а также приложений для обработки звука.

Распространяется Juce в виде исходных текстов под двумя типами лицензий: свободной и коммерческой.

В состав Juce входят вспомогательные программы: Introjucer для создания проектов и the jucer, отвечающий за визуальное проектирование компонентов.

Упражнение

Соберите библиотеку Juce версии 1.53 (либо установите Juce 2.0), а также соберите входящие в ее состав вспомогательные программы и демонстрационное приложение для платформы, под которой Вы намерены вести разработку.

Лекция 1 || Лекция 2 >