|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《深入理解OSGi:Equinox原理、应用与最佳实践》
' r6 m* H+ \" Q* R6 O8 p+ Gjava电子书推荐理由:本书是继《深入理解Java虚拟机》后的又一实力之作·全面解读OSGi规范,深刻揭示OSGi原理,本书作者资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。5 r3 j& A( x1 a% k, }
. j. l) ^& C' S! W! X+ N作者:周志明;谢小明 著
6 Q8 H# F3 \+ U& ~$ k出版社:机械工业出版社
l! S9 X- Q' Q! [5 m出版时间:2013-02-01
3 I8 z* j/ h. A$ k% X
! U3 k; W; ^/ X- ]: d; \
2 ]! e1 \$ R* V' R" X7 L/ K2 j) P& z, m2 M: u) y
java电子书目录:
! n; v T1 I7 O2 Z) G0 |5 I: k+ P1 q( [; O
第一部分 走近OSGi# [, ^, Z7 G( m U; c8 P. H7 B
第1章 Java模块化之路
9 ]1 `$ \: x2 M6 }0 X5 \ 1.1 什么是OSGi . t& P3 i. [& N$ ^0 Y
1.1.1 OSGi规范的演进 ' Q5 v9 ` E) c6 I: _4 F
1.1.2 Java模块化规范之争
l- D' E' d+ h7 ` 1.2 为什么使用OSGi
. j5 z: Z$ [' [* C" ~ 1.2.1 OSGi能让软件开发变得更容易吗 + A! ]2 S+ ~* { d
1.2.2 OSGi能让系统变得更稳定吗 / {* Y7 S, @- v7 P1 _, l
1.2.3 OSGi能让系统运行得更快吗 3 i$ g+ G9 F" }: J* Y
1.2.4 OSGi能支撑企业级开发吗
" ] G0 U0 M. X( O2 e1 ? 1.3 本章小结 8 ?$ f4 @7 i: _+ y- \
第二部分 OSGi规范与原理
+ u* w6 k4 U% f4 K第2章 模块层规范与原理
) _, M6 {+ v; Q$ x 2.1 OSGi规范概要 - A" H+ q* n. t) `; M! [
2.2 Bundle + C# l" O' Y4 R& p
2.3 描述元数据 5 y8 T7 s3 E1 y0 E8 f- J+ }8 \
2.3.1 预定义标记
1 I. b3 T' e/ | 2.3.2 使用可视化工具
3 }( u0 [6 O9 V 2.4 Bundle的组织与依赖 ; i5 @% m5 o1 j7 D! x
2.4.1 导出和导入Package
) O) b" N$ f6 k 2.4.2 约束规则与示例
2 B0 h( [% J+ S ?, C3 Q 2.4.3 校验Bundle有效性 ) k6 W8 s# {! P9 t- Z
2.5 OSGi的类釉丶芄?
: N6 k r$ b+ Y) l! u2 S5 e7 A 2.5.1 父类加载器
' x( k) Y! o* H+ w% F: G4 @ 2.5.2 Bundle类加载器 % H+ U& M- V2 u2 N0 N$ V
2.5.3 其他类加载器 8 ]2 c8 x& u, |3 W
2.5.4 类加载顺序 ' k- [4 |! r$ }3 ], H# I+ N* y7 |
2.6 定义执行环境 # j7 c# C' D9 J5 W
2.7 本地化
# B. H2 i9 w9 x( ^ 2.8 本章小结
( n6 T9 S5 F% @! C% J, @# n5 ^1 B6 E第3章 生命周期层规范与原理 : d/ C# W) \) Y) \
3.1 Bundle标识 6 S( y+ ~: T, s6 [3 _3 \0 M
3.2 Bundle状态及转换 4 q( a5 G1 U# f; f1 E$ X
3.2.1 安装过程 6 g8 V2 E5 D. i
3.2.2 解析过程
2 F$ C; v3 G( R( O5 e+ v1 u 3.2.3 启动过程
6 b6 E' W! w' \' F 3.2.4 更新过程 N7 v+ E8 L; `3 B# }4 `
3.2.5 停止过程
( t7 Y& g" p1 X 3.2.6 卸载过程 4 s* B. v, g X4 b4 ~6 W+ I
3.3 启动级别
, t( u( N/ w9 N$ _ 3.3.1 设置启动级别 ' L0 e+ N+ j) [( W7 i5 C
3.3.2 调整活动启动级别
) ]3 ?5 e' t! }2 B+ H5 H- \5 s 3.4 事件监听 8 O' p7 i& X; t
3.4.1 事件类型 ' o, G u8 T5 V" k# G5 {" M6 e5 `
3.4.2 事件分派 I9 Q+ `& X! v$ e: A9 @3 ^
3.5 系统Bundle
L0 [' y1 x$ k6 i" E# p" T 3.6 Bundle上下文
- w) b8 g: N* Q" R, @( g 3.7 本章小结 . F; V- [: o. {$ K( s
第4章 服务层规范与原理
7 e0 Q$ |! [6 e( E+ F9 O 4.1 服务 / n8 [9 U8 s8 ^6 n$ p
4.2 OSGi服务示例
9 v4 q, [1 l" d% t; Z4 d# s 4.3 服务属性
- h4 E( K7 H4 ^9 }& {; m* Q 4.3.1 属性过滤器
) q# _; Y$ y) z3 f3 Z7 f' e 4.3.2 预定义属性 ' Q5 s7 }( y& y/ C
4.3.3 修改属性 6 r) p9 a0 i) K: o( R7 I7 M: ]3 A
4.4 服务工厂
$ \0 I( | i. F" }4 `/ X 4.5 服务跟踪器 / |* f% u' U" ^5 M
4.6 引用服务 2 G+ @+ p/ X9 V* _
4.7 释放和注销服务
5 K8 r' x- Y# A9 w5 z 4.8 服务层事件
" w8 [! X; |1 P, T2 m 4.8.1 事件类型 ) v7 Q, f* t1 m% T
4.8.2 事件分派
. `$ c# G1 n4 j! w" ~: Q 4.8.3 ServiceRegistration对象的提前请求 ) |, [) Q' r" `+ v! H) x
4.9 远程服务 ) h2 I" D9 B( Y: a1 Z- r9 h
4.9.1 准备远程服务环境 & u4 S; S) }, k) O# V5 @
4.9.2 远程服务示例
7 X, E% ~6 m9 G: Q, b 4.9.3 远程服务属性 " e2 L' Z7 z$ l/ P
4.9.4 实现分析2 w7 S$ g! I7 ~) _5 J2 ?
4.10 服务钩子
3 G1 D& \5 A5 R; E5 i 4.10.1 EventListenerHook
s/ v( J# _) d6 I& K 4.10.2 FindHook; b, F* P% b$ H; l
4.10.3 ListenerHook
5 d1 ?( A% c+ O7 C# h. F5 P 4.10.4 服务钩子示例% P( X f. j$ D* B, R4 V5 ~
4.11 本章小结! ?1 F- M5 q9 }
第三部分 基于Equinox的OSGi应用与实践+ s B+ S% T8 l! \5 _3 s) |# w
第5章 Equinox启航+ t4 T1 j) ?( z, J: B
5.1 建立Equinox开发环境3 d' h8 Q9 n. ^6 ^
5.1.1 建立运行环境
% j* x% ^$ v1 \. g2 ~2 X 5.1.2 建立编译及调试环境
1 G$ F. \) |" l! u 5.1.3 建立开发环境6 ]0 a: Z" C8 z5 f# h0 c
5.2 Equinox常用组件简介, }/ y9 y( B+ V: K* e# T
5.3 Equinox启动器
3 d- O6 Z; K: P0 E- W$ {& L7 N 5.4 使用代码启动Equinox
8 N: |) ?" b9 I+ V1 u 5.5 本章小结
- B- C9 p# s: r0 y; v6 j# S第6章 Equinox基础应用与源码解析
K% J* \0 R( j, ^& |" L 6.1 实践项目—Neonat论坛1 g5 ^" J# S- f; \/ \* |2 s
6.1.1 背景与需求
% Q- U; h( Y" G6 W, ?- t# s9 J6 y 6.1.2 模块划分' h$ d, d8 [1 |* B
6.1.3 基础资料模块' H7 W! @. i$ E% y, W7 V
6.1.4 持久化模块; ~: Z' ]3 R- @- `5 R
6.1.5 用户交互模块7 f3 I6 |/ D8 M, x+ V/ g( m
6.1.6 运行效果. }7 N2 K# W0 c$ N% g8 g
6.2 Equinox源码解析
9 V; L: R( y0 ^* u7 J 6.2.1 OSGi容器启动
; T3 f7 y) {. h. z/ h% ^: { 6.2.2 Bundle状态恢复% K- w! A3 j. \% E
6.2.3 解析Bundle依赖关系% y& j/ F1 Q2 p" {% {
6.2.4 OSGi类加载器实现
3 p a+ t2 j7 t; E6 G 6.3 本章小结
# E! F8 G; F. r E第7章 服务器端OSGi
" d3 A, \4 S6 C& {0 C/ M8 b 7.1 OSGi与Web服务器
( A& b' h( c4 f5 C0 G* |/ x* U- I 7.2 HTTP Service规范简介
! R7 C6 `5 ?7 M% e 7.2.1 服务目标7 b% g# y6 }, h
7.2.2 服务接口% z5 [9 _! {7 N( h
7.2.3 资源映射规则5 Q/ Z! t+ t/ U( [6 F6 ?8 Q
7.2.4 请求处理过程1 Q# w8 ]: N. i# W' ]# s
7.3 实践项目—Neonat论坛的Web模块9 h' F$ A r. s& Q
7.3.1 准备依赖项, ^7 H7 Y9 q! c6 H5 d8 h
7.3.2 使用HTTP Service- A+ u8 J; a( f# A$ m
7.3.3 实现Web交互功能0 S8 s* B2 l% X( y
7.3.4 运行效果) B) ]7 `$ F9 p5 W# V/ J
7.4 HTTP Service源码解析* I7 [# m0 a) X, U
7.4.1 BridgeServlet与OSGi容器启动8 ? [; D4 j5 u+ b0 a
7.4.2 BridgeServlet与HTTP请求委派
: |' X3 z' {7 E; r- A 7.4.3 DelegateServlet实现原理
0 o) d1 P5 V) |/ a4 y, d8 V 7.5 本章小结
0 p" y2 X: A. `- E2 J4 g! z第8章 用户管理服务
2 e3 |2 m4 ?9 e; D- E& ?6 o 8.1 User Admin服务规范简介: ^# Q# H9 T h2 s4 T6 h
8.1.1 服务目标与基础概念( t0 V/ P9 w$ W+ B- f/ n; K8 ^
8.1.2 验证用户身份
' m0 L' r" S0 E2 N1 ^( s4 A$ c, A 8.1.3 验证用户权限
' k; l& P. r, W, v k 8.1.4 User Admin事件! n- t& T2 B, ^& F* l# W: o
8.2 实践项目—Neonat论坛用户管理模块9 f$ B4 _7 u" b) n" Z+ q3 k0 P- H2 j
8.2.1 需求与依赖项分析
! R: @8 r% }8 J- P& I& ^ 8.2.2 用户与用户组的实现
$ N2 B# h& y/ D0 N6 z* t 8.2.3 页面权限' C, N+ P( B- ^, f; ?' j
8.2.4 用户登录与身份验证
& s* x! D, O+ I' f4 f 8.3 User Admin源码解析 o" W4 G5 i" Z1 ]4 \; f
8.3.1 用户管理实现
& B0 Z6 { D) _- Z$ b6 J. r$ v/ [' ^+ t 8.3.2 外部服务使用实践
* D: L4 ]' J- M4 q+ w 8.4 本章小结
& ]$ |# r4 H" o' W$ p; b第9章 Preferences服务
% V0 H8 {7 U& ]6 w$ R 9.1 Preferences服务规范简介
% F1 T! R: M- N! ]$ T7 I 9.1.1 服务目标
7 w5 |; B: D& H" X& j 9.1.2 数据结构5 R* _+ f) q3 {' n, L% W
9.1.3 属性& f/ b7 I9 N$ a6 R
9.1.4 并发处理
6 Y, [7 v2 g# d. t k& A* U 9.1.5 清理遗留数据
9 Q4 E8 k- {" ?, J" b 9.2 实践项目—Neonat论坛持久化模块
$ T6 i0 s' k! A: V1 K1 ? l: i 9.2.1 编码实现; k' c1 p7 `6 Q( l' m
9.2.2 模块热切换7 j4 ]0 G# N; I( s. \- G
9.3 Preferences源码解析/ ^+ v1 e# T4 b# R/ K
9.3.1 数据结构实现3 m# {2 X1 U2 l* s9 v7 i
9.3.2 属性存取
/ g9 Z. H$ o. Y {) U- Q7 L 9.3.3 后端存储系统: T, @* X- o2 u" ]" G+ G# y
9.4 本章小结" L: H9 m* w N0 ^2 a+ f
第10章 声明式服务! U2 s/ n0 m1 y# @4 u. h
10.1 声明式服务规范简介
5 d, D2 R# j9 } 10.1.1 服务目标# v3 f6 S: b4 x, y) \ u
10.1.2 定义Component
1 `% ^5 @4 U' [8 j3 t 10.1.3 Component类型& f! D/ e3 G' m& R3 _
10.1.4 Component生命周期
$ V) w) [1 L3 M6 A0 ~4 H 10.1.5 Component属性- c9 J* v) X8 \* l! I6 a* t, K0 z
10.1.6 绑定与发布服务0 H6 j9 [5 \5 o/ n; ], h; E( X( w2 {9 S
10.1.7 激活与钝化方法
7 ?: S7 k# B4 A# i 10.1.8 Component配置总结/ _+ \9 B2 {6 D& j6 Z
10.2 实践项目—使用声明式服务改造Neonat论坛
r' ~* B/ h l2 N: j( B 10.2.1 可视化编辑工具$ c% I' i3 t6 z# ~& v
10.2.2 DS容器管理
' A- S2 m+ H/ c& M2 t7 F 10.3 DS容器源码解析( \4 y9 E# V4 g# U
10.3.1 容器启动
$ N; [) i& D7 c$ R r9 n' e 10.3.2 加载Bundle中的Component
1 `* k: ]: [7 Y3 x. E6 u4 }2 k 10.3.3 动态依赖解析
- ]9 N0 X( z' M, F 10.4 本章小结( n2 G7 Y4 q T2 c/ [. X7 C
第11章 Subsystems服务
* Q3 A" J5 }4 v z! o' }* k* H# m 11.1 服务目标- C6 d; C2 \, b8 M0 C" t
11.2 Subsystem格式
9 D: q. z1 M6 K" x/ i0 ^; y 11.3 Subsystem元数据
! z' @7 p% n' x4 ~! u) q3 r) O) @* e# f 11.3.1 SUBSYSTEM.MF标识
( @9 [4 q; K& D( U6 N 11.3.2 DEPLOYMENT.MF标识
4 \8 Y. G1 k$ b$ D9 v- m( G+ y7 x 11.4 Subsystem类型与共享策略6 b/ Q# n6 J; V" }
11.5 组织管理Subsystem( B9 l, L3 \' D9 T, ]
11.6 Subsystem部署与依赖策略
8 C/ B6 @( H; B( o, Y% g3 n3 G: N 11.7 Subsystem生命周期
4 I" _% Y6 ^7 F& e 11.7.1 安装$ X5 r3 H" y; S
11.7.2 解析$ ]; m) i' d# [6 A7 }! M2 V
11.7.3 启动9 C. E- l6 o0 ]1 [6 |' M
11.7.4 停止
. G0 x6 S$ l* g9 G 11.7.5 卸载8 f9 s* A* v4 V9 w
11.8 本章小结$ b) v' X; W ~. O+ d
第四部分 最佳实践
( ?7 y' [2 o5 B2 M% Q第12章 OSGi最佳实践 r: ^* e7 e; X* F2 K }2 q: b: s
12.1 Bundle相关名称命名: c3 X- q* r8 E2 {
12.2 Bundle划分原则
: I* s( _, b2 x$ z* ` 12.2.1 恰如其分地分配Bundle粒度
k! X. h4 b+ b% {, {' U 12.2.2 分离OSGi代码
9 @8 y. {4 J) d# j( q6 J 12.2.3 分离接口和实现& g/ s2 V5 y4 q5 q' `2 [
12.3 依赖关系实践
, B: @3 c" ~$ V K1 k' c( }& { 12.3.1 依赖分析工具% d, M1 [" M" @
12.3.2 避免Require-Bundle
- p3 S' J4 \$ _+ B3 A 12.3.3 最小化依赖- n h9 j; K( i$ V
12.3.4 避免循环依赖, M3 o* h9 y$ L5 W, f) G
12.3.5 Equinox x-*依赖- i2 Z$ [: W2 o4 x7 z) ~
12.4 Equinox专有类加载机制7 }2 |! o7 U$ l" M5 W5 B, T
12.4.1 Buddy Loading类加载机制
- X" I7 J1 V4 H$ ]+ P) ` 12.4.2 ClassLoaderDelegateHook类加载机制
$ a- ?2 Y) {6 h# F 12.5 Bundle生命周期实践
7 v$ Q" h& B* O 12.5.1 启动 S& n: e3 ~; \6 L: T
12.5.2 停止! O# A8 q! j1 i' ?) z+ L
12.6 服务工厂的特殊性
* }. j- Q; c& O 12.7 处理非OSGi的JAR包9 B# j. d( v3 U6 m3 C
12.8 启动顺序实践: J$ L3 Y2 N2 }# Z4 h
12.8.1 避免启动顺序依赖/ w# K" E! m- D3 {$ B4 J, q
12.8.2 Start Level的使用0 J3 r( L9 J3 J- D- x& {
12.9 Fragment Bundle实践0 |7 c2 _* I8 b) O( q# ~8 p6 `5 `# i4 l
12.10 保持OSGi动态性, a/ w `6 c( g4 v0 w' o
12.11 API Tools实践" {4 l0 \8 f O& K
12.11.1 API Baselines" G0 l7 }. e9 y4 A# L% |, t7 t- S
12.11.2 API Tools 注解5 f7 L# v2 t1 X. ^. S2 ~
12.11.3 API Version版本管理" x. _0 Q1 T& X' p
12.11.4 二进制文件不兼容- {* p) F: P5 b$ r# h; J
12.12 本章小结
c9 T2 n+ Y+ D- W' y第13章 Spring Dynamic Modules实践 e* `8 Q& m6 H
13.1 Spring DM入门
% z% }* F- L& |( o1 | 13.1.1 Spring DM项目简介. d5 I3 p" a6 P( |. Z% G: Y# }
13.1.2 安装Spring DM6 Q1 `: g! q+ B4 i1 k
13.1.3 简单的Spring DM示例
7 [9 d( T1 D6 e- z) ^: ~7 i$ {7 t 13.1.4 Bundle和Spring上下文
1 T9 [' E( U$ ? u; A2 }, g 13.1.5 命名空间* u: @6 G. v5 Q0 d( e( f% N
13.2 Spring DM进阶1 z: J; s7 W* X2 H. N$ y+ P! g; i
13.2.1 Spring DM扩展配置
- Y9 d0 g4 g4 A4 L 13.2.2 Web Extender
( P1 A8 `3 g* Q9 O9 v e- H' X 13.2.3 Spring DM服务约束1 ], I& x2 N7 _) G$ \
13.2.4 在Spring上下文中使用BundleContext
L- s2 _; c; C' \ 13.3 Spring DM企业应用* Z9 V% q5 S9 l& @
13.3.1 规划OSGi组件
+ t: ~$ a, ~/ o5 E 13.3.2 在Spring DM中使用JPA
; u; u2 \1 q1 D' C7 s1 n6 p4 ^ 13.3.3 事务管理
( @& `" [% L, X0 ~- e$ C% \ 13.3.4 OSGi企业规范中的JPA3 ] J. f" r1 N8 g2 R. m
13.4 Spring DM和Blueprint
# s: n- b# ^: G- x 13.5 本章小结 w8 A+ k. y0 P' j0 Y
第14章 构建可测试的OSGi系统* m; U& q; h1 N2 D1 Q" F, j
14.1 单元测试的必要性- r( H X* r0 w7 S9 P( A, J
14.2 单元测试的重要性! x0 e8 W1 [( t2 S- n0 \! L
14.3 可测试代码的特征
% K' A3 t& [ |1 _' X3 S" Y 14.4 OSGi单元测试
' @. ?: P1 F+ {0 T4 H 14.4.1 如何组织测试代码1 u9 ]9 {8 A3 V j& n7 E
14.4.2 如何进行OSGi单元测试% S n, }; }: ]# `( }# s+ k: Q
14.5 OSGi集成测试
. T1 F, @$ w$ a7 m2 g 14.5.1 Eclipse JUnit Plug-in Test" ~- Y6 x3 o8 y. I
14.5.2 Spring DM Test
% I( B* F# q Y4 ]& K4 h* c 14.5.3 Pax Exam
7 E% Y6 l) H* O; B" P 14.6 本章小结6 _% ]9 [& N( r, z
附录A Java类加载器简介 P+ B" `7 u! U; c( r- U
附录B Equinox控制台命令
5 c$ E2 F! g: O/ E附录C OSGi子规范目录
/ \! |' D7 P7 g& E J+ M附录D OSGi相关项目2 B: z+ ?5 t* J3 N
附录E Equinox启动配置参数
7 c6 A- z9 h0 t. |5 W. G2 L: S0 A3 D$ E8 H
百度网盘下载地址链接(百度云)下载地址:java自学网(javazx.com)深入理解OSGi:Equinox原理、应用与最佳实践 PDF 高清 电子书.zip【密码回帖可见】) M* x7 E, e9 L( L
7 O/ e) \/ `) K
0 G& B$ b8 S! n+ Y' ?* k9 L3 d) v2 `; U
" V$ R3 k G4 ?, n4 z' r4 Y1 z4 L2 \# i( r" p
4 c5 F1 _8 M) w! E' A9 C4 z; [
) N. N1 l4 ?4 ^: `" x" t$ c' h6 `* n( M9 |: F# S
|
|