Написание приложений для linux

Создание графических приложений

Цилюрик О.И.

Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Это не описание как делать GUI приложения в Linux, это описание того, как ПРИСТУПИТЬ к созданию графических приложений в Linux, и, хотелось бы надеяться что это прозвучит — чем принципиально программирование графики в Linux отличается от того же занятия в Windows. Главным требованием здесь была простота. Сделав простейший шаблон GUI прложения, дальше двигаться уже гораздо проще. Кроме того, все эти простейшие приёмы программирования показаны сравнительно: на основе основных графических технологий (библиотек), используемых в UNIX.

Все примеры к тексту вы можете скачать в виде общего архива.

Создание приложений, взаимодействующих с пользователем посредством графического интерфейса (GUI приложений), является частным классом задач, отдельной областью программирования. Из числа других подобных областей приложения можно было бы привести, как примеры:

  • реализация алгоритмов цифровой обработки сигналов (DSP): быстрые спектральные преобразования (FFT и другие), вэйвлеты, авторегрессионные разложения. ;
  • обработка аудио-потоков (пакеты: sox, ogg, speex и другие);
  • задачи IP-телефонии, SIP протокола, реализация разнообразных программных SoftSwitch;

Это сравнительный ряд автономных областей развития приведен как пример таких частных классов, одним из которых является и разработка GUI приложений. И как частный класс, со своей спецификой инструментов и средств, он не заслуживал бы отдельного упоминания, если бы не одно обстоятельство — принципиально отличающееся, диаметрально противоположное отношение к GUI в операционных системах семейства Windows и в UNIX (и в Linux, как его частный вид):

  • В Windows каждое приложение является принципиально GUI, неотъемлемым атрибутом любого приложения в Win32 API (низкого уровня) является главное окно приложения, уже само приложение «вяжется» вокруг его главного окна. Операционная система регистрирует классы окон и уже далее к ним соотносит конкретные приложения. Не может существовать приложения (взаимодействующего с пользователем, не системные службы) без окна, с этим были связаны и первоначальные сложности Windows в реализации консольных (терминальных) приложений.
  • в UNIX картина принципиально обратная: первичным является приложение, которое, по умолчанию, является консольным, текстовым, вся графическая система не является составной частью операционной системы, а является надстройкой пользовательского уровня. Чаще всего такой графической надстройкой является X11 (в реализации Xorg или X11R5), но и это не обязательно: практиковались и другие графические системы, хороший пример тому графические системы Qwindow, а затем Photon в операционной системе QNX, сосуществующие там одновременно с X11.
  • Показательно в этом смысле то, что вся оригинальная часть реализации X11 работает в пространстве пользователя, не в привилегированном режиме ядра (супервизора): работа с аппаратурой видеоадаптеров, устройствами ввода и другое. Отдельные реализации (видеосистемы NVIDIA или ATI Radeon) могут быть реализованы в режиме ядра (модули), но это а) сторонние относительно X11 разработки, и б) решение вопросов только производительности.
Читайте также:  Брутфорс wordpress kali linux

Из-за обозначенной специфики, разработка GUI приложений в UNIX (Linux) принципиально отличается:

  • вся работа GUI приложений ведётся через промежуточные слои (библиотеки) пользовательского уровня;
  • из-за того, что это ординарный пользовательский уровень, для разработчика предлагается широкий спектр альтернативных инструментов (библиотек), практически равнозначных, и конкурирующих друг с другом: Xlib, GTK+, Qt, wxWorks и многие другие.
  • базовый API работы с X11 предоставляет Xlib, все другие используют уже её функционал, как это показано на рисунке.

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

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

Средства Xlib (архив Xlib.tgz ):

Средства GTK+ (архив GTK+.tgz ):

$ gcc gtk.c -o gtk `pkg-config —cflags —libs gtk+-2.0`

Средства Qt (архив Qt.tgz ):

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

Теперь проделываем последовательно:

Исходя из «подручных» файлов исходных кодов, у нас сгенерировался файл проекта и, далее, сценарий сборки ( Makefile ). Далее проделываем традиционную сборку, а заодно и посмотрим опции компиляции и сборки, которые нам сгенерировал проект:

g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables

g++ -o Qt index.o -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm

index.cc index.o Makefile Qt Qt.pro

Средства wxWidgets (архив wxWidgets.tgz):

$ g++ simple.cc `wx-config —cxxflags` `wx-config —libs` -o simple

Средства GLUT (архив glut.tgz):

OpenGL Utility Toolkit, как и следует из названия, это средства использования технологии OpenGL в приложениях, которая требует определённой поддержки со стороны видео оборудования.

$ gcc glut.c -o glut -lX11 -lglut

То, что показано выше, это фактически не приложения, а скелеты приложений, но они позволяют: а) сравнить подобие всех GUI технологий в X11, и б) быть отправной точкой для сборки более содержательных GUI приложений. Показано только несколько GUI технологий, применяемых в X11 (большинство из них являются кросс-платформенными, и применимы в большинстве существующих операционных систем). Каждая из этих технологий, а названы только немногие из значительно большего числа, присутствующих в UNIX, могут быть полной альтернативой любой другой из этого же ряда, они взаимно заменимы, и даже взаимно дополняемые.

В данной статье были показаны образцы кода GUI приложений. Естественно, визуальные образы таких приложений строятся не путём непосредственного кодирования, а при использовании некоторых визуальных построителей, в составе тех или иных интегрированных средств разработки (IDE).

Читайте также:  Доступ дискам linux windows

Источник

10 лучших сред разработки (IDE) для Linux

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

Для тех, кто не в курсе Linux — это open-source операционная система, которая используется по всему миру на компьютерах, серверах, в игровой сфере и т.д. Ее очень любят за безопасность, стабильность, конфиденциальность, продвинутый контроль + здесь подавляющая часть приложений бесплатны. Она предоставляет программистам некоторые преимущества — тот, кто умеет программировать в Linux, сможет без проблем построить карьеру в области системного администрирования и получить хорошую должность на рынке (такие знания будут отличным плюсом в резюме).

Хотя, если говорить о программировании в целом, то не особо важно какой ОС вы пользуетесь — многие из представленных ниже сред разработки под Linux отлично подходят и для Win/Mac. Сейчас даже можно найти разные компиляторы в сети, например запустить то же python онлайн для решения каких-то задач. Хотя локально работать все же быстрее и удобнее.

Выбор того или иного варианта зависит от ваших предпочтений. В списке находятся не все доступные программные продукты и он не является каким-то рейтингом — воспринимайте статью как перечень одних из лучших IDE для Linux, с которыми следует ознакомиться в первую очередь.

1. Eclipse

Бесплатный редактор с открытым кодом, созданный для тяжелой разработки на Java. Может работать с языками программирования: Ruby, Java, C, Perl, Python, PHP, C++ и другие.

  • Поддержка большого количества языков программирования.
  • Много плагинов для расширения возможностей.
  • Инструменты для Java EE проектов.
  • Инструменты для разработки на Java.
  • Среда разработки плагинов.
  • Интеграция с Junit.
  • Поддержка системы Git.

2. Bluefish

Это бесплатный и открытый проект, который ориентирован как на Web-разработчиков, так и на обычных программистов. Может работать с: ASP .NET, HTML5, C++, C, CSS, JS, Pearl, Ruby, Java, PHP, SQL, XML.

  • Быстрый и чистый.
  • Легкий.
  • Поддерживает многопоточность.
  • Неограниченное выполнение команд отменить/повторить.
  • Много разнообразных инструментов.
  • Авто-восстановление после крашей.
  • Мощный инструмент поиска и замены.

3. NetBeans

Бесплатная и открытая IDE от Sun Microsystems. Поддерживает такие ЯП как: Java, Python, C++, C, Ruby, PHP, JavaScript.

  • Удобный интерфейс.
  • Кросс-платформенная.
  • Динамические и статические библиотеки.
  • Мульти-сессионный интегрированный отладчик GNU.
  • Рефакторинг в редакторе, Обработчик классов и навигатор.
  • Поддержка инструментов Qt.
  • Универсальные команды Run и Debug.

4. Zend Studio

PHP программисты используют Zend для быстрого написания кода, легкого решения проблем и свободного интегрирования в облако. Zend Studio, PHP Unit и Composer образуют одно целое и становятся мощным инструментом для мобильных и PHP разработчиков.

Читайте также:  Synaptic linux ��� ���

Работает с такими языками как: HTML, PHP, JavaScript.:

  • Поддержка большинства баз данных.
  • Обнаружение ошибок в реальном времени.
  • Рефакторинг кода.
  • Параметры управления исходным кодом.
  • Локальная и серверная отладка.

5. Komodo IDE

Эта IDE под Linux, созданная в Mozilla, заслужила множество наград. Поддерживает языки программирования: Python, PHP, HTML, Perl, RHTML, C, CSS, C++, JS, Ruby, Django. Основные фишки:

  • Кросс-платформенная.
  • Профилирование кода для PHP и Python.
  • Графическая отладка.
  • Расширенные функции редактирования с многооконным и разделенным видом.
  • Множество дополнений.
  • Много настроек для кастомизации.
  • Отладка и развертывание в Stackato PaaS.

Цена: обычная и образовательная лицензии — бесплатны, а персональная и предпринимательская версии — по 89 и 295 долларов соответственно.

6. Anjuta

Универсальная IDE, которая включает в себя ряд расширенных возможностей, таких как мастер приложений, редактор исходного кода, управление проектами и версиями, профилировщик, отладчик, дизайнер графического интерфейса и другие инструменты. Anjuta предоставляет простой графический интерфейс и достаточные мощности для систематической разработки. Поддержка языков: C и C++.

  • Простой пользовательский интерфейс.
  • Мастер проектов и готовые шаблоны.
  • Интегрированный Glade.
  • Интегрированный DevHelp.

7. MonoDevelop

Эта IDE создана для C#, но также поддерживает другие языки и позволяет разработчикам быстро писать десктопные и ASP.NET Web приложения для Linux. Это кросс-платформенный продукт, который делает простым процесс извлечения .NET приложений, созданных в Visual Studio, в Linux без потери исходного кода.

Может работать с языками: VB, C, C++, Python, C#, Java.

  • Изменяемое рабочее пространство, которое соответствует виду вашего рабочего процесса.
  • Встроенный отладчик.
  • Визуальный дизайнер.
  • Развертывание и тестирование.
  • Объектно-ориентированный API.
  • Инструменты для увеличения возможностей.

8. CodeLite

Бесплатный проект с открытым исходным кодом для разработки на C++ и C под разные платформы. Полезные фишки:

  • Встроенная поддержка GDB, GCC, clang, VC++.
  • Плагины GIT.
  • Подсветка синтаксиса для различных языков.
  • 2 механизма, завершающих код, которые работают одновременно.
  • Просмотр локальных потоков процессора, просмотр дерева и памяти.

9. Kdevelop

Полноценная и расширяемая IDE для C, C++, PHP и Ruby. Основные преимущества:

  • Кросс-платформенная.
  • Используется для KDE/QT разработки.

10. Geany

Хотя Geany имеет базовые возможности IDE, он является текстовым редактором, который работает на GTK2 библиотеке. Он был спроектирован так, чтобы стать маленькой и быстрой IDE. Поддерживаемые языки: HTML, PHP, Java, C, Perl, Pascal, Python.

  • Автоматическое закрытие тегов XML и HTML.
  • Развитая система навигации по коду.
  • Работает на нескольких платформах.
  • Позволяет создавать пользовательские плагины.
  • Свертывание кода и подсветка синтаксиса.
  • Простое управление проектом.

Как уже сказал выше, были рассмотрены далеко не все среды разработки для Linux, есть и другие хорошие решения: IDE от JetBrains, Code::Blocks и Qt Creator. Расскажите в комментариях ниже о тех приложениях, что вы используете у себя.

Источник

Оцените статью