|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《 Java 9模块化开发:核心原则与实践》) A3 K3 i" u8 y+ X9 h
java电子书推荐理由: Java9向Java平台引入了模块系统,这是一个非常重要的飞跃,标志着模块化Java软件开发的新纪元。当需要创建灵活且易于维护的代码时,模块化是一个关键的架构设计原则。本书给出了Java模块系统的明确概述,并演示了如何通过创建模块化应用程序来帮助管理以及降低复杂性。作者引导我们了解了模块系统中的相关概念以及工具,介绍了将现有代码迁移到模块中的模式以及以模块方式构建新应用程序的方法。7 E+ b2 ~* Y/ R0 [9 U: E3 a& w: @
* `; o* p% A+ s" ^2 G7 g作者:(荷)桑德·马克( H' h! x; W# m" V: y
出版社:机械工业出版社; i8 t1 q& U6 g6 S; n8 d( h% d, ~
出版时间:2018年06月 ! t8 W2 i8 R, \2 C
书籍价格:69.0元; g$ e2 G& ~) @& y- Y3 Z/ K. |
6 B' n9 c0 B% ]& g, Y
/ Z- g+ L, ]. }" h/ c& u
: Q0 h% ~/ w% xjava电子书目录:
/ {- p* s9 t. J. P/ U第一部分 Java模块系统介绍
n1 L+ ^" [7 n& h0 |* T9 f* _8 K+ Q第1章 模块化概述8; z: f* N! ^( ~0 [
1.1 什么是模块化9
+ H3 p2 a( O ~9 k% |3 W0 v1.2 在Java 9之前10
- [4 h2 q# G: x6 e/ m9 P6 i1.2.1 将JAR作为模块?11
; ? m: [; F4 J" L& J& X1.2.2 类路径地狱13
' K3 o `: o3 g+ F L1.3 Java 9模块145 J- v7 r) @5 y3 o( C& Q
第2章 模块和模块化JDK18
* H( S2 ? w+ d1 P" `$ M% w& F2.1 模块化JDK19
; M: i! P) l9 i. k' m c& M2.2 模块描述符223 o% p0 ^( Z! c' H1 X _/ _
2.3 可读性23& Z/ z+ A, w' x, m* \3 [; c+ B% d$ Y
2.4 可访问性24- B5 B5 t8 S4 K$ G6 e# v" o
2.5 隐式可读性25 Z# p l0 P" m5 i% z d
2.6 限制导出29
, F- {, R6 q: z# k" L2.7 模块解析和模块路径29
/ F& v1 R# L, V" x! f2.8 在不使用模块的情况下使用模块化JDK31# v& M- Q. r5 L/ Z
第3章 使用模块33
F* O& U* C, T: `3.1 第一个模块338 d/ f. h. ]0 U6 y
3.1.1 剖析模块330 m' v8 y: ^. [" l5 [8 I8 u( F- D
3.1.2 命名模块357 } _! ?2 a ]: p- M% U m
3.1.3 编译36- ^3 h" F1 Z1 ~& c* c; c% D3 W9 u
3.1.4 打包37
0 g& s5 m0 I! n7 j( P9 m: t) P3.1.5 运行模块37
& p1 W$ n$ @, r0 L0 a3.1.6 模块路径396 I% h* p& _7 m$ O+ R2 [9 h
3.1.7 链接模块40
; m# M7 [ L$ \4 y& P3.2 任何模块都不是一座孤岛41
8 g }4 g9 M+ s/ T3 D, B3.2.1 EasyText示例介绍41# J" p( E( @9 Q3 _& N; L# q' I% A
3.2.2 两个模块43- O; K; p0 j* J
3.3 使用平台模块46
4 x0 Q7 p" a. F3.3.1 找到正确的平台模块460 }* {9 P# Y! h, h7 \) C
3.3.2 创建GUI模块47) L' v; |0 w/ v/ L
3.4 封装的限制51
* k% _5 y9 P R2 Q# V! T第4章 服务545 G9 W2 I% Z& U* V1 a9 B( u
4.1 工厂模式54
% I0 p% |9 j+ P: r$ Q+ x% H4.2 用于实现隐藏的服务57
1 K( `0 K- M- @; r4.2.1 提供服务575 i3 n7 E$ [6 H o( S N
4.2.2 消费服务59
6 H" n: c4 ^/ F2 F: O& b. f% S4.2.3 服务生命周期61
7 v1 ~9 U3 r' Y/ d) p5 T% g* k4.2.4 服务提供者方法62
" c. B+ A/ T$ ?8 [" a- b: K4.3 工厂模式回顾646 X* D/ D9 @$ y8 e6 P* _
4.4 默认服务实现658 D1 G2 y1 D+ U* o- E
4.5 服务实现的选择66
$ J4 M3 U7 {( }3 Z2 m2 |4.6 具有服务绑定的模块解析68
" F" h. o9 s4 x4 U# y: }4.7 服务和链接70- ?- m5 k" y$ B" Q) }6 q' j
第5章 模块化模式731 m/ R$ G+ Y( P/ U+ F" ^
5.1 确定模块边界74& f- q; M S; {! y+ w. O" e
5.2 精益化模块76
; @) O2 O& ?; T- S9 B; S5.3 API模块768 ~$ x8 J0 ]7 X& V; b0 Q3 \
5.3.1 API模块中应该包含什么77$ {/ X4 v5 |* H0 b* Q& O
5.3.2 隐式可读性78* s" Y1 r8 w* X& Q
5.3.3 带有默认实现的API模块81
+ V0 n9 l* w: x" J" d5.4 聚合器模块82
% N/ }1 W) S- Y; k5.4.1 在模块上构建一个外观83* v6 }! u' K: w+ U% }' m; H
5.4.2 安全拆分模块84
$ K% r" [# F4 N% ~7 w2 h, {5.5 避免循环依赖86
2 \; C2 O. {! O! m) c& b5.5.1 拆分包863 ]) p8 A) `, ~
5.5.2 打破循环878 |( R, R$ ~& w3 r9 r8 }9 s
5.6 可选的依赖关系90( D# {" H! D; ~5 p# \; Y
5.6.1 编译时依赖关系91! N, V7 i/ ^8 n7 F I; V
5.6.2 使用服务实现可选依赖关系95- y8 @( T! z6 W- V) ~
5.7 版本化模块96
7 F9 U& H0 M- U9 K, o' g# u5.8 资源封装998 g9 @7 N. I) c2 ~2 V# s: K
5.8.1 从模块加载资源100/ a J. e- a. ?4 y# E0 g4 g' a. E
5.8.2 跨模块加载资源101# y% ^2 j6 h; j, ~6 g3 @+ r, b$ o
5.8.3 使用ResourceBundle类102
) O( W8 W8 p4 a$ }2 n2 ^& x1 a$ q' E第6章 高级模块化模式1043 h6 T8 J8 P' F6 J, }
6.1 重温强封装性104
2 Q- A( B6 g- D* U6.1.1 深度反射105
6 L7 N5 Q& f: Y6.1.2 开放式模块和包106
" s6 b3 g! Q9 U4 h8 I6.1.3 依赖注入109
$ H- q; X& \' s6.2 对模块的反射1113 L8 k) |7 W6 n
6.2.1 内省112
/ @7 c% o* L# I* h) E+ Q6 S& Z6.2.2 修改模块113
) b1 D& I1 C$ w) b0 t: J3 k6.2.3 注释114
* s% m3 c/ s% A1 G/ ~& U6.3 容器应用程序模式115
9 Y3 }0 [" O7 f5 v! V1 B6 L1 g6.3.1 层和配置116- m2 ^; J/ }; P% p- L% C
6.3.2 层中的类加载1196 Z. J9 f" S4 x0 V% S" X# Q
6.3.3 插件体系结构122
- X/ E& w( @; ?5 J4 j& {6.3.4 容器体系结构127& ]. u$ C1 [7 W+ n
6.3.5 解析容器中的平台模块132
0 P! H; q. @ y! l. \8 f. Z% W+ r第二部分 迁移; R( e |% T2 V- X8 A
第7章 没有模块的迁移1348 g5 g7 r) t$ p& T
7.1 类路径已经“死”了?1354 v5 S% w) ] D" s8 X1 B
7.2 库、强封装和JDK 9类路径135- \! W( K* h3 N# Q3 t
7.3 编译和封装的API138
& s5 v8 d( S* Z; }* o# T; e7.4 删除的类型141
% \) H$ A0 S3 c* Q0 S5 c, p7.5 使用JAXB和其他Java EE API142$ t, v! ?( z+ e8 o5 g
7.6 jdk.unsupported模块145$ I% D+ {- P$ }
7.7 其他更改146! ]7 R9 P9 i# ]1 d3 m/ }1 W0 f! v5 ~
第8章 迁移到模块1488 m0 g" {% F7 O+ I
8.1 迁移策略1489 B" }) o4 a7 B9 Q3 E
8.2 一个简单示例149/ y; D' M$ u6 K! d/ I+ a: q1 q
8.3 混合类路径和模块路径150
; F& C5 ]# q% b4 ]& ]& ?0 Z5 d8.4 自动模块1527 j' |; w0 E9 ~3 N! D% ~% t
8.5 开放式包155
* V9 P6 U$ w% U# s) O- v7 {! ^! u8.6 开放式模块157
: V9 o0 h2 R* i: W/ q* y4 z7 _# l4 A8.7 破坏封装的VM参数158
4 ^! q j f; i% n3 B# a# M8.8 自动模块和类路径158; }) J1 | w9 `7 _, W) F. J! l
8.9 使用jdeps161
- F/ X5 ^+ Z2 X1 @# U2 ]6 Z# m. ~% o8.10 动态加载代码164! n2 {' T c! i; A7 j
8.11 拆分包166
7 W$ x" V$ x& u第9章 迁移案例研究:Spring和Hibernate167
, [' T* R; V3 ]2 O0 Q9.1 熟悉应用程序167# V7 L8 V* Z- M* S8 v. s" T3 c# M( k& ~
9.2 使用Java 9在类路径上运行172
! U, d; |- g8 M- a9.3 设置模块173
; O( d$ O% m, s/ k! U. _9.4 使用自动模块174* f% W/ c' Z- x' q9 z- N$ l9 Y
9.5 Java平台依赖项和自动模块1769 B: V2 W* k0 f& r) o" Z
9.6 开放用于反射的包176) W6 N N; c0 N9 W: [* [" a( N- x
9.7 解决非法访问问题177; o+ w/ B* R6 f# [* E
9.8 重构到多个模块1784 H: R4 _8 M3 }2 R$ a
第10章 库迁移180( {* I% E0 p/ S4 s
10.1 模块化之前181
* V4 ~9 J+ _8 h' u& s- H" }10.2 选择库模块名称181
4 h8 G" W! m2 B! I: J, G10.3 创建模块描述符184
. [- T2 S: b- N9 Z. Q3 U! E10.4 使用模块描述符更新库186+ a. J' {/ Q C8 P0 l0 b$ j& t
10.5 针对较旧的Java版本187) L3 Q( Y5 J( B
10.6 库模块依赖关系1880 k0 \! [+ U6 E$ p2 `
10.6.1 内部依赖关系188( p7 P4 R1 D) @, J2 N. J6 O/ U( F5 P
10.6.2 外部依赖关系191
& O1 G' N; V) _2 I; h10.7 针对多个Java版本192
# o8 Z% W. s1 \+ ]6 r9 n( O10.7.1 多版本JAR1928 D: J h) e3 U; c& J
10.7.2 模块化多版本JAR195) d6 v' S1 }! e8 M7 X! Y: o- C2 ^
第三部分 模块化开发工具5 Y' y1 r/ I) U* O9 J
第11章 构建工具和IDE198
- z) |& T& ?+ V/ a; C) B+ U/ O: ]11.1 Apache Maven198
* {8 M) s6 ]9 s4 n) _6 k4 `11.1.1 多模块项目2005 }/ {7 s7 q3 n; l7 z
11.1.2 使用Apache Maven创建EasyText示例200; R1 M% u' l3 Y# S/ Y0 [
11.1.3 使用Apache Maven运行模块化的应用程序204+ }, C. {, `! I7 u
11.2 Gradle2059 @4 b0 X4 \( Z) E
11.3 IDE205
1 F: ?/ [% c' y: D; h, X第12章 测试模块207
1 r1 y- A* v2 V12.1 黑盒测试208) I; Z$ h Q2 u0 _7 b
12.2 使用JUnit进行黑盒测试2109 j: V0 Y8 G& C$ }: K4 L* b
12.3 白盒测试2121 j7 K i- C" {% t4 b/ Y
12.4 测试工具2160 B$ S( T- d; D9 q8 T( Q6 T8 p2 i
第13章 使用自定义运行时映像进行缩减217
, r* E1 a2 g/ |4 j& j13.1 静态链接和动态链接218
y5 A3 s9 ]4 H8 O$ C( m13.2 使用jlink2193 i1 L/ Y* q9 w0 @+ }4 w
13.3 查找正确的服务提供者模块223
( B/ M/ v) G7 V4 p13.4 链接期间的模块解析223
7 W }( A, X! y4 K- h# b13.5 基于类路径应用程序的jlink2248 X9 M4 q/ t* ~
13.6 压缩大小225
( ]5 q' s. Q3 @/ m13.7 提升性能227
# C8 T5 K6 J \ r5 B" m0 N13.8 跨目标运行时映像2286 W2 ~+ h4 k3 F- D1 X1 r5 ^
第14章 模块化的未来229- }+ ] @$ q/ a( E' W2 h
14.1 OSGi2303 K" J5 u0 U4 @' |
14.2 Java EE232
6 y# I" R* P7 K; s14.3 微服务232
) B( H9 X. D9 j0 W9 w3 w& a14.4 下一步233 % z1 q. s7 q, e$ a
Java资料百度网盘下载地址链接(百度云):Java9模块化开发核心原则与实践@www.javazx.com.pdf【密码回帖可见】9 W- Y" `7 K/ f4 b4 M' B
. s* D# j7 ^1 j5 L$ ]8 P6 y
3 X5 D6 U: p7 n' J. F; d( T8 W0 s% [' v U$ d# a
/ u6 k G1 k+ h! p
8 H& s. d' l) s+ ^, v- f5 X5 t7 ~+ L8 Z' I
|
|