Java RMI
The Scoop
Remote Method Invocation (RMI) is the object-oriented remote procedure call (ORPC) facility for distributed programming in Java, since the 1.1 days. RMI also served as motivation and a proof-of-concept for jini, javaspaces, and numerous other solid distributed networking technologies. Of course, anyone from the academic distributed programming world knows Wollrath, Waldo, and Riggs.
Yet, despite a myriad of books over the past five years on network programming, RMI always seemed to be the stepchild: relegated to a single chapter (buried on page 496, of course) that always said that RMI was "better" than sockets and "worse" than CORBA. Now, granted that RMI is operationally rather trivial compared with CORBA and was (prior to RMI/IIOP) a unilanguage distributed ORPC technology -- but still. For those of us who have to interoperate with RMI (whether welcome from the Java world or not), the lack of in-depth technical analysis (beyond the spec) has been a hindrance.
Fortunately, this trend is finally starting to buckle with the release of several in-depth RMI books including: Java RMI, Java.rmi, and Mastering RMI: Developing Enterprise Applications in Java and EJB. As evidence of this problem, Grosso states the same in his introduction – and actually pulls it off without sounding self-serving.
I chose Grosso's text because of the cute squirrel (aka the O'Reilly brand), Grosso's recent series of articles on the hashbelt algorithm, and his unadulterated academic knowledge management and mathematics bent. Fortunately, I was rewarded: this animal returns to O'Reilly's pre-bubble quality. Koodoos to both Grosso and his editors (Knudsen, Loukides, and Eckstein) for getting the train back on the track.
What's to Like
Bottom line is that Grosso simply covers the topics and does so with solid conceptual and code coherence – even by O'Reilly standards (over 40 animals grace my shelves). His prose and explanatory patterns make it clear that he has actually gotten into the real-world of RMI, and doesn't hesitate to highlight both good and bad parts. You cannot be dozing off when you read this (at least not if you expect to understand it) -- this is written by someone with solid analytic thinking skills and it shows. After too many years of "there are no caveats" journalism and publishing, this is a nice reversion. Further, I can only imagine that his current employment is a testament to his real-world knowledge of RMI.
Grosso hits on a vein which is not well-appreciated: when not smoothed over by marketing people, RMI is actually a mostly-capable ORPC technology. Certainly activation and RMI/IIOP really began to make things interesting, from Java2 and EJB respectively. Discussion of reference-counted distributed garbage collection, a feature missing from CORBA and other popular ORPC standards, also contributes a nice bonus (although Grosso's ardent attempt to debunk the "RMI doesn't scale" argument is rather weak, even going so far as to rehash the definition of Threads and threadpools – this complexity mismatch is an ugly giveaway that a well-intentioned editor went astray).
What sets this text apart is the tight focus on nitty-gritty implementation details of RMI itself. After all, these RMI texts are way too late to the game to reteach how to write "baby RMI" code: 5 years after the original spec, you either know how to write RMI or you don't. Grosso simply gives you a solid in-depth analysis of all the obscurities of the RMI runtime, custom sockets, dynamic classloading, activation, MarshalledObjects, and HTTP tunneling. In other words, all the interesting real-world topics whose official documentation is poor and which the various RMI tutorials (written many years ago) ignored.
While canonical, the single banking example followed through the text was well-executed, although authors continue to underestimate the prevalence of readers who consume textbooks non-linearly.
What's Not to Like
RMI/IIOP is shaping up to be a fascinating contributor to the "cleanup the EJB mess" discussion. Dedicating a measly 13 pages (beginning on page 503, no less) to this critical topic seems a bit of an oversight – but maybe that is just my CORBA sentiments speaking. Either way, the mechanics of CORBA are sufficiently intricate in real-world deployments that saying "if you can build an RMI system, you can build a CORBA system" (p. 511) is a bit brazen (or naïve) for my tastebuds. I can only chalk up this oversight to deadline pressure, which is probably a Good Thing, since the book was supposedly in production over almost 2 years.
A minor point: the top-level organization of the book (Part I, II, III) is arbitrary, ignore it -- use the chapter organization instead.
The Summary
Quality: solid practical insight into the nitty-gritty operational implementation details of RMI in the real-world. You simply are not going to find solid O'Reilly-quality coverage of the topics elsewhere.
Relevance: If you are responsible for making RMI actually work in production systems, this might well be the next animal on your shelf – either now or later. If you want a breezy afternoon saunter around RMI, skip this. Instead, google one (of the many) free tutorials online."
You can purchase Java RMI from Fatbrain. Want to see your own review here? Just read the book review guidelines, then use Slashdot's handy submission form.
Ralph Jewhater Nader Read This Comment
:)" :)
Ralph, I wanted to do this in this most potentially embarassing
way possible, and I figured doing it here and now, in front of a
quarter of a million strangers was as good a way as any.
I hate you more then I can describe within the limits of this
tiny little comment.
We've lived without you for many years now, and I've known for
most of that time that I wanted to spend my life without you.
Enough rambling. Won't you just fuck off and die ?
Update 15 minutes 30 seconds later:
Subj: "Arg", message body: "Dolf. You made me cry.
Hazah! He's getting pissed!
Smile, don't click...
Linux only:
fixed sound crash, going around memset bug in glibc i586/i686
Wondering how a bug could exist in such a fundamental basic function such as memset, we contacted Heinous Turdballs of Linux fame, and he was kind enough to give a few minutes of his time.
Q: Thanks for your time in answering some questions for us
A: No problem. As you know, I am umemployed and have no life, which is of course how I got involved in Linux in the first place.
Q: OK, Mr. Turdballs. By the way, do you mind if I call you 'Dirty GNU Hippie'?
A: I would rather you didn't. I prefer the term 'Dirty Linux Hippie'. As you know, my ratty and nasty hairdo, my rancid steaming armpits and my putrid stench of body odor makes me qualified, I think.
Q: I quite agree. Can you tell us about the memset bug?
A: Sure. We dont really know who is responsible for the bug. We don't know who is making changes, why they make them, or when.
Q: Hmm.. sounds chaotic!
A: It sure is. But Linux is free!!! We are dirty smelly GNU hippies with natty greasy long hair, enjoying the FREE LOVE of GNU software!
Q: Come to think of it, Linux sure does crash alot.
A: Yeah, but that will be fixed in the service pack - er, I mean kernel release. We also have support for some new device drivers that came out 2 years ago. You just have to recompile your kernel with the correct command line switches, after configuring your make file and making the correct edits to /etc/fstab. By the way, if you screw that up, you are really fucked.
Q: Sounds good. So, how do you organize who is working on Linux?
A: Mostly we don't. We pretty much let anyone have at it with the code base. We figure at some point, someone who actually knows something about operating systems will do some work on it. It has to happen eventually, its like a million monkeys banging on a million typewriters. Literally.
Q: That's great. What normally happens?
A: Normally someone comes in and fucks everything up completely, but we don't know who they are because we never actually talk to anyone who is making changes to the code. We assume that if you are capable of signing up for a Hotmail account, you must be pretty good at computers and you should be a tech lead in a major open sores project.
Q: Open sores?
A: Yes, I am sure you have heard of it. Its free, therefore its good. Check out sourceforge.net, where bad project ideas go to a quiet and lonely death when the developers realize that 12 year old kids should not be SQA leads when they are constantly getting atomic wedgies because they wear shirts saying "Put Linux Anywhere".
Q: OK, Back to the topic. Whats a typical day in the life of a Linux developer?
A: Usually his mom wakes him up in time to catch the school bus, like 8:00. We encourage this because we want the developers to be well edumacted.
By the time he gets home at 2:00 (the Linux enthusiast does not participate in socalled "extra cirricular" activities, or worry about being "well rounded" and does not have a "social identity" or "play well with others") he has been beaten up a few times for wearing a "I GNU SPOCK" tshirt.
Then, to take out his frustration, he hammers away at the keyboard for a few hours. If the resultant code compiles, he will go ahead and check it in. Then mommy tucks him in for the night.
Q: Interesting. So who will be in charge of resolving the memset bug?
A: We have a nice prospect in mind. He has a strong background in manual labor and performing menial tasks. I'm not sure what his name is but he has a hotmail account, dAsUpAhZillAZ99@hotmail.com.
Q: Sounds great. I'm looking forward to it!
A: Just keep reading $lashdot, where are the pimply nerds congregate. You may get assaulted by some homosexual linux zealots, but you will learn to like it.
Q: Sounds like fun!
A: Also hang out at sourceforge.net, where bad project ideas go to a quiet and lonely death among the other dirty GNU hippie projects.
Q: Thanks for your time!
A: Tell commander tuna taco I said I will pay in full after I get a real job. Then I will be back for another taco-snotting.
Troll 2 of 109 from the annals of the Troll Library .
.The .average .Joe .Q .Slashdot .reader .may .read .slashdot .at .negative .1 .He .rightly .so .thinks .some .1 .is .underrated .and .actually .some .of .it .is .very .good .stuff .However .he .gets .quickly .annoyed .by .the .negative .1 .page .widenings .and .simply .moves .his .threshold .to .0 .or .1 .So .now .you .have .all .the .regular ."good .citizens .of .slashdot" .reading .slashdot .at .higher .thresholds .So .nobody .is .reading .at .negative .1 .Now .Crap .Flounderson/CmdErtaco .says .his .intention .is .to .destroy .slashdot .However .it's .obvious .his .attention .is .just .to .flaunt .his .own .egomuch .like .the .numerous .linux .zealots .because .page .widening .no .longer .works .as .everyone .has .found .the .workaround .to .go .to .a .higher .threshold .That .would .be .fine .if .it .weren't .for .the .fact .that .page .widening .is .having .an .ADVERSE .affect .to .the .time .honored .art .of .trolling .Trolls .post .at .negative .1 .to .be .seen .If .noone .sees .their .work .trolls .get .bored .with .slashdot .So .what .page .widening .is .essentially .doing .is .running .off .the .trolls .And .this .is .why .it .won't .be .fixed .CmdrTaco .y .slashdot .wins .The .trolls .have .run .off .and .all .the ."upstanding" .citizens .of .slashdot .are .reading .and .posting .at .higher .thresholds .This .is .hardly .contributing .to .the .destruction .of .slashdot
soon, i soon, i soon, i wi ll love bi g dick u then i fill hoever he will ose
.dipshit
dick up my assup my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asswi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my assup my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asswisoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he wisoon, i wi soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my assll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my assll ose
dick up my asssoon, i wi ll love bi g dicksoon, i wi ll love bi g dick u tsoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asshen i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i bsoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my assut hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
.hi
soon, i will lo ve bi and then g dick up my ass
.what
.you
.go
.not
soon, i wi ll lov e bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
soon, i will love big dick up my asssoon, i will love big dick up my asssoon, i will love big dick up my asssoon, i will love big dick up my ass
soon, i will love big dick up my asssoon, i will love big dick up my asssoon, i will love big dick up my ass then he left his house up his ass and shot a dick in my bass soon, i will love big dick up my ass
.
soon, i wi ll love big d ick up my ass
soon, i will love big d ick up my ass
s oon, i will love big dick up my as ssoon, i will love big d ic k up my asssoon, i will love big dick up my as ssoon, i will love big dick up my asssoon, i w ill lov e big dick up my asssoon, i will love big dick up my ass
.
hi
soon, i will lo ve b ig d i then he left the day and went into a dream and fucked my dad up his balls ck up my a sssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
soon, i wil l love bi g dick up my ass
soon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my asssoon, i wi ll love bi g dick u then i fill ahahahaha p m y as s so on, i will love bi g dic k up my a s sso on, i w i but hoever he will ose
dick up my ass
Despite there being a handful of references to XML in the summary, the review doesn't even mention this TLA once. Why is that?
I am really interested in finding how how XML relates to RPC because I keep hearing the two mentioned together and my brain can't put it together without some guidance. My current grok'ing of XML might not be sufficient to accomodate this concept and it'd be great if in the summary XML is mentioned 3 times that there be even the slightest mention of it in the review.
In essence, this review makes me feel that this book doesn't answer my question because the review clumsily dances around buzzwords.
You know you're dealing with a bastard child of technology and marketing when you see that much alphabet soup. I'm sure RMI has its place somewhere, but a large-scale mission critical project is probably not one of them. All those acronyms and not one idea that displaces good old stable client-server.
Its days like these where i really think /. should go signup only *sighs*
"What do you mean you have no ice? Do you expect me to drink this coffee hot?" - Random Customer, Clerks
The Scoop
Remote Method Invocation (RMI) is the object-oriented remote procedure call (ORPC) facility for distributed programming in Java, since the 1.1 days. RMI also served as motivation and a proof-of-concept for jini, javaspaces , and numerous other solid distributed networking technologies. Of course, anyone from the academic distributed programming world knows Wollrath, Waldo, and Riggs.
Yet, despite a myriad of books over the past five years on network programming, RMI always seemed to be the stepchild: relegated to a single chapter (buried on page 496, of course) that always said that RMI was "better" than sockets and "worse" than CORBA. Now, granted that RMI is operationally rather trivial compared with CORBA and was (prior to RMI/IIOP ) a unilanguage distributed ORPC technology -- but still. For those of us who have to interoperate with RMI (whether welcome from the Java world or not), the lack of in-depth technical analysis (beyond the spec) has been a hindrance.
Fortunately, this trend is finally starting to buckle with the release of several in-depth RMI books including: Java RMI, Java.rmi, and Mastering RMI: Developing Enterprise Applications in Java and EJB . As evidence of this problem, Grosso states the same in his introduction ? and actually pulls it off without sounding self-serving.
I chose Grosso's text because of the cute squirrel (aka the O'Reilly brand), Grosso's recent series of articles on the hashbelt algorithm, and his unadulterated academic knowledge management and mathematics bent. Fortunately, I was rewarded: this animal returns to O'Reilly's pre-bubble quality. Koodoos to both Grosso and his editors (Knudsen, Loukides, and Eckstein) for getting the train back on the track.
What's to Like
Bottom line is that Grosso simply covers the topics and does so with solid conceptual and code coherence ? even by O'Reilly standards (over 40 animals grace my shelves). His prose and explanatory patterns make it clear that he has actually gotten into the real-world of RMI, and doesn't hesitate to highlight both good and bad parts. You cannot be dozing off when you read this (at least not if you expect to understand it) -- this is written by someone with solid analytic thinking skills and it shows. After too many years of "there are no caveats" journalism and publishing, this is a nice reversion. Further, I can only imagine that his current employment is a testament to his real-world knowledge of RMI.
Grosso hits on a vein which is not well-appreciated: when not smoothed over by marketing people, RMI is actually a mostly-capable ORPC technology. Certainly activation and RMI/IIOP really began to make things interesting, from Java2 and EJB respectively. Discussion of reference-counted distributed garbage collection, a feature missing from CORBA and other popular ORPC standards, also contributes a nice bonus (although Grosso's ardent attempt to debunk the "RMI doesn't scale" argument is rather weak, even going so far as to rehash the definition of Threads and threadpools ? this complexity mismatch is an ugly giveaway that a well-intentioned editor went astray).
What sets this text apart is the tight focus on nitty-gritty implementation details of RMI itself. After all, these RMI texts are way too late to the game to reteach how to write "baby RMI" code: 5 years after the original spec, you either know how to write RMI or you don't. Grosso simply gives you a solid in-depth analysis of all the obscurities of the RMI runtime, custom sockets, dynamic classloading, activation, MarshalledObjects, and HTTP tunneling. In other words, all the interesting real-world topics whose official documentation is poor and which the various RMI tutorials (written many years ago) ignored.
While canonical, the single banking example followed through the text was well-executed, although authors continue to underestimate the prevalence of readers who consume textbooks non-linearly.
What's Not to Like
RMI/IIOP is shaping up to be a fascinating contributor to the "cleanup the EJB mess" discussion. Dedicating a measly 13 pages (beginning on page 503, no less) to this critical topic seems a bit of an oversight ? but maybe that is just my CORBA sentiments speaking. Either way, the mechanics of CORBA are sufficiently intricate in real-world deployments that saying "if you can build an RMI system, you can build a CORBA system" (p. 511) is a bit brazen (or naïve) for my tastebuds. I can only chalk up this oversight to deadline pressure, which is probably a Good Thing?, since the book was supposedly in production over almost 2 years.
A minor point: the top-level organization of the book (Part I, II, III) is arbitrary, ignore it -- use the chapter organization instead.
The Summary
Quality: solid practical insight into the nitty-gritty operational implementation details of RMI in the real-world. You simply are not going to find solid O'Reilly-quality coverage of the topics elsewhere.
Relevance: If you are responsible for making RMI actually work in production systems, this might well be the next animal on your shelf ? either now or later. If you want a breezy afternoon saunter around RMI, skip this. Instead, google one (of the many) free tutorials online."
...BINGO!!
[Regarding the Physical Evidence at the Auschwitz-Birkenau Concentration Camp (Poland)]
Why was the area between Kremas 2 and 3, the area where thousands of people were marched daily to their deaths, left completely unfenced? The ditches which run the length of the camp perimeter would make a person invisible both to ground fire AND fire from the guard tower. Why would the Nazis risk an attempted escape, especially considering the fact that many inmates were gassed after they had been in the camp for a while, and knew what their fate would be if marched into either of those buildings? Doesn't the Auschwitz State Museum claim that the inmates would often "riot" as they were being marched toward Kremas 2 and 3?
Why were Kremas 2 and 3 not hidden in any way from the view of the inmates? Isn't it claimed at the Auschwitz State Museum that gassings were stopped at Krema 1 (Auschwitz Main Camp) and moved to Birkenau because the inmates were starting to get an idea of the homicidal purpose of Krema 1? Why then were Kremas 2 and 3 put in plain sight of all sectors of the Birkenau camp, with no camouflage of any kind? Wouldn't this just create hundreds of thousands of "eyewitnesses", with everyone in the camp becoming well aware of the exterminations (and with many of these inmates later transferred to other camps in other parts of Europe to "spread the word" about the gassing program)? How could this profit the Nazis?
It is claimed that there were four holes on the roofs of Kremas 2 and 3, which served as Zyklon B induction holes. The best piece of evidence that these holes ever existed is found in the U.S. aerial photos taken of Auschwitz during the war. Is there any discrepancy between the size of these holes as depicted in the U.S. aerial photos, and the size of the holes as depicted on the model of the Krema 2 gas chamber (on display at the Auschwitz State Museum and the U.S. Holocaust Memorial Museum), the size as theorized by Jean-Claude Pressac in his book "Auschwitz; Technique and Operation of the Gas Chambers", the size as depicted in the movie "Triumph of the Spirit" (which recreated a gassing at Krema 2), and the size as described over the decades by eyewitnesses? Indeed, can it be said that the holes as depicted in the aerial photos are ridiculously large...larger than what would have been needed for pouring in a can of Zyklon B gas?
Why are the four holes not present today in the roof slab of Krema 2? The roof slab, though collapsed, is intact and both the top and underside of the roof are still visible. There are two crudely chiseled holes at opposite ends of the roof slab (one is more like a huge crack than a hole), but the other two holes are non existent, and the underside of the roof, with the two-by-fours lining the ceiling still visible, shows no sign of two holes having ever been present. There are also no traces of the two holes on the top of the roof. How can the absence of the two holes, and any traces of the two holes, be explained?
What circumstances would produce the Krema 2 roof slab as we now see it, with two holes visible and the other two non-existent? If the Nazis attempted to erase the traces of the roof holes, why did they stop after two? Why would they expend much effort to erase all traces of two of the roof holes, then not make any effort to erase the two which survived the demolition?
Could the still existing roof holes have been added after the liberation, by the Soviets or Poles? Doesn't Pressac admit that these two holes don't correspond with the positions of the holes in the aerial photos (Pressac says that this might be because the roof "shifted" during demolition, but even if the roof "shifted", that wouldn't account for why these holes, which were supposed to run in a straight line down the middle of the roof, have changed their positions, and are no longer in a straight line down the middle of the intact roof slab)? These holes are in incredibly bad condition; their edges are consistently rough, with not an inch of smoothness left. And they are no longer circular. They look like someone took a jack-hammer and roughly hammered through the roof slab. It is explained by Auschwitz State Museum officials that the demolition of the roof is what accounts for the awful condition of the holes (that is, they USED to be round and smooth until the demolition). But if one observes the wreckage of the "undressing room" roof slab, which was similarly destroyed and is now in even worse shape than the gas chamber roof slab, one sees the remains of the undressing room front ventilation hole, which is still round and smooth even after the demolition and fifty years of laying around as rubble. Why did the undressing room roof hole survive intact, while the two still existing gas chamber roof holes emerged from the demolition without even the slightest trace that they had once been round and smooth? If we consider that the two still existing gas chamber roof holes don't correspond with their supposed position on the roof, can we theorize that MAYBE these two holes were chiseled in after the liberation? It is now admitted by the Auschwitz State Museum that the Soviets, after liberation, drilled four "Zyklon B induction holes" in the roof of Krema 1 (Auschwitz Main Camp). One needn't assume bad faith on the part of the Soviets (they might have honestly believed that they were "restoring" the roof to the state in which it had once been), but this act clearly establishes that the Soviets DID in fact drill post-liberation "Zyklon B induction holes" in roofs that, at that time, had none. Is it possible that this accounts for the two sloppy "Zyklon B induction holes" in the roof slab of the Krema 2?
Am I supposed to pay for crappy book reviews now?
But how about that goddamn Teddy Bear. An entire 4 port switch - stuffed inside. Did anyone else see that??! Oh my Gawd
hm
soon, I will use my fist, instead of just three.
soon, I will rub it up and down against a tree.
take A SHIT
take a SHIT
eat my ass
and FUCK MY ANUS IN MY PENIS AFTER i left it open.
take my dick, and slice it 2 ways.
take my arm, and fuck my dick with my penis.
hump your ass. hump my dick. hump your chick. hump my dog and cat.
i love to fuck rotten hymen with penis' larger than life.. so fuck my cock with your tooth, and slide it in, right to the top.
gonna shove my ass in your dick.
Having come from a background of Servlet/JSP development, I was quite surprised to see that RMI lacked what I consider a basic feature of distributed computing - authentication and session tracking; this forced me to develop my own, but this is obviously a common need and should be handled by the RMI runtime. I haven't worked with CORBA beyond a couple toys to learn the system, but my understanding is that CORBA does have these feature.
The book itself is excellent - I purchased it after starting to work on a large project with RMI, and realizing that a couple online tutorials wouldn't cut it. The advanced section isn't quite as advanced as I had hoped, but overall the book is a decent reference.
take your sig and shove it
Mod that post up!?! You're probably the same piece of work that posted that shit story in the first place. Bet you feel stupid. There's jobs in winnipeg Manitoba for losers like you. It was a goddamn Teddy bear with a switch inside!?! That was incredible.
Does the author discuss RMI security and RMI over SSL? If he does, it would be a welcome advantage to the book that probably should've been mentioned in the review. RMI over SSL (via JSSE, for example) is one of the new features that Sun offers, for which only very shallow documentation is available.
Even Amazon's review of this book is better. Thanks a lot Slashdot.
What the fook does Java have to do with C/C++?
I think that most of corba/dcom/rni etc. are particularly over complicated. They place a burden on the programmer in the wrong place. It's worth checking out plan9's approach to distributed computing. Authentication is taken care of by an authentication server. Once you've got an authentication ticket then you can access networked resources by binding remote services into your local namespace. Rights are granted by the usual mechanisms of usernames & groups.
The familair paradigm of users and groups has been deliberately leveraged because that's what is familiar, after all it's stood the 30 years test of time. This extends to which processors on the network you an run processes on etc. etc.
It's worth studying if nothing else.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
yes, I too found little in the review preview about XML.
I have used both CORBA and RMI. I don't know why they are shown as competitive products.
CORBA is used when you wan't cross language compatibility. (c / Java / C++, etc.)
RMI is used when you want Cross platform compatibility give by JAVA.(windows, Linux, Mac)
DCOM is used when you are working on M$ Windows.(windows, C++)
To me these 3 are complimentary, with CORBA being one of the hardest but most dynamic. So naturally I expected to see in the review a statement about where the XML thingy fit into this puzzle. Why would you mention these 3 technologies without mentioning that?
Also see "java.rmi The Remote Method Invocation Guide" by Pitt and McNiff, published by Addison-Wesley. (In my opinion Addison-Wesley has managed to produce a more consistent set of technical titles than O'Reilly, though to be fair standards seem to be rising again for "the animal books".)
It covers much of the same material and may be useful reading for those less familiar with RMI as it has a longer lead in to the advanced material.
--
Dr David Kennedy
Senior Software Design Engineer
Nortel Networks
Not so much anonymous as just infrequent at posting.
I have been a java developer for some time. I had the opportunity to use RMI in java to write a distributed client-server pricing solution for a large telecom company. (I'll keep it quiet; I don't want to be sued).
The problem: Run pricing routines on very large CDR (Call Detail Record) sets. This involved a very complicated process of aggregating calls into time slots and then pricing them according to very complicated long-distance contracts. Pricing very large amounts of data sometimes took as much as two days to price and discount.
Solution: The implementation (at least in Java) of the RMI standard is simple. In order to avoid purchasing an expensive CORBA implementation we extended our c++ client program with JNI. The client program then called a local wrapper class that used RMI to spin off the pricing call on the remote RMI server. We had big-iron machines running an in-house RMI application server. The application server really just worked as a multi-threaded container that loaded RMI servers from the disk and registered them, allowing a person to order servers to be loaded and/or dropped from the registry via a console.
The solution was cheap and worked very well.
My $0.02 will always be worth more than your â0.02, so
Enterprise JavaBeans, and Session Beans in particular, provide these services. RMI is used as the transport layer, and the application server (EJB container) handles authentication and session tracking, often along with redundancy, administration, and a host of other goodies...
While I haven't read the book being reviewed, I know that "Mastering RMI" by Rickard Oberg is one of the best resources on the subject. Rickard is one of the brightest people out there, and he's made waves throughout the enterprise Java world. He's responsible for some of the genius of JBoss, among other things (he came up with the dynamic proxy trick that means JBoss doesn't require stub classes). Check his book out, it's worth it.
Yet another attempt at a distributed RPC that fails to come close to the DCE RPC of old. It is sad really.
It's true that Sun's reference implementation on Windows doesn't scale very well(at all?) with respect to large numbers of simultaneous connections. I am unclear as to whether Sun's I/O improvements made with 1.4 will help RMI's connection handling ability. As with most things dealing with reference implementations though, one usually has to buy something to get performance improvements. Depending on how much one believes weblogic, their implementation of RMI seems to be quite the performer
A German Kamp doesn't need any fences as long as it is being guarded by Papa Schutz!
Smile, don't click...
--
We DEMAND a better mod system!!
YOU ARE EDUCATED STUPID AND EVIL
... a rotating 4/16 creation.
Academic and religious teachings equate mental
retardation - as a 2x4x4 Cube creation principle
reduced to a 1/4 (corner). You are educated retarded, too stupid for Time Cube.
'Takes village to raise child'.
Educators are evil people; words corrupt principles, 'takes child out of family'&
'takes village out of child' - 'empowerment of self-evil'. There is no God in 2 x 4x4
femininity and masculinity 2 sex Cube hemispheres, as life is a 2-Cube crap-game.
All words equal not 1 deed. Try words to stop tornado.
Truth of Cube is ineffable. Nature outlaws word gods. Cubeless word is adult evil. Word enslaves the children. You were educated 'stupid' by evil religious teachers, and can't know Time Cube.
'Cube Spirit' is Almighty. Educators are too damn stupid to know 4/16 Cube.
There is no Cubic teacher. Educators are the primary cause of evil mathematics. God is but a single corner face on a 4-corner head.
Fire Religious Teachers too stupid for 4/16 Life.
You're 1-corner educated and cannot comprehend
4/16 corner rotating Life. You were taught stupidity.
--------------
Time Cube exposes evil.
Cubelessness is an Evil.
Educators are teaching you Evil Cubelessness.
Educators cannot allow Time Cube to be known.
Academia is '1 corner'.
Religion but '1 corner'.
1 self is only '1 corner'.
Family has '4-corners'
and 4/16 cube rotation.
God is a '1 corner' evil.
Self-god is 1 cornerism adult scam upon child.
Teach 3 equators for a 4 quadrant hemisphere
which rotates to a 4/16 principle life creativity
as in Family Life Cube. God = Hate of Children.
God denies a childhood. Worship of Word is Evil,
for it 'counterfeits' Deed and teaches Liar is God.
You're Educated Stupid. 1 Corner Academic 'self'
is "lowest" human form. It "degradates"4/16 family life and destroys all villages.
1-human is but 1-corner life in 4-corner lifetimes: baby, child, parent and
grandparent corners
Corner god nonexistent. Academia is a religion
with religious teachers controlled by believers,
who forbid 4/16 Cube as "Forbidden Truth".
Adults evolve from their ungodly image children.
Fake god eats Child life. Educators teach cubeless babble, ignoring Highest Order Creation- a Cube. Fire Religious Teachers ignorant of Time Cube.
Believers are 'evil liars'. 'Self-god' is lowest form of behavior, below both family and village Cube. You are educated stupid.
* g i v e r * g i v e r * * g i v e r * g i v e r * * g i v e r * g i v8 X0088;8%8/%%80000++%%e .. .. .. 1.......1..188X:800000080+++888%%00008+++r0 088X/0M88%00800088+++*0 808/8888+800080000%%%g8 80XX88X80000000808X%Xi8 0X:80X880000000008888v8 088000080000008008888e /X8 :0X88888088.M1=XX000000000;0XX80*. .//18XXX8000000:0X880g/ %%80X8X88800000+XX800i: = :8.088XX0000X+0888:v: :..18X08888000:;088/8e ;0XXX88::/.;::=.==.+.80X8XXX8880088:%Xr .8:;888X88800008888880;%80XX88800000X888%i ;0=+X8X8X8888888888888+.8XXXX880%++++%%888v .=:...===.....1.1..1... ;0:X8XX888XXX88888888801=XXXX0888%%%8+++/+Xe. XX88888;:.1 %0000r ..1=;=/X8X88881;++XM80800*1 .88X1+88000%;; 8M000i .11%=..11X8888+; 8M000v .:.:+XX8XXXXXX8XX+888X888+ .. ..;=:/++008; %M000e ......1=/++/8% %0800r .1111. .=%%%XX8 +0000* .:: ..111...=/8XXXXX %000Mg ....111.1=/%X8XXXX= %000Mi .. .+%%X8;:/8%818XXX1. 1=;:==;+8XXXXX8X 80080v ...:+88;;+%XXXXXXX8.X8000e ./%+%8XX%+%8XXXXXX888X8000rX XXX8+%8XXXXXX8/0X8000*X XX80;+XXXXXX8;8MXX000gX X880=:8XXXXX;;X.8X000iX XX8;=+XXXXXX% .:8X008v8 X80.;88XXX88X 1;8X008eX XX0.;8XXXX880 1;88000rX 88%.;8XX88800 /88000*X X81./8XX88800 /8X008g .;++++%%88888XXXXXXX8801.+88X8X800 /8X008i8 8+1/888888000 +8X000v8 01.+XX8888000 +88000e8 0.;%888X80000 +88000r8 M=;+X88800008 /88000*# =;+X888000000 /88000g0 8.;8888800000: /88M00i; ;/%88880000088 ;8X000v: %%88888000000X :8X000e% X8888000000008 :88000r0 88080000008000.:X8M08*
/_0000000000_/0|0g
g::===....111111..=.............111111.111.88M.X8
i::==........111111.
v:=....11......111111111111..111.1.11...=8X:.8888
e.....11111111111111111111..1...1......=X0M088880
r:=....111.1..1...................=====X0M%XX8008
*:====...1.1111..1.1..............====88X+8888880
g===.1.1111111111111111..1.1........188X%X8888808
i==......1....111...1..1.........== %8X 88X88888080X88XM000000000X0XX88r
v=.....11.1111.111111.....111....1
e.=.11111111111..1111...=........1;88./888888008:
r=1=..11111111.111.==.1..===:::=./X8:%8XX8888X;:;
*.....11111..=::=..1111........1.8+=88XXX88%1.=;:
g;;:=1111..111111111.11.11......8==8XXXX81/...;;=
i:==111111111.111........1....1:
v.11111.11.11.1.111111111...1.. =0X88888:=:.=.=;::==1188XXXX8888008=+X8*
e.11111111.1111..1..1.1=:...=. =X0=800800/:://+%%X00/;X8XX888X80808/XX%g
r.=1...111111111111.==...====
*..==..1..1111.1111..=.....1
g=:
i. 1;%88/==..1.==:::=..1..18;;08888888X8XX88XX81.=;1
v =+88X88%=.1.1111111111..X0//888888//=::=:;:
e=%XXX88X88/......1......8 +8+//;=====..=::...1.1.:/XXXX88008;+X00XM088g
r%XX88888888+=1.===.11..+:;.1.:+%8;.1.=:;:::::..1
*X888XXXXXXX8%:=..==.111=;;++8XXX881=;+++++8%.
gXX88XXXXXXXX88:
i8X888XXXXX8XXX8+/;X8X8XXXXXX88XXX88888X8X%.
v88888XXXXXXXXXXX%X888XX8XX888X88X888X8/:;1
eXX8M888XXXXXXXXXX8=;:;+X88X8+:1.11.. 1
rX8800888XXXXXXXX8X8+;:=;/:..1.=;::.:=..+88.1
*X8880+888XXXXXXX8XX:
g88888 08XXXXXXXXXXX8;..:/8%;:+//%88X;8XXXX
i88880+X08XXXXXXXXX8: =%8;/;+8XXXX888XX8XX;.
v888008%8XXXXXXXXXX/./8X+/8X8XXXXXX88X80888X8:;88
e8888X%%X88XXXXXX8X18X8+88XXX88X8880000088888X88X
r8000%%%%88XXXXXX8.XX%+X8888000888XXXXXXXXXXX88XX
*8888X0080XXXXXXX+;88%88888088888XXX%%%%%X888888X
g0MM00808888XXXX8XX%/;XX880888X+..=;;;/%%;;888X8X
i008+8000008X8=..=;:808X8088X+:=:;+%++%%%;::;+XXX
v08000000008X...:/;+8888088X+=;;:;/+//+%+//+%XXXX
e00000000000/=:+X/;88XX808X8/.;/;;;/+++%+++%8XXXX
r80000000000.;+X8X%X8X88X8%.
*00000000000.+X8XXXXX88;/;1.1=;8888X8XXXXXXXXXXXX
g00000000000:%888XXX81..=;::;;+XXXXXXXXXXXXXXXX88
i00008000000%%88X8:.11.=;++/:;+%8XXXXXXXXXXXXXX88
v00000000000M88X=1.1=:;+%8X88%%%8X88XXXXXXX888888
e0008000000000...=:;+8XXXXXX8%%8X8888888888888808
r80000000000M...=;+%8XXXXXXXXX%%88X88888888800000
*000000088X=..=:/%XXX88XXXXXXX8888X88880000000000
g808X8800+1..:;+88XX888XXX888XX88XX8000000000001=
i00000081..=;+%8X888888888888X8XXX800M00000801.::
v00000.1..:/%88X8888888XX888888XX88M000808881=:+8
* g i v e r * g i v e r * * g i v e r * g i v e r * * g i v e r * g i v*
* g o a t s e x * g o a t s e x * g o a t s e x *
g88888888888888888888888888888888888888888888888g
o8/88888\8888888888888\888888888888/8888\8888888o
a|8888888|8888888888888\8888888888|888888|888888a
t|8888888`.8888888888888|888888888|8888888:88888t
s`88888888|8888888888888|88888888\|8888888|88888s
e8\8888888|8/8888888/88\\\888--__8\\8888888:8888e
x88\888888\/888_--~~8888888888~--__|8\88888|8888x
*888\888888\_-~88888888888888888888~-_\8888|8888*
g0000\_00000\00000000_.--------.______\|000|0000g
o000000\00000\______//0_0___0_0(_(__>00\000|000 0o
a0000000\000.00C0___)00______0(_(____>00|00/000 0a
t0000000/\0|000C0____)/ \0(_____>00|_/00000t
s000000/0/\|000C_____) |00(___>000/00\0000s
e00000|000(000_C_____)\______/00//0_/0/00000\000e
x00000|0000\00|__000\\_________//0(__/0000000|00x
*0000|0\0000\____)000`----000--'0000000000000|00*
g0000|00\_0000000000___\
o000|00000000000000/0000| |00\000000000000|o
a000|0000000000000|0000/ \00\00000000000|0a
t666|6666666666/6/6666| |66\66666666666|0t
s666|666666666/6/666666\__/\___/6666|6666666666|s
e66|66666666666/66666666| |6666666|666666666|e
x66|6666666666|666666666| |6666666|666666666|x
* g o a t s e x * g o a t s e x * g o a t s e x *
remember Push technology? God that was lame
Java sucks. RMI?? Pfft.
CORBA sucks too. Like so many things, it was this giant "can do anything" specification designed with input from all over the place. It's like a CS research project. This made it so complicated that no one can use it without lots of work. All this when you only use 10% of the possible functionality. No thanks.
XML-RPC is the closest to something modern and useful.
Good to see that not everyone's waxing lyrical about XML, EJB and SOAP these days. I agree that it's important to keep up with old technologies as well as new - the computer industry does have a terrible habit of "forgetting" really important technologies.
I am still waiting for a Common Lisp revival - many abusers of XML/XSL will kick themselves.
We are aware of this, no?
How does RMI work with garbage collection?
Remote garbage collection?
Fuckin' goatse.cx...
Why on earth does the XML-RPC spec require HTTP? This, IMO, is one of the stupidest things in the spec. It's right up there with their ASCII requirement for Strings. The XML-RPC protocol should be separate from the transport(HTTP) of that protocol. As for the ASCII string dependence...
This is why RMI is cool: In Java when you have a local object and want to instantiate it and then call a method on it, you do something like this:
FooClass foo = new FooClass();
foo.myMethod();
Now in RMI to call a method on a REMOTE class you simply do this:
FooClass foo = new FooClass();
foo.myMethod();
Yes, it's the same. I admit I left over about 2 lines of code needed in your declarations (basically a URL pointing to the remote server), but this simple pseudo code example gives you a glimpse at the simplicity of working with RMI: basically all remote objects look like local objects, which makes programming EXTREMELLY simple. Try that with SOAP/CORBA/DCOM. Note that I do admit SOAP has its uses in Web Services, but for transparent programming, RMI is amazing.
On a side note, XML and its siblings (SOAP, UDDI, WSDL, etc) are being implemented in such a way as to make working with XML/SOAP as simple as the RMI example above (another great reason to use Java).
With an outstanding effort, the author goes for the gold and stuffs one paragraph with so many acronyms and abbreviations, it makes it barely readable!
They are messaging specs (at different layers). You can do RPC over them (SOAP includes a way to encode RPC requests, but you can send any sort of asynchronous message you want).
Come on people, stop talking about things you don't know anything about! The specs are public, READ THEM!
One other thing to consider is messaging, like that provided by JMS (now part of J2EE). It's a good alternative to the purely synchronous world of RPC (embodied by XML-RPC, SOAP, and the like) because it gets around some of the vagaries of making calls over an unpredictable environment (the Internet). Things like publish-and-subscribe, guaranteed delivery, and asynchronous processing are pretty cool, since synchronous RPCs can get waylaid by part of the network going down, etc.
I've only fooled around with it, never used it in a real project, since message-driven beans are pretty new. Does anyone know of a project that makes extensive use of Java messaging, particularly using message-driven beans?
So what does this mean in shops that produce high-volume, high-throughput, high-userbase apps? You usually find that dist. object implementations have their object-to-object interactions up-levelled (artificially) to ensure that 'messages' (as opposed to granular method calls) become the implemented design-point.
This is why RPCs (home-grown, SOAP/XML, or otherwise) make a lot more sense (to me). The technologies might be new, but the concepts are old and useful. Bottom-line (for me), is that RMI and CORBA do not implement service-based architectures very well. RPC-style solutions are a more natural fit from both the business requirement and technical design perspective.
CrazyLegs
"Pork!!" said the Fish, and we all laughed.
It is a fact that remote calls are more expensive in terms of network bandwidth, latency, and response time compared with a local in-process procedure call.
The problem is that RMI makes expensive remote calls look like cheap local calls. This can lead to performance problems which are hard to find, since the offending code looks so innocuous.
Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
I'm seriously considering using ACE for a cross-platform networking layer in a dstributed system I'm designing. I note that this also has an ORB thingy called TAO (which may just use DCOM/CORBA/RMI depending on the platform). So that may be another option to consider in the interim, i.e. rather than decide which ORB to back right now.
So check out ACE (It's Open Source of course) at http://www.cs.wustl.edu/~schmidt/ACE.html
and TAO at http://www.cs.wustl.edu/~schmidt/TAO.html
.
Here's some blurb:
TAO is an open source product with zero cost licensing.(Development and run time.) TAO is a C++, CORBA 2.3 compliant ORB designed for real-time but equally applicable in general-purpose situations. TAO runs across multiple O/Ss and chip architectures enabling a wide integration capability, for diverse elements, within a single ORB implementation. TAO's baseline design for real time considerations ensures end to deterministic behavior and leverages both system and network characteristics.
www.horb.org java, open source. We have been using horb for years. Very dependable and easy to use. Fast too. And can run on single known port (of your choosing).
It's not dangerous at all when you consider the correct code:
FooClass foo = new FooClass();
try {
foo.myMethod();
} catch (RemoteException re) {
}
In fact, forcing you to deal with RemoteException where other technologies try to hide it, is one of the most fundamental distinctions of RMI.
I think raising the performance problem is splitting hairs - the fact that the syntax is the same for both remote and local calls is more handy than dangerous IMHO.
I agree though that such syntactic sugar should be taken with a pinch of salt! The overstatement of the virtues of transparency leads many developers to believe that they REQUIRE transparency in everything, leads to (for example) lots of time wasted in writing persistence layers, O/R mappings and so forth whilst waiting for JDO to be released.
isn't there Jabber dev groups working on utilizing XML-RPC, SOAP, and RMI? I even thought I saw 'mention' of utilizing Jini somewhere, but I think it was just a request for information.
I remember looking at Horb in early 1996. The design for Ganymede was inspired by what Horb was promising, but once Sun released RMI, it seemed that all the distributed object support necessary was bundled into every JDK, so why use Horb?
Still, it's exciting to see that Horb has gained and kept an active user community.
- jon
Ganymede, a GPL'ed metadirectory for UNIX
Actually, inlining remote method calls like this is often a source of problems in larger projects (or projects that absolutely need to be robust).
Most of the time, I wind up using command objects to encapsulate remote method calls. I wound up writing a three part series on this techinique for O'Reilly'd java web site.
http://www.oreillynet.com/pub/au/257
William Grosso
(author of Java RMI).