Использование Spring и Websphere MQ в Java приложениях

Использование Spring и Websphere MQ в Java приложениях

Spring (Spring Framework) — open source фреймворк для разработки приложений на Java.

IBM Websphere MQ (MQSeries) — коммерческий продукт всем известной компании IBM для обмена сообщениями.

Данный текст в основном предназначен для разработчиков приложений на базе Spring и интересующимися асинхронными средствами обмена.

Будем рассматривать отправку и прием сообщений из Websphere MQ средствами Spring-Jms.

Применение XStream для сериализации Java-объектов в XML

Применение XStream для сериализации Java-объектов в XML

XStream позволяет сериализовать большинство Java-объектов без всякого отображения. При этом имена элементов соответствуют именам объектов, а содержимое элементов – строковому представлению объектов. XStream способна сериализать объекты классов, не реализующих интерфейс Serializable. XStream представляет собой средство для сериализации объектов, а не связывания с данными, поэтому ее возможности не включают генерацию классов на основании документов XML или схем XML (XML Schema).

XStream обладает тремя свойствами, отличающими ее от любой другой библиотеки для сериализации.
Видимость полей класса не играет роли в процессе сериализации/десериализации.
Для сериализации/десериализации класса не требуется наличие get/set-методов для полей.
Для сериализации/десериализации класса не требуется наличие конструктора по умолчанию.

Компиляция исходного кода Java в объектах CharSequence

Компиляция исходного кода Java в объектах CharSequence

В этом разделе будет сконструирован фасад для класса javax.tools.JavaCompiler. Класс javaxtools.compiler.CharSequenceCompiler (см. Загрузка) может компилировать исходный код Java в любых объектах java.lang.CharSequence (таких как String, StringBuffer и StringBuilder), возвращая объект типа Class. Класс CharSequenceCompiler имеет следующий API:
public CharSequenceCompiler(ClassLoader loader, Iterable options): Этот конструктор принимает объект типа ClassLoader, который передается компилятору Java, позволяя ему находить зависимые классы. Параметр типа Iterable позволяет клиенту передать дополнительные параметры компилятора, которые соответствуют опциям компилятора javac.

Компиляция Java: принципы и реализация

Компиляция Java: принципы и реализация

Для понимания пакета javax.tools полезно ознакомиться с принципами компиляции в Java и тем, как они реализуются в пакете. Пакет javax.tools предоставляет абстракции для всех этих концепций в общем виде, что позволяет вводить исходный код из различных объектов-источников, а не только из файловой системы.

Компиляция исходного кода требует следующих компонентов:
Объект (переменная) classpath (путь к классам), через которую компилятор может найти классы библиотек. Объект classpath для компилятора обычно состоит из упорядоченного списка каталогов файлов системы и архивных файлов (JAR или ZIP), которые содержат уже скомпилированные .class файлы. Объект classpath реализуется объектом типа JavaFileManager, который управляет множество объектов JavaFileObject со скомпилированными классами и исходным кодом и объекта типа ClassLoader, передаваемым в конструктор JavaFileManager. JavaFileObject это потомок FileObject, специализированный с помощью одного из вариантов значения перечисляемого типа (enum) JavaFileObject.Kind, полезного для компилятора:
SOURCE (исходный код)

Создание динамических приложений с помощью javax.tools

Создание динамических приложений с помощью javax.tools

Пакет javax.tools, добавленный в Java SE 6 как стандартный API для компиляции исходного кода Java, позволяет добавлять динамическую функциональность для расширения статических приложений. Эта статья представляет обзор основных классов пакета и показывает, как использовать их для компиляции исходного кода Java из Java-объектов String, StringBuffer или CharSequence вместо файлов. Затем этот фасад используется для построения интерактивного приложения для построения графиков, которое позволяет пользователю задать числовую функцию y = f(x) с помощью любого правильного числового Java-выражения. В конце обсуждаются возможные угрозы безопасности, связанные с динамической компиляцией исходного кода, и способы для устранения этих рисков.

Генерация Web-приложений на основе J2EE и Ajax при помощи jpa2web

Генерация Web-приложений на основе J2EE и Ajax при помощи jpa2web

С появлением готовых средств, таких как Hibernate (см. Ресурсы), был сделан громадный шаг в направлении нивелирования противоречий между Java-объектами и их представлением в базе данных. Это особенно касается той легкости, с которой может описываться сохранение объектов путем добавления аннотаций к соответствующим классам. Это освобождает разработчиков от утомительной работы по сохранению и восстановлению объектов из базы данных. Данные проблемы берет на себя Hibernate, однако, разработчикам по-прежнему приходится создавать Web-страницы для отображения объектов. Типичным сценарием создания Web-приложения среднего уровня может быть следующий: сначала разработчик создает набор простых Java-классов (Plain Old Java Objects – POJO) для представления модели предметной области. Затем начинается работа над транзакциями и Web-интерфейсом. При этом часть объектов модели не содержит транзакционных данных. Клиенты, страны, адреса, сотрудники и компании – это типичные примеры объектов модели, которые участвуют лишь в небольшом числе операций.

Работа с 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-платформы; исследуются отдельные проблемы, связанные с производительностью, а завершается статья обсуждением, когда стоит использовать связки в приложении, а когда от них лучше отказаться.