在Java IO中,我们使用Stream和Reader,而在NIO中我们使用Channel,Selector。
他们都做同样的事情,但结构完全不同。
那么他们为什么不写一个像#34; AsyncStream"或像#34; AsyncReader"实现NIO实施的目标。如果是这样,我们只有一个结构,它很漂亮。
那么为什么Java IO无法实现异步读取? 使用Java IO实现异步读取有什么困难?
或者编写新框架而不是使用现有框架有什么好处?
答案 0 :(得分:1)
我试图在上面的评论中理解您的想法,但我担心没有足够的细节来理解它作为提案。没有它,就不可能判断它是否有效。
然而,有几点可以作出回应:
但Java不是一种闪亮的新语言。它是一种古老的编程语言,其中编写了数十亿行源代码。您正在考虑在中央API 上进行的这种更改会为Oracle的付费客户带来巨大的二进制兼容性问题,否则会导致巨大的遗留代码问题。它根本就不会发生。
除此之外,如果您尝试将同步和异步功能合并到一个API中,则冒险会产生以下情况:
现在可能无法保证这些担忧 。
但是,如果没有看到具体的API设计提案和一个实现可用性和性能的实现,我们就无法分辨。请记住,I / O流和(然后)读者/编写者的原始优雅API设计实际上被证明存在各种问题。直到人们在生产代码中使用API时,这些才变得明显。例如:
[self.navigationController pushViewController:YOUR_VIEWCONTROLLER animated:YES];
/ Reader
。Writer
等等。总之,设计一个好的I / O API真的很难......而且Java也不太可能改变。