Changes since Last release


Changes in 1.3.b1 (96/09/13) since 1.2.1a

  1. Now horbc doesn't rename Server.run() to Server._run(). You have to change your code if you call _run() remotely.
  2. You don't need to call a constructor of a remote object explicitely. If you want, you can call a constructor after creating a proxy.
  3. HORBException becomes a subclass ob java.lang.RuntimeException. Thus, you don't need to catch or declare HORBException explicitely. Remote methods will never return IOException. NetException which is a subclass of HORBException will be thrown in case of network error.
  4. Stub methods in a proxy are synchronous. Thus a proxy can be shared by multiple threads. If you don't like synchronous methods for speed, compile a server class with -nomethodsynch option with horbc.
  5. You don't need to instantiate horb.orb.HORB. But, the horb.orb.HORB class will be removed in HORB 1.4, please remove "new HORB(param)". To set default port number for outgoing connections, use "HORBClient.setPort(portnumber)" instead of "new HORB(portnumber)". See examples/clientServer/Client2.java
  6. If your program invokes a HORBServer by "new HORB(true, portnumber)", use "new HORBServer(portnumber, "HORBServerName", null) instead of that.
  7. IOCI will be reorganized in HORB 1.4 for extensibility and durability.
  8. "new Server_Proxy()" can take a URL string as a parameter as well as HorbURL. For example, you can write "new Server_Proxy("horb://host.etl.go.jp:8444");". The URL string must begin with "horb:".
  9. Static variables are not copied during object passing.
  10. Transient variables must be declared as 'transient'. 'foo_Transient' notation is obsolete.
  11. Some methods in horb.orb.HORBAgent changed their method name. getClientNetAddress() -> getClientNetAddress_Local(), getClientINetAddress() -> getClientNetAddress_Local(), getClientHostName() -> getClientHostName_Local().
  12. SOCKS is supported by the class Socket of JDK 1.0.2. Your standalone HORB client can connect outside over a firewall, if you have a SOCKS server on your firewall machine. I don't now where the documentation is. But I found such coding in java.net.PlainSocketImpl.java or something like that.

Changes in 1.2.1a (96/08/30) since 1.2.1

  1. Now HORB works with Java JDK 1.0.2. Three 'public' were added in IOCICommon.java so as to avoid runtime error.
  2. Proxy._wait() returns false when it timeouts.

Changes in 1.2.1 (96/05/15) since 1.2 (96/03/23)

  1. Persistent objects and invitation works fine.
    horb.orb.FileIOCI and horb.orb.ObjectTable were compiled without -O option of javac. javac in Java JDK 1.0.1 has a bug around optimization.
  2. HORBServer.startACL() becomes static.

Changes in 1.2 (96/03/23) since 0.2 (95/12/23)

  1. support inheritance in remote method call.
  2. support inheritance in object passing.
  3. add horbstat command.
  4. add HORBAgent interface for remote server management.
  5. horb -v displays stack dump of remote exception.
  6. object passing passes protected and static variables too.
  7. HORB.registerInstance() was moved to HORBServer.registerObject().
  8. a horb process can have multiple horb servers.
  9. ThreadServer catches ThreadDeath for cleanup.
  10. HORBServer has many local services such as debugging() and setDebug().
  11. Proxy._getThreadName() returns the thread name of the corresponding server thread.
  12. stop, suspend, resume HORB threads.
  13. add distributed access control list.
  14. daemon object can specify port number. 0 for any port.
  15. hidl was renamed to horbc.
  16. horbc -delete works.
  17. constructor must be called after creating a remote object.
  18. _threadEndHook() is called when a client gone if the method exists.
  19. if remote object has explicit finalize() method, it can be called remotely by _finalize() of the corresponding proxy object. finalize() might be called twice.
  20. horbc -ignoresuper option ignores super class.
  21. Foo_Implement.java is renamed to Foo_Impl.java.
  22. IOCInterface is renamed to IOCI.
  23. BasicIOCI -> IOCICommon + BasicIOCI.
  24. add remote object storage.
  25. you can pass arbitrary structured objects.
  26. add fofrun command for persistent programs.
  27. ORB ignores reconnect failure during passing a remote object reference.
  28. BasicIOCI passes its signature and version number for version checking.
  29. horb -conf option for configuration file.
  30. server can call methods of applets by the invitation mechanism.
  31. Hooks. _reviveHook(), _freezeHook(), _threadEndHook().
  32. remote run() method should be called via _run().
  33. add asynchronous method call.
  34. version checking between proxy and skeleton. add version number by horbc -major 3-minor 2.
  35. username, password check.
  36. toString() cannot be used as a remote method.
  37. Now you can send an array including nulls.
  38. add strict flag in IOCI. if this flag is false (default), ORB ignores proxy not found error.
  39. String can be passed as an argument that is typed as Object.
  40. HorbURL(null, null) means "horb://localhost/".
  41. RemoteException.toString() returns the original message of remote exception.
  42. class name is checked during connectObject.
  43. BasicIOCI can be a superclass.
  44. proxy class inherits throws clauses from interface or class.
  45. horbc can generage proxy class from an abstract class.
  46. now horbc -d option works.
  47. source of orb and horbc was moved to classsrc.

Changes between Alpha 0.1 (95/11/29) to Alpha 0.2 (95/12/23)

---- Bugs Fixed ----

throws clauses were ignored
Class horb.idl.ClassFile.ClassFile now supports throws clause of method definitions.
hidl compiler on solaris couldn't call javac compiler
Now hidl on Solaris can call javac compiler. Thanks, Xavier. hidl calls class sun.tools.javac.Main instead of javac command.
hidl causes class "foo_Implement" not found error when an interface is used to pass an object.
A skeleton class instantiates foo_Implement not by new but by Class.newInstance().
proxy methods in proxy classes throw HORBException and IOException.
Since Java JDK Beta2 doesn't allow ignoring exception, proxy methods throws HORBException and IOException.