导 读
这份导读让你可以更了解如何使用《Java JDK 9学习笔记》。
新旧版差异
就目录上来说,你可以看出的差异是,上一版为18个章节,新版为19个章节,第19章“深入模块化”是新的章节,也是JDK9最重要的新增功能。然而,认识模块化最好的方式是从实际的例子着手,因此第1~18章,全部的范例都是采用模块项目构建。而在各章说明时若有需要,也适时地带入了常用的模块化概念。第19章一开始则是整理前18个章节遇到过的模块化介绍,然后紧接着深入探讨模块化。
当然,照例要谈一些JDK9的其他新增功能,散落在各章节中适当的地方介绍。如果发现页侧有 图标,表示提及JDK9新功能,《Java JDK 9学习笔记》还提供了JDK9新功能快速查询目录。
虽然程序常用来处理计算,然而许多开发者对数字处理其实认识不多,因而第15章通用API增加了数字处理的内容;为了认识JDK9 Stack-Walking API,读者有必要先认识如何取得并运用StackTraceElement来进行堆栈追踪,因而在第15章还增加了一个小节来介绍堆栈追踪,对于读者了解应用程序行为,或者是处理Bug,应该会有所帮助。
在第2章介绍了模块化之后,范例项目便基于模块化设计了,并使用了JDK9的语法增强或改进部分程序代码;在9.1.6节介绍Lambda之后,为了提高可读性,使用Lambda相关语法或API来操作程序范例。
旧版有个附录B“窗口程序设计”,在新版中删掉了,这表示了Java在窗口程序这块的地位。当然,Java有Java FX这项技术,如果仍希望使用Java进行窗口程序设计,可以寻找Java FX的专书。附录B虽然不在了,不过范例项目的程序代码留着作为第19章的练习,读者可以自行研读原始码,并试着将之模块化。如果一定需要点说明,可以参考旧版《Java SE 6技术手册》第19章说明:
n github.com/JustinSDK/JavaSE6Tutorial/blob/master/docs/CH19.md
字型
《Java JDK 9学习笔记》正文中与程序代码相关的文字,都用固定字体来加以呈现,以与一般名词相区别。例如,JDK是一般名词,而String则是程序代码相关文字,所以使用了固定字体以区分。
程序范例
读者可以在以下网址下载《Java JDK 9学习笔记》的范例:
n http://www.tupwk.com.cn/downpage
n http://books.gotop.com.tw/v_ACL052100
《Java JDK 9学习笔记》许多范例都使用完整程序操作来展现,如看到以下程序代码示范时:
ClassObject Guess.java
package cc.openhome;
import java.util.Scanner;
import static java.lang.System.out;
public class Guess {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = (int) (Math.random() * 10);
int guess;
do {
System.out.print("猜数字(0 ~ 9):");
guess = scanner.nextInt();
} while(guess != number);
out.println("猜中了...XD");
}
}
范例开始的左边名称为ClassObject表示可以在范例文件的samples文件夹的各章节文件夹中找到对应的ClassObject项目;而右边名称为Guess.java表示可以在项目中找到Guess.java文件。如果程序代码中出现标号与提示文字,表示在后续的正文中,会有对应于标号及提示的更详细说明。
原则上,建议读者每个项目范例都能亲手动作撰写,但出于教学时间或操作时间上的考虑,《Java JDK 9学习笔记》有建议进行的练习。如果在范例开始前有个 图标,例如:
Game1 SwordsMan.java
package cc.openhome;
public class SwordsMan extends Role {
public void fight() {
System.out.println("挥剑攻击");
}
}
表示建议范例动手操作,而且在范例文件的labs文件夹中提供了练习项目的基础,打开项目后,完成项目中遗漏或必须补齐的程序代码或设定即可。
如果使用以下程序代码呈现,则表示它是一个完整的程序内容,而不是项目的一部分,这主要用来展现一个完整文档的撰写方法。
public class Hello {
public static void main(String[] args) {
System.out.println("Hello!World!");
}
}
如果使用以下程序代码,则表示它是个代码段,主要展现程序撰写时需要特别注意的片段:
SwordsMan swordsMan = new SwordsMan();
...
System.out.printf("剑士 (%s, %d, %d)%n", swordsMan.getName(),
swordsMan.getLevel(), swordsMan.getBlood());
Magician magician = new Magician();
...
System.out.printf("魔法师 (%s, %d, %d)%n", magician.getName(),
magician.getLevel(), magician.getBlood());
提示框
在《Java JDK 9学习笔记》中会出现以下提示框:
针对课程中所提到的观点,提供了一些额外的资源或思考方向,暂时忽略这些提示对课程的影响,但有时间的话,针对这些提示做阅读、思考或讨论是有帮助的。
针对课程中所提到的观点,以提示框方式特别呈现出必须注意的一些使用方式、陷阱或避开问题的方法,看到这个提示框时请读者集中精神阅读。
附录
范例文件包括《Java JDK 9学习笔记》中的所有范例,提供NetBeans范例项目,附录A用于说明如何使用这些范例项目。
联系作者
若有《Java JDK 9学习笔记》勘误反馈等相关书籍问题,可通过网站与作者联系。网址如下:
http://openhome.cc