Apache netbeans что это
Знакомство с Netbeans Platform
Netbeans Platform — это фреймворк основанный на Swing, с помощью которого возможно создание больших десктоп приложений. Одноименное Netbeans IDE созданно, как раз, на базе Netbeans Platform. В нём содержится множество API для более легкой работы с окнами, действиями, файлами и т.п.
По сути, Netbeans Platform — это аналог Eclipse RCP (Rich Client Platform), только основанный на Swing, а не SWT. Выяснять, что лучше, я не собираюсь. Существует мнение, что Netbeans Platform легче изучается, менее «глючен» и, поскольку он основан на Swing, поддерживает большее количество платформ и созданное на нем приложение выглядит одинаково везде. Однако некоторых вещей в нем не хватает.
Каждая отдельная возможность в приложение на Netbeans Platform может быть представлена отдельным модулем, которые, в свою очередь, сравнимы с плагином. Модуль Netbeans — это группа Java классов, которая предоставляет приложению определенный функционал.
Материала на русском, к сожалению, очень мало. Точнее сказать, я ничего не нашёл. Следует добавить страницу netbeans.org/features/platform/all-docs.html в закладки, там есть почти всё, что может понадобится.
Приступаем к работе.
Для начала, следует скачать Netbeans IDE с поддержкой Netbeans Platform. Идем по этой ссылке: netbeans.org/downloads/index.html и скачиваем любую версию, где стоит галка напротив «Пакет SDK платформы NetBeans».
В качестве ознакомления создадим приложение, которое каким-нибудь образом преобразует введенный текст.
На открывшуюся формы кидайте «Участок текста» («Text field») и кнопку.
«jTextArea1» переименовываем в «text». Далее дважды нажимаем на вашу кнопку и вставляем следующий код:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) <
text.setText(text.getText().toUpperCase());
>
Запускаем проект (клавиша F6). В появившимся окне выбираем «Окно»->«Text» и на экране появится окошко, которые описано в нашем модуле.
Модульное приложение с помощью Lookup.
В этом разделе мы создадим два дополнительных модуля. Первый модуль, «TextFilterAPI», содержит интерфейс поставщика услуг. А второй модуль, «UppercaseFilter», является поставщиком услуг для интерфейса. GUI модуль, написанный ранее, никоим образом не будет ссылаться на код поставщика услуг «UppercaseFilter». Это возможно благодаря тому, что «UppercaseFilter» будет зарегистрирован в META-INF/services folder и загружен с помощью класса Netbeans Lookup, который похож на класс ServiceLoader из JDK6.
В окне проектов, создаем модуль с именем TextFilterAPI. Нажимаем «Далее» и в поле кодового имени вводим «org.word.editor.api» и «Готово». В новом модуле создаем интерфейс TextFormater, следующим образом:
public interface TextFilter <
String process(String s);
>
В свойствах модуля TextFilterAPI, переходим на вкладку «Версии API-интерфейса» и в списке публичных пакетов ставим галку напротив «org.word.editor.api».
Создаем еще модуль с именем «UppercaseFilter» и кодовым именем «org.word.editor.uppercase». Открываем свойства этого модуля, во вкладке «Библиотеки» добавляем зависимости от «TextFilter» и «Lookup API».
После этого создаем класс UppercaseFilter в пакете «org.word.editor.uppercase» следующим образом:
import org.openide.util.lookup.ServiceProvider;
import org.word.editor.api.TextFilter;
@ServiceProvider(service=TextFilter.class)
public class UppercaseFilter implements TextFilter <
public String process(String s) <
return s.toUpperCase();
>
>
Теперь переходим с первому модулю, отвечающему за GUI. В его своствах устанавливаем зависимость от «TextFilterAPI» и меняем код обработки нажатия кнопки на следующий:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) <
String enteredText = text.getText();
Collection allFilters = Lookup.getDefault().lookupAll(TextFilter.class);
StringBuilder sb = new StringBuilder();
for (TextFilter textFilter : allFilters) <
String processedText = textFilter.process(enteredText);
sb.append(processedText).append(«\n»);
>
text.setText(sb.toString());
>
Теперь можно запускать приложение. Можете аналогичном образом добавить модуль «LowercaseFilter», который автоматически будет обрабатывать текст.
Apache NetBeans 12.5
Основным преимуществом платформы NetBeans является модульная архитектура. Кроме того, имеется воможность использования в платформе NetBeans инструментария пользовательского интерфейса Swing, являющегося официальным инструментарием создания пользовательских интерфейсов в Java, в сочетании с отмеченным наградой средством разработки Matisse GUI Builder среды IDE NetBeans.
В данном руководстве вы познакомитесь с преимуществами использования модульности на очень простом примере, созданном Томасом Вюртингером (Thomas Würthinger), докторантом университета имени Иоганнеса Кеплера в г. Линц, Австрия. После изучения основных понятий вы сможете перейти к Учебной карте по платформе NetBeans, которая предлагает богатый выбор учебных курсов по различным сценариям, относящимся к платформе NetBeans.
Если вы ранее не работали с платформой NetBeans, настоятельно рекомендуем посмотреть серию демонстрационных роликов 10 лучших интерфейсов API NetBeans.
Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные в таблице ниже.
Хотя платформа NetBeans является самостоятельным продуктом, ее не требуется загружать отдельно. Обычно разработка приложения выполняется в среде IDE NetBeans, после чего из приложения исключаются модули, специфичные для среды IDE, но излишние в данном приложении. |
Одномодульное приложение платформы NetBeans
Начнем с создания простого приложения на платформе NetBeans, содержащего один модуль.
Выберите в меню «Файл» команду «Новый проект» и щелкните проект «Модули NetBeans». Выберите параметр «Приложение платформы NetBeans». На экране появится следующее окно:
Нажмите кнопку «Далее».
Вызовите новое приложение «WordApp» и установите его как основной проект среды IDE:
Основной проект среды IDE запускается при вызове команды глобального проекта «Выполнить проект».
Нажмите кнопку «Готово».
Разверните новое приложение в окне «Проекты», щелкните узел «Модули» правой кнопкой и выберите команду «Добавить новый». Вызовите новый модуль «WordEngine»:
Нажмите кнопку «Далее».
Введите уникальное имя модуля, которое является базовым кодовым именем, и имя, которое будет отображаться в окне «Проекты»:
Нажмите кнопку «Готово». Новый модуль создан. Структура модуля выводится в окне «Проекты».
Щелкните модуль «WordEngine» правой кнопкой и выберите в меню «Создать» команду «Прочее». В категории «Разработка модулей» выберите «Оконный компонент»:
Нажмите кнопку «Далее». На экране появится следующее окно:
Нажмите кнопку «Далее».
Введите в качестве префикса имени класса слово «Text» и выберите «org.demo.wordengine» в списке пакетов:
Нажмите кнопку «Готово». К исходной структуре модуля будет добавлено новое окно с несколькими вспомогательными файлами XML.
Теперь дважды щелкните файл «TextTopComponent.java» для открытия его в представлении «Проектирование» в Конструкторе GUI Matisse. Для перетаскивания кнопок и текстовых областей в окно используйте палитру (CTRL+SHIFT+8):
Щелкните текстовую область правой кнопки мыши, выберите параметр «Изменить имя переменной» и задайте имя переменной «text». Данное имя позволяет выполнять доступ к компоненту из кода. Введите в качестве названия кнопки текст «Filter!»
Дважды щелкните кнопку, что вызовет автоматическое создание метода обработки события в редакторе исходного кода. Метод вызывается всякий раз при нажатии кнопки. Замените тело метода следующим кодом.
Щелкните приложение правой кнопкой мыши и выберите команду «Выполнить». Новое приложение на платформе NetBeans будет запущено, а модуль установлен. Ваше новое приложение должно выглядеть следующим образом:
Выберите в меню «Окно» команду «Text», введите текст в текстовую область и нажмите «Filter!». Текст будет выведен на экран в верхнем регистре:
Вы узнали, как создавать новое приложение на платформе NetBeans и как добавлять в него новые модули.
Модульное приложение с использованием класса Lookup
Мы создадим два дополнительных модуля. Первый модуль определяет службу, которую второй обеспечивает для модуля, определенного в предыдущем разделе.
Разверните новое приложение в окне «Проекты», щелкните узел «Модули» правой кнопкой и выберите команду «Добавить новый». Дайте новому модулю имя «TextFilter» и базовое кодовое имя «org.demo.textfilter», выполните действия, предлагаемые мастером, для добавления модуля в ранее созданное приложение, как это было сделано в предыдущем разделе.
Щелкните правой кнопкой мыши модуль TextFilter и выберите «Создать» > «Интерфейс Java». В пакете «org.demo.textfilter» укажите имя интерфейса Java – «TextFilter» – и используйте редактор для его определения следующим образом:
Щелкните модуль «TextFilter» правой кнопкой, выберите команду «Свойства» и используйте вкладку «Версии API», чтобы указать, что пакет, в который входит интерфейс, доступен во всем приложении:
Создайте третий модуль в приложении, назовите его «MyFilter» с «org.demo.myfilter» в качестве базового кодового имени.
Добавьте зависимость к модулю «TextFilter» в диалоговом окне «Свойства проекта» только что созданного модуля «MyFilter»:
Теперь на основании определенной выше зависимости можно реализовать интерфейс, определенный во втором модуле:
Во время компиляции аннотация @ServiceProvider создает папку META-INF/services с файлом, в котором регистрируется реализация интерфейса TextFilter в соответствии с механизмомJDK 6 ServiceLoader. Необходимо установить зависимость от модуля API средств, который поставляет аннотацию ServiceProvider.
Теперь необходимо изменить код, обрабатывающий нажатие кнопки фильтрации, чтобы найти и загрузить средство реализации интерфейса «TextFilter». Когда такое средство реализации найдено, оно вызывается для фильтрации текста.
Прежде чем это выполнить, необходимо добавить зависимость к модулю «TextFilter» в диалоговом окне «Свойства проекта» модуля «WordEngine»:
После этого можно загрузить реализации класса «TextFilter», как показано ниже:
Вышестоящий метод можно было бы выполнить с помощью класса «ServiceLoader» пакета JDK 6, однако класс «Lookup» может использоваться в пакете JDK более ранней версии, чем JDK 6. Кроме того, класс «Lookup» имеет дополнительные функции, как показано в следующем разделе.
Теперь вы готовы к запуску кода и проверке того, что все работает как прежде. Несмотря на то, что функциональные возможности остались прежними, новая модульная конструкция предлагает четкое разделение между графическим пользовательским интерфейсом и реализацией фильтрации. Новое приложение можно легко расширять, просто добавляя новых поставщиков услуг в путь к классам приложения.
В качестве упражнения попробуйте внести в код изменения, последовательно применяющие ВСЕ найденные текстовые фильтры к тексту (используя метод «lookupAll»). Например, добавьте реализацию текстового фильтра, удаляющего все пробелы, а затем протестируйте полученное приложение.
LookupListener и InstanceContent
Попробуем создать четвертый модуль, который динамически принимает тексты при нажатии кнопки «Filter!» в первом модуле.
В первом модуле измените конструктор «TextTopComponent» следующим образом:*private InstanceContent content;*
Измените код кнопки фильтрации, чтобы при нажатии кнопки к объекту InstanceContent добавлялось старое значение.
Создайте новый модуль и присвойте ему имя «History» с базовым кодовым именем «com.demo.history».
В модуле «History» создайте новый компонент окна с префиксом «History» в пакете «com.demo.history». Укажите, что этот компонент должен отображаться в позиции «editor». После создания окна добавьте к нему текстовую область. Измените имя переменной текстовой области на «historyText».
Добавьте к конструктору класса «HistoryTopComponent» код для отслеживания поиска класса String текущего активного окна. На экран будут выведены все полученные объекты String в текстовой области:*private Lookup.Result result;*
После этого приложение можно запустить и поэкспериментировать над ним. В результате на экран должно быть выведено окно, похожее на один из следующих вариантов:
В качестве упражнения попробуйте изменить тип результата поиска со значения String на Object и посмотрите, что произойдет, если выбрать другие окна.
Поздравляем! На этом этапе с помощью незначительного программирования был создан небольшой пример модульного приложения:
Приложение состоит из четырех модулей. Код из одного модуля может использоваться в другом модуле, только если (1) первый модуль явно раскрыл пакеты, и (2) второй модуль установил зависимость от первого модуля. Таким образом платформа NetBeans помогает организовать код в строгой модульной архитектуре, обеспечивая невозможность случайного повторного использования кода, за исключением случая установления контрактов между модулями, обеспечивающими код.
Кроме того, класс Lookup вводится как механизм коммуникации между модулями, как расширение метода ServiceLoader пакета JDK 6. Реализации загружаются через свои интерфейсы. Не используя код из реализации, модуль «WordEngine» может вывести на экран службу, предоставленную средством реализации. Таким способом обеспечивается свободное соединение между приложениями платформы NetBeans.
Для дальнейшего изучения модульности и платформы NetBeans перейдите к руководству «Управлением выбором в платформе NetBeans», состоящему из 4 частей, которое начинается здесь. Затем можно воспользоваться Учебной картой по платформе NetBeans и выбрать учебные курсы, максимально подходящие для вашего индивидуального бизнес-сценария. Кроме того, при возникновении вопросов по платформе NetBeans можно обратиться по адресу: dev@openide.netbeans.org. Архив вопросов находится здесь.
Приятной работы с платформой NetBeans! Не забудьте подписаться на наши рассылки!
Apache NetBeans 12.5
Добро пожаловать в среду NetBeans!
В этом документе представлена процедура быстрого знакомства с работой в среде NetBeans на примере создания простого редактора HTML. Несмотря на свою простоту, создаваемый редактор HTML будет очень функциональным, поскольку в нем будет использована инфраструктура, предоставляемая платформой NetBeans. Например, этот редактор HTML будет иметь развитую оконную систему, для создания которой не потребуется написание какого-либо кода. После изучения этого руководства читатель получит общее представление о создании, сборке и выполнении приложений на базе платформы NetBeans.
После изучения этого руководства можно перейти к другой учебной карте по платформе NetBeans. Учебная карта содержит подробные руководства, в которых рассматривается широкий спектр интерфейсов API среды NetBeans для разнообразных приложений. Если процедура создания простейшего приложения «Hello World» читателю уже знакома, можно пропустить этот документ и перейти сразу к учебной карте.
Дополнительно, в целях поиска и устранения ошибок, можно загрузить готовые примеры и изучить исходный код.
По завершении изучения этого руководства будет создан редактор HTML, который выглядит следующим образом:
Это очень простое демонстрационное приложение, но вовсе не игрушка! Это настоящая программа, поддерживающая простое редактирование страниц HTML, с такими возможностями, как автозавершение кода, проверка допустимости и предварительно определенные фрагменты HTML. |
Создаваемый в этом руководстве редактор HTML является функционально насыщенным клиентским приложением на базе платформы NetBeans. Это означает, что основой этого приложения будет ядро среды IDE, которым и является платформа NetBeans. Поверх платформы NetBeans добавляются необходимые модули и исключаются те, которые нужны для среды IDE, но не требуются для данного приложения. Здесь показаны некоторые из модулей среды IDE, добавленных к платформе NetBeans, которые являются ее основой:
Создание этого редактора HTML подразумевает создание скелета приложения, исключение ненужных модулей и элементов интерфейса пользователя, а затем настройку окна «Favorites», которое должно открываться по умолчанию при запуске среды IDE. Все эти действия поддерживаются элементами интерфейса пользователя в среде IDE.
Пользователь сможет лично убедиться в том, как легко и просто сформировать или, точнее, собрать полнофункциональное приложение на платформе NetBeans. В конце этого документа показано, как с помощью ускоренной установки по сети сделать конечный продукт легко загружаемым и запускаемым.
Несмотря на то, что это приложение является отдельной программой, для целей этого руководства не требуется загружать платформу NetBeans отдельно. Функционально насыщенное клиентское приложение будет разработано в среде IDE, и затем из него будут исключены модули, необходимые для IDE, но не требуемые этим приложением. |
Создание скелета приложения
При создании приложения на базе платформы NetBeans самым первым действием должно стать создание проекта приложения на платформе NetBeans. По умолчанию проект приложения платформы NetBeans имеет в своем составе все модули в составе платформы NetBeans, а также все модули, входящие в среду IDE NetBeans. Поскольку некоторые из этих модулей нам не требуются, их следует исключить.
С помощью мастера создания проекта (Ctrl-Shift-N) создайте проект приложения на платформе NetBeans из шаблона в категории «NetBeans Modules», как показано ниже:
Нажмите кнопку «Next» и присвойте проекту приложения на платформе NetBeans имя «NetBeansHTMLEditor». Нажмите кнопку «Finish».
Щелкните правой кнопкой мыши узел проекта, выберите «Properties» и затем внесите некоторые изменения в диалоговом окне «Project Properties» приложения.
На экране «Build» выберите «Create Standalone Application», чтобы указать, что это будет функционально насыщенное клиентское приложение на платформе NetBeans.
Убедитесь, что используется подходящее название исполняемого файла, и определите текст, который будет выводиться в строке заголовка приложения, как показано ниже:
На экране «Splash Screen» обратите внимание на то, что можно установить заставку приложения и индикатор хода выполнения, как показано ниже:
Разверните узел «Important Files» и затем откройте файл настройки платформы NetBeans. Вставьте следующие записи:
Теперь имеется подмножество модулей NetBeans, которые соответствуют нашему редактору HTML. Однако несмотря на то, что все оставшиеся модули действительно необходимы, скорее всего нам не потребуются связанные с ними элементы интерфейса пользователя. В следующих разделах мы настроим интерфейс пользователя и размещение элементов окна специально для создаваемого редактора HTML.
Настройка интерфейса пользователя
В интерфейсе пользователя можно оставить столько функций, сколько позволяют выбранные модули. Например, в редакторе HTML возможно, не будут использоваться какие-либо пункты меню «Tools». Также весьма вероятно, что имеются панели инструментов или кнопки на панелях инструментов, без которых можно обойтись. В этом разделе мы будем настраивать интерфейс пользователя среды IDE до тех пор, пока не останемся с набором функций, полностью отвечающим требованиям функционально насыщенного клиентского приложения.
Разверните проект приложения на платформе NetBeans, щелкните правой кнопкой мыши узел «Modules» и выберите «Add New», как показано ниже:
Появится мастер создания проекта (Ctrl-Shift-N). Присвойте проекту имя BrandingModule и нажмите кнопку «Next».
В поле «XML Layer» введите имя пакета с окончанием «layer.xml», например, «org/netbeans/brandingmodule/layer.xml», а затем нажмите кнопку «Finish».
Если не ввести в это поле путь к файлу «layer.xml», файл создан не будет. В этом случае в основном пакете следует создать файл с именем «layer.xml» и затем вручную зарегистрировать его в файле манифеста модуля следующим образом: |
Если файл layer.xml был добавлен вручную, необходимо развернуть узел «Important Files» и затем развернуть находящийся в нем узел «layer.xml». |
В узле
С помощью вышеописанного метода скройте необходимое количество панелей инструментов, кнопок панели инструментов, меню и пунктов меню.
Настройка размещения элементов в окне
В узле
Первый файл определяет, как будет выглядеть элемент и как он создается. Поскольку эти параметры изменять не нужно, вносить изменения в файл не требуется. Второй файл более интересен для наших целей, так как он содержит следующее:
Несмотря на то, что большая часть языка XML представляется непонятной, по крайней мере одна строка выглядит многообещающе – даже без чтения какой-либо документации очевидно, что путем замены false на true можно сделать этот элемент открывающимся по умолчанию. Попробуйте!
Аналогичным образом можно изменить состояние открытия по умолчанию на поведение, которое должно быть реализовано в редакторе HTML, для следующих окон:
Теперь модуль «Branding» должен содержать несколько новых файлов, по одному для каждого из измененных файлов. Фактически эти файлы заменяют собой те, что были найдены на предыдущих этапах, и теперь мы владеем необходимой информацией для изменения схемы размещения элементов окна:
Настройка окна «Favorites»
В подпапках папки branding проекта приложения на платформе NetBeans, отображенных в окне «Files», можно заменить строки, определенные в исходных файлах NetBeans. В этом разделе будут заменены те строки, которые описывают метки, используемые в окне «Favorites». Например, мы изменим текст «Favorites» на «HTML Files», поскольку это окно предназначено именно для файлов HTML.
Откройте окно «Files» и разверните папку branding проекта приложения на платформе NetBeans.
Эта структура папок и файл свойств соответствуют структуре в исходных файлах NetBeans, которая связана с окном «Favorites».
Добавьте строки, показанные ниже на рисунке, для замены таких же строк, определенных в соответствующем файле свойств в исходных файлах окна «Favorites»:
Для упрощения этой задачи скопируйте вышеуказанные строки и вставьте их:
Выполнение приложения
Выполнить наше приложение совсем не сложно – следует просто щелкнуть узел проекта правой кнопкой мыши и выбрать требуемый пункт меню.
Щелкните узел проекта приложения правой кнопкой мыши и выберите «Clean and Build All».
Щелкните узел проекта приложения правой кнопкой мыши и выберите «Run».
После развертывания приложения можно щелкнуть правой кнопкой мыши в окне «Favorites» и выбрать папку, содержащую файлы HTML, а затем открыть файл HTML, как показано ниже:
Подготовка дистрибутива приложения
Выберите один из двух способов распространения приложения. Если необходимо поддерживать максимально возможный контроль над приложением, то для его распространения следует выбрать способ установки по сети. В этом случае каждый раз, когда требуется обновить приложение, это осуществляется локально, а конечные пользователи извещаются об обновлении, которое они будут получать автоматически при следующем запуске приложения через сеть. В качестве дистрибутива также может использоваться файл ZIP, содержащий данное приложение. Тогда все приложение будет доступно конечным пользователям локально. В этом случае обновления и новые компоненты будут распространяться через механизм обновления, описанный ниже.
Распространение приложения через файл ZIP
Для обеспечения расширяемости приложения следует предусмотреть возможность установки пользователями модулей для расширения функциональных возможностей приложения. Для этого необходимо просто включить несколько дополнительных модулей, которые свяжут диспетчер подключаемых модулей с редактором HTML.
Щелкните узел проекта приложения правой кнопкой мыши и выберите «Clean and Build All».
Снова запустите приложение и обратите внимание на появление в меню «Tools» нового пункта меню под названием «Plugins»:
Выберите новый пункт меню «Plugins» и установите некоторые подключаемые модули, которые будет удобно использовать в редакторе HTML. Просмотрите материалы на Plugin Portal и найдите несколько подходящих модулей. Конечные пользователи будут обновлять свою локальную установку приложения таким же способом.
1. Щелкните правой кнопкой мыши узел проекта приложения и выберите «Build ZIP Distribution».
Теперь в папке dist (в окне «Files») должен отобразиться файл ZIP, который можно развернуть для просмотра его содержимого:
Распространение редактора HTML через общедоступное хранилище для установки NetBeans по сети
Еще одно изменение стандартной инфраструктуры приложения на базе JNLP касается использования общедоступного хранилища JNLP на сайте www.netbeans.org. По умолчанию приложение на базе JNLP, создаваемое для программного пакета, всегда содержит все его модули, а также все модули, от которых оно зависит. Это может быть удобно для использования во внутренней сети, но для широкого распространения в Интернете это менее практично. В случае Интернета намного удобнее, когда все приложения, создаваемые на базе платформы NetBeans, обращаются к одному хранилищу модулей NetBeans, т.к. это подразумевает, что такие модули используются совместно и не должны загружаться несколько раз.
Такое хранилище существует и для среды NetBeans 6.1. Оно содержит не все имеющиеся в среде IDE NetBeans модули, но достаточное их количество для поддержания работы приложений, не входящих в среду IDE, таких как наш редактор HTML. Для использования этого хранилища необходимо только изменить platform.properties путем добавления правильного URL-адреса:
Как только приложение будет запущено как приложение на базе JNLP, все его совместно используемые подключаемые модули будут загружены с netbeans.org и будут использоваться вместе с другими аналогичными приложениями.
Дополнительная информация
Руководство по началу работы с платформой NetBeans завершено. В этом документе была рассмотрена процедура создания подключаемого модуля, добавляющего панель поиска Google к среде IDE. Для получения дополнительных сведений о создании и разработке приложений на платформе NetBeans см. следующие материалы: