For myself, the primary consideration is whether the arguments in RPC calls are actually "downloaded classes" vs "downloaded data". In the simple sense, "downloaded classes" are "downloaded data".

I've made a lot of arguments about how RPC at the most basic level, is a single message, "invoke" with arguments of "the object", "the method" and "the method arguments".

What some people seem to believe, is that "downloaded data" is much safer than "downloaded code". Practically, "downloaded data" has to be structured in a way to be consumable, and it can also be "manipulated" to cause the "receiving agent" to misbehave while processing the data (the world of Internet virus and worm manifestations). The obvious thing is how much of a problem the misbehavior actually causes.

The most simple explanation of the problem with Java/Jini, for me, comes down to the fact that deep inside the implementation is the act of unmarshalling the object references associated with the parameters to the method invocation.

It is the simple fact that the "downloaded data" can "do some stuff" without control of the "application" (the infinite loop, memory exhaustion and other uncontrolled activities including stack overflow) that creates the problem.

The "receiving agent" is the JVM, and while it has ample control over the content of the "downloaded data" to "execute it correctly", that is completely orthogonal to "correct execution" of the application that the downloaded software is now "alive" within.

As Sim says, the trust relationship is the current "idea" of how to make this a tractable issue to deal with. As Zoltan also suggests, "downloaded data" can be a more politically correct solution for many people because it feels (and actually is because of the previously mentioned issues) safer.

The Jeri endpoint and invocation layer technologies still provide the opportunity for eliminating the use of live Java objects in remote applications. An invocation layer factory could provide the ability to convert the entire method invocation into an XML document which is transferred via SOAP, raw HTTP, or otherwise, for example.

We (the Jini community) have stood around and said this, but have largely not demonstrated it publicly. We have also not thoroughly demonstrated how the other tools in the Jini toolkit can simplify distributed applications by building something that works in the open and is clearly not "just another implementation of something already done".

But let me be clear, I am talking specifically about the Jini toolkit distribution. There are things like RIO, Seven, Paremus' work and many other more focused examples of the use of Jini for all kinds of real solutions. But, the community at large seems to have a hard time documenting and endorsing these things, which makes their visibility limited.

We need to work on a view of Jini that includes the whole range of problem domains and solutions that exist now, and show how "downloaded data" that is actually "downloaded code" can be a viable solution which in the end, simplifies your application because you don't have a whole new layer to add to provide "the other agent" that will use your "downloaded data" to make your application work.

Gregg Wonderly

On 9/29/2010 3:44 PM, Peter Firmstone wrote:
Sim,

Very well said.

+1. Peter.


Sim IJskes - QCG wrote:
On 29-09-10 10:26, Zoltan Juhasz wrote:
I'll think about it a bit more and come back with issues. Let's discuss
where Jini should be heading on the Internet.

I think, there is no other direction than going internet. Currently people and
organisations like to make a simple distinction. LAN is safe, internet is not.
With the proliferation of trojans, and the knowledge to writing them, the
concept of a safe LAN is impossible te keep. So instead of following the crowd
with increasing investment in firewalls, IDS technology to keep our LAN clean,
we should jump in at the other end. Expose our technology to the most
dangerous environment possible. The Internet! A jini enabled device should
survive and maintain their function, when deployed on the internet. We should
create best practices for internet deployment and work on the biggest hurdles
right now, which are:
- lack of broadcast capabilities
- firewalls
- trust relations

Gr. Sim





Reply via email to