Java приложения, Java-программы, Java технологии и секреты, J2SE, J2EE, проект Jakarta
April
2007
Исключения в Java (exceptions, errors, исключительные ситуации)
Posted in: Java technologies, J2SE | 10 Comments
Эта статья посвящается очень важному вопросу программирования - исключительным ситуациям и ошибкам (exceptions and errors).
В языке Java исключения (Exceptions) и ошибки (Errors) являются объектами. Когда метод вызывает (бросает - throws) исключительную ситуацию, он на самом деле работает с объектом. Но такое происходит не с любыми объектами, а только с теми, которые наследуются от Throwable.
Упрощенную диаграмму классов ошибок и исключительний вы можете увидеть на следующем рисунке:
(more…)
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…)
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)
October
2006
Как говорится: случайность - частный случай закономерности. Поэтому наверняка вы используете случайные числа в некоторых своих разработках.
В Java есть класс для работы со случайными (точнее псевдослучайными) числами - java.util.Random. Тем не менее, некоторые люди пользуются им не совсем так, как надо.
Пример:
(more…)
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…)
September
2006
Если MP3-плеер не понимает русский язык (mp3-player java-utility)
Posted in: Java technologies, J2SE, Полезные программы | 18 Comments
MP3 плеер вещь хоро?ая и полезная…
К сожалению, иногда он “расставляет все точки над i”, равно как и над e, и над о, и так далее, в названиях песен. А все потому, что не понимает русский (и/или украинский) язык.
Хоро?о, если на сайте производителя есть множество софта, в частности для перепро?ивки и загрузки ?рифтов. А если нет?
Тогда вы попали туда, куда нужно.
(more…)
June
2006
Регулярные выражения (Regular Expressions) позволяют сопоставлять текст с указанным ?аблоном, а также выполнять замену текста. Эти операции осуществляются с помощью универсальных символов, которые специальным образом интерпретируются.
Регулярные выражения используются в боль?ом количестве языков программирования.
В Java тоже есть пакет, который позволяет работать с ними - java.util.regex.
(more…)
May
2006
Тестирование и внутренние классы (inner class)
Posted in: Тестирование кода, Java technologies, J2SE | 5 Comments
При тестировании отдельных классов Java-приложения, многие используют метод main или создают дополнительный тестовый класс. Отдельный класс луч?е использовать при интегральных тестах, а метод main после выпуска новой версии класса/пакета чаще всего нужно удалять.
В этой статье я вновь возвращаюсь к внутренним классам (inner class) для ре?ения описанной вы?е проблемы. На этот раз мы рассмотрим статические внутренние классы.
Статический внутренний класс описывается с модификатором static внутри декларации другого (обрамляющего) класса. Вот пример такого класса:
(more…)
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…)
March
2006
Алгоритм Quick Sort является одним из самых быстрых алгоритмов сортировки. Его среднее время выполнения - O(n log n). Quick Sort реализуется с помощью рекурсии.
В этой статье представлен демонстрационный пример алгоритма быстрой сортировки на Java.
(more…)