|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《 Java 9模块化开发:核心原则与实践》2 z# g. i. z* y" J1 P, a0 i
java电子书推荐理由: Java9向Java平台引入了模块系统,这是一个非常重要的飞跃,标志着模块化Java软件开发的新纪元。当需要创建灵活且易于维护的代码时,模块化是一个关键的架构设计原则。本书给出了Java模块系统的明确概述,并演示了如何通过创建模块化应用程序来帮助管理以及降低复杂性。作者引导我们了解了模块系统中的相关概念以及工具,介绍了将现有代码迁移到模块中的模式以及以模块方式构建新应用程序的方法。% j) q: |9 r2 V! ~/ M: ~
: C7 Z \3 z4 R( j* [0 E# a8 L+ n
作者:(荷)桑德·马克: g, j0 H. h0 _! z% B2 }
出版社:机械工业出版社. b9 {# Y& ]$ n; l& |
出版时间:2018年06月
( U1 C, j- Z, U( t! r6 H书籍价格:69.0元
" Y9 F8 t6 W, y6 H/ \" C) p d" z
8 D% M5 y7 ~1 S$ C9 i
3 p/ a/ l4 j) O/ V# O5 Qjava电子书目录:! ~- y9 U+ P! F' L
第一部分 Java模块系统介绍$ y2 i% \# I) J" }. {( g% o
第1章 模块化概述8
$ n: ^" b$ k$ c# z6 V n6 d1.1 什么是模块化9+ W8 z5 _. y" J, _1 H% Z+ v6 g
1.2 在Java 9之前10
$ x% I- n8 Z4 Z6 [8 q1.2.1 将JAR作为模块?11
! C" }5 q) y M- ^& O1.2.2 类路径地狱13. l; U) A; _( t- M
1.3 Java 9模块14
\" x* I% |" D6 }' {第2章 模块和模块化JDK18
! {5 e( I" i$ ~! l6 i9 f2.1 模块化JDK19
+ @$ J9 ?$ v/ q6 N5 Z% a ~5 Y2.2 模块描述符22
0 C1 u+ o2 g1 J' [3 }, @! f- q) X! X( l2.3 可读性23
6 m0 S7 ` i: f' a2 z2.4 可访问性24
9 W# V9 y& O8 C1 C2.5 隐式可读性25! o2 P; k- q9 j
2.6 限制导出29
. q- O. O( A: l0 \& D' r2.7 模块解析和模块路径29
8 I" ]' i# |) r; q; J( @, P) I2.8 在不使用模块的情况下使用模块化JDK313 j* I' i, x, T- Y5 I
第3章 使用模块33
/ K: t3 K% u, u" V5 k& u, M' u3.1 第一个模块33" D3 n6 z$ S/ L$ c. L2 \- l& y
3.1.1 剖析模块33
3 B9 I; B: w6 G9 d: A/ [3.1.2 命名模块35
- @! Y; u4 p3 B; y( h3.1.3 编译36
D: b. E+ l* _7 r: B3.1.4 打包37
# G& q$ C: U' m' t$ O/ v( H3.1.5 运行模块377 W! s2 l2 l- V: {
3.1.6 模块路径39
& `) k/ W; ~* f/ Q3.1.7 链接模块40, z1 a' D* ~ N
3.2 任何模块都不是一座孤岛41# d8 h) ~* E5 V
3.2.1 EasyText示例介绍41
* U5 W8 Z8 n. b/ x- Z5 d8 X# B3.2.2 两个模块43
0 R! V. N8 f' w7 Q' m3.3 使用平台模块46% x4 u2 b4 y/ ^, r" X( Z
3.3.1 找到正确的平台模块46& r- ~* y4 S5 _2 M O
3.3.2 创建GUI模块47
7 W, L' R' }: p3.4 封装的限制51
# c, t) l1 |) {( [. m第4章 服务54
4 o5 a" T# G+ E0 Y2 r2 ~$ f4.1 工厂模式54
5 x! U+ g8 r3 Z5 A, A k) A( E, W4.2 用于实现隐藏的服务575 V! N( u, ^2 Y+ r5 r1 N) y
4.2.1 提供服务57
; f/ O! i& F: z" @; V4.2.2 消费服务59
, @3 g' F: `- m$ w! a/ q4.2.3 服务生命周期61
' ^5 V9 h9 l6 U7 a3 V3 k4.2.4 服务提供者方法628 y: y: d2 M/ s J9 T
4.3 工厂模式回顾64
$ l: O* w% \5 {6 }9 x' [. t4.4 默认服务实现65
! @9 J3 R; S/ W, _+ {" p4 W4.5 服务实现的选择669 @: e* n5 _0 m' ^! x& n1 f/ { Y
4.6 具有服务绑定的模块解析68
7 y q5 T9 i% f; e7 n2 R4 u3 L; N3 ~4.7 服务和链接704 `: e4 H) @$ M3 `8 k7 w, {
第5章 模块化模式738 Z; B0 n( t0 f* c# O# }& d
5.1 确定模块边界74; J2 o$ G, x7 Y6 I
5.2 精益化模块76
! E/ [+ `9 g J5.3 API模块76
" L2 n. ?- `9 X5.3.1 API模块中应该包含什么77
3 g7 V: }3 C" P. x5.3.2 隐式可读性787 q% ?5 ?- g) j( @0 c; [
5.3.3 带有默认实现的API模块81
: D F) w3 Z9 G5.4 聚合器模块82
# O6 _, \- N3 E- ~1 L( W5.4.1 在模块上构建一个外观83% S! Z h1 P( c7 N" \8 u! E, H
5.4.2 安全拆分模块84
% \# F/ c! [6 [' |. b1 ~- z3 y# S5.5 避免循环依赖86' f) C9 D" W" {2 y6 g' n9 c" ~3 k
5.5.1 拆分包86
% A& V2 l( x7 c5.5.2 打破循环87
* Q5 ]1 d( y2 P0 w/ V, ]* q8 r5.6 可选的依赖关系90
9 e6 P2 `7 n% S# k5 _+ u0 s5.6.1 编译时依赖关系911 G; P. S% h: ]
5.6.2 使用服务实现可选依赖关系95! \) X" _7 e4 u2 ]
5.7 版本化模块96 u9 @! D; K7 ~: @
5.8 资源封装99
# A' {1 i( x2 `! y9 T, T9 ]5.8.1 从模块加载资源1006 j c/ e1 r$ `6 T
5.8.2 跨模块加载资源1015 |: e- y- G2 D% P6 W6 C( [
5.8.3 使用ResourceBundle类102
3 E& P: c& {6 c% t9 K第6章 高级模块化模式104
9 O! {( f. z, e6.1 重温强封装性104
; t& c& W* I) l9 ^& P1 t2 c" Z2 v6.1.1 深度反射105
" U+ Q2 M1 O" _. \, L6.1.2 开放式模块和包1061 w* [) I# U: d# D* n0 u! x
6.1.3 依赖注入1098 M7 \! A& @! h. y/ ^) h+ f
6.2 对模块的反射111
1 A2 y. r( L& [/ N8 S$ e0 f/ W! r6.2.1 内省1128 F+ `% [0 r0 j
6.2.2 修改模块113) t: \/ t- T- w( x
6.2.3 注释114+ F, h0 ]# {5 [# U% i4 H ?
6.3 容器应用程序模式115
" E5 C0 M7 I6 p$ a9 J4 a- K* s. v6.3.1 层和配置116$ ]: ^- G* f2 `* \' }! i" x
6.3.2 层中的类加载119$ [% P% v4 _, C6 k' m! n
6.3.3 插件体系结构122
% V( f8 {! r' x/ |0 d5 v' g3 g/ q- J6.3.4 容器体系结构127
' {, ?6 a$ Y ]- G( a7 C; x6.3.5 解析容器中的平台模块1328 X f' Z6 A. F; b. c/ D0 R- B
第二部分 迁移" A+ Y- Q! t9 l/ F+ g7 S/ h
第7章 没有模块的迁移134
2 k, p7 [3 _* ^7.1 类路径已经“死”了?135; d" ]8 R( R. V/ [& \& I. e9 H
7.2 库、强封装和JDK 9类路径135
7 s- w. P; P# q& m7 P. T: b! k7.3 编译和封装的API1381 O0 E# a2 M; K' r
7.4 删除的类型141) Y9 o! v5 N# e2 B6 _4 u' i# \
7.5 使用JAXB和其他Java EE API142+ q+ b1 q3 \) ?! s- Y2 i5 {) v( b
7.6 jdk.unsupported模块145
$ C& b; p# k# V: t7.7 其他更改1468 C6 |; f4 A4 w9 Z* W3 u d9 b
第8章 迁移到模块148
G6 J8 _) F. v0 @8 }8.1 迁移策略1485 w# @% e1 ~) A% p3 X
8.2 一个简单示例149
3 h# k5 Z1 J2 M; D% r/ D4 C8.3 混合类路径和模块路径150
; {0 ^! u' T$ R6 t8.4 自动模块152
* V- N( E2 k& C! b8.5 开放式包155
4 Z F: C$ |' Q* [8.6 开放式模块157
4 V) j# M3 e" J8 z: u$ ]" j' f+ E" J8.7 破坏封装的VM参数158
0 ]/ o. A4 A& D$ [8.8 自动模块和类路径158
# `1 g6 ]* B/ e7 M7 B9 g8.9 使用jdeps161
( X/ W3 }) U- C# y* }8.10 动态加载代码164) J7 T$ o; G. i* L a5 G/ l
8.11 拆分包1664 e% [' F8 {' C' B- {8 @$ e
第9章 迁移案例研究:Spring和Hibernate167
# Z1 k! x4 [" d9.1 熟悉应用程序167
! O) Z6 c* o# _6 _* G+ m2 G9.2 使用Java 9在类路径上运行172 B' O) n) P+ C0 p& v3 b
9.3 设置模块173
7 r% P- z7 T6 J& X3 T1 J9.4 使用自动模块174
' @9 o* P3 x; X, ?* j" `( w3 p9.5 Java平台依赖项和自动模块176
9 [- _5 _& m& r, t; _' x! E9.6 开放用于反射的包176
2 _' T& a: l- r$ Z2 a5 ^9.7 解决非法访问问题177
, R7 H; B( l; z8 B6 V( _/ g9.8 重构到多个模块178
& t- Q$ j8 ?/ r' B3 J. e5 n. m8 C3 @* F第10章 库迁移180
& N+ e7 b9 }/ P0 u8 I4 ^7 \ k10.1 模块化之前181" g' `2 \+ X: |) D7 o& ]5 Z
10.2 选择库模块名称181) E/ J) P C( v, `$ f% d3 V
10.3 创建模块描述符1847 }, U' w4 r/ G: ~, y
10.4 使用模块描述符更新库186
( Y6 u: o/ I4 u9 V+ u; T& z8 W3 {10.5 针对较旧的Java版本187
9 [: T7 a% Z8 `7 Y6 T' _# k. L, }10.6 库模块依赖关系188
7 X5 k, e, h: {% C% q9 y$ G) `2 |10.6.1 内部依赖关系188
6 l6 a \( l1 m/ J3 p, _# K! w# }10.6.2 外部依赖关系191
9 p1 B( [& {; _2 y* F( q10.7 针对多个Java版本192
+ H% h8 _- W# `( k6 U$ T10.7.1 多版本JAR192
8 B( t2 v. Q* T( [6 }1 l10.7.2 模块化多版本JAR1952 B/ u, U) R, C
第三部分 模块化开发工具2 O# s. A" l( k0 n! p) Q+ }
第11章 构建工具和IDE198
' S2 C4 t, h$ ^2 l11.1 Apache Maven198
! R/ K4 V; e" s, m7 H* ]11.1.1 多模块项目200; r y! ]7 d* {! M4 @
11.1.2 使用Apache Maven创建EasyText示例2006 v3 I# q0 G. ]2 U; j7 P' x) ?
11.1.3 使用Apache Maven运行模块化的应用程序204
3 _6 {" ], g( P) p7 e11.2 Gradle205
/ N5 p5 C# |( z11.3 IDE205( ]" j- D" f5 ]! H: \& d" P
第12章 测试模块207+ } u3 e" A& a+ W. L
12.1 黑盒测试208
0 j) B7 ]" C5 ^0 J; ~( K( s12.2 使用JUnit进行黑盒测试210& Y8 b% Z& D% S: ]$ q4 s! t; T
12.3 白盒测试212
5 h! I7 K# P1 g6 a3 _: j12.4 测试工具216
J0 p1 `9 ~2 D1 k- D$ B第13章 使用自定义运行时映像进行缩减217
. K" |2 j2 J8 ?7 l! k! `2 d13.1 静态链接和动态链接218/ O- x* R! X+ A4 a2 d: ?$ ^$ U
13.2 使用jlink219
, v4 M5 T. R! C6 C: l' W13.3 查找正确的服务提供者模块223( E& C4 q" h8 O2 g5 g( E
13.4 链接期间的模块解析223) ] x0 a$ ~2 w; ]5 G
13.5 基于类路径应用程序的jlink2245 R" c* d$ Y2 ?) S" p$ J* s
13.6 压缩大小2253 p0 ~8 K/ Z1 f6 j$ {$ M# i
13.7 提升性能227
: Q$ A. O2 a1 F& {1 W0 C1 X13.8 跨目标运行时映像228+ b3 o) S/ N" v
第14章 模块化的未来2295 x& b2 R1 N" o4 F" H4 Y4 h
14.1 OSGi230; R. K, k4 s8 p& F2 C
14.2 Java EE232
1 Y/ E, i! @* ~, G0 h: J" a% e# G w14.3 微服务2325 [! ~; D( a9 u, e% ?5 A; X$ s, f( R6 m
14.4 下一步233 9 H+ |. x9 z! A- {% x
Java资料百度网盘下载地址链接(百度云):Java9模块化开发核心原则与实践@www.javazx.com.pdf【密码回帖可见】
5 E* V' v2 |+ B$ J
$ Q3 L( O% ^& G: M& W- N3 u) R: Y @
, d P9 G3 k0 r. L0 j$ J* ~5 x! l; G! I+ w! m: }# R
' J3 z( g( b) `1 P. P
8 M: _* ]$ B- p9 ?% o1 k& G* |5 }3 q3 } |
|