Java Enterprise In A Nutshell
The Long Version: When I sat down with this book my intention was to skim through each section, look to see if there was anything that they missed, and crank out the 'ol review. What I found was enough content in each of the technical sections to draw me into actually reading the whole section. I mean, who would take the time to read a full section on CORBA nowadays unless there were interesting things there (yes, I see all of you CORBA proponents shaking your fists out there -- don't you have some IDL to write?).
Once I completed the reference sections I cracked open the latter half of the book to take a peek at the API section. I found it well organized, aesthetically pleasing, and about as useful as a screen door on a submarine. Note that this API publishing is not unique to O'Reilly -- It seems that most of the technical publishing companies still commit arboreal mass murder to publish these API sections. Note to publishers: When the half life of the information you are printing is measured in months, think about a different delivery mechanism. I actually timed how long it took to find a reference using JavaDoc API info and a book. IIRC the JavaDoc lookup was about 3 times faster.
Enough of that drivel. Back to the review. As you read through the different technical sections of this book the individual styles of the authors become apparent -- you can tell that different sections are written by different authors. This is A good thing -- you are getting the technical poop from the one that knows the subject best. To rely on a single author for this size of reference would leave a lot of gray area.
There is one specific area that I want to drill into, and that is the technical examples. I consider myself a relatively informed and skilled enterprise software architect (in the J2EE world -- don't get me started on that Dot Net crap). When I see a manual entitled Java Enterprise - I am expecting not only an API reference (see API rant above), but some real meat as to best practices in building enterprise level applications using this technology.
So how did this book do in the technical example area? I'd have to give it a "B." In most cases the examples were adequate to explain the technology at hand, but not really give deep insight into how best to take advantage of said technology. Now, don't get me wrong -- this book has earned a place on the "near" bookshelf (the place where I keep all of my most referenced manuals). My opinion is that when you are trying to serve to very different purposes (desktop reference / enterprise technology primer) something has to give.
Let me give a couple of examples of what I am talking about:
- In the JDBC section there is a point where the book identifies OODBMS (Object Oriented DBMS) databases as a possible alternative to the rigors of Object/Relational mapping. Yes, the technology exists and does work, but how many companies out there run enterprise systems off of OODBMSs? It's a small market, and with the massive investments that most US companies have in RDBs, that equation is not going to change soon. To say that OODBs are an alternative is a good thing in a quick reference, but in my opinion needs a disclaimer if mentioned in an enterprise Java book. Along those same lines, it wouldn't have hurt to mention some of the available O/R mapping tools out there (go Open Source!).
- In the Servlets section there is a point where an application implementation is mentioned to illustrate a technical point (binding a java.sql.Connection instance to a HTTP session). Right in the same paragraph the author mentions that this is a "bad idea" (no kidding -- unless you are an Oracle sales rep ...). Now why go to all of the effort of painting this example, and then telling the reader that they shouldn't ever do it? Guys, take the time to figure out a valid example that illustrates the part of the API that you are explaining, 'kay?
Again, don't get the wrong idea here. I'm definitely not panning this book. It's a valuable resource and worth the $30 - $40 that you are going to plunk down for it. But if you are going to write a desktop reference for Enterprise Java make sure that the examples are restaurant quality. After all, there is enough bad code out there in the world, and we can't have our beloved O'Reilly contributing to it, can we?
In Summary (Finally! he's almost done!):
As I mentioned before, this book has earned the right to be within arm's reach from my little work pod. Not only is it a comprehensive reference, it makes a handy workout aide as well (971 pages...). And do yourself a favor. If you haven't checked out the O'Reilly line of technical books, head down to the nearest bookstore, grab yourself a double latte (try the Irish Cream and Hazelnut mixed together), find a comfy chair and give the series a once-over. You'll be glad you did.
You can purchase Java Enterprise In A Nutshell from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Java in a Nutshell??? Aren't they called coffeebeans?
Sorry, feel free to obliterate my karma for that lame one.
Trolling is a art,
Dunno , I think i will pass up this one. J2EE 1.4 is around the corner and has a whole slew of webservices related protocol made native including SOAP, WSDL, JAX:RPC. This would be outdated in no time
Siggy Say, Siggy Do
971 pages ... ORA must have some huge nuts.
I've had enough abrasive sigs. Kittens are cute and fuzzy.
... on Java books:
- They're outdated within months.
- As a general rule I've found the individual APIs are too complex to be well-served by books that cover a broad spectrum.
- The official specifications have all the information you need anyway.
The way to approach Java is pretty much the same way you approach programming languages in general: don't try to master them all, pick one or two and excel at that. With Java - there's a lot of APIs and many ways to skin the cat. Select the one methodology you're most comfortable with and concentrate your skills there. I'm not saying ignore all the other APIs, just don't spread your knowledge too thin. And not everything needs to be done with EJBs!
Incidentally, I used to own just about every O'Reilly java book published. Found I never used them, the online javadocs had everything I needed already.
Now that's in-depth reporting! Did this guy come from the NY Times? Actually, I wouldn't be surprised if a healthy portion of "reviews" are done in such fashion, even in professional rags.
Stop by my site where I write about ERP systems & more
O'Reilly: "in a nutshell -- in 971 pages"
My last "Java In a Nutshell" practically fell apart from all the API look-ups. I rather like the API reference at the end of the book. and my current Enterprise in a nutshell is heading the same way, along with my Perl in a nutshell while I'm at it.
Book Pool has it even cheaper. Although I like Amazon a lot, book pool is almost always less expensive for computer books.
Now where's that Sun memo that said not to use java for the enterprise.
In a nutshell, don't use it for the enterprise!
That's the cowsay cow. According to the cowsay license file it is distributed under the same license as Perl: the GPL or the Artistic License.
Yes, cowsay is rad.
--
the strongest word is still the word "free"
Obviously, the value of looking up stuff in that section is somewhat diminished when the reader is made responsible for second-guessing the placement of the content (when does "Vector" come before "JarFile" despite being in the same chapter? When the latter is in a subpackage)
-realinvalidname
Here's the age-old argument again, and I couldn't disagree more. As a medium for technical documentation, ink-on-paper just can't be beat.
With docs on paper, you can scribble notes in the margin. You can cross-reference by jamming your thumb in one place and your index finger in the other, and flipping back and forth. With a little skill, you can get your other eight fingers into the act as well. You can lie down on the couch with it, and take it to the john. The iLoo was just a hoax.
I hate having to scroll up and down to be able to see more than a few paragraphs. I hate having to click back and forth, or having to spread out windows on a screen, in order to be able to see two places at once. Electronic documentation just isn't natural, isn't intuitive, isn't human.
Always keep a sapphire in your mind
Again, don't get the wrong idea here. I'm definitely not panning this book.
"Because if I did, I wouldn't get any more free books from OReilly"
Some books deserve a bad review, dont' be afraidt to write one.
*HALF* the damn book is API documentation??? As a Java Developer, hell, as a programmer, I find it insulting that the publisher/author thinks I have enough time to waste looking through a book for API documentation where a 1 second JavaDoc browsing session will suffice. Also, I simply stay away from large books because they are hard to handle, and the binding usually cannot cope with such a large page count over time.
Book that actually concentrate on problems and their respective solutions, or even better, those that attack from multiple angles are the programming books worth reading.
There was a time when I was completely, out of the top, engaged in Java development. I would have traded anything for that last improvement and compatility íssues ... I wrote everything in Java and supplied numerous issues to Sun.
... Let us finally kill the language and declare it as a pissing contest between two companies.
I never ever even once questioned the relatively bad performance of the the compiler (the MS compiler is/was a magnitude of 10x faster and more informative). But that is history now.
But now
Let "them" do whatever they want. We do always have alternatives.
Goodbye and good riddance Java. It was a nice meeting.
Declared dead by patent misuse.
"(971 pages stem to stern) "
That's a huge frickin' nutshell!
"If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer
Since, given its size, the word "nut" in "nutshell" obviously can't refer to the hard covering of a seed, it must be referring to the user who is using it...
He gave the book a "4 out of 5", which translates to "8 out of 10".
Anything under a "9" is a bad review.
I can never get a consistent definition of "enterprise application". Here is a collection of candidates from c2.com:
Complex business logic
Access to relational databases
Distributed computing, generally using some sort of remote procedure call or remote method invocation protocol
Distributed transactions
Data exchange between heterogeneous systems
Message-oriented middleware
Directory and naming services
Interpersonal communication (e-mail, chat, shared documents, videoconferencing)
Security
Web-browser-based client interfaces
Integration with legacy systems
Integration with the systems of other businesses/organizations
Centralized administration and maintenance
Something that costs boat-loads of money (and is considered to be worth it by its sponsors)
Something that wastes boatloads of money
Slow developer velocity to near zero with 3-minute start-up times
Give BEA and IBM Global Services reasons to exist
Table-ized A.I.
I gather from this that the reviewer is not informed and skilled with .Net, but nonetheless feels confident in dismissing it as crap.
If lack of personal knowledge does not disuade the reviewer from voicing an opinion, why should I give a rat's ass what he thinks?
Java is the blue pill
Choose the red pill
Bound documentation is easier to read in many cases, though I find I still use online docs.
For me, I would rather have the documentation bound separately: say, a multi volume set of Java API's, with J2SE in one volume, and others grouped logically.
Any amount of time I can spend reading something other than a computer screen is welcome. I find I can get hypnotized by the screen after a while, and I swear, I think my eyes are going.
quiquid id est, timeo puellas et oscula dantes.
And I must respectfully disagree with you on the usefulness of online documentation.
I only need the docs when I am on my computer and I am always online so I always have access to documentation when I need it. And since I work from multiple locations I find it very inconvenient to lug around many pounds of dead trees everywhere I go. So I find the accessibility of online docs to be superior.
I also think hyperlinking and searching is more effective than bookmarks and vgrepping through the index. I like the ability to instantly check a reference without any manual effort. And if you use a tabbed browser you can hold open all of your references with no fuss.
Online docs do not require physical space for storage. This is significant for a product like Oracle, which could fill a wall with documentation. They can be automatically updated by the document owner. And best of all they are free.
I only use dead tree docs when there is no online equivalent.
I have this book and do not use it as a reference. If I want to know what a method does I have to go to the javadoc online as this book just lists the names of classes and their methods without bothering to *explain* what they do or how to use them. Very annoying!
http://safari.oreilly.com/
It lets you have N books on a shelf (min time one month). Not just O'Reilly books.
There is a substantial number of books that cover various J2EE technologies.
Just on Sun's site you can find these lists:
- Java Developer Connection: Books
- The Java Series
What book(s) would you recommend for an experienced C++ developer who wants (or needs) to switch to J2EE development?
I thought this book was a great tool for coming up to speed very quick on how these technologies all fit together. I don't need all the "how to" fluff you normall get, so this just hit the spot. If I need reference, I wouldn't ever think to use a book like this, except possibly to use some of the examples to get me started.
Why slam object databases? It's good that the book is promoting them, we need more people doing so and raising awareness. Anybody using an RDBMS probably is aware of all those issues. Bringing up a better alternative is a good thing, and several ODBMSes are definitely enterprise capable if anybody cares to take the plunge.
Am not sure if you are to take that "crap" seriously. In fact, a colleague of mine asked our HR person if she had fixed the "pay-roll crap" -- he meant his address change on the pay check.
It is a fad these days I think -- am not sure if I like it.
I read the reviewer's statement as
I consider myself a relatively informed and skilled enterprise software architect (in the J2EE world -- don't get me started on that Dot Net stuff as I do not know about it).
Coming from Perl land, I've found O'Reilly's Learning Java really helpful with, uh, learning Java. It's all content and complements the Javadoc pages nicely.
Vino, gyno, and techno -Bruce Sterling
I always had the manual open while I was programming until the mid-90s. We could not have the documentation on the screen at the same time as the code, so it was easier to have the physical copy nearby. But "pasting" an example into the code requires much typing.
By the late 90s, I had a 20" monitor and would program at 1024x768 or highter resolution. I had one project where I usually ran at 1920x1440 so I could fit several files on the screen at the same time.
Most online technical documentation is still poor since you can only read one page at a time.
The Java documentation changed that. Since it is HTML, you can always choose "Open in a new window". And in IE, you can choose "Edit source" and move/annotate the files. I often move the classes I am currently using to the top of the index files, and add notes and examples to the top of the class files.
I wish Sun could afford to put examples in the code. Even the usually non-working examples from MS and IBM give a little insight into how they planned a function to work. Then you just have to troubleshoot the poor code, rather than writing it from scratch. But I still have to remember how it works. With Sun I have a central repository to keep the code that does work. I can easily put it on my web server so I have my notes while at a client.
---
Online documentation is also easier for the eyes. No, I am not saying that monitors are better for reading than paper. But when the documentation is on the screen, your eyes shift a very small amount. Paper documentation usually involves turning your head, which means moments are lost every time you switch between the screen and the book because you have to refocus.
And while backlighting from monitors is bad compared to reflected light from books, constantly switching between them will tire your eyes quickly. It is better to use one or the other.
Of course you can decide to stick with reflected lighting and write your program on paper. Programs designed on paper tend to be better designed, because more effort is required to record them. And there is a review phase as they are being typed.
I have not noticed other programmers persuing that path. They seem to "design" while typing and expect the compiler to find any issues. I use "design" loosely, since they are usually focused more on getting it working than on getting it to work well.
---
If you really need to bookmark many different "pages", then you need a larger monitor, or maybe several. Check out Matrox video boards. They can do 2048 x 1536 on 4 monitors. That should be enough documentation for anybody, and still leave room to code. BONUS: They support Linux!
As for scribbling, see above. Get all your documentation in HTML. Use a browser that allows you to edit it locally and save it back in place.
(I use Mozilla 1.1 for browsing; I use MSIE 5.5 for my local documentation. Mozilla 1.1 is very old, so maybe they have a decent editor now. Mozilla 1.4 is supposed to have fixed issues with graphics, so I will probably upgrade soon.)
Invest in technology. If you are a professional programmer, you should have a VERY large monitor. Tell your boss to get you one. It takes me 3 times as long to program something using a 17" monitor than it does on a 21" monitor, mostly due to tabbing between windows rather than seeing everything at once. Good 21" monitors are under $600 and last at least 3 years. If you make $20,000 and the monitor doubles your productivity, that is a 9900% ROI. It goes up if you earn more.
---
Electronic documentation just isn't natural, isn't intuitive, isn't human.
Yes, it is not natural. Very little of computers can be considered natural. If that is a concern, you are in the wrong field.
No, it may not be intuitive to you, but it will be to your neighbor's grandchildren. How is:
1. Checking the index i
I spend my life entertaining my brain.
Stately, plump Buck Mulligan came from the stairhead, bearing a
bowl of lather on which a mirror and a razor lay crossed. A yellow dressinggown,
ungirdled, was sustained gently behind him on the mild morning air.
He held the bowl aloft and intoned:
--INTROIBO AD ALTARE DEI.
Halted, he peered down the dark winding stairs and called out coarsely:
--Come up, Kinch! Come up, you fearful jesuit!
Solemnly he came forward and mounted the round gunrest. He faced
about and blessed gravely thrice the tower, the surrounding land and the
awaking mountains. Then, catching sight of Stephen Dedalus, he bent
towards him and made rapid crosses in the air, gurgling in his throat and
shaking his head. Stephen Dedalus, displeased and sleepy, leaned his arms
on the top of the staircase and looked coldly at the shaking gurgling face
that blessed him, equine in its length, and at the light untonsured hair,
grained and hued like pale oak.
Buck Mulligan peeped an instant under the mirror and then covered
the bowl smartly.
--Back to barracks! he said sternly.
He added in a preacher's tone:
"aquafortist hallels inscribableness sliwer broken-arched Rh negative
charm-built myelocoele ravener underbursar construct state maudlinly Halie
skiwear unpaintableness Dunkin indispensableness oaky abstract group
ineffulgent summer truffle Irene schiz-akolouthia competitors German
Baptist Brethren lawrightmen Tr unilateralization beta-glucose impester
Propaganda substitution tables Method unscoffing interjection piscifauna
aerodynamics cold sauces Gardner Neola word-hoard undryable be in the way
of Divine Mother laces struct overdue anticonscription inhabits liability
insurance smutty-faced Vermes brown bess Callum barbitos unconflictingness
weaky cannibalish kiss of peace paralgesic community theater overgrace
crwd nowhither perplexed vacuum engine brashest desterilization polearm
sour cherry diauli homoplasmy neuromatous episcopized raise sand Annensky
grey whale miasmatic sidereal year booley fulicine satyagraha monotypous
quasi fee bullpates erythrophobia jew's-harp heathenised soda saleratus
amphora corn shuck menacingly proarctic unreligious interoscillate swoony
misspend push brios entermete issuant ladder-back tritanopic allude
constitutional government glass-paper preobjection unmarbelizing
mediosilicic uretero-ureterostomy milk fever pseudo messenger
supercordialness Abdul-Aziz fresh-washed Karman trail will of Heaven
akasha Compazine gerara mandarinate steel spring make your nerves tingle
underconsumption double Spanish burton pronounces subsphenoidal yirths
Chondrichthyes Nasser Wasukuma Salzgitter Twain gardener Madrilenian
ponderomotive outpiping alackaday divertila hypocraterimorphous
nonfrigidity tonsillotomies apsychia chimney rock bakeshops runway
troutbird aurichalcum hermetism plum tree provinces Buchwald disattune
humanly nominatives renner unornamentation Gehlbach sea-boat Perotin
travally deal harshly with headwater erosion motivational research
hand-treat spend the time cachot evil-spun Kaithi semipinnate Angdistis
Ingalls tarradiddle peeving sided untemperately bollock intergraft
Greenlandish shohji bull grass eryopsid jeunesse dor overfly undonkey
idolothyte strident gonydeal megalopsychy unregard blazing fire dye tank
koninckite tide-driven swatchway acousticolateral futtock band lunisolar
scissible Matheny unimitable glaring maskeg prefixable Wolenik dribbed
multiflora whipman superceremoniously abbreviature citizeness Londonese
plaiding cowweed pathophysiological regurgitations Benguela iliocaudal
grind organ shoulder flash Eriosoma reoriented deshabille Hippocurius
Nautiloidea arenicolite L'Enfant mislodging water ox hemodromometer rugal
kiddushin panotype unopenness fine-threaded latecomer BCWP sixhynde
hawthorne morselling tapester titivil diamond fig prevailingly
re-execution therophyte best-consulted double-minded ro