有一个很好的Java网络库吗?

Ste*_*tge 10 java networking serialization

我目前正在搜索Java网络库.我想要做的是将XML,JSON或其他序列化消息从客户端发送到另一个客户端和/或客户端到服务器.

我的第一次尝试是为每条消息创建一个POJO,另外还有一个MessageWriter用于发送,MessageReader用于接收它.加上套接字和错误处理.这是一个很容易出错的工作.

我正在寻找的是一个从套接字中抽象出来的高级库.此外,它应该支持诸如消息的代码生成之类的东西.

谷歌的协议缓冲区(http://code.google.com/apis/protocolbuffers/)看起来很有前途.但有其他选择吗?重点不在于速度或安全性(目前),它应该是可靠的,并且实施时间较短.

Nic*_*las 13

您有多种选择,具体取决于您希望获得的原始套接字的抽象方式.一旦你离开了套接字级别的编程,你就会进入远程领域,

  • Java的标准远程处理选项:RMI或JMS
  • 在每个客户端和服务器中实现JMX Mbeans,并使用JMX远程处理来调用消息传递操作.
  • 如果您认为您可能想要使用多播,我肯定会检查JGroups.
  • 如果您正在寻找创建自己的协议但想要使用一些现有的构建块,请查看Jakarta Commons Net.答案#1中引用的HttpClient已合并到此包中.
  • 还有一些有趣的专有消息系统,它们具有支持多种平台/语言(如SpreadDBus)的额外优势.
  • 如果不提及WebServices,就无法枚举远程处理选项......但是...... 喋喋不休!

我不完全确定你的消息代码生成是什么意思.你能详细说说吗?


Nic*_*las 4

啊...明白了。但不是使用代码生成。编组和解组,如果两端都有 Java,可以使用简单的对象序列化吗?如果性能和/或消息大小是一个问题,您可以使您的 Message 类可外部化。

我之前没有看过 Protobuf。看起来相当不错。使用它,您只需要一种传输方法。