Работа с Grails: GORM — Забавное название и серьезная технология

Работа с Grails: GORM — Забавное название и серьезная технология

В прошлом месяце вводная статья серии Работа с Grails познакомила с новым каркасом для разработки Web-приложений, называемым Grails. Grails включает в себя такие современные подходы, как MVC (Model-View-Controller — модель-представление-контроллер), разделение обязанностей (separation of concerns) и соглашение по конфигурации (convention over configuration). В сочетании со встроенными возможностями скаффолдинга Grails позволяет получить первую работающую версию Web-сайта за несколько минут.

Эта статья посвящена другой области, которую также упрощает Grails: долговременному сохранению объектов с помощью API GORM. Статья начинается с описания того, что такое ORM (object-relational mapper — объектно-реляционный преобразователь) и как создать отношение типа «один ко многим». Далее рассказывается о проверке данных, гарантирующей, что приложение не будет поражено синдромом garbage in/garbage out (неправильные данные на входе/неправильные данные на выходе). Будет показано практическое использование Grails ORM DSL (domain-specific language — язык для конкретной доменной области), который позволяет детально настраивать способ постоянного сохранения POGO-объектов (plain old Groovy objects — обычные старые Groovy-объекты) за рамками приложения. Наконец, будет показано, как легко переключиться с одной реляционной базы данных на другую. Подойдет любая база данных, поддерживающая JDBC-драйвер и Hibernate-диалект.

Знакомимся с Eclipse Communication Framework

Знакомимся с Eclipse Communication Framework

Eclipse — это прежде всего качественная платформа для построения самых разных приложений. Основным компонентом платформы является Equinox — реализация спецификации OSGi R4. На базе Equinox строятся другие компоненты, такие, как, например, Eclipse Communication Framework, о котором мы сегодня и поговорим.

Не секрет, что большинство создаваемых в наше время приложений работают в сетевой среде. Особенно это характерно для т.н. Enterprise-приложений, для разработки которых в основном Java и используется. Естественно, что такие приложения нуждаются в средствах взаимодействия с локальной сетью и/или Интернетом. Писать такое взаимодействие самому утомительно, поэтому для облегчения создания программ, использующих возможности сети и основанных на OSGi (в частности — Eclipse RCP-приложений), был разработан ECF.

ECF — это реализация концепции распределенных контейнеров, осуществляющих передачу данных по различным прикладным протоколам. Контейнеры могут обеспечивать связь с сохранением состояния (т.е. с сессией) и без сохранения. Поддерживается взаимодействие типа «точка-точка» (например, клиент — сервер) и типа «публикатор — подписчики». Само взаимодействие может быть как синхронным, так и асинхронным.

По сути, ECF предоставляет единый набор API к контейнерам, обеспечивающим различные протоколы связи, причем данный набор расширяемый и допускает использование особенностей, характерных для того или иного протокола. Обеспечивается такая возможность за счет использования механизма адаптеров.

Единый API позволяет не беспокоиться о том, что у нас находиться «на другой стороне» — в случае изменения протокола мы просто меняем создаваемый контейнер, остальной код менять не требуется. Другим плюсом такой унификации является легкий переход от одной технологии (например, от Apache ActiveMQ, представленного в той же IBM WebSphere) к другой (например, Weblogic от Oracle).

Проектирование и разработка Web-сервисов JAX-WS 2.0

Проектирование и разработка Web-сервисов JAX-WS 2.0

В этом учебном руководстве мы спроектируем и разработаем приложение обработки заказов, отображающее свою функциональность в виде Web-сервисов, посредством которых различные клиенты могут размещать информацию о заказе независимым от используемой платформы способом.
Информация по теме:
Советы и приемы для Web-сервисов: сравнение JAX-RPC и JAX-WS
Интерфейсы программирования приложений JAX-WS client API в Web Services Feature Pack for WebSphere Application Server V6.1 series
Демонстрационные материалы по Web-сервисам, предоставляемые по требованию
Доставка Web-сервисов в мобильные приложения

Представление строк в виде связок символов: Теория и практика

Представление строк в виде связок символов: Теория и практика

Связанная структура данных (rope data structure) представляет собой неизменяемую последовательность символов, во многом похожую на String в Java. Но эффективная реализация изменений в связках делает их, в отличие от объектов типа String и их изменяемых собратьев, объектов типа StringBuffer и StringBuilder, идеально подходящими для приложений, которые выполняют большой объем работы по манипуляции строками, особенно в многопоточных средах.

После краткого знакомства со структурами данных, основанных на связках, эта статья знакомит читателя с библиотекой Ropes for Java, реализацией связок для платформы Java. Затем выполняется сравнение классов String, StringBuffer и класса Rope из библиотеки Ropes for Java для Java-платформы; исследуются отдельные проблемы, связанные с производительностью, а завершается статья обсуждением, когда стоит использовать связки в приложении, а когда от них лучше отказаться.

Основные источники информации по Java

Основные источники информации по Java

С момента представления в 1995 г. Java-платформы как единого целого мира, Java прошел радикальный эволюционный путь от концепции “апплеты повсюду”, которую исповедовали первые идеологи и приверженцы. Вместо этого мир Java развился до Swing, сконцентрировался вокруг сервлетов, направил движение к J2EE, споткнулся на EJB, нашел обходной путь через Spring и Hibernate, добавил возможности абстрактного программирования и стал более динамичным, а затем и более функциональным, и продолжает развиваться во множестве интересных направлений, в то время как я пишу эту статью.

Это многообразие может несколько озадачить Java-программиста, если он не рос и не развивался профессионально вместе с данным языком все эти годы.

Практическая автоматизация: Принципы автоматизации развертывания приложений, часть 2

Практическая автоматизация: Принципы автоматизации развертывания приложений, часть 2

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

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

Принцип удаленного развертывания, гарантирующий взаимодействие с несколькими удаленными серверами с центрального компьютера или кластера.

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

Groovy на практике: Взгляд на Groovy как на DSL для Java-разработчиков

Groovy на практике: Взгляд на Groovy как на DSL для Java-разработчиков

Эндрю Гловер (Andrew Glover) начал писать о Groovy для сайта developerWorks еще в 2004 г. Первой в свет вышла статья Почувствуйте Groovy в серии alt.lang.jre, которая была продолжена длинной чередой статей под общим названием Groovy на практике. В те времена еще не было выпущено ни одной книги по Groovy (сейчас их уже более десятка). Более того, до выхода Groovy 1.0 оставалось еще несколько лет. В общем, многое успело измениться с тех пор, как в 2006 г. на сайте developerWorks была опубликована последняя статья из серии «Groovy на практике».

В настоящее время количество загрузок дистрибутива Groovy в Интернет достигло примерно 35 тыс. копий в месяц. Приложения компаний, отличающихся своей консервативностью, например Mutual или Omaha, уже включают более 70 тыс. строк кода на Groovy. Список рассылки, относящийся к Groovy, является одним из наиболее популярных на сайте Codehaus.org, на котором и размещается проект Groovy (см. раздел Ресурсы). Groovy уступает по количеству загрузок и популярности списка рассылки только одному проекту: Grails – инфраструктуре для разработки Web-приложений, причем она написана на Groovy (см. раздел Ресурсы).

Язык Java годен только для аплетов и Интернета

Язык Java годен только для аплетов и Интернета

Java неразрывно связывают с аплетами. И действительно, аплеты — неотъемлемая часть как языка, так и платформы Java в целом. К тому же их создание — удачный маркетинговый шаг Sun. Без аплетов мир о Java не узнал бы так быстро.

Идея встраиваемых приложений в гипертекстовые документы (HTML) не так уж и нова. Многие фирмы пытались продвинуть свои технологии на этот сектор рынка, но в настоящее время конкурентов у Java здесь немного. На сегодня это, пожалуй, JavaScript, ActiveX и технология Flash. Две последние, правда, работают только под управлением Windows.

Что привлекает в Java программистов? Мощная модель безопасности, единый код для всех платформ, широкие возможности для использования готовых библиотек, простота программирования. В действительности все не так радужно, как хотелось бы. Модель безопасности, безусловно, не плоха, но ее реализации, выполненные теми или иными производителями, различаются. В результате код, прекрасно работающий под управлением одного браузера, не работает под управлением другого.

Java работает везде одинаково

Java работает везде одинаково

“Создаешь один раз — используешь где угодно” (“Write once — run anywhere”). Вторая часть этого лозунга создателей Java содержит утверждение, что Java-программа работает везде одинаково. К сожалению, в действительности все не так просто. Java-машины различных компаний на различных платформах НЕ стопроцентно совместимы друг с другом.

Отличия в работе Java-машин на разных платформах существуют и в реализации мультизадачности, и в работе оконной библиотеки (AWT). Сложные Java-программы необходимо “прогонять” на разных платформах, чтобы убедиться, что все в порядке. Вообще говоря, даже и на одной платформе, но на разных машинах, подобные программы могут выполняться по-разному.

Например, программист может столкнуться с ситуацией, когда его код на многопроцессорной машине ведет себя иначе, чем на однопроцессорной. Особо следует упомянуть Java-машину, созданную компанией Microsoft (далее MS JVM). Она носит название Java не совсем законно (что было подтверждено недавним решением суда).

JiBX 1.2, часть 2. От XML-схемы к коду Java

JiBX 1.2, часть 2. От XML-схемы к коду Java

JiBX — это инструмент для установления соответствия между данными XML и объектами Java. JiBX давно известен как самый быстрый и гибкий способ установления соответствия между кодом Java и XML. Однако сложность этих определений соответствия и ограниченная поддержка все более широко используемых определений XML-схемы иногда расхолаживали пользователей. К счастью, в версии JiBX 1.2 сделано многое для решения этих проблем. Из этого руководства вы узнаете об использовании новых функций JiBX 1.2 для простой генерации кода Java из существующего определения XML-схемы и для чтения/записи XML-документов в соответствии со сгенерированными определениями схемы — и все это без необходимости вдаваться в детали определений соответствия JiBX. В первой части был описан обратный процесс преобразования кода Java в определения XML-схемы.