Как сделать текстовый редактор на java

Обновлено: 06.07.2024

Для работы с текстом определено несколько компонент, наследников от JTextComponent:

  • JTextField — однострочное текстовое поле;
  • JFormattedTextField — однострочное текстовое поле, позволяющее вводить значения в определенном формате;
  • JPasswordField — однострочное текстовое поле для ввода пароля;
  • JTextArea — многострочное текстовое поле;
  • JEditorPane — редактор докуметов. Поддерживаются три типа документов: текст, html 3.2 и rtf;
  • JTextPane — редактор текста с поддержкой стилей.

В простых случаях для работы с текстом достаточно следующих методов JTextComponent:

  • getText() — получить текст, в JPasswordField заменен методом getPassword();
  • getText(int offs, int len) — получить часть текста;
  • setText(String t) — установить новый текст;
  • copy() — копирует выделенный текст в системный буфер обмена;
  • cut() — удаляет выделенный текст и копирует его в систмемны буфер обмена;
  • paste() — вставить содержимое системного буфера обмена;
  • replaceSelection(String content) — заменить выделение указанным текстом;
  • getSelectedText() — получить выделенный текст;
  • getSelectionEnd() — позиция конца выделенного текста;
  • getSelectionStart() — позиция начала выделенного текста;
  • select(int selStart, int selEnd) — выделить часть текста;
  • selectAll() — выделить весь текст.

обработка событий

Ниже приведен пример текстового поля доступного для редактирования. При вводе слова o4,оно автоматически заменяется на oooo. Обратите внимание, что нельзя изменять
документ во время обработки события как insertUpdate. Для этого запускается отдельный поток (интерфейс Runnable) и уже в его методе run делаются изменения документа.

работа с документом

Управлением содержимым документа вынесена в отдельный интерфейс Document. Таким образом достигается масштабирование от простых текстовых документов до сложных как html.

Получить/установить объекты с этим интерфейсом можно методами getDocument/setDocumentкласса JTextComponent. Это удобно для создания собственных редакторов со сложной структурой документа как html. Один и тот же документ может использоваться несколькими компонентами.

Ниже приведены некоторые методы Document:

    addDocumentListener(DocumentListener listener) — добавить обработчик изменения
    документа. DocumentListener содержит три метода:

  • changedUpdate(DocumentEvent e) — обработчик изменения атрибута или набора атрибутов;
  • insertUpdate(DocumentEvent e) — обработчик вставки в документ;
  • removeUpdate(DocumentEvent e) — обработчик удаления части документа;

Интерфейс Document в некоторых методах использует дополнительные типы объектов:

  • Position — интерфейс, определяющий позицию в документе. Всего один метод
    getOffset(), возвращающий текущее смещение от начала документа. Если документ изменился до этой позиции, то значение смещения увеличится или уменьшится. Если позиция находится в удаляемом регионе, то она становится равной началу региона. Например, пусть позиция имеет смещение 5, а удаляемый регион 2-10. После удаления, позиция станет равной 2. Изменения документа после данной позиции не изменяют ее значение. Позиция со смещением 0 остается постоянной при любых изменениях документа;
  • Element — интерфейс, описывающий структурную единицу документа.
    Имеет следующие методы:

  • getAttributes() — получить атрибуты назначенные элементу;
  • getDocument() — получить документ связанный с этим элементом;
  • getElement(int index) — получить дочерний элемент;
  • getElementCount() — число дочерних элементов;
  • getElementIndex(int offset) — получить индекс ближайшего дочернего элемента по данному смещению;
  • getEndOffset() — смещение от начала документа конца этого элемента;
  • getName() — имя элемента;
  • getParentElement() — родительский элемент;
  • getStartOffset() — смещение от начала документа начала этого элемента;
  • isLeaf() — является ли элемент листом. Элемент, который может иметь дочерние элемента, даже если в данный момент их нету, будет возвращать false.

Форматирование текста. Стиль

В Swing реализованы две модели управления документом с поддержкой стилей:

  • DefaultStyledDocument — документ со стилями, используется классом JTextPane по умолчанию;
  • HTMLDocument — модель управления HTML документами.

Стили описываются классами с интерфейсом MutableAttributeSet:

  • SimpleAttributesSet — простой стиль, определяющий множество атрибутов;
  • Style — именнованный стиль, кроме атрибутов хранит имя стиля.

Добавить атрибуты к стилю можно классом StyleConstants.

контекст стилей

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

стили с малым числом атрибутов

Иногда для редакторов требуется множество стилей с малым числом атрибутов, например, чтобы при нажатии CTRL+B сделать выделенный текст жирным. Очевидно, что создавать динамически новый стиль при каждом нажатии не эффективно. Определять множество именнованных стилей, в котором по одному атрибуту неинтересно. StyleContext решает и эту задачу, добавляя в контекст только уникальные неименованные стили.
Проверка уникальности происходит для стилей с числом атрибутов меньшим 9. Если число
атрибутов больше 9, то создается и добавляется новый стиль. Число 9 можно изменить, перегружая метод getCompressionThreshold().

стиль элемента документа

Для определения стиля элемента документа, нужно получить объект с интерфейсом
Element и воспользоваться его методом getAttributes(). В DefaultStyledDocument в качестве элемента по указанной позиции можно получить символ или параграф документа.

Древовидные структуры Swing — JTree

Для отображения древовидных структур в swing используется класс JTree.

Его методы addTreeSelectionListener, addTreeExpansionListener, addTreeWillExpandListener добавляют обработчики следующих событий:

  • элемент дерева был выбран пользователем, обработка реализуется интерфейсом TreeSelectionListener;
  • ветка была скрыта или раскрыта, обработка реализуется интерфейсом TreeExpansionListener;
  • ветка будет скрыта или раскрыта, обработка реализуется интерфейсом TreeWillExpandListener.

Элемент дерева (ветка или лист) представляется классом с
интерфейсом MutableTreeNode (производный от TreeNode), например класс DefaultMutableTreeNode.
Ветка может иметь одну родительскую ветку и от 0 и более дочерних веток. Если дочерних
элементов нет, то такой элемент называется листом (leaf).

Организация хранения данных (модель) осуществляется классом с интерфейсом TreeModel, например
класс DefaultTreeModel. Класс TreePath представляет ‘путь’ элемента в дереве через массив объектов класса Object.
Реальный тип объектов определяется используемой моделью. Получить сам элемент пути можно методом getPathComponent этого класса.

Для отображения элемента используется класс с интерфейсом TreeCellRenderer,
например класс DefaultTreeCellRenderer. Таким образом появляется возможность создать пользовательское отображение дерева (обычно использованием или перегрузкой методов DefaultTreeCellRenderer).

По умолчанию элементы отображаются в виде строки. Если в качестве элементов дерева
используются не строки, а другие объекты, то используется метод toString класса Object.

Ниже приведен пример оконного приложения c деревом и текстовым полем. При выборе
пользователем элемента дерева, в текстовом поле отображается путь предыдущего выбранного элемента, а затем путь нового выбранного элемента.

Закладки — JTabbedPane

Закладки управляются оконным контейнером JTabbedPane, основными методами которого являются:

В библиотеке Java представлено множество компонентов для работы с текстом. Мы разберем лишь часть из них — основные (все они располагаются в палитре компонентов на вкладках AWT и Swing).

• Отображение текста, не редактируемого пользователем, — компоненты Label (java. awt) и JLabel (javax. swing).
• Однострочное текстовое поле— TextField (java. awt) и JTextField (javax. swing).
• Многострочная текстовая область— TextArea (java.awt) и JTextArea (javax. swing).
• Текстовая панель, позволяющая отображать различные шрифты, форматирование и др. — JEditorPane (javax. swing).

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

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

Многострочное текстовое поле представляет собой аналогичное поле для ввода, но не с одной строкой, а с несколькими.

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

Однако любопытно сконструировать подобную игрушку как пример.

1. Создайте новое приложение с названием проекта MyTextEditor и заголовком My Editor.
2. Поместите в окне дизайнера в форму компонент JEditorPane. Сделайте так, чтобы он был "растянут" на весь контейнер. Измените его свойство Text на значение " ".
3. Добавьте в окно структуры на значок UI компонент javax. swing. JColorChooser из секции Swing Containers в палитре компонентов.
4. Добавьте компонент JMenuBar в приложение. У значка this в окне структуры измените свойство JMenuBar на "jMenuBarl".
5. Разработайте меню таким образом, как показано в листинге 8.6.

Меню Шрифт
• Arial - переключатель (включен)
• Times New Roman — переключатель (выключен)
• Разделитель
• Подменю Размер — 8 переключателей внутри: 8, 9, 10, 11, 12, 14 (включен), 18, 36
• Разделитель
• Обычный элемент "Цвет текста"
• Обычный элемент "Цвет курсора"
• Разделитель
• Флажок "Полужирный" (выключен).
• Флажок "Курсив" (выключен).
Меню Правка
• Вырезать — обычный элемент меню
• Копировать — обычный элемент меню
• Вставить — обычный элемент меню
• Выделить все — обычный элемент меню

6. Теперь добавьте после объявления всех компонентов следующий код.

private String FontName = "Arial";
private int style = 0, size = 14;
private Font TextFont = new Font(FontName, style, size);

7. Теперь измените конструктор так, чтобы он выглядел следующим образом

public Framel() enableEvents (AWTEvent. WINDOW__EVENT__MASK) ;
try <
jbInit();
jEditorPanel.setFont(TextFont);
>
catch(Exception e) e.printStackTrace() ;
>
>

8. Теперь создайте для всех команд меню обработчики событий actionPerformed и наберите код, показанный в листинге 8.7.

Листинг 8.7.
Создание текстового редактора

Поговорим немного о написанном коде. Все переключатели или флажки при щелчке на них работают по следующему принципу. Если, допустим, флажок (или переключатель) установлен, то при нажатии кнопки мыши нужно сделать некие действия и сбросить его; а если он сброшен, то при нажатии сделать другие действия и установить флажок. Обычно выполняемые действия подразумевают включение/отключение каких-то операций. Это именно так и в нашем коде.

Кроме того, мы создаем экземпляр класса Font. В конструкторе, который мы используем, имеются три параметра: имя шрифта, стиль (0 — обычный, 1 — полужирный, 2 — курсив, 3 — полужирный курсив), размер шрифта.

Мы создаем в нашем классе четыре закрытых члена: экземпляр класса Font, который мы устанавливаем в качестве шрифта текстового поля, переменную для хранения имени шрифта, две переменные целого типа: для хранения стиля и для хранения размера шрифта. Мы присваиваем шрифт текстовому полю с помощью метода setFont.

Чтобы вызвать диалоговое окно Выбор цвета, нужно вызвать метод showDialog экземпляра класса JColorChooser. Этот метод возвращает тип Color. Методу мы передаем текущий цвет курсора (текста), а новый цвет курсора (текста) мы получаем при вызове этого метода.

Вот мы и создали довольно любопытную программу Результат ее работы может выглядеть так, как на следующем изображении (рис. 8.9).

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

Для написания кода на языке Java существует большое количество программ: от мощных и профессиональных таких как Intellij IDEA, Eclipse, NetBeans — их еще называют интегрированными средами разработки (Integrated development environment, IDE), до программ попроще — текстовых редакторов. Самые популярные среди них: Sublime Text, Gedit, Atom, Xcode и т. д.

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

Т.к. вы только начинаете изучать программирование, и ваши задачи небольшие по объему, то мы рекомендуем использовать Sublime Text. На первых порах его функционала хватит за глаза.

А начинать изучение Java с написания кода в мощной, профессиональной среде разработки было бы неверно:

  • Вы запутаетесь во всех кнопках, меню, панелях этих IDE
  • Они слишком умные и многие вещи делают за программиста, что-то подсказывают. Вам это не подходит, т.к. в начале нужно набить шишек, сталкиваясь с разнообразными проблемами. И, конечно же, необходимо научиться их самостоятельно решать
  • Используя IDE, вы быстро привыкните к ее подсказкам и станете зависимыми от них, а мышление при этом останется на прежнем уровне — эволюции не произойдет. Можно легко превратиться в обезьянку, которая тыкает кнопки, но при этом впадает в ступор, если что-то ломается или появляется ошибка

Позже мы обязательно перейдем на Intellij IDEA, но сейчас важнее настроить ваше мышление на язык Java, а для этого хватит и Sublime Text.

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

Функционал редактора можно расширять через плагины. Тут они называются пакетами. За работу с ними отвечает пакетный менеджер package control. Его нужно установить: он позволяет искать, устанавливать и удалять пакеты.



Теперь с помощью package control установим необходимые нам пакеты. Для этого перейдем в меню Preferences → Package Control (или Ctrl + Shift + p). Отобразится выпадающий список с возможностями менеджера пакетов.


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

После завершения установки в меню Preferences появится новый пункт Languages. Открываем его и выбираем Русский (ru).

Следующим установим пакет под названием Terminus (можно также выбрать Terminal). Он позволит запускать терминал прямо в редакторе, а не в виде отдельного окна. В нем мы будем: компилировать и запускать программы, работать с Git и файловой системой.

Далее настроим Terminus на то, чтобы он запускал терминал в папке, содержащей открытый в редакторе файл. Это очень удобно. Откроем конфиг с настройками через меню Опции → Package Settings → Terminus → Key Bindings .

Откроется двухпанельное окно, в правую панель которого необходимо скопировать и поместить следующий код:

Также настроим, чтобы запускался именно cmder (его мы установили в прошлой статье), а не терминал по умолчанию. Для этого опять идем в настройки Terminus, но уже запустим Settings. Снова откроется двухпанельное окно. Приведу полностью код, который у меня прописан в правой панели:

Проверим терминал в действии, нажав Ctrl + Alt + t прямо в Sublime Text. Если все сделано правильно, то он успешно запустится в виде отдельной панели внизу окна.

Возможно, вы не замечали, но в разных программах (на разных компьютерах) размер табуляции может отличаться (где-то больше, где-то меньше). Самыми популярными размерами являются: 2, 4 и 8 пробелов.

Чтобы вам было понятней, напишите в Sublime Text код из первой статьи, и сохраните его к себе на диск под именем MyFirstApp. java (а иначе подсветка не сработает), например, по такому пути D:\Java\StartJava\MyFirstApp.java.


Если вы внимательно посмотрите на код на картинке из редактора, то в нем можно увидеть точки и длинные тире. Одно тире — это символ одного таба; одна точка — символ одного пробела. Чтобы их отобразить, необходимо выполнить настройку.

Большие отступы — это еще не все. Это пол беды. Есть проблема пострашнее, когда в коде смешивают пробелы и табуляцию.

Программист считает, что раз у него в программе размер таба равен 4 пробела (самый частый вариант), то нет никакой проблемы в том, чтобы иногда вместо таба ставить пробелы в одном и том же классе. Чтобы понять, к чему эта практика смешивания в итоге приведет, давайте посмотрим на следующий результат:



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

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

Внесенные нами настройки не преобразуют уже введенные табы в пробелы. Для такого преобразования в уже созданных классах, нужно нажать в правом нижнем углу на текст с надписью Spaces: 4, и преобразовать отступы (табуляцию) в пробелы:


Обратите внимание на зеленые стрелки, которые указывают на вертикальные линии-разделители. Справа и слева от такой линии всегда должно быть 4 пробела (4 точки).

По умолчанию Sublime Text не проверяет правописание, но даже если его включить, то оно будет работать только для англ. языка. Решить эту проблему можно, скачав дополнительные языковые пакеты Russian-English Bilingual.dic и Russian-English Bilingual.aff, а затем поместить в специальную папку.

При этом в настройках автоматически появится строка "dictionary": "Packages/Russian-English Bilingual.dic".

Если вам рано или поздно надоест все время писать одни и те же строки кода, например, System.out.println(""); или все магические слова метода main, то вы обратитесь за помощью к сниппетам. Это небольшие фрагменты текста (шаблон), которые магическим образом превращаются в полноценный код. Это очень удобно и избавляет от рутинных действий.

Например, чтобы не писать System.out.println(""), мы можем создать сниппет, который по команде sout + Tab будет разворачиваться в System.out.println().

Откроется файл с шаблоном. Заменим текст Hello, $ <1:this>is a $, на System.out.println("");. Затем добавим команду sout вместо hello в строке 6. При этом не забываем раскомментировать эту строку. Сохраняем файл, например, под именем sout.sublime-snippet.

  • "highlight_line": true — выделяет строку, на которой находится курсор
  • "indent_guide_options": ["draw_normal", "draw_active"] — отвечает за отображение отступа в виде вертикальной линии для блока, в котором находится курсор
  • "save_on_focus_lost": true — активирует автосохранение, которое срабатывает каждый раз при потере фокуса окна программы. Эта опция избавляет от ручного сохранения файлов (Ctrl + s)
  • "use_tab_stops": true — с этой настройкой, при нажатии Backspace, будет удаляться по несколько подряд идущих пробелов, как будто это символ табуляции. Вами не придется жать много раз Backspace, чтобы удалить каждый пробел
  • "rulers": [100] — устанавливает вертикальную черту-ограничитель, показывающую границу, за которую не должна выходить строка с кодом. Обычно длина строки не должна превышать 80 - 120 символов в длину. Я выбрал среднее значение
  • "word_wrap": true — активирует перенос на новую строку
  • "wrap_width": 100 — делает принудительный перенос на новую строку, если ее длина превышает 100 символов
  • "remember_full_screen": true — если вы используете редактор в режиме полноэкранного просмотра (F11), то данный параметр позволяет его запомнить даже при выходе из программы (при условии, что он в нем находился, когда она была закрыта). При повторном запуске Sublime Text откроется в fullscreen-режиме

Если вам нужно видеть одновременно несколько файлов в Sublime Text, то окно редактора можно разделить на отдельные страницы (столбцы). Для активации этой фичи зайдите в меню Вид → Разделение экрана.

И последнее, если вы не хотите, чтобы интерфейс программы отвлекал вас от кодинга, то в Sublime Text можно включить отвлеченный режим, который скрывает все лишние элементы интерфейса. Активировать его можно по нажатию Shift + F11.

Перед нами промышленная хлеборезка итальянской компании Brevetti Gasparin srl, модель 1700. Её производительность — от 16 до 60 булок в минуту:


.

А вот обычный нож для хлеба:


Чем мы воспользуемся, если захотим сделать пару бутербродов? Ответ очевиден. Инструмент должен соответствовать задаче.

Отдавая должное интегрированным средам разработки (IDE), таким как IntelliJ IDEA, Eclipse или NetBeans, стоит отметить, что в ряде случаев текстовый редактор будет более удачным выбором. Например, если мы только начинаем изучать тот или иной язык программирования, и хотим сосредоточиться именно на нём, а не на освоении IDE. Или когда нужно быстро написать что-то простое и небольшого объёма. Применение IDE тут будет явно избыточным.

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

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

  1. Открытая лицензия, возможность бесплатного использования.
  2. Настраиваемая подсветка кода.
  3. Наличие системы плагинов или пакетов, позволяющих автоматизировать компиляцию и запуск написанных в редакторе программ.
  4. Кроссплатформенность — возможность использовать редакторы в трёх основных операционных системах: Windows, Linux, Mac. Небольшая оговорка: третий рассмотренный редактор, Notepad++ единственный не до конца соответствует этому требованию, однако полностью соответствует первым трём.

Atom – современный кроссплатформенный текстовый редактор с открытым исходным кодом для Linux, macOS и Windows, с поддержкой плагинов, написанных на Node.js и встраиваемых под управлением Git. Впервые был опубликован в 2014 году. Описывается как “A hackable text editor for the 21st Century” (Текстовый редактор с хаками для 21-го века). Обладает развитой системой пакетов для расширения функциональности.


Достаточно полную инструкцию на русском языке по установке и настройке можно найти в блоге Harrix. Мы же рассмотрим минимальный набор действий — то, что необходимо для комфортного написания и запуска кода, сразу после установки редактора.

Начнём с изменения размера табуляции. Пройдём от главного меню: File → Settings → Editor, пролистываем вниз до пункта Tab Length и вместо цифры 2 указываем 4.

Для компиляции и запуска Java и Go файлов нам потребуется дополнительный пакет Script. Устанавливаем, пройдя от главного меню File → Settings → Install. В окошке Search packages вводим название пакета Script и нажимаем кнопку Packages. У найденного таким образом пакета нажимаем кнопку Install.


Ожидаем окончания загрузки и установки – когда у пакета появятся кнопки Settings, Uninstall, Disable.

Нажимаем кнопку Settings и для параметра Default Working Directory (CWD) Behavior выбираем значение Directory of the script.

Теперь мы можем запускать компиляцию и выполнение кода на Java и Go нажимая сочетание клавиш Ctrl+Shift+B.

Добавим небольшой косметический штрих. Найдите в своей папке пользователя папку с именем .atom, зайдите туда и откройте в редакторе (в том же Atom) файл styles.less. Добавьте в его конец приведённый ниже фрагмент. Размер шрифта в консоли Script станет больше.

Ещё один совет. Чтобы Atom сохранял вкладки с файлами, начните работу с выбора папки проекта File → Open Folder…, указав папку с файлами, которые собираетесь редактировать.

Geany

Geany – стабильный и лёгкий кроссплатформенный текстовый редактор с открытым исходным кодом для Linux, Windows, MacOS, BSD и Solaris. Первая версия вышла в 2005 году.


Простой интерфейс, основанный на GTK+, выглядит не так современно и элегантно, как у Atom. Зато для работы с Java и Go этот редактор готов сразу после установки и не нуждается ни в каких дополнительных настройках.

Для компиляции файла на Java достаточно нажать на панели кнопку Compile или клавишу F8. Для выполнения откомпилированного байт-кода нажимаем кнопку Execute или F5. Консоль с результатами выполнения открывается в отдельном окне.

Для запуска кода на Go достаточно одной кнопки Compile или клавиши F8.

Notepad++

Notepad++ – лёгкий и быстрый текстовый редактор с открытым исходным кодом. К сожалению, он не кроссплатформенный и доступен только для Windows.

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


После установки в меню Settings → Style Configurator…, выделив в списках пункты Global Styles и Default Style, можно настроить семейство и размер шрифта редактора. Там же есть возможность сменить тему целиком: “Select theme”.

Устанавливаем табуляцию 4 пробела, согласно Java Code Conventions: Settings → Preferences…, выделяем пункты Language и Java и включаем чекбокс Replace by space.

Для автоматизации компиляции и запуска кода скачиваем и настраиваем плагин NppExec. По ссылке представлены несколько версий, у меня установлен v0.5.9.9 dev. Разрядность плагина (x64 или x86) выбираем согласно разрядности установленного Notepad++. Скачав zip-архив, достаём из него файл NppExec.dll и копируем в папку плагинов. В моём случае полный путь к этой папке выглядит так – C:\Program Files\Notepad++\plugins\NppExec\. После этого запускаем (или перезапускаем) Notepad++.

Настраиваем плагин, пройдя Plugins → NppExec:


В меню плагина включаем пункты:

  • No internal messages
  • Save all files on execute
  • Follow $(CURRENT_DIRECTORY)

Затем добавляем команды компиляции, сначала для Java. Нажимаем Plugins → NppExec → Execute или просто нажмём F6. Наберём в окне Command(s) следующие команды (скрипт):

Теперь можно попробовать добавить другой скрипт, например, для Go. Нажимаем F6, вводим предложенную ниже строку и сохраняем этот скрипт под именем “go”.

Резюме

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

Меня можно найти в Telegram под ником @biblelamp или на сайте GeekBrains. Буду рад любым замечаниям, пожеланиям и дополнениям.

Для тех, кто только начинает свой путь в Java и Go, у нас в блоге есть ещё кое-что интересное:

Если же вы хотите получить полноценное системное образование, ждём вас на факультетах Java и Go в Geek University!


Перед нами промышленная хлеборезка итальянской компании Brevetti Gasparin srl, модель 1700. Её производительность — от 16 до 60 булок в минуту:


.

А вот обычный нож для хлеба:


Чем мы воспользуемся, если захотим сделать пару бутербродов? Ответ очевиден. Инструмент должен соответствовать задаче.

Отдавая должное интегрированным средам разработки (IDE), таким как IntelliJ IDEA, Eclipse или NetBeans, стоит отметить, что в ряде случаев текстовый редактор будет более удачным выбором. Например, если мы только начинаем изучать тот или иной язык программирования, и хотим сосредоточиться именно на нём, а не на освоении IDE. Или когда нужно быстро написать что-то простое и небольшого объёма. Применение IDE тут будет явно избыточным.

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

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

  1. Открытая лицензия, возможность бесплатного использования.
  2. Настраиваемая подсветка кода.
  3. Наличие системы плагинов или пакетов, позволяющих автоматизировать компиляцию и запуск написанных в редакторе программ.
  4. Кроссплатформенность — возможность использовать редакторы в трёх основных операционных системах: Windows, Linux, Mac. Небольшая оговорка: третий рассмотренный редактор, Notepad++ единственный не до конца соответствует этому требованию, однако полностью соответствует первым трём.

Atom – современный кроссплатформенный текстовый редактор с открытым исходным кодом для Linux, macOS и Windows, с поддержкой плагинов, написанных на Node.js и встраиваемых под управлением Git. Впервые был опубликован в 2014 году. Описывается как “A hackable text editor for the 21st Century” (Текстовый редактор с хаками для 21-го века). Обладает развитой системой пакетов для расширения функциональности.


Достаточно полную инструкцию на русском языке по установке и настройке можно найти в блоге Harrix. Мы же рассмотрим минимальный набор действий — то, что необходимо для комфортного написания и запуска кода, сразу после установки редактора.

Начнём с изменения размера табуляции. Пройдём от главного меню: File → Settings → Editor, пролистываем вниз до пункта Tab Length и вместо цифры 2 указываем 4.

Для компиляции и запуска Java и Go файлов нам потребуется дополнительный пакет Script. Устанавливаем, пройдя от главного меню File → Settings → Install. В окошке Search packages вводим название пакета Script и нажимаем кнопку Packages. У найденного таким образом пакета нажимаем кнопку Install.


Ожидаем окончания загрузки и установки – когда у пакета появятся кнопки Settings, Uninstall, Disable.

Нажимаем кнопку Settings и для параметра Default Working Directory (CWD) Behavior выбираем значение Directory of the script.

Теперь мы можем запускать компиляцию и выполнение кода на Java и Go нажимая сочетание клавиш Ctrl+Shift+B.

Добавим небольшой косметический штрих. Найдите в своей папке пользователя папку с именем .atom, зайдите туда и откройте в редакторе (в том же Atom) файл styles.less. Добавьте в его конец приведённый ниже фрагмент. Размер шрифта в консоли Script станет больше.

Ещё один совет. Чтобы Atom сохранял вкладки с файлами, начните работу с выбора папки проекта File → Open Folder…, указав папку с файлами, которые собираетесь редактировать.

Geany

Geany – стабильный и лёгкий кроссплатформенный текстовый редактор с открытым исходным кодом для Linux, Windows, MacOS, BSD и Solaris. Первая версия вышла в 2005 году.


Простой интерфейс, основанный на GTK+, выглядит не так современно и элегантно, как у Atom. Зато для работы с Java и Go этот редактор готов сразу после установки и не нуждается ни в каких дополнительных настройках.

Для компиляции файла на Java достаточно нажать на панели кнопку Compile или клавишу F8. Для выполнения откомпилированного байт-кода нажимаем кнопку Execute или F5. Консоль с результатами выполнения открывается в отдельном окне.

Для запуска кода на Go достаточно одной кнопки Compile или клавиши F8.

Notepad++

Notepad++ – лёгкий и быстрый текстовый редактор с открытым исходным кодом. К сожалению, он не кроссплатформенный и доступен только для Windows.

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


После установки в меню Settings → Style Configurator…, выделив в списках пункты Global Styles и Default Style, можно настроить семейство и размер шрифта редактора. Там же есть возможность сменить тему целиком: “Select theme”.

Устанавливаем табуляцию 4 пробела, согласно Java Code Conventions: Settings → Preferences…, выделяем пункты Language и Java и включаем чекбокс Replace by space.

Для автоматизации компиляции и запуска кода скачиваем и настраиваем плагин NppExec. По ссылке представлены несколько версий, у меня установлен v0.5.9.9 dev. Разрядность плагина (x64 или x86) выбираем согласно разрядности установленного Notepad++. Скачав zip-архив, достаём из него файл NppExec.dll и копируем в папку плагинов. В моём случае полный путь к этой папке выглядит так – C:\Program Files\Notepad++\plugins\NppExec\. После этого запускаем (или перезапускаем) Notepad++.

Настраиваем плагин, пройдя Plugins → NppExec:


В меню плагина включаем пункты:

  • No internal messages
  • Save all files on execute
  • Follow $(CURRENT_DIRECTORY)

Затем добавляем команды компиляции, сначала для Java. Нажимаем Plugins → NppExec → Execute или просто нажмём F6. Наберём в окне Command(s) следующие команды (скрипт):

Теперь можно попробовать добавить другой скрипт, например, для Go. Нажимаем F6, вводим предложенную ниже строку и сохраняем этот скрипт под именем “go”.

Резюме

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

Меня можно найти в Telegram под ником @biblelamp или на сайте GeekBrains. Буду рад любым замечаниям, пожеланиям и дополнениям.

Для тех, кто только начинает свой путь в Java и Go, у нас в блоге есть ещё кое-что интересное:

Если же вы хотите получить полноценное системное образование, ждём вас на факультетах Java и Go в Geek University!

9 сентября 2013 Мария (admin)

В этом уроке мы создадим нашу первую программу на языке Java.
Создание приложения на языке Java состоит из трех следующих шагов:

Создание исходного файла

После написания этого кода, файл нужно сохранить под именем HelloWorld.java.
Для этого в вашем текстовом редакторе нужно выбрать пункт меню Файл-> Сохранить как… Если вы пользуетесь стандартным Блокнотом Windows, то для того, чтобы сохранить файл с расширением .java необходимо при сохранении выбрать Тип файла: Все файлы и ввести Имя файла: HelloWorld.java (рис 2.1).

lesson2_save

Если вы пользуетесь Notepad++ то нужно выбрать Тип файла:Java source file (*.java)

Будьте внимательны! файл должен называться в точности так, как называется наш класс — HelloWorld. Так же важно учитывать регистр букв. HelloWorld и helloworld в данном случае это разные слова!

Обратите также внимание на кодировку в которой сохраняете файл. Должно быть выбрано ANSI . В Notepad++ кодировку можно установить в меню Кодировки.

Компиляция исходного файла

Исходный файл с кодом программы создан, теперь перейдем к компиляции. Для компиляции Java предназначен компилятор javac, который входит в состав установленного нами в первом уроке пакета JDK.

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

Теперь в нем нужно изменить текущий каталог на тот, в котором находится наш исходный файл (например C:\studyjava\). Для этого вводим следующую команду:

и нажимаем Enter.

После того, как директория изменилась, вводим команду компиляции

После этого, окно командной строки должно выглядеть следующим образом (рис 2.2):

lesson2_compil

То есть, мы не получим никакого подтверждения, о том, что программа скомпилировалась успешно. Однако, в папке с нашим исходным файлом, должен появиться файл HelloWorld.class. Это можно проверить с помощью команды

Эта команда выводит на экран список всех файлов, находящихся в выбранной директории (рис 2.3).

lesson2_dir

Если файл HelloWorld.class присутствует в этом списке, то это значит, что программа скомпилировалась успешно.

Если в коде программы есть ошибка, то компилятор Java при компиляции нам об этом сообщит.

lesson2_error

Запуск программы

Переходим к последней стадии — запуску программы.

Вводим в командном окне:

Рис 2.5.

Еще раз обратите внимание на чувствительность к регистру в Java. Если вы напишете helloworld вместо HelloWorld, то программа запущена не будет, потому что Java попросту не найдет файл с таким именем.

Конечно, для написания, компилирования и запуска программ на языке Java существуют более удобный инструмент, нежели Блокнот и командная строка . Этот так называемая Интегрированная среда обработки IDE. Об этом мы поговорим в следующем уроке.


Категория: Уроки Java

Комментариев к записи: 95

Скажите, пожалуйста, почему первую программу во всех учебниках (во всяком
случае, в тех, которые я смотрел) называют HelloWorld, разве нельзя назвать её как-то по-другому, далее сохранив файл программы под соответствующим именем?
А если можно, то, думаю, будет лучше, если в тексте урока указать, что программу можно называть, как УГОДНО! (естественно, не в кириллице)

И конечно же, СПАСИБО за уроки!

Здравствуйте, просто так принято, а называть, конечно, можете как хотите

Мария, здравствуйте.
Возник ещё вопрос.
Можно ли класс назвать, например, Goga, а файлу присвоить другое имя, например Djon.java, а затем, когда будем компилировать, указать файл Djon.java, а когда будем запускать программу, указать уже Goga?

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

С уважением, и благодарностью за ВНИМАНИЕ и УРОКИ!

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

Мария, простите, ещё — просьба.

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

Несколько слов об этом есть в уроке 5. Более подробно это будет рассматриваться далее в уроках посвященных объектно ориентрованному программированию (они еще не написаны).
Пожалуйста:)

Здравствуйте, выводит ошибку. Придирается к точке между System и out со словами cannot find symbol. Почему так происходит и как это решить?

Читайте также: