Поиск информации с помощью XPath Java

Поиск информации с помощью XPath JavaЕсли вам необходимо найти информацию в XML-документе, то обязательно придется организовать обход древовидной структуры DOM. Язык XPath упрощает доступ к узлам дерева. Предположим, например, что в нашем распоряжении находится в XML-документ, приведенный ниже. Читать

Правило единственного потока Java

Правило единственного потока Java

Каждое приложение Java запускается с метода main(), который работает в главном потоке. В программе Swing главный поток живет кратковременно. Он планирует конструирование пользовательского интерфейса в потоке диспетчера событий и завершает свою работу.

После создания пользовательского интерфейса поток диспетчера событий обрабатывает уведомления о событиях наподобие вызовов actionPerformed() или paintComponent(). Другие потоки, такие как поток, отправляющий события в очередь, работают "за кулисами", но эти потоки невидимы прикладному программисту.

Раннее, в наших статьях, мы уже представили правило единственного потока: "не затрагивать компоненты Swing из любого потока, кроме потока диспетчера событий". Здесь мы глубже исследуем это правило. Читать

Ключевое слово synchronized Java

Ключевое слово synchronized JavaВ ранних статьях блога вы видели, как надо использовать объекты Lock и Condition. Прежде чем двинуться дальше, подведем итоги, перечислив ключевые моменты, касающиеся блокировок и условий.

  • Блокировка защищает сегмент кода, позволяя только одному потоку в единицу времени выполнять этот код.
  • Блокировка управляет потоками, которые пытаются войти в защищенный сегмент кода.
  • Каждый объект условия управляет потоками, вошедшими в защищенный сегмент кода, но которые пока не в состоянии выполнять работу.

Интерфейсы Lock и Condition были добавлены в Java SE 5.0, чтобы предоставить программистам высокую степень контроля блокировок. Однако в большинстве ситуации вам не понадобится такой контроль, и вы можете использовать механизм, построенный на средствах языка Java. Читать

Работоспособные потоки Java

Работоспособные потоки JavaКак только вы вызовете метод start(), поток оказывается в работоспособном(runnable) состоянии. Работоспособный поток может в данный момент выполняться, а может и нет. Зависит от операционной системы - будет ли выделено потоку время на выполнение. Спецификация Java, однако не назысает это отдельным состоянием. Работающий поток также находится в "работоспособном" состоянии.

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

Концепция монитора

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

Одно из наиболее успешных решений - концепция монитора, которая была впервые предложена Петром Бринчем Хансеном(Per Brinch Hansen) и Тони Хоаром(Tony Hoare) в 70-х годах. В терминологии Java монитор обладает перечисленными ниже свойствами. Читать

Создание диалоговых окон в Java

Создание диалоговых окон в JavaКак вы наверное уже знаете, для использования предопределенных диалоговых окон применяется класс JOptionPane. Теперь мы опишем, как "вручную" создать собственное диалоговое окно.

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

Для того чтобы реализовать такое окно, необходимо создать подкласс класса JDialog. По сути, это тот же процесс, которым мы воспользовались для создания главного окна приложения, расширяя класс JFrame. Читать

Написание программы — технические детали

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

Большинство из них эволюционируют со временем. Процесс ввода в эксплуатацию требует немало усилий и времени. Нужно удостовериться, что нет никаких багов и только тогда отправлять на тестировку и ввод в действие.
В настоящее время IT сфера развивается довольно быстро и то, что было актуально пару лет назад, сейчас потеряло всякую практическую значимость. Так, например, многие языки (Algol, Pascal, Assembler) постепенно уступили место новым, более мощным языкам программирования, таким как: Java, C#,C++ и многие другие. Рассматриваемые примеры будут приведены на Java, так как он является наиболее мощный язык для модульного, а также для объектно-ориентированного метода. Читать

Наборы строк(Row Set) в языке Java

Наборы строк(Row Set) в языке JavaПрокручиваемые результирующие наборы предлагают богатые возможности, однако они не свободны от недостатков. В течении всего времени взаимодействия с пользователем соединения с базой данных должно быть открыто. Однако пользователь может отлучиться на длительное время, а открытое соединение будет потреблять ресурсы.

В подобной ситуации целесообразно использовать набор строк(row set). Интерфейс RowSet расширяет интерфейс ResultSet, но набор строк не привязан к соединению с базой данных.

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

Битовые операции в языке Java

Битовые операции в языке JavaРаботая с любыми целочисленными типами, можно применять операции, непосредственно обрабатывающие биты, из которых состоят целые числа. Это значит, что для определения состояния отдельных битов числа можно использовать маски.

В языке Java есть следующие битовые операции: &("и"), |("или"), ^("исключающие или"), ~("не"). Например, если n - это целое число, то приведенное ниже выражение равно единице только в том случае, если четвертый бит в двоичном представлении числа равен единице. Читать