Google Analytics

воскресенье, 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-контейнере".

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