Java NIO:提升I/O性能的利器
1. Java I/O的现状与挑战
在企业应用领域,Java已经占据了重要地位。然而,在J2SE SDK 1.4版本发布之前,Java在I/O方面相较于原生编译语言处于劣势。这一劣势源于Java“一次编写,到处运行”的优势,为了在不同的JVM部署平台上运行Java字节码,需要进行一些妥协,采用了一种最低共同标准的方法。
在I/O领域,这些妥协尤为明显。Java拥有丰富的I/O类,但它们主要集中在提供跨所有操作系统的通用功能,通常处于较高的抽象级别。这些I/O类主要是面向流的,处理单个字节或字符时,常常需要在多个对象层上调用方法。这种面向对象的方法虽然提供了极大的灵活性,但在处理大量数据时,会成为性能杀手。因为I/O的目标是效率,而高效的I/O通常意味着要从A点到B点走最短路径,复杂性会破坏高容量I/O的性能。
传统的Java I/O抽象在处理大数据量时扩展性不佳,并且不能提供当今大多数操作系统广泛可用的一些常见I/O功能,如文件锁定、非阻塞I/O、就绪选择和内存映射等。这些功能对于可扩展性至关重要,并且在与非Java应用程序交互时可能是必需的,尤其是在企业层面。
2. Java NIO的诞生
JDK 1.4是第一个主要由Java社区进程驱动的Java版本。Java社区进程(JCP)为Java产品的用户和供应商提供了一种提议和指定Java平台新功能的方式。Java New I/O(NIO)就是这样一个提议的直接结果,Java Specification Request #51详细阐述了对高速、可扩展I/O的需求,以更好地利用底层操作系统的I/O功能。
NIO的新类主要集中在
超级会员免费看
订阅专栏 解锁全文
69

被折叠的 条评论
为什么被折叠?



