内容目录
1.3 进入正题
操作系统研发人员将大量精力投入到提升 I/O 性能上。众多高手日以继夜地工作,只为完善数据传输技术。操作系统开发商为了取得竞争优势,投入大量时间、金钱,以便在测试数据上胜过竞争对手。
当今的操作系统是现代软件工程的奇迹(没错,有的比奇迹还奇迹),可是 Java 程序员如何能够既利用操作系统的强大功能,又保持平台独立性?唉,天下没有免费的午餐,此为一例。JVM 是把双刃剑。它提供了统一的操作环境,让 Java 程序员不用再为操作系统环境的区别而烦恼。与特定平台相关的细枝末节大都被隐藏了起来,因而代码写得又快又容易。但是隐藏操作系统的技术细节也意味着某些个性鲜明、功能强大的特性被挡在了门外。
怎么办呢?如果您是程序员,可以使用 Java 本地接口(JNI)编写本地代码,直接使用操作系统特性。这样的话,您就被绑定在该操作系统上(也许还是其特定版本上)。如果您的本地代码不是 100%无漏洞,您还可能把 JVM 置于频繁出错乃至崩溃的境地。如果您是操作系统开发商,则可以在您的 JVM 实现中包含本地代码,以 Java API 的形式提供这些特性。但这样做可能违反您所签署相关许可协议,根据协议,您只能提供符合一致性要求的 JVM。Sun 曾就此问题将 Microsoft 告上法庭,因为很明显,JDirect
软件包只能在微软的系统上运行。如果以上方法都行不通,那么您只好转向其他语言,以实现对性能要求极为苛刻的应用。
为了解决这一问题,java.nio
软件包提供了新的抽象。具体地说,就是 Channel
和 Selector
类。它们提供了使用 I/O 服务的通用 API,JDK 1.4 以前的版本是无法使用这些服务的。天下还是没有免费的午餐:您无法使用每一种操作系统的每一种特性,但是这些新类还是提供了强大的新框架,涵盖了当今商业操作系统普遍提供的高效 I/O 特性。不仅如此,java.nio.channels.spi
还提供了新的服务提供接口(SPI),允许接入新型通道和选择器,同时又不违反规范的一致性。
随着 NIO 的面世,Java 已经为严肃的商业、娱乐、科研和学术应用做好了准备。在这些领域,高性能 I/O 是必不可少的。
除了 NIO,JDK 1.4 还包含许多其他重要改进。从 1.4 版开始,Java 平台已进入高度成熟期,它仍无法涉足的应用领域已所剩无几。David Flanagan 所著《Java 技术手册》(第四版)(Java ina Nutshell, Fourth Edition [O'Reilly])是全面了解 JDK 1.4 各方面特性的绝佳向导。
0 条评论
撰写评论