Среда разработки для java под windows. Визуальное программирование на Java

Почти все книги и уроки по Java для новичков начинаются с описания ООП: какой он замечательный с великолепный. Понятно, поскольку в Яве просто невозможно любое другое программирование, кроме как объектно-ориентированное, то вначале предлагается освоить 40..80 страниц безумных аналогий с иерахией кошечек/собачек/уточек/автомашин, и только после этого предлагается написать «Hello, World!». :-)

При этом стоит заметить, что абсолютно всё обучение Java строится на примитивнейшем выводе результата на консоль. То есть не консольное приложение в привычном понимание, а именно вывод каких-то данных построчно. Ну вот например Turbo Pascal 3.0 вышел в 1985 году и в нём уже была поддержка графических режимов. В 1990 году появился Turbo Vision - очень крутая вещь - аля-Windows только для DOS. А в Яве в 2018 году возможен только вывод на консоль. И вот вся эта восторженность и крутость как-то вдребезги разбивается уже на этапе «Hello, World!»... Хуже наверное это только развлекаться на программируемом калькуляторе МК-61 или МК-52 - а что? там такой же построчный вывод.

Но, самое забавное - это то, что на Java реально можно создавать программы используя визуальное программирование! Я об этом узнал только когда прочитал (или скорее ознакомился) с 500 страничной книгой, где в одной из последних глав, вдруг выяснилось, что для Java существуют нормальные GUI (графические интерфейсы пользователя) и можно оформлять программы с кнопочками, полями ввода и нормальными меню. Спрашивается: зачем вы столько времени «мурыжили» эту паршивую консоль, когда можно было сразу всё делать красиво и аккуратно?

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

Первый - GUI для Java есть трёх видов (библиотек): AWT , Swing (кто придумывает такие названия?) и JavaFX .

На сегодняшний день (Java 8 и 9) все они входят в комплект поставки JDK: то есть всё работает из коробки и не нужно заморачиватся с их установкой. Это большой плюс.

Но, AWT - это первая и очень старая реализация, поэтому её использовать не нужно. В общем - некошерно. Swing - тоже некошерно, поскольку там что-то не так замутили и программы из-за него жутко тормозят. Точнее не скажу, не разбирался, но вроде как она официально больше не развивается несколько версий. А вот JavaFX - это гуд и наше светлое будущее.

Есть ещё такая мерзость - java-апплеты , те которые работают в браузере и при этом его намертво «вешают», примерно как Flash, только ещё хуже. К счастью эту/эти штуку/штуки практически уже не используют, поэтому тратить время на их изучение бессмысленно.

Так что единственное на что стоит потратить время - это JavaFX.

Второй момент . Всё не так просто. Рассмотрим Delphi (или Visual Studio, Lazarus, не важно). Даже для «зеленого» новичка создание простой программы (одна кнопка и текстовое поле для вывода) будет происходить так:

  • запускаем Delphi;
  • автоматом создается новый проект с главной формой;
  • выбираем на палитре компонентов кнопку и размещаем на форме; всё визуально
  • аналогично кидаем на форму текстовое поле;
  • при необходимости в панели свойств можно указать текст кнопки, размеры и т.п.;
  • запускаем - Delphi предложит сохраниться, сохраняемся.

То есть мы не написали ни единой строчки кода, IDE - всё сделала сама. Если посмотреть на сгенерированный код, то назвать его простым нельзя - здесь уже требуются определенные знания, но Delphi достаточно умна, чтобы понимать как с ним работать.

Если мы захотим добавить какое-то действие, например при нажатии на кнопку, заполнять текстовое поле фразой «Привет!», то делаем так:

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

То есть опять же, IDE выполнила всю черновую работу.

Но это в других языках, Java идёт своим путём. Чтобы создать кнопку в JavaFX нужно вручную создать Stage - «театральные подмостки» (название на полном серьёзе!) и на них разместить сцену (Scene). К ней какой-нибудь контейнер в который уже вкладывается прочие элементы.

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

Response = new Label("Push a Button"); Button btnUp = new Button("Up"); Button btnDown = new Button("Down"); btnUp.setOnAction(new EventHandler() { public void handle(ActionEvent ae) { response.setText("You pressed Up."); } }); btnDown.setOnAction(new EventHandler() { public void handle(ActionEvent ae) { response.setText("You pressed Down."); } }); rootNode.getChildren().addAll(btnUp, btnDown, response); ...

Когда кнопок наберется с десяток, плюс 20 пунктов меню, плюс 30 других компонентов, то код маленьким не покажется. И это ещё без кода, который отвечает за дополнительные свойства, например выравнивание, размеры, шрифт... И вот это второе указывает на то, что обучалки по JavaFX как раз и показывают как писать «fx-код» ручками. Тоска, одним словом...

Но, тут возникает спасительный третий нюанс . Оказывается умные люди (видимо знакомые с полноценными IDE), разработали другой вид приложений, где для генерации «fx-кода» используется описательный xml-файл, который называется fxml , а такие программы менуются как «Приложения FXML JavaFX »

Для меня совершенно удивительно то, что обучение Java не начинается именно с таких приложений. Пусть это не Delphi, но всё-равно это в миллион миллионов раз лучше, чем работать с консолью и забивать себе голову прочим хламом о том, почему нужно использовать стопицот строк с ООП там, где в других языках на это уходит одна простенькая процедура. ;-)

Теперь серьёзно. Если вы никогда не программировали на Java, то можете попробовать сделать это прямо сейчас. На самом деле - это довольно круто, хотя потребуется немного потратить время, чтобы освоится с программами. Если у вас есть опыт работы с «визуальными IDE», то ещё лучше - встретите много знакомого.

JDK

Ява должна быть установлена на компе. Я не буду приводить ссылки как это сделать - гугл в помощь, поскольку всё слишком просто.

IDE

В Яве нет какой-то одной программы - среды разработки, поэтому в Сети встречаются примеры из разных программ. Самые примитивные, вроде Notepad++ годятся только для консольного вывода, но если рассматривать что-то более серьёзное, то выделяются только три кандидата: NetBeans , Eclipse и IntelliJ IDEA .

NetBeans - самая простая программа, которая быстро (относительно остальных) запускается и довольно сносно работает.

Eclipse - тоже неплохой вариант, более мощный чем NetBeans, но слабее чем IntelliJ IDEA.

IntelliJ IDEA - выглядит самой крутой, но за это приходится платить скоростью работы. Стоит отметить, что Android Studio базируется на IntelliJ IDEA, но студия работает почему-то значительно медленней.

Важный момент связан с программированием под Андроид. Из этих трех IDE только IntelliJ IDEA для этого более-менее годится. В Сети масса материалов о программировании под Андроид в Eclipse, но они все уже устаревшие - не тратье время, запуская старенький ADT-плагин и пытаясь хоть что-то с ним сделать. Может быть старый Android SDK и будет работать, но все новые - уже нет.

Я покажу как сделать приложение FXML JavaFX во всех трёх программах, но прежде чем приступать, нужно установить ещё одну программу: SceneBuilder (используйте версию для Java 8). Это ключевая программа, где, собственно и выполняется всё визуальное построение. SceneBuilder самостоятельно может работать без IDE, поэтому можете её запустить и посмотреть как она устроена. На выходе будет fxml-файл, который содержит всю нужную разметку. Этот файл и используется в IDE, вместо написания мегатонны кода. :-)

ТЗ

Создаваемая программа будет очень простой - кнопка и текстовое поле. При нажатии на кнопку в текстовое поле пусть добавляется текст «Привет!».

В каждой программе вам нужно заранее прописать настройку - используемую JDK. Если не можете понять как это сделать, гуглите.

NetBeans

Перед началом работы, нужно подключить SceneBuilder: Сервис - Параметры - Java - JavaFX - Начальная страница Scene Builder . Выберите каталог программы. Настройку достаточно сделать один раз. Это относится ко всем IDE.

Создаём новый проект, где нужно выбрать «Приложение FXML JavaFX».

Жмём «Готово» и, после некоторой работы NetBeans, видим готовые файлы:

  • Myfx.java - это main-файл, который, собственно и запускает всю программу.
  • FXMLDocumentController.java - это «контролёр», где и будет в основном программирование.
  • FXMLDocument.fxml - этот файл хранит визуальную часть.

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

Это круто, потому что мы не написали ни строчки кода, но уже получили программу с работающей кнопкой. :-)

Если вы правильно указали путь к SceneBuilder, то можете выбрать пункт меню «Открыть» на файле FXMLDocument.fxml . Это же самое произойдёт если сделать двойной клик. Откроется SceneBuilder. Если пункта нет, то путь указан не верно, проверьте настройку.

Принцип работы в SceneBuilder един для всех IDE, поэтому пока я опишу только общие моменты, дальше вы уже сами сообразите.

Стоит отметить, что после редактирования файла, закрывать SceneBuilder не нужно. Достаточно только сохраниться (Ctrl+S) и переключиться на IDE - она сама подхватит изменения.

Окно SceneBuilder разделено на три части:

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

Построение FX-программ должно начинаться с контейнера. В данном примере NetBeans использовал AnchorPane . Он довольно удобный, позволяя настраивать для вложенных элементов «правильные» отступы. Вкладка Containers содержит другие контейнеры, с которыми вы сможете самостятельно потренироваться (я и сам ещё и половины не освоил:-)).

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

По условиям ТЗ у нас должно быть текстовое поле. NetBeans использует Label, но мы не будем ничего удалять, а просто добавим новый элемент TextField на форму (произвольно на ваш вкус).

В SceneBuilder возможен предварительный просмотр (Ctrl+P). В этом режиме отображается только форма и все элементы «без java-программирования».

Теперь важный момент: для того чтобы можно было использовать компонент в java-программе (в нашем коде), следует выполнить две вещи.

Первая - проверить, что указан верный контролёр. В нашем случае NetBeans сам уже всё сделал и указал myfx.FXMLDocumentController .

Как видно - это контролёр из файла FXMLDocumentController.java (пакет.контролёр). Не всегда IDE его указывают, но это важно, поскольку fxml-файл (точнее java-код) использует его для привязки.

Второй момент - используемый компонент должен иметь свой ID - это параметр fx:id . Здесь я указал textField1 .

Вверху появится желтый треугольник сообщения, что якобы нет связки этого id с контролёром. Пока не обращайте на него внимания, об этом пойдет речь дальше.

У кнопки, которая будет заполнять текстовое поле, тоже должен быть свой id, а также метод события onAction (это основное событие компонента, а не onClick, как в Delphi). NetBeans уже об этом позаботился, поэтому нам ничего не придется писать.

На этом визуальное построение можно завершить. Сохраняемся и переключаемся в NetBeans. Видим, что файл FXMLDocument.fxml изменился: добавился textField1 :

Теперь нам нужно как-то использовать текстовое поле в java-коде. В отличие от Delphi, NetBeans не создаёт для этого никакого кода, потому нам придётся добавлять его в «полу-ручном» режиме. Для этого в разных IDE используются различные способы, но общий принцип в том, что нужно установить курсор на нужное поле в редакторе и выполнить некое «действие» . В NetBeans оно называется Установить контролер в меню Источник . (Да в Яве большие проблемы с именованиями...)

После выполнения этой команды, произойдет переход к файлу FXMLDocumentController.java , где в код будет добавлено объявление переменной textField1 :

Обратите внимание на «@FXML» - эта аннотация указывает, что код как-то используется в FXML. После этих изменений SceneBuilder уже не будет выдавать предупреждение, как желтый треугольник ранее. Если ещё раз запустить SceneBuilder, то это можно проверить.

Запускаем программу на выполнение для теста. Теперь наша задача по клику на кнопке заполнить текстовое поле. Как вы уже поняли метод handleButtonAction как раз и выполняет нужную работу. В нём дописываем:

TextField1.setText("Привет!");

Обратите внимание как работает автодополнение кода после того, как будет нажата точка.

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

Данная возможность присутствует по всех IDE, хотя есть различия в реализации и использовании.

Запускаем программу и видим, что всё работает как нужно.

Нам пришлось написать всего одну строчку кода, ну и выполнить несколько дополнительных действий в редакторе.

Eclipse

Запуск Eclipse происходит несколько дольше, чем NetBeans. Вначале нужно указать путь к SceneBuilder. Делается это в Window - Preferences - JavaFX .

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

Создаём новый проект и выбираем JavaFX.

Жмем Next и попадаем на страницу настроек. Здесь я указал название проекта, как и прежде myfx (у меня для разных IDE разные каталоги проектов, поэтому они не пересекаются друг с другом).

Здесь нужно выбрать тип приложения, тип контейнера и имя контролера. Жмем Finish и Eclipse быстро генерирует каркас нашей будущей программы.

Здесь всё очень похоже, только добавлен еще один файл application.css - да, да, в JavaFX можно использовать CSS для настройки оформления! Eclipse сразу сгенерировал для этого файла код подключения.

Запустим программу и убедимся, что нет ошибок.

В отличие от NetBeans, здесь совершенно пустая форма. Откроем её в SceneBuilder с помощью контекстного меню.

И здесь мы видим, что формы нет. Но, на самом деле она есть - просто по умолчанию используется вычисляемый размер (высота и ширина), который в данном случае равен нулю. Компонентов-то нет! В нашем случае это не совсем то, что нужно, поэтому мы выберем BorderPane в иерархическом списке и в свойствах Pref Width и Pref Height укажем какие-то значения. Эти свойства задают «желаемые» ширину и высоту. После этого форма сразу же «проявляется».

Контейнер BorderPane состоит из 4-х частей: top, right, bottom, left и center. Компоненты следует помещать в разные части - от этого будет зависеть их положение при изменении размера окна.

Здесь довольно сложно объяснить словами, просто попробуйте разместить несколько кнопок, а после в предварительном просмотре измените размеры окна.

Я не стал особо мудрить и разместил вверху текстовое поле, а в центре кнопку.

Теперь проверим, что указан контролёр: в данном случае application.SampleController - Eclipse выполнил эту работу за нас.

Теперь нужно указать id у наших элементов. Для кнопки я задал btn1 , а текстовому полю textField1 . У нас опять же возникло сообщение «желтый треугольник».

Для кнопки укажем метод на событие - btn1Click .

Сохранимся и вернёмся в Eclipse. Мы увидим, что файл Sample.fxml обновился, но рядом с некоторыми строками появились значки предупреждения.

Ситуация здесь точно такая же как и в NetBeans - нужно в «полу-ручном» режиме вносить правки. В Eclipse для этого используется контекстное меню по второй кнопке мыши: Quick Fix или горячая клавиша Ctrl+1 (что удобней).

При этом выскакивает подсказка о предполагаемом действии. Например для textField1 предлагается добавить идентификатор в контролёр:

а для кнопки ещё и метод-обработчик события:

При этом, Eclipse немного притормаживает и изменения не сразу отображаются на экране. Тут нужно либо переключиться на файл контролёра, либо немного подождать. В результате в код будет добавлены нужные изменения и значки предупреждений исчезнут.

Добавим наш код как и раньше мы сделали в NetBeans.

Обратите внимание на более интелектуальную работу автодополнения. В автоматическом режиме он немного подтормаживает, но если нажать Ctrl+Пробел (эта же комбинация используется во многих IDE), то позволяет получить и неплохой хелп.

Запускаем нашу программу.

И записываем себе на счёт ещё одну IDE. :-)

IntelliJ IDEA

IntelliJ IDEA запускается довольно неспешно, можно успеть проверить почту. :-)

Опять же указываем путь к SceneBuilder: File - Settings :

И указываем его имя (как обычно - myfx):

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

Здесь также пустая форма, но зато указан заголовок программы. Если посмотреть на код Main.java , то увидим строчку:

PrimaryStage.setTitle("Hello World");

Это и есть заголовок приложения. В других IDE эта строчка отсутствует, но зато теперь мы знаем для чего нужны «театральные подмостки». ;-)

Переключаемся в SceneBuilder (аналогично Eclipse): второй кнопкой мыши нужно выбрать Open in SceneBuilder .

Здесь также пустая форма, но с контейнером GridPane . Устанавливаем Pref Width и Pref Height , чтобы отобразилась форма.

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

  • разместить кнопку и тестовое поле,
  • присвоить им id,
  • для кнопки прописать метод для обработки клика,
  • не забываем проверить, указан ли контролёр (sample.Controller ).

Закрываем SceneBuilder и возвращаемся в IntelliJ IDEA. Здесь нужно добавить идентификаторы id в код, а также создать метод для реакции на нажатие кнопки.

IntelliJ IDEA предлагает для этого два способа. Первый - при наведении мышки на «проблемное место» будет появляться подсказка, на которую можно кликнуть:

Второй - горячая клавиша Alt+Enter

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

При этом, заметьте, не добавляется строчка «@FXML». Если мы вручную его добавим перед переменными и методом, то IntelliJ IDEA сразу предложит добавить нужный java-класс:

Вообще IntelliJ IDEA показывает достаточно хорошую сообразительность и выступает помощником в написании кода. Причём делает это самостоятельно без лишних нажатий кнопок.

Ну что ж, добавляем свой код для обработчика и запускаем программу:

Прекрасно, всё работает!

Итого

Главный вывод - на Яве возможно визуальное программирование . Может оно и не идеальное, но вполне годное, особенно для новичков. Изучать язык гораздо интереснее, когда есть какой-то осязаемый результат - ООП, классы и прочие премудрости - это хорошо, но лучше начать с кнопочек, полей ввода, меню и всего того, что подразумевает нормальная программа. А консоль - это скучно и неинтересно.

Три IDE я привел не случайно. В Сети очень много примеров для Явы и все они для разных программ. Лично я ещё не определился со своим предпочтением, поскольку у всех есть как плюсы, так и минусы. Наверное нужно поработать со всеми, тогда и будет понятно.

Но, ключевой момент - это умение работать с SceneBuilder. Построение формы в JavaFX немного отличается от той же Delphi, в первую очередь в использовании сложных контейнеров (они могут быть вложенными друг в друга). Поэтому вначале следует разобраться с ними, после уже можно браться за сами компоненты.

На Java существует большое количество, и иногда сложно определиться с их выбором. Бывает и такое, что пользователь скачивает программу, не поддерживающую нужный язык программирования, после чего приходится искать другую. В этой статье мы представим ряд рабочих программ, а также подберем обучающие программы для программирования на Java. Конечно, все программы представить мы не сможем, ибо их довольно много. Однако самые популярные и интересные вы все-таки сможете тут увидеть.

Программы: язык программирования Java

В этом списке мы представим несколько программ, которые помогут вам справиться с этой ситуацией.

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

IntelliJ IDEA

Созданная компанией JetBrains бесплатная программа, имеющая 2 версии для разных типов разработки:

    Ultimate - служит для разработки веб-приложений и программирования для телефона, а также для программ для предприятия. Она является платной, но имеет бесплатный пробный период.

    Community - создана для программирования на Java, Groovy, Scala, а также для приложений "Андроид". Ее то нам скачивать и нужно. Для этого достаточно сделать несколько простых шагов:

  • Перейдем на официальный сайт JetBrains.
  • Перейдем в раздел Tools.
  • Выбираем программу IntelliJ IDEA.
  • Нажимаем кнопку Download.
  • Скачиваем программу для нашей операционной системы.

Обучающие программы для программирования на Java

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

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

CodinGame

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

Code Hunt

В данной игре вы являетесь охотником за кодом. Поддерживает только 2 языка - это Java и C#. В игре вам предстоит пройти 14 уровней, на каждом из которых есть свои задания.

Популярная платформа для младших возрастов и студентов, с помощью которой можно соревноваться с друзьями по написанию кода на некоторых языках программирования, таких как Java, CoffeeScript, JavaScript, Lua, Python. Кланы и даже сюжет, взаимодействие с игроками - все это втянет вас в увлекательное обучение.

Robocode

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

Codewars

Если вы не хотите создавать роботов, а соревноваться с друзьями, решая реальные задачи, то данная игра, несомненно, для вас.

Ресурсы для изучения Java

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

Coursera

На этом ресурсе вы найдете множество курсов по языкам программирования, присутствует русская локализация. Сайт бесплатный, однако есть дополнительный контент, за который придется платить. Так, например, вы можете бесплатно просматривать материал с ведущих университетов мира и выполнять практические задания, которые не требуют проверки сторонними лицами. Но если работу будут проверять другие люди или преподаватель, то вам придется раскошелиться от 49 $ (3200 руб.) в месяц.

Похожий на Coursera ресурс (с такой же платой), однако 49 $ (3200 руб.) вас берут не за проверку заданий, а за получение сертификата за прохождение курсов. А остальные материалы будут доступны вам бесплатно.

"Интуит"

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

Подведем итоги

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

Мы постарались объять необъятное, вспомнив несколько наиболее популярных и универсальных сред разработки. Опыт получился не слишком удачным, поэтому в этот раз мы сконцентрируемся только на одном языке, а именно Java. Если вы только начинаете знакомиться с ним, рекомендуем пройти .

Учредив 7 номинаций, субъективно определим лучшие из лучших:

Лучшая бесплатная IDE: NetBeans

NetBeans - мощнейшая среда разработки с открытым исходным кодом, ориентированная на интернет, мобильные и настольные приложения. Работает с Linux, Windows, MacOS и даже Oracle Solaris.

Несмотря на то, что NetBeans позволяет работать на нескольких языках, в среде разработчиков она считается Java-ориентированной. Она прекрасно взаимодействует с JPA, JSP, Struts, Spring и библиотекой Hibernate.

Лучшая коммерческая IDE: IntelliJ IDEA

По правде говоря, IntelliJ IDEA распространяется в двух версиях, одна из которых совершенно бесплатная - Free Community Edition. Причём для начинающего разработчика данного пакета хватит с головой. В частности, IDE Android Studio, речь о которой пойдёт чуть позднее, основана именно на этой версии.

В платной же версии вы получаете поддержку фреймворков Spring (Spring MVC framework, Spring Security, Spring Boot, Spring Integration и т. д.), Node.js, Angular React, Grails, возможность использовать дополнительные языки (javascript, typescript, coffeescript) и взаимодействовать почти со семи популярными серверами (Tomcat, TomEE, GlassFish, JBoss, WildFly, Weblogic, WebSphere, Geronimo, Virgo и т. д.).

Самая популярная IDE: Eclipse

Точную цифру привести практически невозможно, но практически любой Java-разработчик с опытом работы более 2 лет сталкивался с этой IDE. Победителем в этой номинации Eclipse удалось стать благодаря большому сообществу, тонне полезной информации и бесчисленному количеств плагинов. Как и с предыдущими экземплярами, Eclipse поддерживает несколько языков, но воспринимается как приверженец Java.

Cамая универсальная IDE: JDeveloper

Ещё один продукт от Oracle с массой преимуществ, среди которых поддержка системы контроля версий и облачного сервиса Oracle, он упакован SQL Developer, PL / SQL обработчиком запросов, WebLogic Server, редакторами HTML, CSS, JavaScript, JSF, JSP, WSDL и ещё огромным количеством всевозможных полезностей.

Лучшая для Android: Android Studio

Было бы странно, если победителем в этой номинации стала какая-нибудь другая IDE. Помимо всех возможностей, который вам дарит исходная IDE IntelliJ IDEA, Android Studio включает в себя немало надстроек от Google, как чисто визуальных (макеты, форматы, GPU профайлер), так и функциональных (JUnit 4 и Firebase Test Lab для тестирования и отладки, система сборки Gradle, Instant Run).

Лучшая IDE для обучения: DrJava

Именно к такому выводу пришла команда разработчиков под названием JavaPLT, представляющие университет Райса. Оно и неудивительно, учитывая, что DrJava - их детище. Впрочем, оставив шутки в стороне, стоит признать, что DrJava действительно прекрасно подойдёт новичкам, ведь данная IDE даже не ставит своей целью соперничество с выше названными. Главное её преимущество - предельно быстрая настройка и переход к непосредственному написанию кода. В качестве конкурентов можно на схожих условиях рассмотреть BlueJ, JGrasp и Greenfoot.

Самая перспективная IDE: MyEclipse

Приветственная надпись на странице скачивания гласит “The best Java EE IDE enhanced for the full stack developer”. Что ж, это весьма нескромно, совсем не подкреплено фактами, но по правде говоря - недалеко от истины. В сущности, MyEclipse - это Eclipse, где всё изначально “привинчено”, “допилено” и ещё немного расширено. К услугам разработчика предлагается несколько версий, две основные - стандартная и профессиональная. Стандартная - это как раз Eclipse в новой оболочке, а Professional содержит мобильный веб-симулятор, редактор картинок, UML-редактор, шаблоны, надстройки - в общем, всё, что сделает создание продукта значительно проще.

А чем пользуетесь вы?

За более чем десятилетнюю историю языка Java, сменилось ни одно поколение интегрированных сред разработки (Integrated Development Environment - IDE). Эволюция IDE средств обусловлена множеством факторов, совокупность которых называется - информационные технологии, включающих в себя программную и аппаратную составляющие, а так же развитие самого языка, которое происходит не только в глубь, оптимизация каких то возможностей, что ярко демонстрирует приход новых библиотек Swing вместо устаревших AWT, но и "вширь", это появление технологий JSP, большая интеграция с СУБД и серверами приложений, поддержка технологий Spring, Hibernate и пр.

И если первые IDE средства, представляли в сегодняшнем понимании примитивный текстовый редактор, который служил только для набора исходных кодов, а всю остальную работу, начиная от компиляции и заканчивая окончательной сборкой проекта приходилось выполнять вручную, то сегодняшние современные, являются фактически многофункциональными устройствами, берущими на себя не только привычные функции но и ряд дополнительных начин6ая от автоматического создания Javadoc, рефакторинга, профайлинга, UML-проектирования, клиента для подключения к любой СУБД и заканчивая такими экзотическими, не относящимися к процессу разработки, как проверка орфографии.

Безусловно, что расплатой за все эти "удобства", являются повышенные требования к ресурсам компьютера. Бытует мнение, что 80% пользователей используют возможности существующего программного обеспечения только на 20 %, это так же можно спроецировать и на IDE - средства. Так как все их достоинства может оценить лишь программист, который не один год занимается разработкой на соответствующей технологии. А начинающим программистам трудно оценить адекватно то или иное средство, поэтому, как правило, его самостоятельный выбор происходит по двум критериям – интуитивная понятность интерфейса и различные временно - ресурсные характеристики, такие как загрузка, компиляция, запуск, занимаемый объем ОЗУ. Ведь на первых порах необходимы только компилятор, отладчик, и непосредственно сама Java-машина .

Поэтому целью данной статьи является обзор существующего рынка IDE средств для разработки программ с помощью языка Java, с выявлением слабых и сильных сторон каждого по различным критериям, на основании анализа результатов проекта: "Тестирование и анализ сред разработки программного обеспечения для Java" ("Testing and analyses IDE for Java" (TAIDEJ)), который был организован нами, координационной группой сайт и проходил с1.01.2006 по 1.09.2006 на сайте www.сайт.

Проект был разбит на несколько этапов. На первом этапе, нами был разработан опросный лист, таблица 2, и собран список Java-IDE, таблица 3, которые были разработаны с момента появления языка Java2 по настоящее время, включая ссылки, как на IDE средства которые у всех на слуху, так и на довольно экзотические. Этот список благодаря нашим участникам периодически пополнялся. Здесь мы хотим выразить, огромную благодарность всем участником проекта, а также всем тем, кто обсуждал и конструктивно критиковал нас форумах, таблица 1

Таблица 1. Java - форумы
Java - Форум на Исходниках.Ру
RSDN http://www.rsdn.ru/?forum
Forums - Juga.Ru http://forum.juga.ru/
IT archiv forums http://www.javable.com/forum
Java Forums - Java Programming http://forum.java.sun.com/
java.net Forums http://forums.java.net
Javalobby.org http://www.javalobby.org/java/forums
JavaWorld http://www.javaworld.com/javaforums
Компьютерный форум Ru.Board http://forum.ru-board.com
Программирование - iXBT Hardware BBS http://forum.ixbt.com
Форум JUG KPI http://jug.in.ntu-kpi.kiev.ua/forum
ЦИТФорум http://forum.citforum.ru
Realcoding.NET http://forums.realcoding.net

При разработке опросного листа мы попытались выяснить следующее:

  1. тенденцию изменения предпочтений программистов, так как некогда успешные средства или совсем перестали развиваться или по каким либо причинам фирмы их разрабатывающие сошли с дистанции, и поэтому многим приходилось переходить с одного IDE - средства, на другое;
  2. каким образом, программист выбрал то или иное средство;
  3. как оценивает программист те средства, с которыми он работал по пятибалльной шкале;
Таблица 2. Опросный лист

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

Таблица 3. Список IDE для Java.
Название Производитель Сайт производителя
1 Applet Designer Professional TVObjects http://www.tvobjects.com/
2 Apptivity Progress Software http://apptivity.progress.com/
3 Awesume Jawa 1.0 Awesume Interactive Design http://www.awesume.se/en/index.htm
4 Bluette free RAD Java tool http://blue.donga.ac.kr/bluette/
5 Bongo Marimba http://www.marimba.com/
6 Clarion Internet Edition TopSpeed Corporation http://www.topspeed.com/
7 CodeWarrior Pro MetroWerks http://www.metrowerks.com/desktop/pro/
8 Cosmo Code SGI http://www.sgi.com/Products/cosmo/code/index.html
9 ED for Windows Soft As It Gets http://www.getsoft.com/ed_java.html
10 Elixir Elixir Technology Pte Ltd http://www.elixir.com.sg/
11 Free Builder FreeBuilder collective http://www.freebuilder.com/
12 GRASP GRASP Project http://www.eng.auburn.edu/grasp/
13 Grinder Paradigm Exchange http://www.tpex.com/features.htm
14 Hyperwire Kinetix http://www.ktx.com/
15 Jamba Animator Interleaf http://www.jamba.com/
16 Jamba Interleaf http://www.jamba.com/
17 JavaMan HartWare http://homepage.dave-world.net/~hartware/
18 Java Studio Sun Microsystems http://www.sun.com/
19 Javelin Step Ahead http://www.ozemail.com.au/~stepsoft/
20 JaWiz InfinityEdge Systems http://www.infinityedge.com/
21 JBuilder Inprise http://www.inprise.com/jbuilder/
22 JDesignerPro BulletProof http://www.bulletproof.com/
23 JDE for Emacs Paul Kinnucan http://sunsite.auc.dk/jde/
24 JADI Sujal Shah http://dan.hcf.jhu.edu/sujal/winjadi/
25 JIG S Cubed http://www.scubed.cc/
26 Jipe Envision Internet Services http://www.users.globalnet.co.uk/~eis/jipe.htm
27 JPad ModelWorks http://www.modelworks.com/
28 Kalimantan Real-Time Enterprises, Inc. http://www.real-time.com/java/kalimantan/index.html
29 KAWA TEK-TOOLS, Inc. http://www.tek-tools.com/kawa/
30 Lava Dan Page http://www.hnet.demon.co.uk/products/lava/index.html
31 Lemur Island Design http://www.island-design.co.uk/
32 NetBeans NetBeans, Inc. http://www.netbeans.com/
33 OEW 1.0 Innovative Software http://www.isg.de/OEW/Java/
34 PARTS for Java ObjectShare http://www.objectshare.com/p4j/p4j2info.htm
35 PowerJ Sybase http://www.sybase.com/products/powerj/
36 Roaster Natural Intelligence http://www.roaster.com/roaster/
37 SNiFF+ TakeFive Software http://www.takefive.com/sniff/
38 Spirit eVisNet Limited http://www.evis.net/
39 SuperCede SuperCede, Inc. http://www.supercede.com/
40 Visaj Imperial Software Technology http://www.ist.co.uk/
41 Vision Jade Vision Software http://www.vision-soft.com/
42 VisualAge for Java IBM http://www.software.ibm.com/ad/vajava/
43 Visual Cafe Symantec http://cafe.symantec.com/
44 Visual J++ Microsoft http://www.microsoft.com/visualj/
45 Web Application Platform SilverStream http://www.silverstream.com/products/main/main_f.htm
46 Java WebIDE Chami.com http://www.chami.com/webide/
47 WipeOut softwarebuero m&b http://www.softwarebuero.de/wipeout-eng.html
48 IntelliJ IDEA IntelliJ IDEA http://www.jetbrains.com/idea/
49 Eclipse eclipse.org http://www.eclipse.org
50 JDeveloper Oracle http://www.oracle.com/technology/products/jdev/index.html
51 JCreator Xinox Software http://www.jcreator.com/
52 jEdit jEdit http://www.jedit.org/
53 X-Develop Omnicore Software http://www.omnicore.com/
54 Gel IDE GExperts Inc http://www.gexperts.com/
55 IBM Web Sphere Studio Application Developer IBM Software http://www-306.ibm.com/software/awdtools/studioappdev/
56 eXtend NOVELL http://www.novell.com/products/extend/

Во первых, способ распространения, соответственно IDE можно разделить на платные (JBuilder, Visual Cafe…) и бесплатные (NetBeans, Eclipse, Gel), которые любой желающий может скачать с сайта производителя.

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

По этому критерию можно выделить средства, которые не имеют визуального средства для разработки GUI (простые), например Gel, JCreator и которые имеют (сложные) - JBuilder, Idea.

Соответственно первые в ОЗУ при работе занимают менее 30 Мб, а вторые более 100Мб. Что касается самих визуальных средств разработки, то по своему опыту и по мнению многих коллег программистов с многолетним стажем, использование их не всегда является оправданным для начинающих программистов, хотя они вроде бы с одной стороны облегчают разработку, но с другой затрудняют концептуальное понимание таких базовых вещей библиотеки Swing как менеджеры размещения, обработка событий и пр.

Так же к участию в проекте была привлечена группа студентов ДГТУ (особо хочется отметить Егоренкова В. и Лагутина Д.), которые только приступили к изучению ООП, задачи которых заключались в ознакомлении с IDE для Java, их установке, фиксацией параметров при загрузке, выдачей своих комментариев и в конечном итоге самостоятельный выбор средства для первоначальной работы. Результаты тестирования сведены в таблицу 4.

Таблица 4. Результаты тестирования IDE - средств
Параметры GeI JСreator 3.5 JBuilder Х Idea 5 NetBeans 4.1
Время установки 1 сек 1-1,5 сек 58 сек 22 сек 50сек
размер установленного пакета 10,3 Мб 6,49 Мб 332 Мб 157 Мб 118 Мб
Размер дистрибутива 4,21 Мб 3,6 Мб 178 Мб 51,6 Мб 46,4Мб
Запуск 1-1,5 сек 9 сек 6 сек 6 сек
Занимаемый объем в ОЗУ 17828 Кб 12960 Кб 74128 Кб 65604 Кб 61409 Кб
Занимаемый объем виртуальной памяти 9020 Кб 14960 Кб 78588 Кб 76416 Кб 70406 Кб

* За базовую конфигурацию была взята машина на базе: CPU Athlon64 3000+; ОЗУ - 1024Мб DDR-SDRAM (pc3200)

После чего, был проведен семинар, на котором были подведены итоги работы, в результате чего было установлено, что на начальном этапе работы, когда идет процесс изучения синтаксических особенностей языка, нет необходимости в использовании тех возможностей, которые представляют сложные IDE, хотя, безусловно, многих заинтересовали способы быстрой разработки интерфейса, так как эта возможность наиболее интуитивно понятная, и сразу позволяет получать результаты. Но, как известно, разработка интерфейса является неотъемлемой, но не самой важной частью приложения. А повышенные требования к ресурсам со стороны сложных IDE, особенно с учетом того, что не у всех студентов домашние компьютеры имеют даже 512 Мб ОЗУ, дают неоспоримые преимущества простым IDE, поэтому лидером среди студентов, из всех имеющихся в наличие IDE был признан Gel.

Название % голосов Оценка
1 JBuilder 21.47 3.0
2 Eclipse 16.64 3.3
3 NetBeans 14.22 2.9
4 IntelliJ IDEA 11.66 3.5
5 JDeveloper 7.11 2.8
6 Visual J++ 5.26 1.8
7 JCreator 4.26 2.3
8 VisualAge for Java 3.69 2.8
9 Java Studio 3.41 2.0

Исходя из этого, проанализируем, с каких позиций программист подходит к самостоятельному выбору средства.

  1. Интерфейс. Этот первый компонент, с которым сталкивается пользователь после установки и который формирует первое впечатление о программе, и на основании которого может быть осуществлен окончательный выбор. Здесь оценивается не только общий дизайн, хотя, безусловно, он тоже сказывается определенным образом, но и удобство расположения и настройки таких компонент как окно исходного кода, окно проекта и т.д.
  2. Настройка. Соответственно после установки и первого запуска среды разработки выполняется ее настройка, т.е. указываются пути, по которым располагаются установленные SDK, DOCS, J2EE. В этом компоненте, как правило, существенных различий не наблюдается. Более того, современные средства, как правило, самостоятельно определяют установленные компоненты.
  3. Редактор кода. Настройка отображения исходных кодов, как правило, тоже не отличается разнообразием, в любом средстве легко можно настроить кеглю и ее размер, а так же цвет. Немаловажным преимуществом является наличие помощника когда, при "зависании" мышки на любой переменной или методе всплывает довольно подробный ToolTip (контекстное окошко) в котором развернуто, описаны все параметры объекта. Также есть масса приятных мелочей, вывод нумерации строк, отображение структуры класса, показ символов абзаца, проверка орфографии.

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

Анализ результатов опроса, таблицы 5,6. Как было описано выше, в нашем опросе средства были разбиты на две группы, те которыми пользовались ранее, и которыми пользуются в настоящее время. И если среди средств, которые использовались в прошлом наблюдается многообразие, мы отобрали средства которые набрали более 3% голосов от общего числа участвовавших в опросе, то среди тех, которые используются в настоящее время такого многообразия нет, и мы были вынуждены снизить процент голосов, и даже не смотря на это не получили большого многообразия.

Как видно, неизменным участником выборок является "простое" IDE средство JСreator, это объясняется по вей видимости тем, что оно является довольно простым в освоении и не требовательно к ресурсам, следовательно пользуется популярностью среди начинающих программистов. JBuilder потерял свои позиции, это очевидно связано с тем, что бесплатные средства, такие как Eclipse и NetBeans по своим возможностям стали его превосходить. Безусловным лидером следует признать Eclipse, так как оно не утратило свои довольно высокие позиции, а даже прибавило. Популярность JDeveloper следует связывать с его ориентированностью на СУБД Oracle. Популярность IntelliJ IDEA обусловлена тем, что в определенный момент времени, разработчики сумели представить продукт обладающий мощными возможностями, и на протяжении нескольких лет довольно успешно на высоком уровне поддерживают его марку, что подтверждается так же высокими оценками пользователей.

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

Анализ причин выбора IDE средства, показал, что выбор средств первого поколения, как правило осуществлялся случайно или по результатам самостоятельного анализа, что естественно, так как в это время проходил процесс становления, как самого языка, так и средств разработки. Средства же второго поколения выбирались в основном в результате самостоятельного анализа или совета друга. Это обусловлено, по всей видимости тем, что к этому времени сформировался как круг профессиональных Ява-программистов, так и рынок основных разработчиков IDE средств.

Таблица 7. Причины выбора IDE

Таким образом, на сегодняшний день лидерами среди IDE-средств разработки на Java являются IntelliJ IDEA, Eclipse и NetBeans. В целом все они имеют примерно одинаковые функциональные возможности, и довольно трудно оценить какое из них является лучшим. Поэтому при выборе средства, очевидно, нужно ориентироваться на IDE, на котором ведется разработка проекта, если программист вливается в команду разработчиков, или выбирать наиболее доступное, если планируется разработка самостоятельного проекта.

Список используемых источников

  1. Жмайлов Б.Б. Преимущества и недостатки разработки Java-программ без использования IDE-средств. Журнал "Вестник компьютерных и информационных технологий" №6, 2006г.
  2. , Сергей Бердачук,"Oracle JDeveloper 10g - Среда разработки Java приложений"
  3. , Алексей Литвинюк, "Введение в интегрированную среду разработки Eclipse"
  4. , Александр Демьяненко, "Краткий обзор IDE – Jbuilder"
  5. , Александр Демьяненко, "Краткий обзор IDE – Idea"
  6. , Борис Жмайлов, "Краткий обзор IDE - Gel"
  7. , Обзор средств автоматизированного рефакторинга в Java IDE

Скачать инсталляционный пакет можно на сайте компании Oracle по ссылке:

Инсталлируем Java.

Для того, чтобы установить Java на компьютер, запустите скаченный файл, после чего начнется процесс установки (рисю1.2).

Нажмите Next.

Установка по умолчанию будет происходить в директорию C:\Program Files\Java\jdk1.x.x_xx (вместо иксов номер версии), при желании директорию можно изменить, нажав на кнопку Change (рис 1.3).

Следуйте инструкциям мастера установки, и через несколько минут установка будет завершена.

По окончанию установки, программа предложит перейти к технической документации и руководствам по Java, для чего нужно будет нажать кнопку Next Steps. После этого в вашем браузере откроется страница с документацией Java http://docs.oracle.com/javase/ , которая является очень полезной для изучения.

Настройка переменных сред.

На следующем шаге необходимо задать пути к выполняемым файлам, а именно задать системные переменные PATH, CLASSPATH и JAVA_HOME .

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

В открывшемся окне в блоке Системные переменные нужно проверить существует ли переменная PATH , если переменная не существует, то ее нужно создать нажав на кнопку Создать, если переменная PATH уже существует, то ее нужно Изменить (рис. 1.4).

В следующем окне для переменной PATH нужно установить Значение переменной — путь к каталогу, в который была установлена Java (рис. 1.5).

Если переменной PATH уже присвоены другие значения, то новое значение добавляется через точку с запятой «;» в самом конце строки.

Также необходимо создать переменную CLASSPATH , если она еще не создана. В качестве ее значения необходимо указать «.;» (рис. 1.6).

Подобным образом создается/изменяется переменная JAVA_HOME . Значение этой переменной — путь к каталогу, в который была установлена Java (как для PAHT), но уже без поддериктории bin. Например:

Значение в PATH : C:\Program Files\Java\jdk1.7.0_25\bin

Значение в JAVA_HOME: C:\Program Files\Java\jdk1.7.0_25

После того, как были прописаны переменные, установку Java можно считать завершенной!

Проверка установки.

Чтобы проверить, успешно ли прошла установка, откройте командную строку. Для этого в меню Windows Пуск в строке поиска введите команду cmd и нажмите Enter. После этого откроется командное окно, в котором нужно ввести следующую команду.

После чего, если отобразится информация об установленной версии java, то установка прошла успешно.

Частые проблемы:

  • «java» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Проверьте правильность пути, прописанного в PATH. Старайтесь избегать пробелов в названии папки, в которую производите установку JDK. Если вы считае, что путь прописан правильно, то следует убедиться, что в дирpектории, которая прописана в строке PATH присутствует файл javac.exe, и что установленна была именно JDK, а не JDE,

  • не является приложением win 32

Возникает в следствии установки версии Java, не соответствующей разрядности системы (например, при установке 64 разрядной версии Java в 32-разрядную операционную систему).

  • Ошибка, призывающая проверить JAVA_HOME

Проверить, что в этой переменной хранится путь к установленной JAVA (без bin)



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: