Быстрая разработка приложений с помощью привязок GTK+

Быстрое программирование GUI-интерфейсов

В статье показаны возможности ускоренной разработки GTK+ приложений c использованием языковых привязок. Рассмотрены языки и инструменты, применимые для ускоренной разработки высококачественных приложений.

Мацей Катафьяж, студент, будущий it-специалист

Мацей Катафиш (Maciej Katafiasz) является аспирантом в области компьютерных наук и еще со средней школы использует технологии с открытым исходным кодом. Он пользуется рабочим столом GNOME с версии 1.0, а после версии 2.0 Мацей выучил GTK+, чтобы развивать любимый рабочий стол.



18.06.2009

Многие из разработчиков предпочитают программировать на языке C. Но он подходит не для всех ситуаций, поэтому разработка простых GUI-приложений на языке С может занять много времени. Если не нужно выполнять "тяжелые" вычисления или создавать низкоуровневую программу для взаимодействия с низкоуровневыми элементами системы, то преимущества языка С становятся его недостатками и приводят к лишним затратам времени разработчиков.

В связи с этим было разработано множество различных инструментов, которые помогают разработчику сконцентрироваться на создании важного функционального кода и избавляют его от необходимости заниматься запутанными и надоедливыми аспектами низкоуровневого программирования. Эти инструменты включают в себя высокоуровневые языки программирования, интегрированные среды разработки и различные утилиты для упрощения или автоматизации выполнения различных распространенных задач. Данная статья не ставит своей целью детальное рассмотрение всех этих аспектов; ниже представлен обзор различных параметров, доступных при работе с инструментарием GTK+.

Привязки

Понимая необходимость работы с различными инструментами, команда разработчиков GTK+ начала создавать библиотеку, которую можно было бы быстро и легко привязать к различным языкам программирования. Под языковой привязкой (language binding) понимается своего рода клей, который позволяет одному языку программирования предоставлять "родной" интерфейс программисту, в то же время фактически делегируя выполнение всей работы базовой библиотеке, написанной на другом языке. Таким образом, та же низкоуровневая природа C, которая затрудняет работу с этим языком, становится хорошим выбором для основы подобных высокоуровневых связок из-за распространенности использования языка C, так как все могут использовать этот язык.


Подробный обзор

Список языков, в которых можно реализовать привязку к GTK+, достаточно обширен, причем в каждом языке для реализации привязки существует независимый проект со своим собственным уровнем поддержки и завершенности (см. дополнительную информацию в разделе Ресурсы). Однако есть несколько удачных и популярных решений, на примере которых можно показать, как самые различные языки программирования могут использоваться для программирования GTK+.

Python

Одна из наиболее популярных привязок реализована для языка Python (Python set) проектом PyGTK. Благодаря исключительному качеству работы и удобству языка Python, PyGTK является одной из наиболее известных привязок и единственной привязкой, которая официально включена в ядро выпускаемой версии рабочего стола GNOME. Это означает, что Python (как и сам проект PyGTK) был признан достаточно популярным и удобным для создания приложений GNOME вместо применения инструментов сторонних компаний. Конечно, это не означает, что другие привязки являются плохими, однако при наличии опыта работы с языком Python проект PyGTK будет оценен по достоинству.

Кроме основного набора библиотек GTK+ Python полностью охватывает платформу разработки GNOME. Поэтому при создании приложений можно пользоваться всеми доступными средствами платформы GNOME, что приведет к более рациональному использованию времени разработки.

C# и Microsoft NET

Microsoft® .NET, инфраструктура разработки приложений от гиганта из Редмонда, популярна и на других платформах, кроме Microsoft Windows®, благодаря своей бесплатной реализации - проекту Mono. Эта реализация получилась на удивление удачной. Фактически существует большая вероятность, что распространенным GUI-инструментарием для .NET будет не WinForms от Microsoft, а GTK+. Так как набор привязок Gtk# встроен в стандартный дистрибутив Mono и благодаря GTK+ как таковому, GTK+ приобретет популярность у программистов, которые хотят разрабатывать приложения для GNOME с использованием новой платформы .NET. Благодаря высокой производительности .NET с помощью C#.

Заметим, что несмотря на свое название Gtk# также включает подходящие привязки для многих библиотек GNOME, позволяя при необходимости использовать платформу GNOME (если в рабочей системе присутствуют необходимые библиотеки GNOME). Gtk# переносим на Windows, поэтому портирование не займет много времени.

Haskell

Haskell, функциональный язык программирования, очень сильно отличается от остальных языков программирования, которые являются достаточно строгими. Благодаря такому радикально отличающемуся от стандартных языков подходу выразительные возможности языка Haskell являются незаменимыми во многих приложениях, особенно связанных с математическими вычислениями. Поэтому данный язык является очень мощным инструментом, и, используя результаты работы проекта Gtk2Hs, можно к сложным математическим вычислениям создать удобный пользовательский интерфейс (UI).

В Gtk2Hs входят привязки для рабочих столов различных версий (вплоть до GTK+ V2.8), поддержка важных инструментов, например, libglade, хорошая документация и программный интерфейс пользователя, идентичный интерфейсу традиционных языков программирования, так как функциональное программирование не является правильным путем для реализации GUI-интерфейсов. Кроме того, благодаря структуре подсчета ссылок, которую реализует GTK+, Gtk2Hs, в отличие от других GUI-библиотек для Haskell (например, wxHaskell), можно использовать без тщательной проработки механизмов управления памятью.

Язык Java

Возвращаясь к традиционным языкам программирования, язык Java™, один из наиболее популярных, не имеет каких-либо значительных недостатков. Результатом работы по проекту Java-GNOME стал устойчивый набор привязок, который охватывает последние версии библиотек GTK+ и GNOME. И только для языка Java добавлена возможность использования GTK+ через библиотеку Eclipse Standard Widget Toolkit (SWT). Благодаря этому факту и тому, что GTK+ очень легко использовать совместно с Java, на этом языке программирования очень удобно создавать приложения для настольных систем.

Основные замечания по языковым привязкам

При создании кода с GTK+ и привязками надо учитывать, что хотя все обычные возможности библиотеки остаются доступными, могут быть некоторые области (в зависимости от совершенства и типа используемого языка программирования), где полная поддержка всех возможностей, которые достижимы при помощи языка C, недоступна. В частности, наследование классов достаточно проблематично реализуется для языков сценариев, что накладывает ограничение на диапазон задач, который можно решить с их помощью. Над этим вопросом напряженно работают команды разработчиков языков программирования; для того чтобы узнать, какие ограничения наложены на какой-либо конкретный язык программирования, стоит ознакомиться с его документацией.

Чтобы облегчить отслеживание и использование подходящих версий привязок, был создан проект GNOME Language Bindings. В настоящее время в этом проекте задействованы четыре языка (Python, Java, C++, Perl), что гарантирует, что эти языки будут доступны в любой момент и будут охватывать новейшие релизы платформы разработки GNOME (включая последнюю версию GTK+). Очевидно, что другие языки будут поддерживать эти продукты в разной степени, однако языки, входящие в проект GNOME Language Bindings, с большей вероятностью будут более завершенными и своевременными.


Инструменты

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

Разработка пользовательского интерфейса

Из всех доступных инструментов, возможно, наиболее важным инструментом в контексте GTK+ программирования является libglade. Используя libglade (см. статью GTK+ fundamentals, Part 2: How to use GTK+), можно получить значительные улучшения в четкости, модульности, краткости, ремонтопригодности кода за счет отделения процесса определения и создания внешнего вида пользовательского интерфейса от процесса написания программного кода для этого интерфейса (логики приложения).

Из-за ключевой важности утилиты libglade разработчики языковых привязок реализуют поддержку libglade (даже если эта утилита пока не является частью библиотеки GTK+) в своих языках. Однако, пока используете GTK+, можете быть уверены, что выбранный язык поддерживает libglade.

Чтобы использовать утилиту libglade, необходимо создать для нее файлы описания интерфейса. Для выполнения этой задачи можно использовать несколько приложений, начиная с оригинального Glade2, в честь которого и была названа библиотека. Однако из-за некоторых ограничений текущей стабильной версии Glade2 и задержки с выпуском Glade3 была создана пара альтернативных редакторов пользовательского интерфейса (UI). Из них самым лучшим на сегодняшний день является Gazpacho (см. раздел Ресурсы), созданный как реализация на языке Python конструкторских решений Glade3. Gazpacho также поддерживает другую реализацию libglade на языке Python, лучше приспособленную для нужд приложений PyGTK+.

IDE

Другой категорией вспомогательных инструментов являются интегрированные среды разработки (IDE) различных видов, которые разработаны для предоставления всесторонней помощи по каждому этапу разработки ПО. Приспособленные для определенного языка программирования, IDE могут предложить значительную помощь программистам. Среди IDE проект Mono/.NET обладает хорошей поддержкой как от оригинального создателя .NET (Microsoft), так и от сообщества, собравшегося вокруг проекта Mono, в ходе которого была разработана сопровождающая IDE с названием MonoDevelop. Так как Gtk# является набором инструментов создания GUI для создателей Mono и MonoDevelop, он также имеет замечательную поддержку; однако при использовании инструментальных средств от Microsoft можно легко установить соответствующие пакеты расширений в среду разработки Microsoft Visual Studio®.

Точно так же у Java-программистов есть великолепная интегрированная среда разработки Eclipse. Реализация поддержки GTK+ кода не ограничивается импортом библиотек в проект. Подробные инструкции находятся на странице проекта Java-GNOME (см. раздел Ресурсы).

Еще один способ улучшить продуктивность программирования

Для повышения продуктивности программирования существуют большие возможности помимо комбинирования языков программирования. Одна из наиболее полезных техник - встраивание - пришла из принципа каждой работе - специальный инструмент.

Согласно этому правилу, базовое приложение (лежащее в основе UI), часто с достаточно строгими требованиями к производительности, написано на низкоуровневом языке, таком как C, для более эффективного взаимодействия с аппаратной частью. Далее приложение использует расширенный интерфейс, написанный на высокоуровневом языке, чтобы легче было выполнять настройку его работы и возможное улучшение.

Используя встраиваемые сценарии, можно достичь сразу двух целей - тонко настроить основную часть программы и реализовать легкую расширяемость. Python - язык, идеально подходящий для создания встраиваемых приложений, поскольку специально разрабатывался для этих целей. Демонстрацией того, как подобная комбинация может хорошо работать, являются проекты Nautilus и Epiphany рабочего стола GNOME с их расширенным интерфейсом API к программам на языке Python. Благодаря краткости Python можно успешно создавать полезные расширения длиной всего лишь в несколько строк кода.


Повышение качества работы

Как было показано выше, для ускорения разработки GUI-приложений для GTK+ существует множество различных способов. В этой небольшой статье были только кратко рассмотрены эти возможности, но используя эту информацию и ссылки в разделе Ресурсы, можно изучить возможности определенного языка программирования и сопутствующих ему инструментальных средств с целью повышения качества работы и выполнения ее в более сжатые сроки.

Ресурсы

Научиться

Получить продукты и технологии

  • Libglade: : домашняя страница libglade (EN).
  • Gazpacho: Gazpacho, редактор для файлов описаний Glade UI (EN).
  • Epiphany: Web-браузер GNOME, созданный на языке Python (EN).
  • Java-GNOME: проекты Java-GNOME создали набор Java-привязок для библиотек GTK+ и GNOME (EN).
  • PyGTK: набор языковых привязок для Python (EN).
  • Gtk#: языковые привязки для C# и платформы Microsoft .NET (EN).
  • Gtk2Hs: привязки Gtk2Hs, созданные для языка функционального программирования Haskell (EN).
  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=398188
ArticleTitle=Быстрая разработка приложений с помощью привязок GTK+
publish-date=06182009