Google Analytics

суббота, 9 мая 2015 г.

Что в действительности происходит за рамками абстракций java во время исполнения

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

воскресенье, 13 мая 2012 г.

О поддержке параллелизма в Java


Хотя статья и задумывалась как краткое описание основных возможностей Java в области параллелизма, но тема настолько обширна, что в результате получилось достаточно объёмное произведение. Целью статьи является описание общей картины поддержки параллелизма в Java, проблем которые эта поддержка призвана решить и некоторых деталей реализации. Думаю, эта информации будет полезна как новичкам, которые смогут сформировать целостное представление о данной теме, так и более опытным разработчикам незнакомым с деталями реализации механизмов связанных с параллелизмом в JVM HotSpot и JDK. Большинство из приведенной информации актуально для Java 6 и 7. Там где это неверно будет указанна требуемая версия. Все примеры взяты из, либо выполнялись на Debian GNU/Linux 6.0.4 amd64, Java(TM) SE Runtime Environment (build 1.7.0_04-b20), Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode).

вторник, 3 января 2012 г.

Hibernate-Extender или Hibernate, Spring и OSGi


К сожалению, на данный момент Hibernate не обладает необходимыми механизмами интеграции для работы в OSGi среде, хотя подвижки в этом направлении заметны (начальная OSGi-фикация путём разделения пакетов в 4-ой ветке). Это побуждает разрабатывать собственные механизмы, что требует немалых дополнительных усилий.

Эта статья предназначается для тех разработчиков, кому интересно: как можно использовать Hibernate со связкой Spring+OSGi; что такое паттерн Extender; как реализовать ClassLoader со специфичным поведением; как поддерживается Hibernate в Spring Framework и немного о расширении этого кода. Разумеется, для чтения статьи необходимо разбираться в технологиях Spring, Hibernate, OSGi, а также понимать основные проблемы выполнения кода в многопоточной среде. Те же кто незнаком с использованием Spring Framework в OSGi среде могут обратиться к вводной статье "Использование Spring в OSGi-контейнере".

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

суббота, 26 ноября 2011 г.

Jenkins: The Definitive Guide


Эта заметка не будет рассказывать об использовании CI-сервера Jenkins. В ней не будет технических деталей, в отличие от большинства постов в блоге. Вместо этого я хочу рассказать о книге, которая наполнена таковыми. Это книга Jenkins: The Definitive Guide.

Без сомнения это не книга из ряда фундаментальных по Computer Science. Но это очень добротное последовательное описание практики Continuous Integration с применением Jenkins. Книга поможет построить целостную картину при наличии разрозненных знаний по применению Jenkins, либо сформировать таковую при отсутствие их вообще.

воскресенье, 18 сентября 2011 г.

Использование Spring в OSGi-контейнере

Вряд ли найдётся Java разработчик, который не знает что такое Spring Framework. Одними из базовых технологий данного фреймворка являются IoC контейнер и поддержка AOP. Эти технологии позволяют успешно разбивать архитектуру приложения на обособленные слои, как на уровне классов, так и на уровне компоновки объектов во время выполнения. Казалось бы, что приложение отлично структурировано на элементы/слои, но по своей сути оно остаётся монолитным. Монолитным во время выполнения (runtime)! Только в рамках данного фреймворка не существует универсальных решений этой проблемы. Чуть меньшее количество Java разработчиков слышало об OSGi. Это спецификация модульных систем для Java платформы. Использование конкретной реализации данной спецификации в качестве основы приложения позволяет сделать его модульным, как во время выполнения, так и на физическом уровне (уровне файлов). О синергии этих технологий и пойдёт речь в этой статье.

среда, 20 июля 2011 г.

Особенности паттернов параллельного программирования для бизнес приложений [PoEAA]

Параллельное программирование давно уже перестало быть уделом матёрых гуру. Трудно представить современное приложение, реализация которого игнорировала бы этот вопрос. Аналогично трудно представить прикладного программиста, который бы не держал на вооружении паттернов корпоративных приложений от Фаулера с компанией. Собственно об особенностях присущих этим паттернам и пойдёт речь в этом посте. Материал представленный далее почти не коррелирует с технологиями реализации, поэтому может быть интересен любым прикладным программистам не смотря на то, что примеры базируются на Java и PostgreSQL. И ещё одно замечание, чтобы не вносить путаницу с названиями паттернов, я буду использовать их оригинальные названия на английском языке.

суббота, 11 июня 2011 г.

Конкурентный доступ к реляционным базам данных

Вопросы параллелизма в компьютерных вычислениях очень сложны! Если вы готовы с эти поспорить, то я отвечу: "Вы либо гений, либо не достаточно разбираетесь в вопросе". Причинами большой сложности являются огромное количество деталей, которые нужно учитывать при разработке параллельных программ. В программирование и без того существует большое количество деталей, которые создают почву для ошибок, параллелизм же, добавляет ещё.

Вопросы конкурентного доступа к реляционным базам данных встают практически перед любыми разработчиками прикладного программного обеспечения и не только перед ними. Результатом такой востребованности этой области является наличие большого количества созданных архитектурных паттернов. Это позволяет успешно справляться с большой сложностью разработки таких программ. Ниже пойдёт речь о таких рецептах, а также механизмах на которых базируется их реализация. Повествование будет иллюстрироваться примерами кода на Java, но большинство материала не привязано к языку. Цель статьи - описать проблемы конкурентного доступа к реляционным базам данных, в качестве введения в предмет, а не полноценного охвата темы.