but then how were people doing that when that
buzzword didn't exist?
Not having a word for "rock" doesn't prevent monkeys
from pounding one rock upon another. Actions aren't
limited by vocabulary.
You know, like if computing existed before that
Microsoftism from the DCOM era appeared (*).
Seriously though, that page gives one reasonable
definition of marshalling but it doesn't say that
the term *is* misused.
There's no reason, in a definition, to list all the
misuses.
Does it imply validation as another poster said?
Not necessarily.
Does it imply going over the wire?
No. It is sufficient for marshaling to be necessary,
that the data travel from a program/routine compiled
in one language, to one compiled in another, since
the binary formats for the same block of data are
only rarely identical between languages. This is a
well known problem with C structures. Marshaling is
useful over-the-wire because computer hardwares
don't agree on which end of a "longer than a byte"
data entity comes first, much less on internal
formats.
I'd think "yes", as does the definition you gave.
But there are many people (blogs, articles, Usenet
postings) who definitely use the term for data
that does never leave the computer it was
"marshalled" on.
Is it related to XML or not?
XML is used for data marshaling, in particular it is
often used that way in Java, but data marshaling
need not involve XML, there are other ways to
accomplish the same thing. The big, big advantages
of XML are 1) it is standardized, 2) it is
self-describing, and 3) it has several standardized
validation mechanisms.
Is it related to XML in the Java world or not?
As above. I'd certainly _recommend_ XML if a data
marshaling task is at hand, but I can't pretend
there aren't other ways to do it, Java or not.
It is a natural outgrowth of other uses of
marshaling, so only the usage, not the term, was a
computer person's "invention", and the usage is so
natural the "inventor" probably didn't notice the
act.
Probably, but probably not in that usage. Most of
English has ended up trademarked, somehow.
if the answer is "nobody knows" and "no" to these
two questions, then it's not going to help to have
a precise definition (as opposed to, say, "Design
by Contract" which has been coined and trademarked
by Meyer, this helps to narrow the definition [I
like this example]).
There's not much use for _a_ precise definition
anyway, since the term has meanings outside
computing, and can be infinitely re-mapped from
those outside meanings to new places that computing
needs such a term.
Note that even when terms have very precise
meaning (eg "inner" or "nested" in Java, as
defined by the JLS) they're being misused. So
when you start with a vague term like
"marshalling" that apparently had various meanings
through the computing ages, you're unlikely to
find many people correctly using the term (which
helps spread misconceptions).
Umm, if it cannot be narrowly defined, and it
cannot, then you're hard pressed to call _any_ usage
"incorrect", such usages are merely "extensions".
Based on these facts, I tend to avoid the term as
much as possible in documentation/talks/whatever.
I wouldn't do that. The main meaning, of arranging
data into a new, possibly standard, format robust
enough to survive a transition across any interface
where the original format is incompatible between
the sides of the interface, is clear enough.
There's usually always a less ambiguous way to
explain what's going on (I'd rather write a few
more words than have people not understanding or
misunderstanding what I'm writing).
As an example, the OP asked:
OP: "....:Is is possible for an EJB client to marshal an object
OP: of class java.lang.Class to an EJB?"
OP: what does "marshalling" means in the above question?
What has gone wrong for such a question to appear?
There is nothing wrong for such a question to
appear, the OP is simply asking for clarification of
an unfamiliar term.
To me there's more to it than simply saying
"here's a definition, computing wouldn't exist
without it"... (slightly exagerating
"Here's a term, here are its historical roots, here
are the ways it is commonly used in computing
today" seems to suffice, though.
(*) I was already programming since many years
when I first encoutered the term (actually I
probably already had forgotten COBOL when I first
read the term "(un)marshal(l)ing" (**) and I
attributed it back in the days to a DCOM-specific
term, but I was wrong as another poster pointed
out).
I'd be floored if MicroSoft, the essense of adopting
the work of others, _invented_ the term. It does,
after all, extend back to the marshal of a parade,
who in the act of marshaling lines up the
participants in a specific arrangement, so it
predates computing, much less MicroSoft.
The 1913 online Merriam Webster's unabbridged
dictionary has this as its first definition of the
verb "to marshal".
"To dispose in order; to arrange in a suitable
manner; as, to marshal troops or an army."
http://machaut.uchicago.edu/cgi-bin/WEBSTER.sh?WORD=marshal
(**) I wrote "(un)marshal(l)ing" for the spelling
with a single "l" is quite often seen ("english
english" vs "amercian spelling" ?)
I'm not sure who owns which, though "traveller" is
the British spelling and "traveler" the American
spelling, so maybe the doubled consonant is the
British choice. The 1913 Websters has both
spellings "marshaling" and "marshalling".
HTH
xanthian.