June
2007
Java Головоломки (Java Puzzlers)
Posted in: Java technologies, J2SE, Ваш досуг. Полезные советы | 3 Comments
Всем привет.
Для разнообразия посмотрим на язык программирования Java с другой стороны.
Ниже вы найдете одну очень интересную ссылку. К моему глубочай?ему сожалению, я обнаружил ее совсем недавно.
Два серьезных дядьки - Джо?уа Блок (Joshua Bloch) и Нил Гафтер (Neal Gafter) в совсем несерьезном стиле предлагают ва?ему вниманию восемь интересней?их головоломок.
(more…)
May
2007
Паттерн Adapter (Адаптер)
Posted in: Паттерны проектирования | 5 Comments
Вернемся к рассмотрению структурных паттернов проектирования. На этот раз мы рассмотрим ?аблон проектирования под названием Adapter (его еще называют Wrapper на ряду с паттерном Facade).
?так, паттерн Adapter используется для того, чтобы объекты с разными интерфейсами могли работать друг с другом. Существует два типа адаптеров - Class Adapter и Object Adapter.
Для начала мы рассмотрим каждый из этих типов, а потом я объясню разницу между двумя wrapper’ами - адаптером и фасадом.
(more…)
April
2007
Исключения в Java (exceptions, errors, исключительные ситуации)
Posted in: Java technologies, J2SE | 11 Comments
Эта статья посвящается очень важному вопросу программирования - исключительным ситуациям и ошибкам (exceptions and errors).
В языке Java исключения (Exceptions) и ошибки (Errors) являются объектами. Когда метод вызывает (бросает - throws) исключительную ситуацию, он на самом деле работает с объектом. Но такое происходит не с любыми объектами, а только с теми, которые наследуются от Throwable.
Упрощенную диаграмму классов ошибок и исключительний вы можете увидеть на следующем рисунке:
(more…)
March
2007
Пришла весна… В интернете распустились блоги, затмевая друг друга разнообразием красочных страниц…
Наконец-то и у моего сайта новый уникальный дизайн. Спасибо, Aphina, что не пожалела времени на создание макета и верстку, без которых, казалось бы, можно прожить :). Если честно, я не сразу проникся всей глубиной символизма, вложенного в дизайн.
Если вас интересует, как выглядел блог раньше, смотрите следующую ссылку: старый дизайн блога.
Пока что не было обнаружено никаких багов в Internet Explorer и Mozilla FireFox. Если вы обнаружите, что что-то не так, напишите мне, пожалуйста.
Всего хорошего.
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…)
February
2007
Существует 2 основных типа, на которые делятся методологии разработки програмного обеспечения (software development methodology). Это структурные и гибкие методологии. Структурные методологии предполагают высокоформализованный подход к разработке ПО (каскадная модель). Гибкие методологии (Agile) ориентированы в основном на итеративную разработку с минимально допустимой формализацией процесса.
Об основных принципах гибких методологий я расскажу в другой статье. А обратить ва?е внимание хочу вот на что. Agile методологии очень хоро?о себя зарекомендовали и сейчас даже самый высокоформализованный процесс трудно себе представить без “гибких” элементов, в частности митингов.
?так, SCRUM-meeting.
(more…)
January
2007
Паттерн Builder является паттерном создания объектов (creational pattern). Суть его заключается в том, чтобы отделить процесс создания некоторого сложного объекта от его представления. Таким образом, можно получать различные представления объекта, используя один и тот же “технологический” процесс.
Паттерн Строитель иногда путают с паттерном проектирования Factory. ? не удивительно, так как они действительно во многом схожи.
В этой статье я опи?у неболь?ой пример реализации Builder’a на языке Java, а так же попробую коротко объяснить разницу между Builder и Factory.
(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)
November
2006
Порадовать ре?ил моих благодарных читателей. К сожалению, copyright не мой.
?так, был придуман антипаттерн проектирования - Public Morozov. Это класс, который открывает доступ ко всем полям и методам класса-предка, не зависимо от их модификаторов видимости.
Ну и для того, чтобы окончательно скрасить рабочие будни, еще пару перлов…
(more…)
October
2006
Как говорится: случайность - частный случай закономерности. Поэтому наверняка вы используете случайные числа в некоторых своих разработках.
В Java есть класс для работы со случайными (точнее псевдослучайными) числами - java.util.Random. Тем не менее, некоторые люди пользуются им не совсем так, как надо.
Пример:
(more…)