Peter Firmstone wrote:
Brian Murphy wrote:
On Fri, Mar 19, 2010 at 7:21 PM, Peter Firmstone <[email protected]>
wrote:
The old jar's are easily removed, but what about obsolete / duplicate
interfaces, any suggestions?
I'm not aware of any duplicate interfaces. Could you be more
specific?
I don't have any specifics in mind, just posing the question. I was
hoping there might be a way to reduce the conceptual codebase size a
developer has to get over to participate in River development.
Actually I'll correct myself here, it isn't the codebase size per say,
it's determining each part and it's purpose, I guess what's really
needed is a good update of our doc's, for the basics of utilising Jini
and the current River implementation, then we could have an advanced
addendum where implementation details and platform issues or corner
cases are discussed, details which are generally only documented on user
list archives and research articles. I did make some recent changes
attempting to dispel some confusion over what constituted the Jini Spec
and the River Implementation. See
http://incubator.apache.org/river/doc/ for our current docs, perhaps we
should create a Jini Architecture Specification Version 2.0? Copy 1.0,
remove all references to using RMI and document the new methods.
Sim & Gregg had a recent discussion about utilising a Static Factory to
help beginners grasp the power and purpose of Jini / River, perhaps
someone has an implementation they might like to contribute?
I believe there were some deprecated items that were scheduled
for removal after the appropriate number of releases had occurred.
Don't know what interfaces would be considered obsolete though;
such a designation might be more about opinion than functionality
or utility.
There have been some comments in past threads about the
value of services like the lookup discovery service and the
lease renewal service; both of which have little usage as far
as I know. Some have even questioned the usefulness of the
event mailbox service, but for what it's worth, I can tell you that
I know of projects/companies that do use that service. So I
don't know where the line should be drawn, or what criteria
should be applied when deciding when something should be
removed.
Do we need to continue supporting rmic stubs? Should we remove
facilities
for RMI communication other than those utilised through JERI?
Are you talking about just removing the generation of the stubs
in the build scripts, or are you talking about the use of JRMP
for example?
I'm not against the use of the JRMP protocol, provided that client and
the Service
implementation don't depend on it, so the Service and client can use
other transport
protocols also.
Exporter exp = new JrmpExporter();
Provided only Exporter methods are used, it can be replaced by any
other Exporter
implementation.
However I believe we still support (discouraged) applications
extending UnicastRemoteObject which implicitly exports a proxy and
require the generation rmic proxy stubs. Having two distinctly
different mechanisms for Remote proxy object creation for Services
causes confusion. At a minimum we need to change our docs to reflect
that.
Seeing that a Service is designed to be an abstraction where service
implementations can be exchanged, it would be wrong to tie a client to
an implementation detail of the Service, which is what extending
UnicastRemoteObject does.
The interface net.jini.core.lookup.ServiceRegistrar has the following
method:
EventRegistration notify(ServiceTemplate tmpl, int transitions,
RemoteEventListener listener, MarshalledObject handback, long
leaseDuration);
Where the MarshalledObject is an instance of java.rmi.MarshalledObject.
Jini has it's own later version of
net.jini.io.MarshalledInstance
net.jini.io.MarshalledObject
Where the latter is a convenience class for converting
java.rmi.MarshalledObject.
This is a little off topic; I've been looking into what's required to
support Java cdc, namely a minimum of Personal Basis Profile 1.1.2 (a
subset of J2SE 1.4.2) and while it supports java.rmi.Remote and all
the exceptions, it doesn't support the server component of rmi and it
lacks java.rmi.MarshalledObject.
There are a significant number of devices: Amazon Kindle, Blue Ray
Players, Set top boxes, extending this profile.
Unfortunately interfaces cannot be changed, however there is something
that can be done:
A super interface without the offending method inserted into the
inheritance hierarchy. However what is actually required to support
cdc is still under investigation.
I'm not sure about the usefulness of manually generating
the stubs.
Are these stubs generated for Clients and Services utilising
JrmpExporter?
I had a search through the source code I can't see any real dependency
on using UnicastRemoteObject?
But if you're talking about removing classes like
JrmpExporter and IiopExporter, I'd be very much against that.
No, Exporters are part of Jini 2.
Brian
Best Regards & thanks for the reply,
Peter.