Редактор или IDE? Очередная попытка анализа. IDE - интегрированные среды разработки программ Языки программирования среда разработки приложений ide

NetBeans IDE - интегрированная среда разработки приложений, бесплатная IDE с открытым исходным кодом.
Предназначена для профессиональной разработки десктоп приложений, web-приложений, корпоративных систем, программ для мобильных устройств. NetBeans - единственная IDE, которая устроит и начинающего разработчика и профессионала.

Особенности программы:

  • Поддерживаемые языки программирования: Java, JavaFX, PHP, JavaScript, Ruby, Groovy, Python и C/C++, а также все языки разметки: HTML, XML и стили CSS.
  • Поддерживает технологии: J2SE, J2EE, J2ME, JavaFX SDK, PHP Zend framework, UML, SOA, Ajax, Ruby on Rails, Groovy and Grails.
  • NetBeans IDE является платформой для построения десктоп приложений с функциональным пользовательским интерфейсом, т.к. представляет из себя фреймворк к Java библиотеке Swing. Это сэкономит массу времени тому, кто не поленится ознакомиться с особенностями программирования на платформе NetBeans.
  • NetBeans IDE является платформой для создания плагинов и расширения своей функциональности.
  • Основные функции: рефакторинг, профилирование, работа с CVS и SVN, работа с удалённым сервером через FTP, визуальный редактор пользовательских интерфейсов, подсветка синтаксических конструкций, автодополнение, показ справки на лету, возможность использования готовых шаблонов кода, интеграция с серверами - автоматическое развёртывание приложений, управление сервером и т.д.
  • Расширенные возможности по работе с базами данных - встроенный клиент к базам данных - MySQL, Postgres, Oracle и др., редактор запросов SQL.

Подробное описание возможностей NetBeans - NetBeans - универсальная IDE .
NetBeans для WEB разработки - NetBeans и PHP - настройка NetBeans IDE для WEB программирования .
Программирование на PHP Smarty в NetBeans .
Работа с Apache Tomcat в NetBeans - Настройка и начало работы с сервером Apache Tomcat в NetBeans IDE .

Eclipse - бесплатная программная платформа с открытым исходным кодом, контролируется организацией Eclipse Foundation. Написана на языке программирования Java и основной целью её создания является повышение продуктивности процесса разработки программного обеспечения.

IDE разработанные на базе платформы Eclipse применяются для создания программного обеспечения на различных языках программирования. Eclipse является платформой для разработки любых интегрированных сред программирования и практически любого клиентского программного обеспечения.

Как использовать Eclipse и где загрузить - Обзор платформы Eclipse .
Установка и знакомство с интерфейсом и принципами Eclipse IDE .

Aptana Studio - бесплатная IDE, профессиональная среда разработки Web 2.0 приложений.

Используется для создания веб приложений с поддержкой всех современных технологий - HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python.

Основные возможности Aptana Studio:

  • Имеет мощные функции по работе с кодом HTML, CSS, JavaScript, PHP, Ruby - редактирование, просмотр структуры кода, мгновенный предпросмотр в распространённых моделях браузеров.
  • Работа с использованием последних спецификаций HTML 5 и CSS3. Разработчику предоставляется подробная информация о поддержке каждого элемента в распространённых веб-браузерах.
  • Встроенный отладчик позволяет устанавливать точки останова, просматривать значения переменных и контролировать исполнение программы. Также в наличии интегрированный Ruby and Rails отладчик.
  • Мастер развертывания приложений позволяет работать с удалёнными проектами с использованием FTP, SFTP, FTPS протоколов.
  • Поддержка совместной работы над проектами.
  • Поддержка работы из командной строки.
  • Расширенные возможности по настройке IDE, возможность создания пользовательских скриптов.
  • Подключаемые модули для расширения функциональности IDE.

Скачать Aptana Studio 3 с официального сайта: http://www.aptana.com/products/studio3/download.html

Code::Blocks - это бесплатная C и C++ IDE с открытым исходным кодом, приложение расширяемое, полностью настраивается и может работать на нескольких платформах.

Это программное обеспечение разработано для Windows, Linux, FreeBSD и Mac OS X. Оно создано с использованием плагинов и может быть расширено путём установки или создания дополнительных компонентов.

Особенности CodeBlocks:

  • Программа имеет WYSIWYG-редактор для библиотеки wxWidgets для разработки графического интерфейса пользователя (GUI).
  • Поддержка нескольких компиляторов: MinGW/GCC C/C++, Microsoft Visual C++, Borland C++ и др.
  • Настраиваемый и расширяемый пользовательский интерфейс с поддержкой вкладок, с подсветкой синтаксиса, сворачиванием блоков кода, авто-завершением кода, интеллектуальными отступами и браузером классов.
  • Имеется быстрая система сборки и используются рабочие пространства для объединения нескольких проектов.
  • Code::Blocks имеет расширенную функциональность для отладки и поддерживает GNU GDB и MS CDB.
  • Кроме того, у программы есть полная поддержка точек остановки (breakpoints), отображение стека вызовов, дизассемблер, настраиваемый дамп памяти и отображение информации профайлера (GNU Profiler).
  • IDE совместима с MSVC и Dev-C++, может импортировать проекты и рабочие пространства.

Скачать Code::Blocks для Windows, Linux или Mac OS X: http://www.codeblocks.org/downloads

Dev-C++ - интегрированная среда разработки на C и C++, полнофункциональная C++ IDE.

Возможности DevCpp:

  • Удобный редактор с подсветкой синтаксиса, нумерацией строк, автоотступами и т.д.
  • Возможность автозавершения кода для удобства работы и повышения производительности.
  • Заготовки кода и шаблоны для вставки.
  • Использование закладок в редакторе для быстрого перемещения по коду.
  • Экспорт исходных файлов или целого проекта в HTML или RTF для публикации исходных кодов на своём веб сайте.
  • Встроенный менеджер проектов.
  • Импорт проектов из MS Visual C++.
  • Возможность настройки ассоциации файлов по расширению - c, cpp, h и т.д.
  • В навигаторе классов два варианта обзора - просмотр функций, классов и их членов как для всего проекта, так и для текущего редактируемого файла.
  • Гибкая настройка рабочей среды, редактора и компилятора, большое количество различных опций.
  • Используется Mingw GCC компилятор, может работать с любым компилятором GCC.
  • Воможность отладки проекта - встроенный дебаггер GDB.
  • Возможна работа с CVS (скачивается отдельно).
  • Существует портабельная версия программы, не требующая установки.
  • Мультиязычный пользовательский интерфейс с поддержкой русского и украинского языков.

Чтобы начать использовать программу прямо сейчас,
читайте статью


Удобство и скорость разработки.

Александр Макарчук , qb
Повышение скорости и удобства разработки.

Александр Смирнов , Greensight
Ускорение разработки, уменьшение ошибок, просто удобство.

2. Важно ли обучать разработчиков использованию IDE? Почему?

Алексей Федоров , Одноклассники
Это интересная идея. Наверняка есть компании, которые готовы в это вложиться.

, ADV
Если разработчик не будет знать базовых вещей IDE, то разработка будет занимать больше времени. В современном мире это уже требование к профессии.

Александр Макарчук , qb
Нет, не нужно. Обучать - это навязывать свое. Каждый разработчик работает на том, что ему удобно. При этом всегда можно показывать преимущества своего IDE.

Александр Смирнов , Greensight
Это скорее вопрос к каждому разработчику отдельно - что ему удобнее. Но на ранних этапах умное автодополнение и подсветка ошибок практически незаменимы.

3. Большинство качественных IDE платные. Стоит ли тратиться на лицензии?

Алексей Федоров , Одноклассники
Стоит. Текущая ситуация на рынке такова, что платные IDE, как правило, сильно лучше бесплатных.

Алексей Персианов, Михаил Парфенюк , ADV
Если хотите качественную IDE, то стоит потратиться. Если не поддерживать разработчиков качественных IDE «рублем», то они не будут делать качественные IDE

Александр Макарчук , qb
Если целесообразно, то, конечно, нужно. Время - деньги.

Александр Смирнов , Greensight
В зависимости от потребностей и средств. Кому-то хватает Sublime, кто-то хочет использовать продукты Jetbrains, кому-то неизбежно приходится покупать Xcode.

4. Чего не хватает современным IDE? Может ли на этом рынке появиться гигант, подобный JetBrains?

Алексей Федоров , Одноклассники
Может. Но конкурировать с ними будет трудно: разработка IDE - это сотни человеко-лет работы и десятки миллионов долларов.

Алексей Персианов, Михаил Парфенюк , ADV
В данный момент JetBrains захватила данный рынок, и в ближайшее время вряд ли появится что-то лучше.

Александр Макарчук , qb
Всегда будет появляться что-то новое, и IDE не исключение. Преимущество новых проектов всегда в том, что они учитывают недостатки старых.

Александр Смирнов , Greensight
Если появится что-то лучше, то почему бы и нет.

5. Какие еще существуют или могут появиться инструменты, ускоряющие разработку и облегчающие жизнь разработчикам?

Алексей Федоров , Одноклассники
Сборщики проектов, баг-трекеры, системы контроля версий, системы непрерывной сборки и интеграции и многие-многие другие.

Алексей Персианов, Михаил Парфенюк , ADV
Например, CI системы.

Александр Смирнов , Greensight
Сложно сказать. Все больше сторонних инструментов интегрируется в IDE, нежели существуют отдельно.

6. Какие тренды в развитии функционала IDE вы бы могли отметить в последние годы?

Алексей Федоров , Одноклассники
Интеграция с другими системами, такими как баг-трекеры, сервера VCS или CI. И конечно, скорость - тормозят современные IDE сильно меньше, чем 10 лет назад.

Алексей Персианов, Михаил Парфенюк , ADV
Переход всех платных IDE к распространению по подписке.

Александр Макарчук , qb
Подписки. Всегда проще заплатить меньшую сумму, особенно если есть сомнения в выборе или еще не привык к инструменту.

Александр Смирнов , Greensight
Развитие плагинов, интеграций со сторонними утилитами и софтом, улучшение автодополнения.

Простейший он потому, что не предоставляет таких удобств, как контекстные подсказки по типу intelliSence , в нем нет полноценного отладчика, нет профайлера и других полезных инструментов. Возможности текстового редактора весьма и весьма скромные. Проекты с многофайловой структурой напрямую также не поддерживаются. Собственно, этого всего не нужно, поскольку для профессиональной разработки сложных программных продуктов такой инструмент малопригоден. Для подобных целей стоит использовать полноценную интегрированную среду разработки , которая, помимо перечисленных мною возможностей, предоставляет еще массу различных сервисов, в том числе инфраструктуру для совместной разработки программных решений (Team Foundation Server, TFS ).

Что может эта программа , и с какой целью я здесь выкладываю ее исходный код? Возможности программы следующие: пользователь может писать текст программ на C# или VB.NET, запускать его и выполнять простейшие действия по отладке (программа сообщает об ошибках и указывает их местонахождение), создавать запускаемые модули (exe) или динамически подключаемые библиотеки (dll), подключать другие программные компоненты и сохранять исходный код и параметры сборки в текстовых файлах.

Кому может быть полезен такой инструмент программирования? Ну, во-первых, его можно использовать в рамках учебных курсов по программированию, поскольку он является бесплатным, а его возможностей для целей обучения основам программирования и алгоритмизации вполне хватает. На сайте эта программа как раз и предлагается в качестве курса . Имея исходный код проекта на C#, можно “докрутить” его функциональность под требования конкретного процесса обучения, к примеру, подключить библиотеки с базовыми алгоритмами, встроить автоматизированную подсистему проверки результатов заданий и выставления оценок и т.п. Во-вторых, часть исходного программного кода этого проекта можно использовать при разработке прикладных подсистем, в задачи которых входит интерпретация различного рода бизнес - сценариев, исполнения внешних хранимых процедур и т.д. Более подробно про задачу разработки архитектуры написано .

Описание проекта

Весь проект можно условно разделить на две части: сервисы документа программы и элементы его окружения . Сервисы документа выделены в отдельное пространство имен Document . Основным типом пространства имен Document является сам документ программы – класс CSSDocument , который инкапсулирует в себе пользовательский программный код, различного рода настройки, ссылки на внешние программные компоненты и результаты компиляции. К основным задачам класса CSSDocument относятся: динамическая компиляция, чтение и сохранения программного кода и настроек программы в текстовых файлах, формирование exe и dll модулей и выполнение программы в режиме отладки. Все остальные части Coding Craft Studio – это элементы окружения документа, главной задачей которого является организация взаимодействия с пользователем посредством . Как я уже сказал, проект написан на языке программирования C#. Исходный код сопровождается комментариями, которые при наличии желания помогут разобраться в его работе.

В основе программы используется технология отражения (reflection) , которая предоставляет интерфейсы для доступа к элементам загруженной или динамически сформированной программной сборки (Assembly). Технология отражения построена на базе сервисов чтения и обработки сборки , более подробно про которые можно узнать в материалах, посвященных виртуальной машине и ее окружению. Если кратко описать алгоритм работы программы, то выглядит это следующим образом. Сначала создаем и инициализируем сервис динамической компиляции (CodeDomProvider). Выполняем динамическую компиляцию, вызывая соответствующий метод (CompileAssemblyFromSource) и передавая в качестве параметров экземпляр класса настроек (CompilerParameters) и сам программный код. Если компиляция прошла без ошибок, то ее результатом является сформированная в памяти сборка. Далее, средствами отражения ищем в полученной сборке тип приложения (класс Application), ищем с помощью все того же отражения у этого типа точку входа (метод Main). Потом создаем экземпляр типа приложения и запускаем его, вызывая метод точки входа. В процессе постоянно контролируем возникновение и должным образом их обрабатываем. Все довольно просто, и в подтверждение этих слов ниже приведена часть исходного кода класса CSSDocument , содержащая методы компиляции и запуска программы: Compile() и Run() .

namespace CodingCraftStudio { //Основые сервисы Coding Craft Studio namespace Document { //Поддерживаемые языки программирования public enum CCSLanguage { CSharp = 0 , VisualBasic = 1 } //Документ приложения (исходный код, список библиотек) public class CCSDocument { //Динамическая компиляция программного кода private void Compile (CompilerParameters _CompilerParameters, ref CompilerResults _CompilerResults) { _CompilerParameters. CompilerOptions = this . CompilerOptions; foreach (CCSString _Reference in m_References) _CompilerParameters. ReferencedAssemblies. Add (_Reference. Value); CodeDomProvider _Provider = null ; switch (this . Language) { case CCSLanguage. CSharp: { _Provider = new CSharpCodeProvider (); break ; } case CCSLanguage. VisualBasic: { _Provider = new VBCodeProvider (); break ; } } if (_CompilerParameters. GenerateExecutable) if (_Provider. Supports (GeneratorSupport. EntryPointMethod)) _CompilerParameters. MainClass = this . NameSpace + "." + this . ApplicationTypeName; _CompilerResults = _Provider. CompileAssemblyFromSource (_CompilerParameters, this . Code); if (_CompilerResults. Errors. Count > 0 ) throw new CCSRunTimeException ("Ошибки компиляции!" ); } //Динамическая сборка [ System. ComponentModel. Browsable (false )] public Assembly CompiledAssembly { get { if (m_CompilerResults == null ) return null ; return m_CompilerResults. CompiledAssembly; } } //Получение типа динамической сборки по имени [ System. ComponentModel. Browsable (false )] public Type CompiledType (string _Name) { if (m_CompilerResults == null ) return null ; if (_Name == string . Empty) return null ; return m_CompilerResults. CompiledAssembly. GetType (_Name); } //Создание экземпляра типа public object CreateInstance (Type _Type) { return _Type. GetConstructor (Type. EmptyTypes). Invoke (null ); } //Запуск приложения public void Run () { if (string . IsNullOrEmpty (this . ApplicationTypeName)) throw new CCSSettingsException ("Не задан класс приложения: ApplicationTypeName!" ); this . Compile (); Type _type; _type = this . CompiledType (this . NameSpace + "." + this . ApplicationTypeName); if (_type == null ) throw new CCSRunTimeException ("Класс " + this . ApplicationTypeName + " не определен!" ); MethodInfo _entryPoint; _entryPoint = this . CompiledAssembly. EntryPoint; if (_entryPoint == null ) throw new CCSRunTimeException ("Не определена точка входа!" ); object _object; _object = this . CreateInstance (_type); if (_object == null ) throw new CCSRunTimeException ("Не удалось создать экземпляр " + this . ApplicationTypeName + "!" ); try { _type. InvokeMember (_entryPoint. Name, BindingFlags. InvokeMethod, null , _object, null ); } catch (Exception ex) { throw new CCSRunTimeException ("Не удалось вызвать метод точки входа " + _entryPoint. Name + " приложения " + this . ApplicationTypeName + "! " + ex. Message, ex); } } ...часть исходного кода пропущена... } } }

Если интерес к предмету остался, то скачивайте

Давно хотелось рассказать о том как делать сложные проекты с проектирования до выпуска. Считается, что IDE - это довольно сложные системы. Это очень хорошо. Есть простор для проектирования, применения паттернов, построения иерархии классов.

Примеры успешных IDE:

  • Visual Studio
  • Eclipse
Мне уже не терпится начать…

Проектирование

Если мы хотим довести проект до конца - его необходимо спроектировать. Зачем?
  1. Чтобы заранее продумать проект, его структуру и не допустить критических ошибок еще на ранних стадиях.
  2. Чтобы видеть весь объем работы и не делать в будущем больше чем задумано (так умирают интересные проекты).
  3. Чтобы проект был согласованным.
Проектирование не обязательно имеет письменную форму. Все программисты проектируют код в мыслях по мере его написания. Таким образом, они проектируют на низком уровне. Чтобы упростить и улучшить низкоуровневое проектирование надо подготовить почву - высокоуровневую часть.

Этапы проектирования:

  1. Определение цели
  2. Выработка требований
  3. Определение архитектуры
  4. Написание высокоуровневого проекта
Каждый следующий этап опирается на результаты предыдущего и уточняет их.

Проектируем IDE

Цель

Научиться проектировать и разрабатывать сложные проекты.
Спроектировать и разработать IDE для вэб-разработки.

Требования

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

Редактор
Подсветка синтаксиса (+ указание ошибок синтаксиса)
Всплывающие подсказки при наведении на сущности в коде
Автоматическое дополнение кода (Code Completion)
Сниппеты
Работа с несколькими документами одновременно

Поддерживаемые языки программирования/разметки
HTML
Выбор стандарта для подсказок
CSS
Использование стандартов CSS2, CSS3 (на выбор) для подсказок
JavaScript
Использование JsDoc для подсказок

Архитектура

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

Язык программирования: C# (соответствует требованиям и я его знаю достаточно хорошо)
Среда исполнения: .net (Windows), mono (Mac OS X, *nix)

Целевые платформы:

  • Mac OS X (начиная с версии 10.5.0)
  • *nix (следует уточнить список дистрибьютивов в будущем)
  • Windows (начиная с версии 2000)
Распространение:
  • Mac OS X - dmg
  • *nix - в пакетах, специфичных для каждого дистрибьютива
  • Windows - в виде инсталлятора
Структура проекта:
  • Редактор
    • Подсветчик синтаксиса (с легко расширяемым списком языков)
    • Анализаторы структуры документа: HTML, CSS, JavaScript
    • Менеджер сниппетов
  • Среда
    • Менеджер настроек
    • Менеджер горячих клавиш
    • Менеджер интерфейса
      • Панели инструментов
      • Области данных (файловая структура, объектная модель документа, ...)
  • Расширяемость
    • Расширения в виде полноценных библиотек
    • Расширения в виде скриптов на JavaScript
  • Интерфейс
    • Реализации
      • WinForms (Windows)
      • Gtk# (*nix)
      • Cocoa# (Mac OS X)

Вот такой вот получился первый шаг в проектировании. Дальше будет намного более сложный этап - составление высокоуровневого проекта. В скором времени я постараюсь написать статью и по этой теме. Спасибо за внимание.

Важнейшим элементом в процессе разработки приложения является выбор правильной IDE, зависящий не только от платформы, но и уровня собственной подготовки. Давайте познакомимся с наиболее популярными из них методом «от противного», представляя не столько их преимущества, сколько наиболее часто встречаемые укоры со стороны разработчиков.

Начнём с официальных представителей лидеров мобильного рынка: Windows, Google и Apple.

Visual Studio 2015

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

Недостатки: новичку будет просто невозможно самостоятельно разобраться с Visual Studio без прохождения специальных курсов и чтения литературы. Это продукт скорее для опытных разработчиков, обращающих внимание на качество редактора и функции тестирования.

Android Studio

Описание: относительно молодая и стремительно развивающаяся IDE, ориентированная на разработчиков приложений для Android.

Недостатки: скупые возможности персонализации проявляются в редакторе кода и общих настройках. Мелочь, а неприятно.

XCode

Описание: IDE, ориентированная на создание приложений для OS X и iOS. Для использования языков Objective C и Swift на сегодня это лучшее, а для некоторых задач и вовсе единственное решение.

Недостатки: многие разработчики жалуются на стабильность среды, вынуждающую вносить дополнительные изменения в свои проекты после выхода очередной версии. Кроме того, XCode относительно сложная IDE для самопознания новичком. Именно поэтому рекомендуем вам пройти наш . На нем мы рассмотрим тонкости работы с этой IDE.

От официальных представителей перейдём к универсальным кроссплатформенным средам разработки:

Xamarin Studio

Описание: популярный инструмент разработки приложений под Windows, Phone, Android и iOS, использующий по сути только один язык - C#. Помимо непосредственно Xamarin Studio вы также можете пользоваться плагином для Visual Studio.

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

IntelliJ IDEA

Описание: IDE, разработанная компанией JetBrains, позволяющая создавать программы на множестве популярных языков, среди которых Java, JavaScript, Python, Ruby, Groovy, Scala, PHP, C, C++.

Недостатки: производительность. Томительное ожидание выполнения компиляции, перекомпиляции, тестирования порой действительно раздражает.

Appcelerator Titanium

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

Недостатки: возможности, предоставляемые Appcelerator Titanium имеют и обратную сторону: генерируемые ошибки в коде, искусственные ограничения, недостаточно качественная документация.

Eclipse

Описание: среда разработки, изначально ориентированная на работу с Java, прославилась большим количеством внешних модулей, существенно расширяющих её функциональность (в том числе, это касается количества поддерживаемых языков).

Недостатки: существенная нехватка документации, нет единого сообщества разработчиков.

Netbeans

Описание: мощная IDE для разработки приложений на Java, JavaScript, Python, PHP, C, C++ и даже Ада.

Недостатки: невысокое быстродействие из-за концепции «всё в одном». Некоторые плагины (в том числе для разработки приложений для Android) имеют существенные ограничения функциональности.

PhoneGap

Описание: необычная среда разработки кроссплатформенных приложений, не требующая знания «родных» языков. То есть для того, чтобы создать приложение для Android, знание Java вам не потребуется. Используются JavaScript в связке с HTML5 и CSS3.

Недостатки: ограниченная функциональность вызванная непосредственно основной идеей нецелевой среды разработки.

А какими IDE пользуетесь вы? И какие у них недостатки?