编辑: 摇摆白勺白芍 2013-06-16
JavaSE

7 和JavaSE

8 Lee Chuk Munn chuk-munn.

lee@oracle.com 议题 ?模块化 ?细微语言更改 ?代码块参数 ?杂项 模块化 模块化 Jigsaw Jigsaw 项目 项目 模块化 ― 解决方案 ? "JAR 地狱" C 消除类路径 C 打包模块以便于自动下载和安装 C 生成原生包 ― deb、rpm、ips 等?性能 ― 下载时间、启动时间 C 增量下载 → 快速类加载 C 记住启动类 ? 平台可伸缩性 ― 向下伸缩至小型设备 C SE 子集适用于小型设备 模块化目标 ? 分组 ? 相关性 ? 版本控制 ? 封装 ? 可选模块 ? 虚拟模块 module-info.java com.foo.app org.bar.lib com.foo.lib edu.baz.util module com.foo.app @ 1.0.0 { class com.foo.app.Main;

requires com.foo.lib @ 2.1;

provides com.foo.app.lib @ 1.0.0;

} 模块名称 版本 入口点 相关性 虚拟模块 module-info.java com.foo.app org.bar.lib com.foo.lib edu.baz.util com.foo.extra 可选模块 module com.foo.app @ 1.0.0 { class com.foo.app.Main;

requires com.foo.lib @ 2.1;

provides com.foo.app.lib @ 1.0.0;

requires optional com.foo.extra;

} module-info.java com.foo.app com.foo.secret org.bar.lib com.foo.lib edu.baz.util com.foo.extra module com.foo.secret @

1 { permits com.foo.lib;

} 封装模块 打包模块 ? 编译 ? 打包 ― 支持原生包格式 ? 创建和安装库 ? 将信息库链接至库 ? 执行 javac -modulepath mods src/com/foo/... jpkg -modulepath mods jmod com.foo.app ... jpkg -modulepath mods debs com.foo.app ... jmod -L mlib create jmod -L mlib install *.jmod java -L mlib -m com.foo.app jmod add-repo mlib http://jig.sfbay Section Divider 微小 微小 (语言) (语言) 变化 变化 Coin Coin 项目 项目 JDK

5 ― 程序员效率 List list = ... Iterator listIter = list.iterator();

while (listIter.hasNext()) { String element = listIter.next();

... List list = ... for (String element:list) { ... 更好的整数串 ? 二进制串 ? 使用下划线确保清晰易懂 int mask = 0b101010101010;

int mask = 0b1010_1010_1010;

long big = 9_223_783_036_967_937L;

字符串 Switch 语句 ? 如今,case 标签包括整数常量和枚举常量 ? 字符串也是常量 目前可以识别字符串 int monthNameToDays(String s, int year) { if("April".equals(s) || "June".equals(s) || "September".equals(s) ||"November".equals(s)) return 30;

if("January".equals(s) || "March".equals(s) || "May".equals(s) || "July".equals(s) || "August".equals(s) || "December".equals(s)) return 31;

if("February".equals(s)) ... 使用字符串 Switch 语句 int monthNameToDays(String s, int year) { switch(s) { case "April":case "June": case "September":case "November": return 30;

case "January":case "March": case "May":case "July": case "August":case "December": return 31;

case "February": ... default: ... 可变参数警告 ? 这些调用有何错误 C Arrays.asList(T... a) C EnumSet.of(E first, E... rest) List monthsInTwoLanguages = Arrays.asList( Arrays.asList("January", "February"), Arrays.asList("一月", "二月") );

Test.java:5:warning:[unchecked] unchecked generic array creation of type java.util.List[] for varargs parameter List monthsInTwoLanguages = Arrays.asList( 堆污染 ― JLSv3 4.12.2.1 ? 消除和缺乏具体化的后果 C Arrays.asList("January", February") C 运行良好,但调用点会出现不友好的警告 ? 类似于 ? 通过以下方式可以抑制,但同时可能会抑制其他问题 C @SuppressWarnings("unchecked) C 但可能会抑制其他合法问题 ? 在声明 @SafeVarags 处指定新批注 List list = new LinkedList();

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题
大家都在看的话题