著者:小松正樹
ページ数:140

¥387¥0

本書はJava、Spring Frameworkアプリケーション開発者をターゲットとした並行・並列処理の入門書です。

目的

Spring Framework/Javaエコシステムでのハイパフォーマンス基盤の設計に従事するアーキテクトやエンジニアの方に、並行・並列処理のアーキテクチャー設計の基礎となるJMSトランザクションやスレッドスコープにふれて頂く事を目的としています。

背景:エンタープライズ並行・並列処理とは

Spring Frameworkを使ったエンタープライズアプリケーションやハイパフォーマンス基盤の設計では、単にマルチコアによってパフォーマンスや負荷処理能力を向上させるだけではなく、システムキャパシティの限界を超える負荷が発生するピーク時や障害発生時に、一旦ロールバックしてリトライする等の機構も含める必要があります。そのため大規模なシステムではMQ等のミドルウェア導入が不可欠となります。

必要な知識

Spring Frameworkの環境設定にあたってはMavenを使ったビルドの知識(pom.xmlの編集)があることが必須となります。またJavaマルチスレッドとjava.util.concurrentパッケージの基本知識も前提としてあるものとします。(拙著「Javaマルチスレッド入門」を事前に読むことを推奨します。)本書のサンプルコードはSpring Framework 4.1.4を使いますが、原則としてSpring Framework 3でも動作するはずです(動作確認はしていませんので、ご自身のリスクで試してください)。

構成

第一章「マルチスレッドの復習」は本書を通じて前提とするスレッドプールを使ったスレッドプログラミングとAtomic変数の復習をする機会となります。java.util.concurrentパッケージに慣れていない読者層に配慮した章のため、経験者はスキップすることを推奨します。

第二章「Spring Frameworkのまとめ」では、Spring FrameworkによるBeanの自動生成、依存性注入について解説します。Spring Framework初見の方はサンプルコードに目を通すだけでなく、実際にコンパイルして実行することを強く推奨します。この章が理解できない方は、次章以降の理解をするのは難しいでしょう。スプリングフレームワークを使ったアプリケーション開発経験者はスキップしても構いません。

第三章「Spring Frameworkと並行性」では、Springが提供するTaskExecutor、TaskSchedulerについて解説します。

第四章「ThreadScope」ではSpringアプリケーションにおけるカスタムスコープ、ThreadLocalの使用方法について考察します。singleton、prototype、request、sessionやカスタムスコープを定義する際の実装例を示します。ThreadScopeはThreadExecutorと同様にSpring Frameworkでのマルチスレッドアプリケーション開発の骨格となるものです。この章ではハローワールド的な実装にとどめますが、ThreadLocalの用例として複数の実装方式を紹介しています。

第五章「イベント伝播」ではSpring Frameworkのローカルのアプリケーションイベントの非同期(マルチキャスト)での送受信について解説します。イベント駆動・メッセージ指向アプリケーションで使うことがあるApplicationEventMulticasterクラスはスレッドをプールする実装としてThreadExecutorを利用しており、次章以降の基礎を固める意味でご案内します。さらにApplicationEventはSpringの内部処理のシステム開発に適しており、マルチスレッド化によりパフォーマンス向上が望めます。第七章でイベント駆動アプリケーションをトランザクションに適用させるために本章は理解しておく必要があります。ApplicationEventについての知識がない方は目を通して、可能であればビルドして動作を確認するとよいでしょう。

第六章「ミドルウェア」では、分散並列アーキテクチャーの実装例としてJMS規格(Java Message Service)を使った並行処理を考察します。ActiveMQの実装や基本アーキテクチャーについて解説します。

第七章「トランザクション」では、Spring AOPを使ったイベント駆動アプリケーション(第五章)とJMSアプリケーション(第六章)の開発方式を考察します。特にエンタープライズアプリケーションで幅広く活用されている分散トランザクション機能については、ビジネスオブジェクトでの並行・並列処理を行う上で幅広く活用されているため、並行処理システムの設計をする方には有用な知識となります。エントリーレベルのエンタープライズアプリケーション技術者や基盤開発に従事するアーキテクトに役に立つ内容と考えます。

目次

第一章 Javaマルチスレッドの復習

スレッドプールとExecutorインターフェース
BlockingQueueとスレッドプール
Executorインターフェース
Atomic変数
Producer Consumerアーキテクチャー

第二章 Spring Frameworkのまとめ

基本概念
Beanの自動生成
依存性注入
Setter-Injection
Javaアノテーションによる依存性注入
@Configuration注釈
コンポーネントスキャン
AOP(Aspect Oriented Programming)
AOPの用語
環境設定
AOPプロキシ
ProxyFactoryBean
AOPの有効化
Aspectの宣言
Pointcutの宣言
Adviceの宣言

第三章 Spring Frameworkと並行性

Spring Frameworkの環境設定
TaskExecutor
ThreadPoolTaskExecutor
ThreadPoolTaskExecutorの実装
スケジューラーAPI
TaskScheduler
Trigger
taskの設定
スケジューラーの実装例
@Async @Scheduled注釈の有効化
@Async
@Scheduled

第四章 ThreadScope

Bean Scope
Request/Sessionスコープ
Request/Sessionの実装例
ThreadLocal
PrototypeスコープとThreadLocalの比較検証
ThreadLocalの代替案
オブジェクトプール
TargetSource
Apache Commons Poolの環境設定
CommonsPoolTargetSourceの実装例
ThreadLocalTargetSourceの実装例
カスタムスコープ
カスタムスコープの実装例
まとめ

第五章 イベント伝播

ApplicationEventMulticasterインターフェース
ApplicationListenerインターフェース
ApplicationEvent
イベント駆動アプリケーション

第六章 ミドルウェア

JMS(Java Message Service)
JMSアーキテクチャー
JMSの基本構成
JMS配信モデル
Publisher Subscriber モデル(Pubsub)
Point-to-Point モデル(P2P)
JMS環境設定
ActiveMQ
JmsTemplate
Listener
JMSリスナーの並行処理実装

第七章 Springトランザクション

エンタープライズトランザクション
ローカルトランザクション
グローバルトランザクション
XA
Two Phase Commit(2PC)
1相コミット(One Phase Commit – 1PC)
Java Transaction API(JTA)
Programmatic Transactionモデル
Declarative Transaction(宣言的トランザクション)モデル
Springトランザクションモデル
AOPトランザクション
DBトランザクションの設定
JMSトランザクションの設定
AOPトランザクションの実装例
AOPトランザクションのテスト
JMSとAOPトランザクションのテスト
TransactionSynchronizationManagerを使ったトランザクション
前編のまとめと後編について

補足

本書を読まれた方は拙著「Spring Integration入門」も合わせて読むことをおすすめします。並列分散処理とシステム自動化に特化したESB/EIPの実装であるSpring Integrationは、本書で学ばれた知識を強化してくれるはずです。

シリーズ一覧

  • 同シリーズの電子書籍はありませんでした。

 

  Kindle Unlimitedは、現在30日間無料体験キャンペーンを行っています!

この期間中は料金が980円→0円となるため、この記事で紹介している電子書籍は、すべてこのKindle Unlimited無料体験で読むことが可能です。

Kindle Unlimited 無料体験に登録する