Hprose for Java

Hprose for Java 支持哪些版本和平台?

  • Hprose for Java 分为 javaSE/javaEE 版本和 javaME 版本。
  • Hprose for JavaSE/JavaEE 版本支持 JDK 1.2 及其更高版本。
  • Hprose for JavaSE/JavaEE 版本支持 Google 云计算平台 GAE (Google App Engine) for Java。
  • Hprose for JavaSE 版本支持 Android 应用开发。
  • Hprose for JavaME 版本支持 CDC,CLDC 的所有版本。
  • Hprose for JavaME 的 CLDC 1.1 版本还提供了带有部分 JavaSE 功能的扩展版本。

Hprose for Java 支持泛型吗?

Hprose for Java 支持泛型,但因为目前的代码基于 Java 1.2,因此并不能说是完美支持泛型,但大部分情况下,泛型容器是可以很好的工作的。后续版本中会增加基于 Java 1.5 的优化版本,将会对泛型有完美支持。

Hprose for Java 支持哪些服务器?

Hprose for Java 支持所有可以运行 Java Servlet 的服务器,例如:Tomcat、Glassfish, Jetty, Weblogic、Websphere 等。

Hprose for Java 的性能怎么样?

Hprose for Java 的性能非常棒。其性能超过 RMI、Hessian 等其它的 Java 远程调用技术。

Hprose for Java 服务发布的方法支持重载吗?

Hprose for Java 支持对发布的参数个数不同的方法支持重载,如果方法名相同、参数个数也相同,需要使用别名来进行区别。

Hprose for Java 服务器可以在 GAE 上运行吗?

可以,Hprose for Java 服务器端在 GAE 上运行部署可以采用直接配置 HproseServlet 的方式,也可以采用自己编写 Servlet 的方式发布 Hprose 服务。这一点跟在其它 JavaEE 服务器上发布 Hprose 服务没有什么区别。

Hprose for Java 客户端可以在 GAE 上运行吗?

可以,但是由于 GAE 本身的原因,会有下面一些限制:

  • Hprose for Java 客户端在 GAE 上仅支持同步调用,不支持异步调用,因为 GAE 禁止使用线程类。
  • Hprose for Java 客户端在 GAE 上不能调用其自身应用发布的服务,因为 GAE 为防止访问循环死锁,限制自我访问。
  • Hprose for Java 客户端上不能够设置代理服务器和 KeepAlive 属性,因为 GAE 不支持。
  • Hprose for Java 客户端在 GAE 上只能访问标准的 http 和 https 端口发布的 Hprose。因为 GAE 限制不支持对其它端口的访问。

Hprose for Java 异步调用是每次调用都开一个单独的线程吗?

不是,Hprose for Java 的异步调用的线程是由线程池来维护的。

Hprose for JavaME 的 CLDC 1.1 扩展版本提供了哪些扩展功能?

主要提供了 JavaSE 中的 math 包中的 BigDecimal 和 BigInteger,以及 util 包中的所有容器的兼容实现。因此,使用 Hprose for JavaME 的 CLDC 1.1 版本你可以很方便的将 JavaSE 的程序移植为 javaME 程序。

使用 Hprose for Java 做Android 开发时有什么注意事项吗?

Hprose for Java 客户端可以直接运行于 Android 平台之上,跟在普通的 JavaSE 平台上开发没有任何区别。但在调用时推荐采用异步方式,因为同步调用方式对于界面操作不友好。另外,如果你遇到:
java.net.SocketException: Permission denied (maybe missing INTERNET permission)
这个错误,只需要在 AndroidManifest.xml 中,进行如下配置即可:
<uses-permission android:name="android.permission.INTERNET" />

Hprose for Java 支持复杂自定义对象的传输吗?

支持,而且跨语言,跨平台。

Hprose for Java 提供了两种自定义可序列化对象的序列化方式,一种叫字段模式,另一种叫属性模式。字段模式下,除了被标示为 transient 的字段以外,所有字段都会被序列化。而属性模式下,只有 public 的可读写属性会被序列化。默认是字段序列化方式传递,这种方式对于 Java 内置的一些可序列化类型支持较好,但是不利于跨语言跨平台传输。我们推荐您使用属性模式,这种模式非常方便跨语言,跨平台的应用。

支持语言

已发布的版本

服务器

客户端

开发中的版本

服务器

客户端

计划中的版本

服务器

  • C
  • D
  • Erlang
  • JavaScript
  • Lua

客户端

  • C
  • D
  • Erlang
  • Lua

授权许可

Hprose 是商业开源软件,在取得 Hprose 商业使用授权后,您可以将它用于您所拥有所有权的商业项目的开发当中,Hprose 商业使用授权没有开发者人数、服务器CPU数量、授权年限等限制,但对二次分发有一定的特别要求。如果您所开发的项目或产品涉及到对 Hprose 的二次分发,还需要取得相应的二次分发授权。

如果您需要了解更多关于授权许可方面的信息,请致信到 sales@hprfc.com 与我们联系。