jep122
Michael McMahon提出了新的JDK增强建议(JEP),以将Unix域套接字支持添加到java.nio.channels包中的两个API。 套接字通道和服务器套接字通道 。 JEP 380还旨在扩展继承的通道机制,以支持Unix域套接字通道和服务器套接字通道。
JEP 380:Unix域套接字通道
McMahon写道:“对于本地的进程间通信,Unix域套接字比TCP / IP环回连接更安全,更高效。” 这就是为什么他提议增加对Unix域套接字通道的支持的原因,尤其是现在Windows 10和Windows Server 2019中都支持它们。
目的是使Unix域套接字通道的行为与TCP / IP通道几乎相同,并且将支持的功能是主要Unix平台和Windows所共有的功能。
还请参见:
那么,JDK如何支持Unix域套接字通道? 通过添加以下API元素:
- 新的套接字地址类型
java.nio.channels.UnixDomainSocketAddress
- 现有
java.net.StandardProtocolFamily
枚举中的UNIX
常数值 - 静态
open
工厂方法在SocketChannel
和ServerSocketChannel
类中采用ProtocolFamily
,在Unix域套接字通道之外非常有用 -
SocketChannel
和ServerSocketChannel
类中的新规范文本将Unix域套接字通道与现有TCP / IP类型区分开来
还请参见:
这些更改会影响现有代码吗? McMahon写道:“使用SocketChannel
和ServerSocketChannel
类的现有代码通常假定可以将这些API返回的SocketAddress
实例盲目转换为InetSocketAddress
。 这种转换将因Unix域套接字通道而失败。”
此外,JEP声明其目的不是支持在主要Unix和Windows平台上不常见的功能。 但是,麦克马洪(McMahon)指出,如有需要,可以稍后再次讨论该主题(和不受支持的功能)。
有关更多信息,请在OpenJDK网站上查看JEP 380 ,或者通过阅读我们的Java 15新闻更新查看它是否已针对JDK 15。
翻译自: https://jaxenter.com/jep-380-unix-domain-socket-channels-171981.html
jep122