Java приложения, Java-программы, Java технологии и секреты, J2SE, J2EE, проект Jakarta


11
April
2007

Исключения в Java (exceptions, errors, исключительные ситуации)

Posted in: Java technologies, J2SE | 10 Comments

Эта статья посвящается очень важному вопросу программирования - исключительным ситуациям и ошибкам (exceptions and errors).
В языке Java исключения (Exceptions) и ошибки (Errors) являются объектами. Когда метод вызывает (бросает - throws) исключительную ситуацию, он на самом деле работает с объектом. Но такое происходит не с любыми объектами, а только с теми, которые наследуются от Throwable.
Упрощенную диаграмму классов ошибок и исключительний вы можете увидеть на следующем рисунке:
(more…)

10
March
2007

Производительность при работе с XPath в Java (performance issues)

Posted in: Технологии XML, XPath, Java technologies, J2SE | 1 Comment

Пакет javax.xml.xpath (Java 1.4) предоставляет пользователю независимый API для вычисления XPath выражений.
По умолчанию используется Sun’овская реализация всех классов из этого пакета. Работая с этой имплементацией была обнаружена одна интересная вещь.
По мере углубления в DOM-дерево (Document Object Model), скорость вычисления одних и тех же XPath выражений постепенно падает.
В этой статье я хочу продемонстрировать описанную проблему, а также предложить альтернативный способ работы с сильноветвящимся DOM-деревом при вычислении XPath.
(more…)

1
December
2006

Проблема с rowset.jar (NullPointerException)

Posted in: Базы данных, SQL, Oracle, Java technologies, J2SE | 2 Comments

Библиотека rowset.jar предоставляет набор имплементаций для таких интерфейсов, как CachedRowSet, FilteredRowSet, JoinRowSet и т.д, а также другие необходимые классы для работы с ними.
Чаще всего программистам приходится иметь дело именно с com.sun.rowset.CachedRowSetImpl. Этот класс позволяет кэ?ировать данные из data source (так сказать, работать в режиме off-line).
В этой статье я хочу рассказать о проблеме, которая возникла у меня при работе с библиотекой.
А именно, при попытке создать объект CachedRowSetImpl валился следующий Exception:

java.lang.NullPointerException
 at java.io.Reader.<init>(Reader.java:61)
 at java.io.InputStreamReader.<init>(InputStreamReader.java:80)
 at java.util.Properties.load(Properties.java:266)
 at java.util.PropertyResourceBundle .<init>(PropertyResourceBundle.java:96)
 at com.sun.rowset.JdbcRowSetResourceBundle.<init>(Unknown Source)
 at com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(Unknown Source)
 at com.sun.rowset.CachedRowSetImpl .<init>(Unknown Source)
 at TestRowSet.main(TestRowSet.java:14)

(more…)

14
October
2006

Генератор случайных чисел (java.util.Random)

Posted in: Java technologies, J2SE | 4 Comments

Как говорится: случайность - частный случай закономерности. Поэтому наверняка вы используете случайные числа в некоторых своих разработках.
В Java есть класс для работы со случайными (точнее псевдослучайными) числами - java.util.Random. Тем не менее, некоторые люди пользуются им не совсем так, как надо.
Пример:
(more…)

6
October
2006

Игра “Меморина” (Java Swing GUI Game) и проблема с ImageIcon

Posted in: Java GUI, Swing, AWT, SWT, Java technologies, J2SE | 5 Comments

Ну прямо гейм-девелопер какой-то.
Попросили меня написать маленькую игру�?ечку с использованием графической библиотеки Java Swing. �?гра всем знакома и называется “Меморина”.
Думаю, заказчик не будет сильно зол за то, что я выложу игру на всеобщее обозрение…
Еще столкнулся с такой проблемой: при загрузке картинок из jar-файла возникает исключительная ситуация ImageFormatException, хотя при запуске из IDE все проходит без о�?ибок.
(more…)

27
September
2006

Если MP3-плеер не понимает русский язык (mp3-player java-utility)

Posted in: Java technologies, J2SE, Полезные программы | 18 Comments

MP3 плеер вещь хоро?ая и полезная…
К сожалению, иногда он “расставляет все точки над i”, равно как и над e, и над о, и так далее, в названиях песен. А все потому, что не понимает русский (и/или украинский) язык.
Хоро?о, если на сайте производителя есть множество софта, в частности для перепро?ивки и загрузки ?рифтов. А если нет?
Тогда вы попали туда, куда нужно.
(more…)

22
June
2006

Регулярные выражения в Java (regexp)

Posted in: Java technologies, J2SE | 14 Comments

Регулярные выражения (Regular Expressions) позволяют сопоставлять текст с указанным ?аблоном, а также выполнять замену текста. Эти операции осуществляются с помощью универсальных символов, которые специальным образом интерпретируются.
Регулярные выражения используются в боль?ом количестве языков программирования.
В Java тоже есть пакет, который позволяет работать с ними - java.util.regex.
(more…)

29
May
2006

Тестирование и внутренние классы (inner class)

Posted in: Тестирование кода, Java technologies, J2SE | 5 Comments

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

В этой статье я вновь возвращаюсь к внутренним классам (inner class) для ре?ения описанной вы?е проблемы. На этот раз мы рассмотрим статические внутренние классы.
Статический внутренний класс описывается с модификатором static внутри декларации другого (обрамляющего) класса. Вот пример такого класса:
(more…)

25
April
2006

Anonymous inner classes in Java

Posted in: Java technologies (translated), Java technologies, J2SE | No Comments

The Russian version of this article can be found here.
There are a lot of articles through Internet which have mistakes regarding anonymous inner classes in Java. Anonymous inner class:

  • has no name;
  • can’t be declared as static;
  • can be instantiated only once.

Let me show you the truth.
Consider the following code:
(more…)

16
March
2006

Быстрая сортировка на Java (Quick Sort)

Posted in: Java technologies, J2SE | 11 Comments

Алгоритм Quick Sort является одним из самых быстрых алгоритмов сортировки. Его среднее время выполнения - O(n log n). Quick Sort реализуется с помощью рекурсии.
В этой статье представлен демонстрационный пример алгоритма быстрой сортировки на Java.
(more…)