在Java IO中,我们使用Stream和Reader,而在NIO中我们使用Channel,Selector.
他们都做同样的事情,但结构完全不同.
那么为什么他们不编写像"AsyncStream"这样的新流或像"AsyncReader"这样的读者来实现NIO实现的功能.如果是这样,我们只有一个结构,它很漂亮.
那么为什么Java IO无法实现异步读取呢?使用Java IO实现异步读取有什么困难?
或者编写新框架而不是使用现有框架有什么好处?
我试图在上面的评论中理解你的想法,但恐怕没有足够的细节来将其理解为提案。如果没有这一点,就无法判断它是否有效。
不过,有几点可以回应:
但 Java 并不是一门闪亮的新语言。它是一种古老的编程语言,有数十亿行源代码。您正在考虑对中央 API 进行的这种更改要么会给Oracle 的付费客户带来巨大的二进制兼容性问题,要么会导致巨大的遗留代码问题。这根本不会发生。
抛开这一点不谈,如果您尝试将同步和异步功能合并到单个 API 中,您可能会面临以下情况:
现在看来,这些担忧可能是多余的。
然而,如果没有看到具体的 API 设计方案和尝试可用性和性能的实现,我们就无法判断。请记住,最初针对 I/O 流和(当时的)读取器/写入器的优雅 API 设计实际上存在各种问题。直到人们在生产代码中使用 API 后,这些问题才变得明显。例如:
Reader/ 。WriterBuffer等等。总而言之,设计一个好的 I/O API 确实很难……而且 Java 无论如何也不太可能改变。
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |