Библиотека сайта rus-linux.net
Интегрированные среды разработки
О.И.Цилюрик
Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Все примеры к тексту вы можете скачать в виде общего архива.
Интегрированные средства (среды) разработки (IDE) не являются критически необходимым компонентом программной разработки. В традициях UNIX вполне достаточным для ведения программной разработки считается использование текстового редактора, обладающего дополнительными развитыми свойствами, такими как цветовая разметка текста, функции контекстного поиска и замены... Удовлетворяющих таким требованиям редакторов в Linux великое множество, начиная с традиционных vim и Emacs, и до простого редактирования в mc по F4. Опыт использования показывает, что этих средств вполне достаточно вплоть до средних размеров проектов.
Но использование IDE часто позволяет более производительно вести отработку программного кода, оперативнее выполнять в связке цикл: редактирование кода — сборка проекта — отладка. Значительно возрастает роль IDE в разработке GUI приложений, потому как большинство IDE предполагают в своём составе визуальные построители графических экранов.
Под Linux доступно весьма много разных IDE, различной степени интегрированности. Их уже настолько много, что становится бессмысленным описывать все, или значительную их часть в деталях: использование тех или иных IDE становится, в значительной мере, вопросом субъективных предпочтений и привычек. Можно перечислить только несколько из 1, числа наиболее широко используемых IDE (и показан их внешний вид, чтобы их «различать в лицо»):
- Kdevelop
(http://kdevelop.org/) - среда
разработки проекта KDE, активно развивается с 1998 г. Kdevelop
помимо проектов на языке C, позволяет вести проекты практически на
всех используемых в Linux языках: C++, Perl, Python, PHP, Java,
Fuby, Ada, Bash, Pascal, Fortran. Эта среда позволяет интегрировать
(технология KParts) различные текстовые редакторы, но основным
редактором является Kate.
Kdevelop плотно интегрирован с Linux (в отличие от большинства других IDE он не является много-платформенным). Среда умеет генерировать начальные скелеты приложений. Отличительной особенностью Kdevelop (большим плюсом в некоторых случаях) является то, что среди таких шаблонов есть и проект модуля ядра (драйвера) Linux:
Шаблоны проектов Kdevelop (архив Kdevelop.tgz) достаточно громоздкие. Но это свойственно всем IDE. Вот как выглядит простейший проект, построенный для Cmake, после очистки от построенных исполнимых файлов:
$ make clean
...
$ du -hs
248K.
- Eclipse IDE (Eclipse
Integrated Development Environment, http://www.eclipse.org/)
- одна из наиболее известных на сегодня сред, активно развивается с
2000г., сначала как проприетарный проект IBM, который затем был
превращён в открытый проект. Отличительной особенностью является
возможность динамических расширений (которые может подготовить и
рядовой пользователь), за счёт этого наработаны плагины для
поддержки десятков языков программирования, среди которых: Java,
C/C++, PHP, Python и многих других, число которых постоянно прирастает из-за
лёгкости работы с плагинами.
Эта среда разработки представлена практически для всех операционных систем, за счёт того, что сама она полностью выполнена на Java. Но Eclipse IDE является мульти-платформенной средой не только в смысле множества операционных систем, где она может выполняться, но и множества аппаратных платформ, отличных от x86, для которых может вестись кросс-разработка: ARM, MIPS, PPS ... и даже микроконтроллеры, например, AVR. Помимо средств разработки, в Eclipse IDE включаются в виде плагинов программные эмуляторы других аппаратных платформ (например, Android ARM) для целей отладки. На основе Eclipse IDE сторонними разработчиками создано много других IDE, специализированных под конкретные применения, и это создаёт сложности в выборе конкретной модификации IDE.
Eclipse IDE представлен в репозитариях практически любого дистрибутива Linux, откуда может быть установлен. Но проект развивается очень динамично, поэтому, возможно, есть смысл устанавливать наиболее свежую реализацию с сайта проекта.
На рисунке показан возможный вид в Eclipse IDE минимального проекта, отрабатываемого под архитектуру ARM7:
$ file factorial
factorial:
ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked,
not stripped
- Oracle Solaris Studio
(http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html
- бывший проект Sun Solaris Studio), один из старейших проектов,
изначально ориентирован на операционную систему Solaris, но там же
есть альтернативная реализация для Linux. Компилятор в составе
Solaris
Studio
(сс)
обладает особыми оптимизирующими свойствами и нередко генерирует
более эффективный и быстродействующий код, чем gcc.
Но среда может быть настроена и на использование компилятора gcc.
Ориентирован на языки программирования: C, C++ и Fortran, с
дополнительными плагинами от сторонних производителей
(устанавливаются непосредственно из Solaris Studio): Java, PHP,
Python, Ruby, Ada (но это может потребовать дополнительной установки
Oracle JDK).
Solaris Studio основан на NetBeans IDE, выполнен на Java (как и большинство средств OS Solaris). Имеет очень богатые настройки (архив SolarisStudio.tgz), в том числе и в части используемых компиляторов:
Solaris Studio не представлен в репозитариях дистрибутивов Linux, и должен устанавливаться из инсталляционных файлов с сайта Oracle (указан выше). Установка бинарная.
- IntelliJ IDEA
(http://www.jetbrains.com/idea/),
проект, активно развиваемый с 2000 г., ориентированный на язык Java,
но имеющий развитые инструменты разработки и отладки под Android
(имеет эффективный эмулятор Android, основанный на виртуальной
машине QEMU). Развиваются две реализации IDE: свободная
(общедоступная) и профессиональная (проприетарная).
Вот как выглядит в IntelliJ IDEA проект для Android (архив IDEA.tgz) и эмулятор Android в котором это приложение отлаживается:
При запуске IDEA из терминала вы можете увидеть предупреждение:
$ ./idea.sh
OpenJDK Runtime Environment (IcedTea6 1.8.3) (fedora-43.1.8.3.fc12-i386)
OpenJDK Server VM (build 14.0-b16, mixed mode)
WARNING: You are launching IDE using OpenJDK Java runtime
...
NOTE: If you have both Sun JDK and OpenJDK installed
please validate either IDEA_JDK or JDK_HOME environment variable points to valid Sun JDK installation
- Но это предупреждение, в равной мере, относится ко всем IDE, реализованным на Java (а все наиболее развитые IDE реализованы именно на Java: Eclipse IDE, Solaris Studio, ...) - все они предпочитают (работают эффективнее) использование оригинального Sun JDK, а не OpenJDK. Sun JDK можно свободно загрузить с сайта Oracle и установить в своей системе (пожалуй, это следует сделать, если вы планируете активно использовать IDE построенные на Java).
- Code::Blocks
IDE (http://www.codeblocks.org/)
— свободная много-платформенная среда разработки, сама система
написана на С++, с использованием переносимой графической библиотеки
wxWidgets (http://www.wxwidgets.org/).
Поддерживает языки программирования С и С++, но для разнообразных
операционных систем (Windows, Linux, Mac OS X), среду можно собрать
практически под любую UNIX систему, например FreeBSD. Обеспечивает
кросс-разработку под ряд используемых процессорных платформ (ARM,
AVR). Среда создаёт шаблоны приложений и поддерживает разработку для
многих графических платформ (GTK+, Qt, wxWidgets, GLUT и другие),
поэтому может оказаться особенно удобной для проектирования GUI
приложений.
Эта среда предполагает использование (на выбор) различных компиляторов С/С++ из числа установленных в системе:
Кроме того, Code::Blocks предлагает очень расширенный набор шаблонов для создаваемых приложений (различные платформы, различные графические библиотеки):
Проекты, созданные Code::Blocks, очень компактны, что приятно отличает её от многих других IDE (здесь показан объём вместе с собранным бинарным приложением):
$ du -hs first
40K first
- Geany (http://www.geany.org/)
— популярная среди многих разработчиков, простая в обращении,
много-платформенная среда разработки. По существу, Geany не является
IDE, а есть развитый инструмент редактирования кодов с цветовой
разметкой, встроенным вызовом gcc,
make, ... Благодаря такой специфике Geany используется для при разработке
программ более чем на 40 языках программирования, среди которых:
C/C++, Java, JavaScript, Tcl, PHP, Python, XML/HTML и другие.
Geany работает не с какими-либо специфическими проектами, а с файлами программного кода, собираемыми традиционным make. На рисунке показан вид в Geany обсуждавшегося ранее приложения создания библиотек, ниже виден запущенный в окне терминала Geany менеджер mc (отсутствие специфических для IDE «наворотов» и определяет гибкость и универсализм Geany):
- Glade (http://glade.gnome.org/) — Glade не является IDE в том смысле, как описанные ранее. Это свободная система визуального создания графических интерфейсов (GUI), которая может создавать шаблон практически под любую графическую библиотеку (сам Glade написан на основе GTK+). Создадим шаблон приложения (архив Glade.tgz):
$ wxglade
...
Дальше
нам остаётся написать сценарий сборки (Makefile) для
сгенерированного шаблона приложения, в случае использования
wxWidgets это будет что-то типа:
CCOPT = `wx-config --cxxflags`
LDOPT = `wx-config --libs`
app: app.cpp
g++ $(CCOPT) $(LDOPT) $< -o $@
Далее мы можем открыть полученный проект для дальнейшей работы в уже рассмотренный ранее Geany... Тем самым устраняется нагромождение «под одной крышей» слишком интегрированных IDE: и генерации визуальных образов GUI, и отработка программного кода.
Это далеко не все IDE, активно применяемые в разработках в Linux. Из других некоторые стоило бы хотя бы просто назвать «по имени»:
- Anjuta (http://www.anjuta.org/) - официальная интегрированная среда разработки проекта GNOME, для разработки на языках: C, C++, Vala, Java, JavaScript, Python. Особенно хорошо подходит для разработки GUI приложений.
- QDevelop (http://code.google.com/p/qdevelop/) в связке с QtDesigner (http://trolltech.com) или Qt Creator (http://trolltech.com/developer/qt-creator) — представляют собой мощный комплекс для отработки графических приложений, базирующихся на библиотеке Qt. Qdevelop представляет собой облегчённую версию Kdevelop, хотя и построен на совершенно отличном коде. Развитие Qdevelop начато в 2006г.
- HaiQ (http://groups.google.com/group/haiq/) — ещё одна много-платформенная IDE, ориентированная на разработку с использованием библиотек Qt.
Приведенный беглый обзор ни в какой мере не рассчитан как объективное представление или сравнение всех доступных в Linux средств разработки. Заметим здесь, что разнообразных средств разработки в Linux намного больше, чем в Windows, но это разнообразие создаёт и некоторую растерянность в выборе оптимальных инструментов под конкретный программный проект. Некоторое сравнение (но также ограниченное) можно найти по ссылке http://ru.wikipedia.org/wiki/Сравнение_средств_разработки.
Эти, а также и другие IDE вы легко найдёте и установите в своей системе под свой вкус, пользуясь техникой установки программного обеспечения, описываемой далее. Вряд ли этот предмет стоит большего внимания.
1 Не по принципу «эти лучше других», а только потому, что эти попросту «под руку попали».