Есть множество различных ситуаций, при которых программисту необходимо выйти из приложения, для выполнения различных действий в момент завершения работы над приложением. И основной ошибкой в таких ситуациях является не корректный выход из приложения. Для того чтобы выполнить какой-либо код, даже если вы находитесь в середине процесса выгрузки процесса, у Java-приложений существует элегантный подход к данному действию, который выступает гарантом, что в итоге ваш код непременно будет выполнен.
И так, что же необходимо делать, для того чтобы был выполнен завершающий код в момент прерывания работы с приложением? Например, используя Swing, вы пишите тестовый редактор, при начале работы, ваше приложение создает временный файл. Данный временный файл должен быть удалён, после того как пользователь закроет ваше приложение. До того как завершиться работа, особенно если вы пишите приложения, которые состоят из большого количества сервлетов, вам необходимо вызвать метод destroy, при чем для каждого из вами загруженных сервлетов.
Если пользователь завершил работу с приложением в некорректной форме, а именно так он всегда и поступает, тогда виртуальная машина Java завершает свою работу, но к счастью, прежде чем выгрузить себя, виртуальная машина действует следующим путём:
1. Машиной будут запущены все виртуальные shutdown-ловушки, которые вы установили, если таковые имеются.
2. Во втором случаи машина вызывает все fina-lize-операции (конечно же, если есть подходящие).
Мы поговорим о первом действии, ведь именно первое действие заставляет виртуальную машину озадачиться, перед тем как она совершит все действия по завершению работы с приложением. Shutdown-ловушки запускаются и работают параллельно до тех самых пор, пока они не завершат все операции, которые на них наложены. Регистрируются ловушки с помощью класса Runtime и для того чтобы их создать, необходимо выполнение следующих действий:
- необходимо описать класс, который наследует класс Thread;
- в новом классе следует осуществить метод run. Данный метод содержит код, который и будет влиять на дальнейшее завершение программы не зависимо от того, на сколько корректно было выполнено завершение работы с приложением;
- далее свяжите класс shutdown-ловушки непосредственно с вашим Java-приложением;
- далее регистрируем ловушку по средствам метода addShutdownHook.
Октябрь
15,
2008
— Рубрика: Java
Метки: завершение, пользователь, приложение
Что такое сервлет? Это класс порожденный от класса HttpServlet с переопреденными методами doGet и doPost (управление приходит в один из этих методов в зависимости от того какого типа был запрос. Надеюсь у Вас есть некоторый опыт в cgi-программировании для того чтобы понять разницу между ними).
Июнь
15,
2008
— Рубрика: Java
Метки: код, параметры
Введение
Технология Java Server Pages (JSP) является составной частью единой технологии создания бизнес-приложений J2EE. JSP - это альтернативная методика разработки приложений, динамически генерирующих ответ на те или иные запросы клиента. Прежде чем JSP документ будет использован, специальная процедура преобразует его в соответствующий сервлет. В свою очередь, сервлет, как правило, пишется на языке Java и реализует определенный интерфейс.
Июнь
3,
2008
— Рубрика: Java
Метки: атрибуты, содержимое, тэги, экшен
В данной статье я бы хотел показать один из вариантов алгоритма, выполняющего перетасовку колоды игральных карт, и, безусловно, обсудить его достоинства и недостатки.
Если вы захотите написать программу для игры в карты, то неизбежно столкнетесь с необходимостью перетасовки колоды карт. Обычно, эта операция выполняется перед каждой сдачей карт, то есть, возможно, десятки раз за игру (в зависимости от правил конкретной игры). Поэтому качество выполнения данной операции может существенно сказаться на результатах игры.
Май
23,
2008
— Рубрика: Java
Метки: алгоритм, расположение
Введение
Разрабатывая простые приложения для JavaMe мы обычно не нуждаемся в использовании многозадачности. Но как только от мидлета требуется производить такие действия, как связь с серверами по HTTP протоколу или SMS, показывать анимацию или ожидать совершения какого-либо события, то без многозадачности не обойтись. В статье мы сфокусируемся на решении следующей, реально возникшей практической, задачи. Мобильное приложение должно отправить информацию на сервер по протоколу HTTP, получить ответ, а во время ожидания показывать анимированную картинку. Далее предполагается, что читатель знаком с JavaMe, ее ограничениями и возможностями.
Май
12,
2008
— Рубрика: Java
Метки: многозадачность, приминение
Иногда возникает потребность в раздельной обработке одинарного и двойного клика. Например, у нас есть дерево, где каждый элемент содержит чекбокс. Мы хотим, чтобы поведение дерева было следующим: одинарный клик должен просто выделять элемент или снимать выделение, в то время как двойной клик должен обрабатываться стандартным для дерева образом.
Апрель
29,
2008
— Рубрика: Java
Метки: код, обработка, чекбокс
JFace - это доплнительный слой абстракции над графической библиотекой SWT, предоставляющий возможности для разработки графического интерфейса приложения на основе модели MVC(Model View Controller). Основные компоненты JFace включают:
Апрель
15,
2008
— Рубрика: Java
Метки: меню.окна, настройки