Michael McGrady wrote:
There is the expansion point provided by JERI which allows the invocation layer and transport layer to be non-java centric. This is where WINI, XINI, YINI and ZINI need to be interfaced.

What if they are Java?  Would you still say this?

Yes, all Java applications can and should interface to other Java applications using JERI if they want to participate in a distributed systems environment, based on the principals of the Jini specification. It's because this layer provides the standardization for invocation and transport that I say this. It allows for a SOAP stack or any other invocation layer to be plugged in so that Java objects go in and out of the users (clients and servers) environment.

For Java software, the JERI stack codified in River, provides the ability to plug in the needed invocation details (starting at the BasicILFactory point). The Exporter allows this invocation layer and an endpoint technology and security constraints to all be unified into a single point that allows them to be plugged together and arranged to work as needed.

Why? Because the spec has semantics in it too, and those semantics (like RMI call-by-value) need to be supported at the Java interface level for a Java written Jini bit of software to be compatible with other Jini bits of software.

But, is this good or not good?

The specification of anything that is a standard narrows the path for non-conformance or other forms of confusing that create the need for "work arounds" or "better solutions".

In the world of SOA, there are all these concepts, but they are described independent of a technology, and they are honestly more akin to "best practices" than they are as "architecture."

I definitely do not agree with this. First, comparing SOA and JINI is comparing applies and oranges. A SOA service is nothing like a JINI service. SOA definitely, to my way of thinking, is an architecture.

A Jini service is a service, plain and simple. A Jini client is a client of a service, but may be a service itself. Service Oriented Architecture includes no specification of technology. What this means is that you can talk about SOA all you want, and in the end, that conversation is valueless in terms of solutions, because it doesn't let anyone know how they might actually get work done in such your SOA. They might discern that you have particular types of services, they might learn that you've embraced various details of an SOA.

When the rubber hits the road, you have to decide on a technology that provides the features of your SOA. Some of those technologies might be things like pens, postit notes, white boards, projectors, chairs, tables etc. Which are services to their users in that they allow certain tasks to be carried out using the specific mechanical interfaces that they provide.

But when you get into the realm of software, then you have to decide what will be the pen (invocation layer), ink color (marshalling technology) and paper (transport layer) of exchanges between software bits. These decisions dictate a lot of other things about what the software can do with the other entities in the system. So, many people end up with a custom, combined invocation layer and marshalling layer that hide SOAP/XML or whatever technology they've decided on.

As soon as you do that, you've effectively wrote off all features of the IL and marshalling that you don't expose in that layer.

This is where Jini differs. With Jini, that IL and marshalling is completely at your control. It has exact details specified in simple terms.

At the method layer:
o       all methods throw RemoteException to indicate a problem in the
        IL or endpoint mechanics.
At the invocation layer:
o       method values are passed by value always.

There are other things about security constraints which can change some of
the types of RemoteException which will occur, but still, you get a 
RemoteException.

All of these we know will always be present in a Jini system. So, we can be very deliberate and very specific about how to deal with the problems that can occur.

> It
means "Service-Oriented Architecture" which is not dispositive but is a strong hint or something has gone very wrong. JINI is really not SOA oriented at all. It has uses which really interest me but SOA is not one of them.

Okay so with my explanation above of my view of Jini, how would you clarify your view that Jini is not SOA "oriented". What features of Jini keep it from working as a client and service creating technology?

With the Jini spec, came the codification of so many important and related concepts which are all about making distributed systems be resilient and robust.

I believe the JINI spec came out of the concepts rather than vice versa. I remember well when JINI rolled out in the traveling Sun shows. I have been a JINI fan for a while, even if not a user.

The Jini spec was created as reverse engineering exercise I believe. It just means that it was codified as a text document after the concepts where codified in software. Jini still existed as a concept, no matter what its representation was.

JavaSpaces, in my world, wants its Entry, Transaction, etc interfaces in JavaSpaces so that JINI must compete with WINI, XINI, YINI and ZINI in using the JavaSpaces.

Make sure you are staring at what is presented as the JavaSpace spec, and not what outrigger is doing in exporting a JERI endpoint which uses BasicILFactory... Any external entity can use JavaSpace if it has access to an invocation environment that allows it to. JERI allows plugability so that others can get in, without being Java even.

I have said this before but I will repeat it again, I only look at the interfaces when thinking about a system. The implementation is not of particular interest to me.

The spec is what you should consider first. That is the behavioral description of what has to happen. The interfaces, which exist today, are one way to do the things that the spec details. No other implementation has appeared with a different API, so the net.jini stuff has sort of become what some thing of as Jini. I consider the net.jini interfaces to represent a Java codification of the spec, but not necessarily the only one. It wouldn't be great to have lots of different version of the same interface running around which supported the same spec behavior, but used entirely different types etc. So, certainly the existing net.jini definitions of classes and interfaces are what meet the spec and provide a portable platform.

The services in River are implementations of the spec. They are not the only way to do that and they have a particular orientation toward working together and utilizing each other for a combined system that presents all the concepts of the Jini specs as a unified distributed systems toolkit.

So far as I can tell, as yet there is no River, i.e., that it is being created. Exciting stuff! I realize it comes with a history.

From a simple perspective, River is the JTSK, which has been started as a podling at Apache. It works, does what a lot of people need, and presents challenges from all the perspectives that Dan and Niclas have been going back and forth about, as well as others (I have mentioned some that I perceive).

So we have to graduate... That doesn't mean a particular set of changes must happen to the codebase. It means that we have to graduate...

What to do?

Realize that your world has a non-zero intersection with other peoples worlds in terms of what "features" you want your distributed application to have.

This says that my world intersects with others' worlds.

When there is distinct value in a change, people tend to agree or gravitate toward that change.

Not according to my experience. Generally speaking they show their calcification in my experience. Socrates might argue the point. So might Kepler. Ever hear people talking about modern art? Notice how readily each generation of adults so gladly accepts the new living styles of the youth? The new music that new generations bring is especially hated. We still talk about affairs of the heart using an analogy that was broken so long ago and so bad that it bogles the mind it could have any currency. No, I cannot say I agree with this at all. And that is okay by me.

I said gravitate, not move. Society goes in a direction that the minority push the hardest towards which has the least resistance of the majority. Resistance is changed by informing people, enacting rules to remove the right to resist, hiding the reasons to resist etc.

The value proposition is not the only reason things change, but in software, value has a number of perspectives. For example, Dan said he would resign as a committer if it was decided to focus on a local only javaspaces and jini infrastructure. That would create change, but not as a value. Instead, it woudl be a "removal of resistence" more than an agreement to change.

Let me mention that OSGi has taken 10 years to get where it is and the big breakthrough was when it was adapted by Eclipse. JINI is no youngster either. There are lots of technologies started in the late 1990s that are just coming around.

OSGi had lots of problems and incomplete bits and pieces. It was a concept which need lots of refinement. By the time all is said and done, it will not be much more than a restatement of the rules and API of Java classloaders expressed as a textual description of what one would code. Does that make it valuable? I'm sure many, who don't understand what happens in the trenches, how things relate and what things must be done, will feel fine to use OSGi, because it will create appropriate limits and controls to cause them to do things largely, correctly. But, it will present limits on the total possibilities, or it will just be re-expression of the Java language constructs that one can program class loading and container systems with today.

I watched business computing go from mainframes, batch processing, databases, visicalc, R/2 SQL, R/3, data warehouses, www, EAI, BPM, packaged applications (CRM, SCM, ERP), MDA and did not see this march of reason you suggest. It was always emotion and based on fear and entrenched positions. The same happened with distributed technology going from VT100, VT3270, client/server, TCP/IP sockets, RPC, NFS, CORBA, stored procedures, EAI, MQ, EJB, SOAP, WSDL and there was no more ease of transition. Not at all. The same things happened going from Assembler, COBOL, SIMULA, Pascal, Modela 2, Smalltalk, Ada, PROLOG, C++, Java, and C#.

Now that we are entering the age where the Ilities are supreme and the realization that they are best handled by a good architecture rather than a post-architectural workaround, the howl of the Greek chorus continues unabated.

Well, at least that is how I see it. I definitely did not see any easy transitions on anything at all.

What happened in the past was that companies like IBM (hardware) and EDS (software) ran huge businesses that needed to make very large amounts of income to survive. The costs of their goods and services was perceived as unavoidable due to licensing, embedded capital expenditures etc. They drove the technologies because they dictated what got used. Open source software, simplifying library packages etc have lowered the bar for what you need to know to create your own solutions.

SOAP is microsoft trying to say "we are open" while still maintaining control. They drive hard to make their software systems a standard because governments around the world are demanding open standards (as you stated).

When there is a lot of discomfort in a change people tend to push back. Discomfort comes from more than "that's the name it's had for years" in this case.

For what it is worth, this also is not my experience. That is plenty reason for most to push back.

Not all of course and no one in River for sure. Also not anyone that lives within 100 miles of me. ;-)

I hope you accept all this with a pinch of salt but I do definitely not agree with your statements about how change is embraced in the world.

Again, I didn't say change was embraced, I said value was embraced. Sometimes that creates change as people gravitate in the direction of making use of a perceived value.

Gregg Wonderly

Reply via email to