|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《深入理解OSGi:Equinox原理、应用与最佳实践》1 z+ A; y4 `! m4 S/ |0 K$ J. H8 W
java电子书推荐理由:本书是继《深入理解Java虚拟机》后的又一实力之作·全面解读OSGi规范,深刻揭示OSGi原理,本书作者资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。
6 U; i& t) X3 ^4 J8 T0 P" O) L2 A( i# ~8 n+ F8 b: s K* {) n
作者:周志明;谢小明 著6 I7 @$ n$ H h2 P8 Y
出版社:机械工业出版社$ m$ E! G) T. R5 p) z/ ]. d
出版时间:2013-02-01' J( q: P' Q. h( l( b
& J y0 X6 s/ O% c9 w6 B; c
, a+ I5 b. Z0 p9 M/ K
" I- k0 v G6 L" H6 qjava电子书目录:
2 y2 K% C# a7 r- ]% _2 X# m0 @0 o M) C- I+ J" |
第一部分 走近OSGi
5 j$ Y4 O/ y- ^% |第1章 Java模块化之路
|3 _" [( L/ i8 | 1.1 什么是OSGi ; I) S3 G r: C3 l6 M' c: E
1.1.1 OSGi规范的演进 9 Y, |8 c1 I3 B6 g
1.1.2 Java模块化规范之争 ! n% V; n E$ F i! Q1 e% O8 u
1.2 为什么使用OSGi 0 c |7 S& k* Z2 S( H
1.2.1 OSGi能让软件开发变得更容易吗 : ~4 \9 d$ l% U" U
1.2.2 OSGi能让系统变得更稳定吗
$ k3 h* U; d4 o/ K 1.2.3 OSGi能让系统运行得更快吗 5 e& H! j8 S( O( O' ~" [/ C/ m
1.2.4 OSGi能支撑企业级开发吗 4 Z$ t6 Q3 x( }( q; o8 g4 n
1.3 本章小结 $ {9 |/ w* w$ b& q. G
第二部分 OSGi规范与原理! g1 X2 M% A! V6 d
第2章 模块层规范与原理 0 Z {# h& h y' ]) H
2.1 OSGi规范概要 ' U* D& m" f; M# T
2.2 Bundle
f. q! t( Q9 r9 B2 w$ b1 p) d3 F 2.3 描述元数据 ) O# ?" i# w# C- J3 U- J% x3 Z
2.3.1 预定义标记 ! ~6 P4 y; Q# T) P z1 K6 o4 J# P
2.3.2 使用可视化工具
( ~# t+ H7 G% Y6 B$ S. f 2.4 Bundle的组织与依赖 : |9 Q; A1 _! m: Q. `7 |
2.4.1 导出和导入Package
( X; c# Y1 i9 Y0 W1 u" Z% b 2.4.2 约束规则与示例 9 G8 c* a) W8 B9 _: S- K2 x I
2.4.3 校验Bundle有效性
4 M, _ X2 l/ {3 K0 E, ~ 2.5 OSGi的类釉丶芄?
6 f w1 m) i7 f 2.5.1 父类加载器
; p3 J; V1 G- }1 l0 W/ y 2.5.2 Bundle类加载器
" q( ^' W+ e) C! x/ d: T 2.5.3 其他类加载器 : G1 m2 W9 A6 k5 ~+ D. ^7 N
2.5.4 类加载顺序
% O; ~9 [+ t" q6 q 2.6 定义执行环境
% d0 R& O& a7 D2 N& x9 b4 R6 c 2.7 本地化 0 h! D3 i4 y+ z( a/ ^$ V/ c
2.8 本章小结 . V6 _ V& G! y" y( D! V$ p
第3章 生命周期层规范与原理 9 M s9 P; s3 f3 z$ b2 Y
3.1 Bundle标识
/ k8 O; e, ?) U" C' v 3.2 Bundle状态及转换
0 {3 {/ T+ ~" f* r' g 3.2.1 安装过程 * C, P. N7 [4 e- `0 H
3.2.2 解析过程 / v5 _. _/ _9 E) @2 p
3.2.3 启动过程
5 d4 g5 l2 ~. P& |3 w 3.2.4 更新过程
, a% r$ h3 m2 ]1 @# D4 _ 3.2.5 停止过程 % X. }+ S) | N( s7 q
3.2.6 卸载过程
7 S6 |9 j; m! m* v' d 3.3 启动级别 + c# _2 T( _' q( B4 K( f4 m
3.3.1 设置启动级别
/ R* ]& w3 D) c9 } 3.3.2 调整活动启动级别 / ?, u, [8 _3 G. r! I2 d
3.4 事件监听
|+ j/ G/ q0 Z 3.4.1 事件类型
7 m0 t$ ~+ b2 Y5 q# h" T 3.4.2 事件分派 / y( X, L! F2 Z
3.5 系统Bundle ' l* R9 `; _1 n: D
3.6 Bundle上下文
9 x! T& f1 R/ J. f- S# [' O' o 3.7 本章小结 7 U$ l6 N4 t% h% m4 y- H
第4章 服务层规范与原理 $ e7 y2 U5 A/ A4 N F6 Q& H6 `
4.1 服务 , J/ |6 C! M% I2 b4 F
4.2 OSGi服务示例 4 H, v3 P. T0 v7 D
4.3 服务属性
3 k- L W" l* ?, G& @8 q 4.3.1 属性过滤器 ( X* T! T& |, D# Y" w
4.3.2 预定义属性
2 ?. h7 W% _, B* m" R/ Z 4.3.3 修改属性 5 Q$ H2 R; B, P, g$ i8 S, e" b
4.4 服务工厂
$ _' Q8 i* q- B' u( i" G" d- _ 4.5 服务跟踪器
4 k [5 m& R; O B5 W. y* F 4.6 引用服务 1 s' ]' \0 N4 T7 h
4.7 释放和注销服务 / i% t; r. L0 R1 A/ n
4.8 服务层事件
- j3 J/ D# J0 |3 x 4.8.1 事件类型
* y) p( n) A: S1 {, d 4.8.2 事件分派 / I( ?4 E: ?: J, a+ D
4.8.3 ServiceRegistration对象的提前请求
- z& c4 V f* t& U2 ?( F- ] 4.9 远程服务 + V1 v2 |, d# j9 ]
4.9.1 准备远程服务环境
* Z9 y$ r- w: @2 Q3 s8 ?4 g 4.9.2 远程服务示例
1 Y8 E6 a7 G) n+ \ 4.9.3 远程服务属性
/ N; P7 q6 P& K" r0 @ \ 4.9.4 实现分析& E8 g+ z0 j5 k1 [+ F
4.10 服务钩子; J. J6 _) p/ F' {: K' A
4.10.1 EventListenerHook
$ K6 s* z( _( r( A# L 4.10.2 FindHook
+ V& K* [- S2 B! g 4.10.3 ListenerHook
3 i) w9 s } U' [" ], J$ |* O: s 4.10.4 服务钩子示例
1 ?% R1 C: B$ x5 y/ K+ U 4.11 本章小结# O, \& s7 D0 D2 L
第三部分 基于Equinox的OSGi应用与实践
% ?0 s- ~. m& l1 ~. M, E2 f: a% O第5章 Equinox启航
) E: \3 O7 I7 a1 ]' b 5.1 建立Equinox开发环境
. j/ Y! m# r; w1 ^4 r5 ^: u 5.1.1 建立运行环境
$ D: A4 G. z' U. r9 G" a: t0 r/ g) b 5.1.2 建立编译及调试环境" p8 D& U4 a# b2 A/ P! S
5.1.3 建立开发环境
1 \5 d9 o+ H+ p5 `( h 5.2 Equinox常用组件简介) H6 c3 J) @4 s' f$ X9 E
5.3 Equinox启动器/ j" T: b6 Q( b: p4 N
5.4 使用代码启动Equinox, Y$ @& P1 J4 H# \$ G
5.5 本章小结( X" E8 x/ |# p: ]0 l
第6章 Equinox基础应用与源码解析
7 S9 F" C9 |2 X% @ 6.1 实践项目—Neonat论坛
: ^. k( z2 D8 b 6.1.1 背景与需求
, i8 `- I; u' w. @ 6.1.2 模块划分3 Y. q X; ~! W: [& r! F
6.1.3 基础资料模块
+ a+ r$ u5 P' b" p 6.1.4 持久化模块
' e; g; b+ L8 F* l' u 6.1.5 用户交互模块
6 S# c" Y y# `7 c$ T( Z6 `- S 6.1.6 运行效果
- F4 `9 e' `( ^5 r 6.2 Equinox源码解析
. }1 Z. o. \. c! o1 [: d 6.2.1 OSGi容器启动
" d) F! j. Y+ i: z0 H 6.2.2 Bundle状态恢复
2 r+ o) Y: j" t 6.2.3 解析Bundle依赖关系
$ @/ `; b# @4 ]/ c7 g 6.2.4 OSGi类加载器实现- ~1 x" t3 t; h
6.3 本章小结9 e" p& L* c* @: z" J
第7章 服务器端OSGi
1 u H4 L" `* E( Y; f4 K 7.1 OSGi与Web服务器8 u( p# q( g: n
7.2 HTTP Service规范简介
5 K, j5 @. d. Z& Y9 T3 u 7.2.1 服务目标; ^: w d, O+ P7 C# R
7.2.2 服务接口4 g" B# B* _+ O' P: Z5 ~% H
7.2.3 资源映射规则
& @" W; P3 ?- o! Z& l1 c0 ?4 z* b8 x2 [ 7.2.4 请求处理过程
- ~& x: d" ?8 o 7.3 实践项目—Neonat论坛的Web模块
' z$ S/ P# y% E 7.3.1 准备依赖项
; ~6 l/ a: n: k+ p4 A 7.3.2 使用HTTP Service
5 O8 H7 H% q: f: ] 7.3.3 实现Web交互功能
! }( k; z7 Q9 D- V' G7 R) ?1 H 7.3.4 运行效果
) S- }7 c$ Q& s7 m( h1 E* u) `5 b* b/ h 7.4 HTTP Service源码解析" K z d3 @3 d7 C1 Q
7.4.1 BridgeServlet与OSGi容器启动
8 ~, T/ v7 B" z5 p9 r 7.4.2 BridgeServlet与HTTP请求委派
8 a# }: w8 e& X+ j7 \/ C s 7.4.3 DelegateServlet实现原理
; g8 Q+ D" x4 b% F4 S1 g3 ]) Z; n+ f 7.5 本章小结
: m2 v% s8 G. Y* }1 p3 s第8章 用户管理服务( Z8 j6 c1 T' w; f/ }* D1 V" Z* Z
8.1 User Admin服务规范简介* y5 u/ n9 ]9 G$ x* {. _
8.1.1 服务目标与基础概念$ ?; p: o: F$ r" @, l( ?1 M
8.1.2 验证用户身份
( h4 d8 Z: i/ F 8.1.3 验证用户权限5 W, S W# `. l: M' S" P
8.1.4 User Admin事件3 `$ @5 @$ E" p' n1 D' N- s
8.2 实践项目—Neonat论坛用户管理模块
; c! {' E% i B; ] 8.2.1 需求与依赖项分析$ p4 }. m: f7 P7 f" y
8.2.2 用户与用户组的实现
9 M9 f3 z( ]1 m. W0 z0 _8 j 8.2.3 页面权限
5 N6 s3 z' K3 b6 t# o' r7 U: H# t 8.2.4 用户登录与身份验证) h% E1 q& B3 N9 f! G6 i8 o
8.3 User Admin源码解析2 S0 {' E+ j5 B4 q' w. A& Z
8.3.1 用户管理实现
5 Y- O& W6 [: \" E9 A8 C( B' \ 8.3.2 外部服务使用实践- k2 b/ C3 D d. G* z
8.4 本章小结
5 X6 E( L( a2 s, Z {) Y, A7 D第9章 Preferences服务
8 \- e/ v" X4 C/ Y7 v, r' ] 9.1 Preferences服务规范简介
7 j, q9 g; `4 K# L' L 9.1.1 服务目标
' F( p D& b/ g6 S" }% B% L% u+ d 9.1.2 数据结构
% j4 T5 E# D7 P; I 9.1.3 属性
2 V4 D0 s3 }! ~/ }% m/ Y+ j& c 9.1.4 并发处理; |0 F4 W# Z Z; T" j1 R& _; P
9.1.5 清理遗留数据7 f s2 ^/ H/ S
9.2 实践项目—Neonat论坛持久化模块
: G% O; K& a+ X. i, Z- j% D 9.2.1 编码实现4 y7 K+ f( W* o3 V# e, |
9.2.2 模块热切换
( |* J) ^3 D# r 9.3 Preferences源码解析
+ R& V, v* h/ J K+ v: Z- S; n3 R1 E5 `4 c 9.3.1 数据结构实现/ ]7 C0 k" p( f& b0 q2 \# j
9.3.2 属性存取" j# z* \. k+ M7 F& O
9.3.3 后端存储系统
' T7 k' ~6 k( O1 M 9.4 本章小结
- S* v: P3 l" x2 H+ g/ g第10章 声明式服务
; L$ c1 |/ N! z% F- W6 d 10.1 声明式服务规范简介/ B+ ~, p2 Z9 |9 @
10.1.1 服务目标) R7 F E9 w( M0 H' ~ V( X, K
10.1.2 定义Component9 X3 b/ {% W/ D- m$ R; f4 y
10.1.3 Component类型& x( b2 y) h' d7 ?* r' c
10.1.4 Component生命周期$ J* m- F1 w& J4 z
10.1.5 Component属性# X2 x. C$ p" _" A; F& D
10.1.6 绑定与发布服务
! Q" j6 v& K) | 10.1.7 激活与钝化方法
; I, `# q$ \" ` 10.1.8 Component配置总结* C: I# z; l, D8 y% M; ?: a1 r) o6 w
10.2 实践项目—使用声明式服务改造Neonat论坛
' U- G b# M1 v+ d7 r6 U 10.2.1 可视化编辑工具
_% R% ~! c5 _ 10.2.2 DS容器管理
. n0 Z8 h& `, C2 f* {' z( ] 10.3 DS容器源码解析
* [% u2 K& ^, r3 O1 Q- _% R; J3 D 10.3.1 容器启动! D/ L* {: n9 K1 L) C+ v
10.3.2 加载Bundle中的Component
3 r$ ?7 ^" N! G' p5 N, X5 j4 E. c 10.3.3 动态依赖解析
/ b, Y: c& o' h" N/ ]5 ~: U 10.4 本章小结: p' l6 q$ P( \( e" C; v+ ]7 P: z& ]
第11章 Subsystems服务& @4 B1 O) D- K( h
11.1 服务目标, X2 e0 y$ ~$ ]7 h+ `! c
11.2 Subsystem格式
" z7 z1 m% x( h3 K 11.3 Subsystem元数据
2 v. p6 J( X2 v7 o 11.3.1 SUBSYSTEM.MF标识
1 H, `$ h( Z5 `" l# p 11.3.2 DEPLOYMENT.MF标识
! q2 A. R$ Z0 K8 Z7 C2 u$ E 11.4 Subsystem类型与共享策略
* j: V, V% j4 `( k 11.5 组织管理Subsystem/ v; l3 K0 W& ~0 g
11.6 Subsystem部署与依赖策略
1 c/ t V8 m3 l 11.7 Subsystem生命周期
' I: { v4 a! t6 a 11.7.1 安装/ S4 u1 _5 f H0 q
11.7.2 解析) l3 j! q. L, |9 S6 T- b7 f) w
11.7.3 启动4 F: R9 Y% `7 M X/ u- T; f. T
11.7.4 停止+ q T* |+ a- }3 Q' A/ t
11.7.5 卸载6 w s! \% Z. b: j
11.8 本章小结
7 z' \; }3 u' {# \第四部分 最佳实践
) X7 x' d9 H9 P0 e$ w第12章 OSGi最佳实践
( Y1 n" W! k6 H4 E) v- ~, Y 12.1 Bundle相关名称命名' _" V' E+ {+ C G% l
12.2 Bundle划分原则6 @ v; q. `% F, D$ r
12.2.1 恰如其分地分配Bundle粒度! @. s* ^$ \# [; J9 ]' D
12.2.2 分离OSGi代码
; T( }1 ^5 `% X5 s/ x7 S7 e: [ 12.2.3 分离接口和实现
0 W; j. Q2 R& c6 v3 J& i8 P" t 12.3 依赖关系实践
) L+ ]8 s9 x- H0 U) q3 ?' t n 12.3.1 依赖分析工具1 _) f% g, M0 y
12.3.2 避免Require-Bundle
" l. q, E# i4 h3 ~; l b; v 12.3.3 最小化依赖
, g5 b- }7 Z" |7 o 12.3.4 避免循环依赖
# _) ~1 L; B: m 12.3.5 Equinox x-*依赖
0 K2 ^/ U! x$ l 12.4 Equinox专有类加载机制+ {$ j* c: l$ V% _6 k
12.4.1 Buddy Loading类加载机制
; G9 E$ A6 h9 i- ^: g8 `) x0 s 12.4.2 ClassLoaderDelegateHook类加载机制
& {8 Z" c: g( Q1 y7 Y 12.5 Bundle生命周期实践
; z6 ? d7 \/ i1 y 12.5.1 启动
7 O {, Q$ B ~7 H% A, ~7 R) U 12.5.2 停止: L& K! k" M) K+ T1 O
12.6 服务工厂的特殊性
' ?1 k0 W* f% B+ T; B 12.7 处理非OSGi的JAR包
% ]' X5 L) \# u* y3 J8 [& k 12.8 启动顺序实践) W0 G0 L# j+ o0 j% {) ^
12.8.1 避免启动顺序依赖
' Z# g! F6 j9 \/ |% i. l4 a 12.8.2 Start Level的使用
, q3 p0 i6 y1 y8 e6 h2 n0 f4 l2 u 12.9 Fragment Bundle实践
! G/ s( p7 e& i0 P3 S( N& w/ D X 12.10 保持OSGi动态性
( J0 d6 i3 D7 C6 I/ L8 f 12.11 API Tools实践& e- }0 s/ k8 K7 B- {& M
12.11.1 API Baselines4 T9 ], z, Z; W) ~8 v
12.11.2 API Tools 注解
) {& h; u& K% e 12.11.3 API Version版本管理! V6 T/ n. A" h1 `1 {/ e; Y" }
12.11.4 二进制文件不兼容# o9 @ q1 u2 l) S
12.12 本章小结0 @6 Q& [) ~' x# x4 H3 C8 e
第13章 Spring Dynamic Modules实践
; _3 p8 q5 r9 |7 X 13.1 Spring DM入门9 G1 S3 ?% A9 q$ m% r$ _# w
13.1.1 Spring DM项目简介% E( v! x+ ]+ M" F m8 {
13.1.2 安装Spring DM
' f0 `9 c: l4 _5 a1 f: b 13.1.3 简单的Spring DM示例7 ~4 R7 b/ c8 B& A$ w; ?* E1 C
13.1.4 Bundle和Spring上下文! H9 ?7 {3 Z3 B4 |$ n% f) m
13.1.5 命名空间% Y* a: u! f! @7 T+ a; H3 m* G }
13.2 Spring DM进阶
' s z, M/ b5 L7 H+ j/ ~ 13.2.1 Spring DM扩展配置
1 [* I. b0 j% l% q# g# D# T; c 13.2.2 Web Extender
/ w. X, E( f/ D$ r: c4 R 13.2.3 Spring DM服务约束% y' F6 v2 @" g
13.2.4 在Spring上下文中使用BundleContext0 s9 G* n# ?& `9 J: w% u
13.3 Spring DM企业应用/ c7 k! X/ E2 | D
13.3.1 规划OSGi组件$ w6 a0 k- y8 R1 ?
13.3.2 在Spring DM中使用JPA
6 w" _$ D7 E; K3 Z8 s# I6 C) t+ b( Z 13.3.3 事务管理
, n: M1 J8 Y( U 13.3.4 OSGi企业规范中的JPA7 Q9 f3 G0 I W1 _
13.4 Spring DM和Blueprint) R, l5 b6 [/ D! j9 |; z
13.5 本章小结6 z/ @( N7 r: X5 p5 g0 H, [( V
第14章 构建可测试的OSGi系统
8 t& z9 \3 ^2 M4 F5 O 14.1 单元测试的必要性
; ~0 z7 v& ]" Y5 E6 \9 G 14.2 单元测试的重要性
) O8 m# y D- H 14.3 可测试代码的特征& x8 X1 u9 ~7 }* m2 h6 K
14.4 OSGi单元测试
# G# L2 ^' J. B7 D4 I/ @) u 14.4.1 如何组织测试代码8 r" D( v1 A% i+ P- Y
14.4.2 如何进行OSGi单元测试
0 g5 c( G1 s. ?2 m; _, \( U 14.5 OSGi集成测试
9 n- f: k7 I/ O. } 14.5.1 Eclipse JUnit Plug-in Test
/ J1 q- y- T/ x3 U3 s% X: p 14.5.2 Spring DM Test5 |5 x. v1 R9 S2 W, r$ b
14.5.3 Pax Exam, K5 d. c# m3 B) g4 G/ k
14.6 本章小结
9 I! v/ Z8 Z8 o附录A Java类加载器简介
! i: {, B( f( h# F! i6 S附录B Equinox控制台命令0 ?- @& v2 M& [3 \2 L
附录C OSGi子规范目录
! w' _9 o/ F5 x7 T' [附录D OSGi相关项目3 ]9 B6 G4 t2 l O- C* z4 A: e
附录E Equinox启动配置参数
+ T/ U* H! ], P8 B. n+ P
2 B; x) X$ F7 Q) e百度网盘下载地址链接(百度云)下载地址:java自学网(javazx.com)深入理解OSGi:Equinox原理、应用与最佳实践 PDF 高清 电子书.zip【密码回帖可见】. C7 I. p5 `4 w: `, b
5 V% h; m4 `1 R6 h
8 P% W$ J5 Q/ ^; c
& ` Y! P& I' l" ~( h' E$ f
7 O! V+ K: @: E+ B" q5 `" s" m3 M N) `5 F) I
9 ]1 O+ i0 |+ T9 S# g. l. v0 p
. r6 ^) L d3 G# Z2 ?! y$ |
|
|