Appendix D Limitations and Known Bugs


D.1 Current Limitations

Most of the following limitations will be cleared in a near release.

See online version.

Object passing copies non-private variables only

When an instance is transfered, private variables are copied. This is due to security reason. This limitation will be cleared when Java VM has a builtin serializer (Yes, it will).
Returning value in argument is not supported.

All argument passing is in 'out' direction. Returning value in an argument is not supported. For example,
        class foo {
            void read(byte buf) {
                buf[0] = 10;
            }
        }


When you call foo remotely, you will never get 10 in buf[0].

Variables in remote objects are not accessible remotely.

If a remote object has a variable foo, a client cannot access to foo directly. Write an accessor method of foo.
Extend clause of interface is not supported yet.

Extend clause of interface definition is ignored when the interface is compiled by the horbc compiler.
Null constructor

You have to supply a null constructor (e.g., Foo(){}), if the class has other constructors.
Applets cannot connect to a server over a firewall.
Standalone clients can connect to a server over a firewall through SOCKS server. Set socksProxyHost and socksProxyPort of system property (of Java, not HORB's). I don't know how to set the property.
HORB is sometimes slow.

That's because Java is an interpreter. Sun has announced they will supply a native code converter. Someone said it would run Java programs faster than C++@programs.

If you need speed, don't use ACL, use -O option of horbc, don't use -v option of horb, disable loop check, disable hostname lookup, don't use cast when you pass objects, don't use interface to pass objects.

Foffile becomes unusable when the class changes.

When you change organization of variables of a class, a foffile saved by an older class cannot be loaded in the new class.
Object remains after connection close.

I think JDK's socket close has a bug. Make and call a method like terminate() that releases connection from the server side.
horbc says "Foo_Proxy not found"

To resolve forward reference, use interface and generate proxy/skeleton classes from the interface.


D.2 Known Bugs

See online version.


D.3 Numbers

  • Maximum number of methods in a class: 256 (Java's limitation)
  • Maximum number of superclasses: 32767
  • Largest version number: 32767
  • Length of objectID: not limited
  • Length of classname: not limited
  • Number of remote objects: not limited
  • Number of daemon objects: not limited
  • Number of ACL files: not limited
  • Number of HORB servers in a HORB process: not limited
  • Number of threads of a HORB object: not limited
  • Largest array size that can be transfered to remote: not limited