java - 带有java 8的谷歌appengine的Websocket或本机套接字?
问题描述
我目前在 Google 的 AppEngine 上为我的基于 java 8 的 webapp(标准环境)的用户消息传递和通知系统使用 HTTP 长轮询。我想用 Socket API 来实现它。
在Google关于 Java Sockets API 的文档中提到:
重要提示:Java 8 运行时中的应用程序可以不受限制地使用本机 Java 套接字,包括使用 NIO 类及其方法。
所以我对我应该使用什么,websockets 还是原生 java 套接字有点困惑?有区别对吧?显然,Java 8 运行时已经大大改变了套接字 API,这就是为什么可以使用本机 Java 套接字而不是 websockets 的原因吗?
解决方案
Java 7 运行时(现已弃用)是一种特殊的沙盒环境。因此,它对您可以在其 JVM 上执行的操作有很多限制,例如,关于线程、标准 Java 库中的可用类、套接字、安全管理器等。
Java 8 运行时具有截然不同的基础架构,并且大部分限制已被取消。它支持标准的公共 Java 库(当然包括本机 Java 套接字和 NIO),而不仅仅是 Java 7 运行时中列入白名单的子集。您链接的文档中的引用只是在宣传 Java 8 运行时优于 Java 7 运行时。
我会说由您决定是否使用本机 Java 套接字。至少,使用标准 Java 库不会是一件坏事。
编辑:这些额外的文档也可能会引起您的兴趣:
推荐阅读
- scheme - 在 Scheme/Lisp 中内置二进制转换
- react-native - 在 React-Native 中查看未正确渲染图像
- java - 仅在选中时打印多个复选框名称
- python - 应用 size() 后如何迭代 DataFrame Groupby?
- python - 装饰器的真正用途是什么?
- ios - 自定义注释视图未显示在 iOS 12 的 MKMapView 中
- reactjs - 有没有办法让我可以访问浏览器历史记录中的所有项目或至少历史的顶部项目
- java - 使用 java 了解 Wifi Analyzer 如何在 Windows 10 上工作
- graph-databases - gremlin:限制步骤与采取步骤
- java - Do i need to unbind service when i'm not calling startService?