Warning to readers: this post is pretty much a dialogue between Gregg and I on SOA and JINI. Not of much interest to others.

On Dec 23, 2008, at 9:24 AM, Gregg Wonderly wrote:

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.

My question was what if WINI, XINI, YINI and ZINI were Java? If so, JERI would not be involved, for example.



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".

Specifications sometimes are enhanced by creating as much non- conformance as possible. You have to have MPEGs read one way but they can be written any way. Standards should be as lean as possible to let innovation work. Don't you agree?



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.

There is not such thing as a "service, plain and simple". SOA is not a sudden discovery that there is such a thing as services. Services are as old as the hills and SOA is not. The type of service in SOA does not predate SOA. SOA services are defined by business people and those people do not have to know a single thing about technology to do that.

A Jini client is a client of a service, but may be a service itself.

A SOA service is a producer, a producer that encapsulates its state. The SOA producer knows nothing about the consumers: SOA transactions are stateless. Nothing means nothing. The consumers also know nothing about the producer: they too are stateless. Nothing also means nothing here. There is an SLA that the system provides. The system, consequently, requires that integration logic be decoupled from the business logic.

Service Oriented Architecture includes no specification of technology.

This depends on what you mean by "specification". SOA requires that the communications be event-based. That certainly has a huge impact on 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.

SOA is not a problem. SOA is a solution. So, talk about SOA certainly should have something to do with solutions.

They might discern that you have particular types of services, they might learn that you've embraced various details of an SOA.

I don't understand this. Not sure how you can talk about a SOA like this.



When the rubber hits the road, you have to decide on a technology that provides the features of your SOA.

This too does not make sense to me. Technologies have nothing to do with SOA features. Those features are architectural and paper bound.

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.

This is totally unconnected to a SOA.



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.

This all has nothing to do with SOA that I can see.



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.

How are we marshalling with SOA?  That does not make sense.



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

Yes, which means that it is totally antithetical to SOA, which does not mean it is worthless. Just that it is different.


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?

Pretty much everything you said about JINI was confirmation that it is antithetical to a SOA service and the implied sorts of communications that must exist between consumers and producers that know nothing about one another.



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.

How so?

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 JINI spec is an end product. I am interested JINI but am also interested in a little wider or higher view than the JINI spec. Interfaces are the leverage points in an architecture. I am more interested in interfaces.



The services in River are implementations of the spec.

I am not quite sure what an "implementation of the spec" would be. I do know what an implementation of an interface is. I also know what compliance with a spec would be.

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.

Dan said he would resign? Sorry to hear that. I don't have time to read all these posts.



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.

If you think that OSGi is merely a clever way to use class loaders, you are missing the boat, I think. OSGi provides a lifecycle service and is a system with emergent properties far beyond a mere class loader mechanism, which is probably a tautology but a good one.



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).

SOAP today is not the SOAP Microsoft intended. Indeed, the use of SOAP today is almost 180 degree different than the original Simple Object Access Protocol intentions.



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.

I understood you and still understand you to say that people go with or against change depending upon how they assess the suggested change. I am disagreeing with that. I think most people, the vast majority of people, will fight against change simply because it is change with no assessment at all. I am not saying this is bad. It may be good, right, mete, etc. I don't know. I do know that with the status quo most people have their part and they don't want the status quo changed because then they will have to reinvent themselves. I would be amazed if the conversation in River went different than it has. Here is a technology with great promise that is on the edge of distinction and will have to be reinvented from a different direction if it does not succeed and it is not responding to this pressure on the whole. This is normal.

I always have liked the explanations given by Thomas Kuhn in Sources of Scientific Revolution.




Reply via email to