-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
executable file
·401 lines (388 loc) · 22.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="Java 9 Modularity (O'Reilly, 2017). Authored by Sander Mak and Paul Bakker.">
<title>Java 9 Modularity</title>
<!-- Favicon -->
<link rel="icon" href="img/favicon/favicon.ico">
<link rel="apple-touch-icon" href="img/favicon/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-touch-icon-114x114.png">
<!-- Load Styles -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/animate.min.css">
<link rel="stylesheet" href="css/owl.carousel.min.css">
<link rel="stylesheet" href="css/owl.theme.prime.css">
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" href="css/style.css">
<!-- Load Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,900" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400" rel="stylesheet">
<!-- Load Modernizr -->
<script src="js/modernizr-custom.js"></script>
<!--[if lt IE 9]>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Begin Preloader -->
<div id="preloader">
<div id="preloader-main">
<img src="img/preloader.svg" alt="">
</div>
</div>
<!-- End Preloader -->
<!-- Begin Header -->
<header class="header" id="header">
<div class="container">
<!-- Begin Navigation -->
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#top-nav" aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">
<img src="img/logo.png" alt="Black-tailed Godwit :)" title="Black-tailed Godwit :)">
<p>javamodularity.com</p>
</a>
</div>
<div class="collapse navbar-collapse" id="top-nav">
<ul class="nav navbar-nav navbar-right">
<li><a data-scroll href="#services">The Book</a></li>
<li><a data-scroll href="#features">Chapters</a></li>
<li><a data-scroll href="#description">Why Modules?</a></li>
<li><a data-scroll href="#author">Authors</a></li>
<li><a data-scroll href="#feedback">Feedback</a></li>
<li><a data-scroll href="#plans">Buy</a></li>
<li><a data-scroll href="#contact">Resources</a></li>
</ul>
</div>
</div>
</nav>
<!-- End Navigation -->
<!-- Begin Header Main -->
<div class="header-main">
<div class="header-main-right col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-push-6 col-md-6">
<h1>Java 9 Modularity</h1>
<p>The Java module system offers new ways of creating modular and maintainable applications. With this hands-on book, Java developers will learn not only about the joys of modularity, but also about the patterns needed to create truly modular and reliable applications. </p>
<p>Authors Sander Mak and Paul Bakker teach you the concepts behind the Java module system, along with the new tools it offers. You’ll also learn how to modularize existing code and how to steer clear of common pitfalls when migrating to Java 9.</p>
<a data-scroll href="#plans" class="btn btn-primary" role="button">Buy</a>
</div>
<div class="header-main-left col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-pull-6 col-md-6">
<img src="img/java9modularity-3d-cover.png" alt="Book" class="img-responsive">
</div>
</div>
<!-- End Header Main -->
</div>
</header>
<!-- End Header -->
<!-- Begin Services -->
<section class="services" id="services">
<div class="container">
<h2 class="page-header wow fadeInUp" data-wow-delay=".2s">The Book in Three Parts</h2>
<div class="row">
<div class="services-item col-xs-12 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-4 wow fadeInUp" data-wow-delay=".3s">
<img src="img/flat-icons-pack/icon-creative-design.svg" alt="Introduction to the Java Module System">
<h3>Introduction to the Java Module System</h3>
<p>Starting with the modular JDK, you'll see modules are all about strong encapsulation and explicit dependencies.
Then it's time to write your own modules, with services to decouple modules.</p>
<p>After the mechanics of creating modules, the first part closes with modularity patterns. They are essential to create truly modular applications.</p>
</div>
<div class="services-item col-xs-12 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-4 wow fadeInUp" data-wow-delay=".3s">
<img src="img/flat-icons-pack/icon-cross-browser-support.svg" alt="Migration">
<h3>Migration</h3>
<p>We all have existing code. Even though the module system is opt-in, there are many changes affecting classpath-based applications as well.</p>
<p>In the second part we explain how you can migrate to Java 9, and then modularize your application. It also features a case study migrating a Spring and Hibernate application to modules.</p>
</div>
<div class="services-item col-xs-12 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-4 wow fadeInUp" data-wow-delay=".3s">
<img src="img/flat-icons-pack/icon-responsive-design.svg" alt="Modular Development Tooling">
<h3>Modular Development Tooling</h3>
<p>The last part focuses on tools and processes for modular development, such as Maven. Also, testing modules brings new challenges.</p>
<p>Another exciting tool is jlink. With jlink, you can create small custom runtime images, bundling only the required application modules and JDK modules in a single low-footprint distribution.</p>
</div>
</div>
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-9">
<p><a href="https://twitter.com/javamodularity" class="twitter-follow-button" data-show-count="false">Follow @javamodularity</a> <span class="github">All code examples are available on <a href="https://github.com/java9-modularity/examples">GitHub</a> so you can easily try them yourself.</span> <a class="github-button" href="https://github.com/java9-modularity/examples" data-icon="octicon-star" aria-label="Star java9-modularity/examples on GitHub">Star</a></p>
</div>
<div class="col-md-1"></div>
</div>
</div>
</section>
<!-- End Services -->
<!-- Begin Features -->
<section class="features" id="features">
<div class="container">
<h2 class="page-header wow fadeInUp" data-wow-delay=".2s">Chapters</h2>
<div class="row">
<div class="features-main">
<div class="chapters scol-xs-12 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-4">
<i>Foreword by Alex Buckley</i>
<ol>
<li>Modularity Matters</li>
<li>Modules and the Modular JDK</li>
<li>Working with Modules</li>
<li>Services</li>
<li>Modularity Patterns</li>
<li>Advanced Modularity Patterns</li>
<li>Migration Without Modules</li>
<li>Migration to Modules</li>
<li>Migration Case Study: Spring and Hibernate</li>
<li>Library Migration</li>
<li>Build Tools and IDEs</li>
<li>Testing Modules</li>
<li>Scaling Down with Custom Runtime Images</li>
<li>A Modular Future</li>
</ol>
</div>
<!-- Begin Features Image -->
<div class="col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-4">
<div class="features-image wow fadeInUp" data-wow-dely=".5s">
<img src="img/java9modularity-flat-cover.png" alt="Book" class="img-responsive">
</div>
</div>
<!-- End Features Image -->
<div class="col-xs-12 col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-4">
<div class="features-item features-item-right">
<a class="twitter-timeline" data-height="470" data-dnt="true" data-theme="light" href="https://twitter.com/javamodularity">Tweets by javamodularity</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- End Features -->
<!-- Begin Description -->
<section class="description" id="description">
<div class="container">
<div class="row">
<div class="description-left col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-6 wow fadeInLeft" data-wow-delay=".2s">
<h2 class="page-header page-header-left">Why Modules?<h2>
<p>The art of structuring large codebases is an undervalued one. This is neither a new
problem, nor is it specific to Java. However, Java is one of the mainstream languages
in which very large applications are built all the time—often making heavy use of
many libraries from the Java ecosystem. Under these circumstances, systems can outgrow
our capacity for understanding and efficient development. A lack of structure is
dearly paid for in the long run, experience shows.</p>
<p><em>Modularity</em> is one of the techniques you can employ to manage and reduce this complexity.
Java 9 introduces a new module system that makes modularization easier and
more accessible. It builds on top of abstractions Java already has for modular development.
In a sense, it promotes existing best practices on large-scale Java development
to be part of the Java language.</p>
<p>The Java module system will have a profound impact on Java development. It represents
a fundamental shift to modularity as a first-class citizen for the whole Java platform.
Modularization is addressed from the ground up, with changes to the language,
Java Virtual Machine (JVM), and standard libraries.</p>
<p>Now is the time to read up on modules. JDK 9 itself is modularized (shown right) so you will encounter modules right from the start.
See how they can improve the structure and integrity of your applications.</p>
<p>— Introduction of <i>Java 9 Modularity</i><br>
<span class="text-muted">(Excerpt from Chapter 1)<span></p>
</div>
<div class="description-right col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-6">
<a id="modulegraph" href="img/java.se.ee.png" target="_blank"><img src="img/java.se.ee.small.png" title="Subset of JDK 9 module graph (click to enlarge)" alt="Subset of JDK 9 module graph" class="img-responsive wow fadeInRight" data-wow-delay=".2s"></a>
</div>
</div>
</div>
</section>
<!-- End Description -->
<!-- Begin Author -->
<section class="author" id="author">
<div class="container">
<div class="row">
<div class="author-left col-xs-offset-1 col-xs-10 col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-6">
<br><br><br><br><br><br><br><!-- Yes I feel dirty now :) -->
<img src="img/sander_mak_rus_sq_enhanced.jpg" alt="Sander Mak" class="img-responsive img-circle wow fadeInLeft" data-wow-delay=".2s">
</div>
<div class="author-righte col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-6 wow fadeInRight" data-wow-delay=".2s">
<h2 class="page-header page-header-left">About the Authors</h2>
<h3>Sander Mak</h3>
<p>Sander is a Fellow at <a target="_blank" href="https://www.luminis.eu">Luminis</a> in The Netherlands. At Luminis, he crafts modular and scalable software, most often on the JVM but with a touch of TypeScript where needed. He is author of the O'Reilly book 'Java 9 Modularity' and an avid conference speaker.</p>
<p>Sander loves sharing knowledge, through his blog at <a target="_blank" href="http://branchandbound.net">http://branchandbound.net</a>, and also as <a target="_blank" href="http://bit.ly/ps-sander">Pluralsight</a> instructor.</p>
<a href="https://twitter.com/sander_mak" class="twitter-follow-button" data-size="large" data-show-count="false">Follow @sander_mak</a>
</div>
</div>
<div class="row">
<div class="author-left col-xs-offset-1 col-xs-10 col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-6">
<br>
<img src="img/paulbakker.jpg" alt="Author" class="img-responsive img-circle wow fadeInLeft" data-wow-delay=".2s">
</div>
<div class="author-righte col-sm-offset-1 col-sm-10 col-md-offset-0 col-md-6 wow fadeInRight" data-wow-delay=".2s">
<h3>Paul Bakker</h3>
<p>Paul is a senior software engineer with <a target="_blank" href="https://www.netflix.com">Netflix</a> in the Edge Developer Experience team, where he primarily works on tools to increase developer productivity within the company. Besides his love for writing code, he has a passion for sharing knowledge.</p>
<p>This is his second book after co-authoring "Modular Cloud Apps with OSGi" which was published by O'Reilly in 2013. Paul is also frequently speaking at conferences about modularity, container technology and many other topics. He blogs at <a href="http://paulbakker.io">http://paulbakker.io.</p>
<a href="https://twitter.com/pbakker" class="twitter-follow-button" data-size="large" data-show-count="false">Follow @pbakker</a>
</div>
</div>
</div>
</section>
<!-- End Author -->
<!-- Begin Feedback -->
<section class="feedback" id="feedback">
<div class="container">
<h2 class="page-header">What Other People Say</h2>
<div class="row">
<div class="col-sm-offset-1 col-sm-10 col-lg-offset-2 col-lg-8">
<div class="owl-carousel feedback-carousel prime-theme">
<div class="item">
<p>Modularization is <b>hard</b>. Luckily I've been able to use Paul and Sander's book as my guide for writing my Java 9 tutorials, talks, and converting jClarity's applications to use Java's new modular system. I'm buying a copy for all the engineering team at jClarity, it's that good!</p>
<div class="feedback-carousel-avatar">
<img src="img/martijnverburg.png" alt="Avatar" class="img-circle">
</div>
<h3>Martijn Verburg</h3>
<p><span>CEO, jClarity and Java Champion</span></p>
</div>
<div class="item">
<p>This book delivers the essential practical knowledge you need to create modular applications in Java 9. It's a must read for any developer or architect wanting to adopt one of the most significant features the JDK has seen in many years.</p>
<div class="feedback-carousel-avatar">
<img src="img/simonmaple.jpg" alt="Avatar" class="img-circle">
</div>
<h3>Simon Maple</h3>
<p><span>Director of Developer Relations, ZeroTurnaround</span></p>
</div>
<div class="item">
<p>Sander and Paul are expert practitioners of Java and trusted guides to the Java 9 ecosystem. They were on the front lines of Java 9’s development, and in the vanguard of efforts to migrate popular open source libraries. “Java 9 Modularity” is the handbook for everyone interested in the core principles and best practices of modularity in Java: application developers looking to create maintainable components; library developers looking for advice on migration and reflection; and framework developers wishing to exploit the module system’s advanced features. This book will help you to create Java programs whose structure lets them stand the test of time.</p>
<div class="feedback-carousel-avatar">
<img src="img/alexbuckley.png" alt="Avatar" class="img-circle">
</div>
<h3>Alex Buckley</h3>
<p><span>Java Platform Group, Oracle</span></p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- End Feedback -->
<!-- Begin Plans -->
<section class="plans" id="plans">
<div class="container">
<div class="row">
<div class="col-sm-offset-1 col-sm-10 col-lg-offset-2 col-lg-8">
<h2 class="page-header wow">Get the Book</h2>
<p class="page-heade-p">Below you'll find a number of options to get <i>Java 9 Modularity</i>. Consider leaving a review after reading (for example, on <a href="https://www.goodreads.com/book/show/31332944-java-9-modularity" target="_blank">Goodreads</a> or <a href="https://www.amazon.com/review/create-review/ref=cm_cr_dp_d_wr_but_top?ie=UTF8&channel=glance-detail&asin=1491954167&_encoding=UTF8&tag=branandboun-20&linkCode=ur2&linkId=c893f6df1a4749fe64e9b7ede9bf4b56&camp=1789&creative=9325" target="_blank">Amazon</a>), it is much appreciated!</p>
</div>
</div>
<div class="row">
<div class="col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-4 item">
<div class="item-main">
<h3>Read Online</h3>
<br>
<p>O'Reilly Safari offers the largest selection of IT books on a subscription basis. You can read Java 9 Modularity with a Safari subscription.</p>
<p><a id="safaributton" href="https://www.safaribooksonline.com/library/view/java-9-modularity/9781491954157/" target="_blank" class="btn btn-primary">Read on Safari</a></p>
<p>No subscription? <a href="https://bit.ly/java9modsafari" target="_blank">Start a trial</a>!</p>
<br>
<a href="https://bit.ly/java9modsafari" target="_blank"><img src="img/safari-og.png" width="240px"></a>
</div>
</div>
<div class="col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-4 item">
<div class="item-main">
<h3>eBook</h3>
<br>
<p>Available in all popular formats. Note that only the ebooks.com PDF has the original O'Reilly print typesetting.</p>
<ul>
<li><span>DRM-Free PDF/ePub</span> <a href="http://bit.ly/java9mod-ebooks" target="_blank">ebooks.com</a></li>
<li><span>Kindle</span> <a href="http://amzn.to/2xgQ7qT" target="_blank">Amazon.com</a></li>
<li><span>PDF/ePub</span> <a href="https://play.google.com/store/books/details/Sander_Mak_Java_9_Modularity?id=LZQ0DwAAQBAJ" target="_blank">Google Play Store</a></li>
</ul>
<img src="img/java9modularity-cover-ereaderlaptop.jpg" width="240px">
</div>
</div>
<div class="col-sm-offset-3 col-sm-6 col-md-offset-0 col-md-4 item">
<div class="item-main">
<h3>Print</h3>
<br>
Still the best way to read a book!
<ul>
<li><a href="http://amzn.to/2wTaJBY" target="_blank">Amazon.com</a> (free US shipping)</li>
<li><a href="http://bit.ly/java9mod-bol" target="_blank">Bol.com</a> (free NL/BE shipping)</li>
<li><a href="http://bit.ly/java9mod-bookdep" target="_blank">Bookdepository.com</a> (free worldwide shipping)</li>
</ul>
<br>
<br>
<br>
<img src="img/java9modularity-cover-stack.jpg" width="240px">
</div>
</div>
</div>
</div>
</section>
<!-- End Plans -->
<!-- Begin Contact Us -->
<section class="contact" id="contact">
<div class="container">
<h2 class="page-header wow fadeInUp" data-wow-delay=".2s">Other Resources</h2>
<div class="row">
<div class="col-md-5">
<h3>Pluralsight Course: Java 9 Modularity</h3>
<iframe width="461" height="258" src="https://www.youtube.com/embed/1dnE8GRt68I" frameborder="0" allowfullscreen></iframe>
<p>This two hour video course gives you insight into the Java module system using practical examples. You'll learn how to create and use modules and how to migrate your applications to Java 9.</p>
<a class="btn btn-big btn-primary" href="http://bit.ly/java9course">Watch</a> (free <a href="https://www.pluralsight.com/learn" target="_blank">trial</a> available)
<br>
<br>
<h3>Pluralsight Course: What's New in Java 9</h3>
<iframe width="461" height="258" src="https://www.youtube.com/embed/tgXxif62N8A" frameborder="0" allowfullscreen></iframe>
<p>This 3,5 hour video course shows all important new features of Java 9 in a hands-on manner. Topics range from JShell to Stream/Optional API enhancements, new APIs like HttpClient and ProcessHandle, performance and security improvements in Java 9 and much more.</p>
<a class="btn btn-big btn-primary" href="http://bit.ly/ps-java9">Watch</a> (free <a href="https://www.pluralsight.com/learn" target="_blank">trial</a> available)
</div>
<div class="col-md-1">
</div>
<div class="col-md-6">
<h3>Articles and News</h3>
<p><a href="https://www.oreilly.com/ideas/handling-dependency-injection-using-java9-modularity" target="_blank">Handling dependency injection using Java modularity</a> (O'Reilly article)</p>
<p><a href="https://www.pluralsight.com/blog/software-development/java-9-new-features" target="_blank">9 New Features in Java 9</a> (blog)</p>
<p><a href="https://www.youtube.com/watch?v=oy3202OFPpM" target="_blank">Java 9 Modularity in Action</a> (Devoxx Belgium talk)</p>
<p><a href="https://www.youtube.com/watch?v=tamVhtV18dY" target="_blank">Designing for Modularity with Java 9 Modules</a> (JavaOne talk)</p>
<p><a href="https://www.youtube.com/watch?v=eezSlcpp3OI" target="_blank">VirtualJUG Book Club: Java 9 Modularity Q&A (part 1)</a></p>
<p><a href="https://www.youtube.com/watch?v=eeDNEy5M0Xg" target="_blank">VirtualJUG Book Club: Java 9 Modularity Q&A (part 2)</a></p>
</div>
</div>
</div>
</section>
<!-- End Contact Us -->
<!-- Begin Footer -->
<footer class="footer" id="footer">
<div class="container">
<h2 class="page-header">Java 9 Modularity</h2>
<div class="row">
<div class="footer-bottom">
<div class="col-xs-12 col-sm-6">
<p>© <script>document.write(new Date().getFullYear())</script>, Sander Mak, Paul Bakker. Contains affiliate links.</p>
</div>
<div class="footer-bottom-social col-xs-12 col-sm-6">
<ul>
<li><a href="https://twitter.com/javamodularity" target="_blank"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
<li><a href="https://nl.linkedin.com/in/sandermak" target="_blank" title="LinkedIn Sander Mak" alt="LinkedIn Sander Mak"><i class="fa fa-linkedin" aria-hidden="true"></i></a></li>
<li><a href="https://www.linkedin.com/in/paulb01" target="_blank" title="LinkedIn Paul Bakker" alt="LinkedIn Paul Bakker"><i class="fa fa-linkedin" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<!-- End Footer -->
<!-- Begin To Top -->
<div class="up">
<a data-scroll href="#header">
<i class="fa fa-angle-up" aria-hidden="true"></i>
</a>
</div>
<!-- End To Top -->
<!-- Load JS -->
<script src="js/wow.min.js"></script>
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/smooth-scroll.min.js"></script>
<script src="js/headhesive.min.js"></script>
<script src="js/owl.carousel.min.js"></script>
<script src="js/main.js"></script>
<script async defer src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
</body>
</html>