Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java Books Media Programming Book Reviews

XML and Java, Developing Web Applications 295

WrinkledShirt writes: "There's a whole lot of posturing going on in the world on Internet programming right now, and with all of Microsoft's slick marketing for .NET there's never been a better time to remind the industry which platform got it right first. Enter XML and Java, Developing Web Applications (2nd Ed.) , a book that promises to show just how much of a heavy-hitter Java still is in the enterprise world. Because of the variety of technologies available for Java, Addison Wesley took the approach of bringing in a bunch of experts in the field to cover the different ways that Java and XML can work together. Considering the effort that went into coordinating this collaborative work, it couldn't possibly miss, right?" Read on to see how true that is, in Wrinkled's estimation.
XML and Java, Developing Web Applications (2nd Ed.)
author Hiroshi Maruyama, Kent Tamura, Naohiko Uramoto, Makoto Murata, Andy Clark, Yuichi Nakamura, Ryo Neyama, Kazuya Kosaka, Satoshi Hada
pages 661
publisher Addison Wesley
rating 6.5
reviewer WrinkledShirt
ISBN 0-201-77004-0
summary An ambitious book, covers a fair amount of material, but lacks continuity.

Unfortunately, they might have put a little more thought into the bigger picture with this approach, because what they have ended up with is a book that reads like a play with two completely different acts: the second showing a wide variety of applications of XML for the Java platform, which works well enough, and the first, which attempts to teach the basics of working with XML and Java, which isn't quite so strong.

The Good

One look at the table of contents should convince you that the book rates pretty highly on buzzword compliance (XML, DOM, SAX, SOAP, XLST, WSDL, UDDI, JSP, EJB, etc.). When it comes to content that should impress your manager, you could do worse. The accompanying CD-ROM also comes with some neat stuff, like Tomcat, Jakarta and Xerces, and trial versions of WebSphere and DB2. As an added bonus, the code within has been tested on both Windows and Linux.

For the most part, the progression through the topics is well-directed, with in-depth discussion about the different means of XML parsing and generation using both DOM and SAX early on, and after going through the early chapters the reader should already have a decent idea about what techniques might fit their own personal projects. Tamura's chapters on DOM and SAX in particular stand out, not just for the coverage he gives the two, but also for his comparisons of one versus the other. They serve as a decent enough primer to prepare for the latter chapters, although the reader might be better equipped if they gained some extra foundation from other sources (more on this in a bit).

Despite the breadth of topics, they don't throw in the kitchen sink. Readers are expected to get their introductions to XML and Java elsewhere, and while one can probably get away with a surface understanding of XML and still get what they need out of the book, the same cannot be said for the needed Java knowledge. However, for someone who has a good understanding of Java and the various surrounding technologies (JavaBeans, Java Server Pages, and so on), there's some pretty good coverage of the different ways that XML can be incorporated. They've even taken care to provide appropriate supporting material, talking about where the various standards may be headed, some coverage on the theory behind Schema design, and there's even an appendix that explains JDBC, to serve as a counterpart to the chapter on XML and databases.

This book is in many ways an example of the way second editions should be. This book has double the chapters of the original, and efforts have been made to cover as much additional (but still relevant) material as possible, including XML Schemas, namespaces, messaging, web services with SOAP, and security. Some of these topics were in the first edition, but bunched together into a single chapter. In this book, they get individualized treatment.

The Not-So-Good

It's a hopeful endeavor to bring together nine authors and expect that there can still be stylistic continuity, and this book is a good example of what happens when the editor doesn't lay a heavy enough hand. There are inconsistencies from one chapter to the next in the way code snippets, method lists and diagrams are incorporated (in particular, the use of line numbering by Uramoto and others is unintelligible to the point of inspiring wrath). Furthermore, because each author handles their subject matter just a little bit differently, it's hard to get into any sort of a learning rhythm. In this case, the whole is probably weaker than the sum of its parts. A good section, like the one contributed by Tamura for instance, loses some of its luster if the chapters preceding it or following it aren't up to snuff, as is sometimes the case throughout the book.

To be fair, things do improve in the latter chapters when the authors are focusing on more specialized cases, and such expectations of continuity become somewhat moot. However, even then, the authors obviously have different opinions on how steep the learning curve needs to be. The chapter on JSP, for instance, eases you in and begins with simple examples, despite the fact that embedding programming code within HTML is pretty intuitive, comparatively speaking. The chapter on WSDL, on the other hand, makes no such assumptions of a beginner's audience, and it's trial by fire, with long stretches of code and in some cases nary a comment in sight. It's understandable that talking about distributed programming necessitates long code listings, but a newbie is going to experience some serious hymen-breaking here.

If there is any consistency, it's a pretty clear editorial bias towards Xerces over JAXP early in the book, including a special chapter on parser tricks specifically for Xerces. No real surprise there, as several of the others have been key contributors to IBM's open source project. Still, it's poor form to be using the pages of a learning guide to talk smack about one over the other, if for no other reason than the fact that it becomes a distraction to somebody who's trying to learn with an open mind towards all the possibilities. If a comparison is absolutely necessary, it deserves its own chapter away from the rest of the learning material. This brings up another problem, in that by mixing JAXP and Xerces techniques together early on, you run the risk of overwhelming a neophite who'd be glad to figure out just one way of doing things. There's already a marked difference between DOM and SAX parsing, and doubling this with the duality of JAXP vs. Xerces makes for an introduction that's a little too busy.

Also, what was mentioned in the previous section as one of this book's strengths is also a bit of an audience-limiter. If you try coming to this book without a solid founding in Java, there's a decent chance you'll find it difficult to get into this book. People who are already soured on Java will likely find their distaste further entrenched, and it's doubtful that anything beyond the most conceptual of the subject matter will be portable.

Conclusion

There's something to be said for bringing in the biggest authorities in the field to present a subject -- however, it's one thing to know a subject and another thing completely to know how to teach that subject well. John Madden once said that the best teachers are the ones who got C in school because they're the ones who best understand the intellectual bumps and bruises that can come from learning a new subject, and can help prepare and guide a student through them. There are no C students in this bunch -- readers are left to their own devices to keep up with the authors and fight through the numerous obstacles to get at the core knowledge within, which is admittedly impressive enough. Far be it for a lowly Slashdot contributor to tell the folks at Addison Wesley how to do their job, but on a third edition they might want to put the material through a stronger editorial filter to make things a little easier on the reader. This is definitely a book to preview in the bookstore very carefully before considering a purchase.

Table of Contents

Preface.
1. Web Application, XML, and Java.
2. Parsing XML Documents.
3. Generating XML Documents.
4. Working with DOM.
5. Working with SAX.
6. Parser Tricks.
7. XPath and XSLT.
8. Bridging Application Data Structure and XML.
9. Working with Schemas: Datatypes and Namespaces.
10. XML Application Server.
11. XML and Database.
12. XML Messaging.
13. Web Services.
14. Security.
15. Data Binding.
16. Principles of Schema Languages.
Appendix A. About the CD-ROM.
Appendix B. Useful Links and Books.
Appendix C. XML-Related Standardized Activities.
Appendix D. JDBC Primer.

Related Links

Addison-Welsey website
W3C's XML page
Sun's Java page


You can purchase XML and Java, Developing Web Applications from bn.com. Slashdot welcomes readers' book reviews -- to submit yours, read the book review guidelines, then visit the submission page.

This discussion has been archived. No new comments can be posted.

XML and Java, Developing Web Applications

Comments Filter:
  • XML And Java.. (Score:2, Interesting)

    by iONiUM ( 530420 )
    Because Microsoft is trying to drop Java, and Sun isn't driving it as hard as it used to, I personally don't view Java as a viable solution for web development anymore. Java had it's place, but I think it's no longer fast enough for current practices. I think PHP or another webside language/scripting language would be more beneficial at this point than using Java, and certainly easier to intereface with XML from what I've seen. In fact, with HTML servers these days there's already native XML/XSLT support, making server side scripting/applications not even needed in some cases.
    • Re:XML And Java.. (Score:3, Informative)

      by foobar104 ( 206452 )
      Sun isn't driving it as hard as it used to

      Where did you get that impression? I don't mean that rhetorically; I'm relatively new to Java development, having just started working with it about a year ago. What makes you say that Sun isn't driving Java? Just this winter they pushed out J2SE 1.4, and a beta of 1.4.1 is available now. Seems to me as though Sun is doing as much Java work now as ever, at least in my limited experience.
    • Re:XML And Java.. (Score:5, Insightful)

      by jaaron ( 551839 ) on Wednesday July 03, 2002 @11:38AM (#3814607) Homepage
      Sun isn't driving it as hard? What planet are you on? Sun just finished a complete rehaul of the java.sun.com site. Java is still very alive, though it may not be getting the press it once did.

      PHP is very nice, and very easy to use (especially compared to J2EE), but if you're doing some serious heavy enterprise/distributed application work, then it just doesn't cut it. I've been working in enterprise java applications for about a year and a half now and I've found that most developers who aren't very familiar with java have no idea how powerful it is, how much it is used, and how much support there still is for it. Of course Microsoft is trying to drop java, it's been one of their key targets for years. Now that they're trying to drop it on the desktop, people start to think that java is dead. Well, server side it sure isn't and it has quite a bit of headway on the newer .NET technology.

      That's not to say java is perfect and will never be replaced, but it's still a player now and to just dismiss it is to make a gross mistake.
      • Re:XML And Java.. (Score:3, Informative)

        by foobar104 ( 206452 )
        PHP is very nice, and very easy to use (especially compared to J2EE), but if you're doing some serious heavy enterprise/distributed application work, then it just doesn't cut it.

        Agreed, 100%. We showed a web application demo at a recent trade show. The demo was written (by me) in about two weeks, using PHP and a custom-written interface to our proprietary database back-end. It worked fine... for the demo.

        But we're implementing the real, non-demo application using J2EE technologies. There are a lot of things that you can do better-- more securely and more stably (is ``stably'' a word?)-- with Java and J2EE than you can with PHP, and there are a few things that you can't do with PHP at all. For example, one of the features of our web app would be that it opens a socket listener, then passes the IP and port of the listener (via a separate control socket) to the back-end. The back-end connects to the web app's listener socket and initiates a bulk data transfer. It works pretty much the same way FTP does, if you're familiar with the guts of that protocol.

        As of last March, that simply was possible with PHP, as near as I could tell. You could open sockets to other computers, but you couldn't open a socket listener inside a PHP script instance. That's not cool, because using the web app to facilitate bulk data transfers between the back-end and the desktop is a major design feature for us.

        And, of course, when you're working on a complex, distributed app with lots of components, the ``bondage-and-discipline'' features of Java come in handy. It's nice that non-exception-safe code won't even compile. Saves you time in test and debugging.
        • FWIW, PHP now has a pretty complete sockets extension, complete with INET and UNIX sockets and even a call to select(). The extension is still labelled "experimental", but I've been using it for almost a year now without much of a problem. I believe the extension should be marked as stable with the next release of PHP.

          J
    • Re:XML And Java.. (Score:5, Insightful)

      by Matt2000 ( 29624 ) on Wednesday July 03, 2002 @11:47AM (#3814665) Homepage

      This comment doesn't make any sense. Compare PHP to JSP if you must, as both are front end languages that can do everything, but you'd be foolish to use them to do so.

      Writing a larger scale web application in PHP would be a very bad idea, and until you've done one I doubt you'd see why.
      • Slick signature line. Now that's what I call gaming the system.
    • Java is absolutely huge. In the finance sector pretty much every single large institution uses it as a strategic language.
      Go to JobServe [jobserve.com] and see how many jobs are requesting Java. Go to JobStats [jobstats.co.uk] and see how much demand there is for Java. Admittedly the demand is down from a year ago, but that's across the board. Note that these are UK sites, but I don't see a geographical dependency.
      Pretty much every IT consultant I know is concentrating on Java, and most of all in the J2EE and XML sectors. That's where the development work is here.
    • I personally don't view Java as a viable solution for web development anymore. Java had it's place, but I think it's no longer fast enough for current practices. I think PHP or another webside language/scripting language would be more beneficial at this point than using Java, and certainly easier to intereface with XML from what I've seen.

      PHP is nothing but a server-side scripting language. Don't get me wrong, this can be all that's needed for many web projects, but for enterprise-level web applications, it's totally insufficient. Furthermore, it's a scripting language that needs to be in the same file as the HTML code. This means the web designer and web developer will constantly be stepping on each other's toes. AFAIK, there are no hard-core object-oriented features in PHP.

      Java, on the other hand, allows you to compartmentalize your HTML code, servlets, and server-side processes. It's much cleaner. Java's object-oriented, so it's far more maintainable than procedural code. Furthermore, it allows further encapsulation of different components of your application, components and code that can be reused across different applications and projects. For example, if you want to perform complex mathematical calculations, you can simply put these into a class and place that class into your general libraries, to be reused in another project.

      We currently use XMLC, a set of tools that allow HTML pages to be converted into Java classes. These classes can be manipulated by servlet code, and finally changed back into HTML output to the browser. This allows a great deal of flexibility, and absolutely NO worries about parsing HTML. It's all done automatically. PHP doesn't offer that kind of functionality.

      Servlets can be subclassed from the most general dynamic page-loading functionality to more complex, application-specific dynamic functions. PHP doesn't have that kind of functionality.

      Furthermore, Java has a rich set of libraries for XML processing, whether you're using DOM or SAX. There are complimentary libraries such as Xerces and XMLC that provide even greater functionality.

      Java and J2EE offer a wealth of tools for true, large-scale, enterprise application development. PHP does not, at least, not yet.
    • I think PHP or another webside language/scripting language would be more beneficial at this point than using Java...

      sure, if most web "sites" needed only to use server side scripting, that would work great. infact, serverside javascript works great, and maybe asp does as well. the fact is though, many companies are building web applications, not web sites. these web applications need to communicate with other web and legacy applications (that's where the ejb app server and xml bring it all together). jsp, with all it's ease of use is just icing on the cake. also, these applications need to be scalable, redundant and failover safe. is the architecture bloated? possibly. is it a LOT to learn? seems that way. right tool for the job? most often, yes.

      not that i'm a big fan of web applications in and of themselves, but lots of companies are moving in that direction. the user interface is extremely limited, the protocol is stagnant, and forced upgrades (re-trainning staff to use the new applicatoin) are aren't an issue, they are mandatory.

    • Java had it's place, but I think it's no longer fast enough for current practices. I think PHP or another webside language/scripting language would be more beneficial at this point than using Java, [...]


      You could not be more wrong.

      The only thing wich is faster than Java as a web application is a monolithic C++ application with an build in web server.

      Or -- of course -- the same in C.

      Precompiled and cashed perl scripts may come close to it, depending on the purpose of the web app. But perl scripts have no way to pass objects of internal data from one script to the other. However a big perl application in OO style might/should be able to do that.

      Look here for easy scripts and a speed comparision of e.g. PHP versus Java (note: that is not Java 1.4): http://www.bagley.org/~doug/shootout/

      This side benchmarks explicitly web sites: http://www.cs.rice.edu/CS/Systems/DynaServer/index .html

      regards,
      angel'o'sphere

      • Re:XML And Java.. (Score:2, Interesting)

        by SpaceJunkie ( 579366 )
        And if you are building a monolithic C++ app, then you might as well use the portable GCJ and compile your java into native code. This means java is comparably as fast(if not faster with fewer bugs etc) as the C/C++ app.

        Of course if you were that worried about speed, you would hand-assemble the lot- but who here has hand assembled server apps? I certainly wouldnt like to try.

        As for PHP vs Java - I am sure both have their applications.

        I am opposed to .net because of the MS affiliation. Other, non MS implementations of similar concepts are not a problem. In this case, I will not dispute the capabilities of the languages/platform itself but the political/corporate agendas behind it - which is an entirely different issue- and should always remain so(ref the Halloween documents- I cannot be bothered to dig up the URLs so get of yer /. behinds and find it yerselves).
  • by Anonymous Coward
    There's about 64 million people fluent in XML and Java, and approximately 4 jobs available (3 of which are already going to relatives). Good luck getting one--try the lottery, the odds are better.
  • All you need. (Score:4, Informative)

    by Kingpin ( 40003 ) on Wednesday July 03, 2002 @11:35AM (#3814580) Homepage
    Apache XML projects [apache.org]
    Apache Java projects [apache.org]

    Explore the projects at the above two links. All the most exciting and usable Java/XML technologies are in there, ranging from SAX/DOM Schema aware parsers to transformers, databases and query languages for XML.

    XML is not a Java only technology, far from it. I fail to understand why so many books appear to try and make it look so.

    • From the article: The accompanying CD-ROM also comes with some neat stuff, like Tomcat, Jakarta and Xerces, and trial versions of WebSphere and DB2. As an added bonus, the code within has been tested on both Windows and Linux.

      So in other words, the CD has a bunch of (almost certainly) out of date versions of Open Source software in order to drive the price up. Vote with you dollars -- don't buy books with CDs!

      Content about things like WSDL is also likely out of date by the time it is published.

      I'd say there are probably a lot of good online tutorials on these topics that are probably more up to date.
    • XML is not a Java only technology, far from it. I fail to understand why so many books appear to try and make it look so.

      I don't really see that books are trying to make it look like that, but the reason you see the two things paired together so much is simple: Java is a platform-independent programming language. XML is a platform-independent markup language. They fit together perfectly.
      • Markup is inherently platform-independent for the same reason that scripting languages are: requires an interpreter on your platform.

        Pop quiz: Where does the term markup originate?
        • That's right, boys and girls, proofreader's marks. Their annotations, referred to as *markup* by the ink devils setting the type, are the basis for *ML. Typesetting macros, whether SGML, Troff, Tex, et. al., were subsequently known by the same term.

          I prefer to see the scope of XML application as a broadening of the concept of publication rather than a narrowing of the idea of data.
      • "Java is a platform-independent programming language. XML is a platform-independent markup language. They fit together perfectly."

        Why? With platform independant data you no longer need platform independant languages. You can work with whatever language is easiest to use, or performs best, or whatever your particular criteria are for your project.

        The only sense in which they fit together perfectly is in the minds of point haired managers, who completely suck in and accept statements like the above, without questioning their technical merit. In fact, in many ways XML obsoletes the need for languages selling themselves on platform independace.
        • "Java is a platform-independent programming language. XML is a platform-independent markup language. They fit together perfectly."

          Why? With platform independant data you no longer need platform independant languages. You can work with whatever language is easiest to use, or performs best, or whatever your particular criteria are for your project.


          Yes, sure. And I recode my application to let it run on my Palm, because I have no ... lets say PERL on it?

          And then I recode my application to let it run on my mobile phone ... because I have no Python on it?

          Not to talk about the fact to reuse the code for my next enterprise wide project, which definitly is in Java, jsut like all Enterprise I'm involved with are in Java.

          Oh, yes. Java runs on nearly all PDAs and on about 90 mobile phones.

          Thats why portable data needs portable code, because I like to work with that data everywhere.

          Probably you should start to think in "life" and not "projects". The projects in which one particular solution is the only possible/feasable are rather scarse. A nice Java component OTOH may get reused for the next 100 years (I saw COBOL code reused for >35 years ... and it is still in use now)

          angel'o'sphere
    • There's one more thing you need: JDOM [jdom.org]. It's basically a wrapper for XML parsers that make manipulating XML in Java much less painful. It's good enough, in fact, that Sun has adopted it as a JSR (JSR 102, I think). I bumped into it a few months ago, and it's already made a huge difference in terms of productivity. With JDOM you spend less time worrying about all the oddities of the DOM or the limits of SAX - instead you mess with good ol' Java objects and JDOM does the rest.
  • The reviewer seems to be worried about the information density in this book. I would say it is a good thing that this book doesn't bother explaining how to compile hello world. If you don't understand the Java syntax, you're reading the wrong book.

    Another good thing is that it doesn't include API documentation. API documentation seems to be a popular way of wasting dead trees but IMHO it is much easier to browse/search in HTML form. That leaves more room to content you'll actually need. There's so many Java books out there that use more than half of the pages for introductory stuff and API documentation and then try to squeeze the stuff you really need in ten pages or so.

  • Doesn't Make Sense (Score:2, Insightful)

    by mmcshane ( 155414 )
    JAXP and Xerces do different things. JAXP is essentially a standard interface that can be used to decouple your parsing code from a particular parser implementation. Xerces is one such implementation (for DOM, SAX, etc.) which can be used underneath JAXP and therefore unseen by a developer. As such it can be used by JAXP but is never in competition with JAXP.

    As far as I can remember, JAXP has little or no implementation code.

  • by Ars-Fartsica ( 166957 ) on Wednesday July 03, 2002 @11:53AM (#3814703)
    Everyone is talking about it but no one is doing it.

    For good reason. There is zero demand for XML web services on the right now, no real support for security, and still-evolving standards.

    • by foobar104 ( 206452 ) on Wednesday July 03, 2002 @12:10PM (#3814824) Journal
      There is zero demand for XML web services on the right now

      I think there's zero business model, too. Say FooCorp offers stock quotes on its web site. There are a few business models for that, although some of them might not be all that great. You can offer the service for free, sell advertising on the quotes page, and cross your fingers.

      But there's basically no model for web services other than pay-for-play. FooCorp could offer their quotes through a SOAP or XML-RPC service or something, but there'd be no way to get secondary revenue from it. They'd have to just charge for the content directly, which hasn't been a very successful model on the web so far.

      The fact that Google offers a web services-style API is cool, but it's unclear to me exactly how it helps their business.

      I'm just speculating here, but I think web services will be much more popular in intranets than in commercial settings on the web, assuming somebody comes up with something that can be done better with web services than with a regular browser-based web app or a Java app or something.
      • But there's basically no model for web services other than pay-for-play. FooCorp could offer their quotes through a SOAP or XML-RPC service or something, but there'd be no way to get secondary revenue from it. They'd have to just charge for the content directly, which hasn't been a very successful model on the web so far.

        One of the things Web Services are designed for is what EDI has been used for on private networks. The business model is "Ford says that if we aren't compliant they won't buy from us."

        Furthermore, charging for content is very rare in the consumer web but not that rare in the commercial web. There are many extremely expensive newsletters (for example) that businesses are happy to pay for. Release 1.0, Gilder's rag, etc.

        I'm just speculating here, but I think web services will be much more popular in intranets than in commercial settings on the web, assuming somebody comes up with something that can be done better with web services than with a regular browser-based web app or a Java app or something.

        There is really no comparison with browser based apps. Web services are for solving problems that cannot be solved with browser based apps because they do not involve human interaction. You cannot integrate CRM and accounting systems with a browser-based app.

        That all said, I happen to think that current web services standards are poor. The problem domain is real and there is real money in it. The proposed solutions are lacking.

        • There is really no comparison with browser based apps. Web services are for solving problems that cannot be solved with browser based apps because they do not involve human interaction. You cannot integrate CRM and accounting systems with a browser-based app.

          Okay, that's a good point. I was only thinking of using web services protocols for connecting desktop applications to server applications. Connecting two server applications together with web services makes a lot more sense. Thanks for the clarification.
          • Okay, that's a good point. I was only thinking of using web services protocols for connecting desktop applications to server applications. Connecting two server applications together with web services makes a lot more sense. Thanks for the clarification.

            The name of the technology sort of invites confusion. Most people seem to agree that the name is more obfuscating than clarifying but nobody has the ability to change it!

        • One of the things Web Services are designed for is what EDI has been used for on private networks. The business model is "Ford says that if we aren't compliant they won't buy from us."

          No one is disputing that RPC over the wire has its uses. The point is that no one seems particularly interested in replacing CGI,CORBA,EDI or whatever they are using already with a half baked set of standards.

          Furthermore, charging for content is very rare in the consumer web but not that rare in the commercial web. There are many extremely expensive newsletters (for example) that businesses are happy to pay for. Release 1.0, Gilder's rag, etc.

          What does this have to do with web services? These are print newsletters.

          There is really no comparison with browser based apps. Web services are for solving problems that cannot be solved with browser based apps because they do not involve human interaction. You cannot integrate CRM and accounting systems with a browser-based app.

          How do web services solve this problem? Web services only expose existing functionality in a new way. You either have the code available or not. The transport and negotiation methods are not the limiting factor. Once again, there are already standards for doing this stuff.

          • No one is disputing that RPC over the wire has its uses. The point is that no one seems particularly interested in replacing CGI,CORBA,EDI or whatever they are using already with a half baked set of standards.

            First, if you think that the web services standards (half-baked though they are) describe "RPC-over-the-wire" then you are quite out of date with respect to the standards. Second, the original poster argued that there is no *problem domain* for Web services. But businesses would demonstrably love to rip out EDI, which relies on proprietary networks and inscrutable, poorly extensible file formats and CORBA, which was never adopted by Microsoft systems and did not make serious inroads onto the mainframe or into the APIs for enterprise software applications. (does SAP expose CORBA interfaces? Siebel? JD Edwards?) The point of a standard is standardization. There are twenty different not-bad ways to do middleware. That's precisely the problem. Metcalfe's law only kicks in when there are one or two dominant ways.

            What does this have to do with web services? These are print newsletters.

            The point is that businesses will not hestitate to buy content, even if consumers will not. If constantly knowing the price of wheat in China is important to your business, you will happily buy that information from someone and will be doubly happy if the feed is using standardized formats rather than ad hoc ones. If you want existing examples, look at the billion dollar businesses dominated by Reuters and SWIFT. Those guys are moving to XML-based technologies. (I don't know for sure whether SOAP/WSDL)

            How do web services solve this problem? Web services only expose existing functionality in a new way. You either have the code available or not. The transport and negotiation methods are not the limiting factor. Once again, there are already standards for doing this stuff.

            Standards nobody is using. Neither CORBA nor EDI are widely deployed at even a fraction of the businesses in North America. Part of it is their technological approaches. Part of it is politics.

            I am not claiming that SOAP/WSDL will necessarily succeed. I am making the point that there is in fact a multi-billion dollar pie sitting on the table and there is no question why major software companies want to try and cut it up.

            • Second, the original poster argued that there is no *problem domain* for Web services.

              Just for the record, no I didn't. (And neither did the guy above me. I'm not 100% sure who you're calling ``original'' here.)

              The guy above me said that there's no demand for web services implementations or applications. I said there's no business model for using them, either. You pointed out that there are software-to-software applications for web services technologies that I hadn't thought of, which I concede, but I'm still not sure that means there's a B-to-B or B-to-C business model that requires them.

              Note that I'm not talking about the same thing you're talking about. You're talking about problem spaces. What can we use web services technologies for? I'm talking about business cases. What can we do with web services that will either be profitable by itself, or enhance our profitability in some indirect way? These are two really different things.

              Often technologies fail not because they themselves are inferior, or because nobody understands how they could use them. They often fail because nobody understands why they should use them.

              Just clarifying my position a bit.
              • I said there's no business model for using them, either. You pointed out that there are software-to-software applications for web services technologies that I hadn't thought of, which I concede, but I'm still not sure that means there's a B-to-B or B-to-C business model that requires them.

                But what does that matter? What business model follows naturally from relational databases? What business model follows naturally from C++? Web services are a technology. When the technology matures, most people will use them to support their existing business models, not to create new business models. Whatever your business, you can use them to integrate legacy systems, purchase syndicated content (like a Reuter's feed) in a standardized form, lower the cost of EDI and get more partners into the EDI game, etc.

                Since when do technologies have to support a new and innovative business model?

                • What business model follows naturally from relational databases?

                  You're kidding, right? Maintaining large sets of textual information is one of the oldest problems. Companies expend a metric assload of time and effort managing their information stores, from accounting to inventory to HR and on and on. Relational databases, with a few additional bits like form builders and report generators, let companies do that more efficiently. Instant ROI. That's a really clear business case.

                  What business model follows naturally from C++?

                  That's admittedly harder to define, but C++ is more abstract than web services technology is. Web services technology is, fundamentally, about exchanging information or commands between two applications over a TCP socket. Everything else is just the specifics of the standard(s). This naturally raises the question, ``Why do you want to exchange data or commands?'' To this question, there are lots of answers. But I can't readily think of a situation in which we need to exchange data or commands between two computers or two programs but can't yet because we don't have a technology for doing so. So the real question behind web services is this: ``What am I doing right now that can be significantly improved with web services technology, in some way that increases my efficiency, or that directly generates a profit for me?''

                  The direct route would be to use web services technology to offer new services for sale to customers. We've already beaten that dead horse; the bottom line is that companies aren't really rushing to offer for-pay services based on these new technologies.

                  The indirect route is what we're really talking about here. What can web services technology give me that will improve the way I do business and help me make more money? All of the examples you gave, ``integrate legacy systems, purchase syndicated content (like a Reuter's feed) in a standardized form, lower the cost of EDI and get more partners into the EDI game, etc,'' are already being done on large scales with other technologies. So one is left wondering how, exactly, web services technology will help anybody do those things better than they're currently doing them.

                  That's what I'm getting at. If an employee came to me and said, ``Let's deploy web services!'' I'd have to ask why. What potential gain can justify the expense and effort required to deploy that kind of technology in place of some other technology that we're already using now.

                  I guess I just don't see the problem that web services technology is trying to solve.
                  • You're kidding, right? Maintaining large sets of textual information is one of the oldest problems. Companies expend a metric assload of time and
                    effort managing their information stores, from accounting to inventory to HR and on and on. Relational databases, with a few additional bits like form
                    builders and report generators, let companies do that more efficiently. Instant ROI. That's a really clear business case.

                    "do that more efficiently." Web services are intended to allow you to connect disparate systems together _more efficiently_. This is also one of the oldest problems. To me, it therefore has a very clear business case.

                    All of the examples you gave, ``integrate legacy systems, purchase syndicated content (like a Reuter's feed) in a standardized form, lower the cost of EDI and get more partners into the EDI game, etc,'' are already being done on large scales with other technologies. So one is left wondering how, exactly, web services technology will help anybody do those things better than they're currently doing them.

                    Before there were relational databases you could manage data also. But what made relational databases so interesting was a *standard model*, *standard syntax* and *standard API*. STANDARDS. There are all kinds of ad hoc ways to glue shit together. To a corporation, "ad hoc" means "expensive" because there are no economies of scale. The HR system uses CORBA, the CRM uses COM and corporate developers must be expert in both of them to build the bridge between them.

                    Web Services do not allow you to do anything that you couldn't do before them. Standards never do. There was distributed hypertext before the Web and databases before SQL. But when you move to standards you get huge economies of scale and Metcalfe multipliers. That said, the standards have to be right, and today they are not.

                    What potential gain can justify the expense and effort required to deploy that kind of technology in place of some other technology that we're already using now.

                    If you deploy it as a replacement for one other technology you were already using you probably don't get much benefit. If you deploy it as a replacement for six or ten or twenty different ways of sending data over sockets then you've got an economy of scale. That's a huge opportunity. Even though I'm not a big fan of RPC, I can see that there is no good reason to have four or five different and incompatible ways to do RPC. But I think that if you go BEYOND RPC you can actually get even greater economies of scale.

          • The transport and negotiation methods are not the limiting factor. Once again, there are already standards for doing this stuff.
            Actually, they are the limiting factor. Incredibly, getting two companies' financial systems talking over the wire remains a project, an implementation. By now it should be totally casual - a small vendor should click "invoice" in QuickBooks and the invoice should immediately show up in ACME corp's ERP system. But the incredible stupidity and inertia of industry have retarded this. Microsoft is hoping to drag everyone into the modern age by labelling a specific kind of XML messages "web services" so even PHBs understand the simple proposition.
            Microsoft has enormous clout with software vendors. If every ERP/Accounting app supports the exact same protocols, the impact will be huge.
      • They'd have to just charge for the content directly, which hasn't been a very successful model on the web so far.

        Salon did $1.1M selling subscriptions with over 30,000 sales. Sounds successful to me.

        Now, because they SPENT $75 million, doesn't mean that people "won't pay for content." (Web myth #47)
        • Salon did $1.1M selling subscriptions with over 30,000 sales. Sounds successful to me. Now, because they SPENT $75 million, doesn't mean that people "won't pay for content." (Web myth #47)

          First of all, it's pretty silly of you to jump from my ``charging for content hasn't been a successful business model'' to ``people won't pay for content.'' These are two entirely different things.

          But besides that, I'd say Salon's situation proves my point, not disproves it. Selling subscriptions hasn't helped them break even, so that model has, so far, not succeeded. That's the goal of a business model, after all: to either enable you to break even, or, preferably, make a profit. Salon hasn't done that. QED.

          All of this is being written, by the way, by a guy who signed up for a Salon Premium subscription over a year ago.

          (Uh-oh. OSQ coming on. Homer: ``Would you look at those morons... I paid my taxes over a year ago!'')

          So, you see, the body of evidence available to us would suggest that the idea that the idea that people won't pay for content is a myth is, in fact, a myth. ("Huh?") Most businesses that have tried to turn pay-for-content into a profitable revenue model have failed to do so. So while it's not literally true that people won't pay for content under any circumstances, it's thus far been true that people won't pay in sufficient numbers or at sufficiently high rates to make selling content a profitable enterprise.
          • charging for content hasn't been a successful business model'' to ``people won't pay for content.'' These are two entirely different things.

            Yet they are often confused, and not always inadvertently. A lot of people screech "greedy company!!" when all businesses are trying to do (usually) is provide better service at a lower price.

            Selling subscriptions hasn't helped them break even

            That's the difference. In other words nobody is getting filthy stinking rich off selling content. Whole different question.

            That's the goal of a business model, after all: to either enable you to break even, or, preferably, make a profit. Salon hasn't done that.

            Because they overspent. Their problem exists somewhere between the top line and the bottom line (where middle management spends, what a surprise).

            it's thus far been true that people won't pay in sufficient numbers or at sufficiently high rates to make selling content a profitable enterprise.

            Because Salon's overspending is not limited to Salon. We've all watched the Aeron chair stories.

            People will pay for good products, no matter where or how they are made available. Businesses that overspend do not necessarily speak to the quality of a business model.
            • Damn IE! I was halfway through my post when somehow the focus shifted without my knowing it. I hit the ``delete'' key, and my browser went back one page. Damn!

              People will pay for good products, no matter where or how they are made available.

              While your statement sounds reasonable enough, I'm not sure we can jump to that conclusion. Can you name one non-informational content company that has broken even or made a profit selling their content through the Internet? By saying ``non-informational'' I mean to exclude companies like WestLaw; their business model is very clear and very solid. But I'm talking about content for which there isn't a fixed demand, like news or entertainment information for the mass market.

              Companies like Conde Nast make a decent profit (as far as I know) publishing and selling magazines. Has there been any similar venture that has used the Internet as a delivery channel?
    • Everyone is talking about it but no one is doing it.

      Yes, and everyone pretends to know all about it.

      Microsoft of course is strutting round the playground saying they know how to do it better than anybody.

      I still have difficultly explaining to clients what "web services" actually are, and I've been in this industry 10 years now.

    • but I was alone.

    • Maybe not in the Internet world, but for internal sytems within companys with heterogeneous applications, there is a great demand for it. We have a whole host of different applications written in a multitude of languages and running on a whole host of operating systems that need to communicate. Web Services offer a great way of doing this.

      And as for security, proper web servers tend to provide security mechanisms which prevents unauthorised users from accessing the url that the service is on.
      • And as for security, proper web servers tend to provide security mechanisms which prevents unauthorised users from accessing the url that the service is on.

        Well if your services are internal-only, you don't need any security at all, you can simply threaten miscreants with disciplinary behavior.

        For web services that exist on the open web, yes, your web server had better provide some security, because you've just routed around your firewall and pointed RPC calls directly to port 80. Even then you still don't have an inherent model for validating users/bots. There is a great deal already written about web services security issues, some good stuff by Schnier. I recommend reading it.

        • Well if your services are internal-only, you don't need any security at all, you can simply threaten miscreants with disciplinary behavior.

          Yeah, right. Which company do you work for? Is this the security policy that you implement for internal systems? Most hacking/misuse of systems happens from internal users. If you have no authentication mechanism, then how do you know who to discipline?

          because you've just routed around your firewall and pointed RPC calls directly to port 80.
          I don't know how many times I've seen this theory that Web Services have to run on port 80. They don't. They don't even need to run on via http. To quote from the W3C [w3.org] -

          Web service

          [Definition: A Web service is a software
          application identified by a URI, whose interfaces and binding are
          capable of being defined, described and discovered by XML artifacts
          and supports direct interactions with other software applications
          using XML based messages via internet-based protocols]



          And in case you want to know what a URI is, again from the W3C [w3.org] -

          Every resource available on the Web -- HTML document, image, video clip, program, etc. -- has an address that may be encoded by a Universal Resource Identifier, or "URI".

          ...

          Other schemes you may see in HTML documents include "mailto" for email and "ftp" for FTP.


          You can have a Web Service running via email if you want. I know I talked about Web Server security in the original post, but that was to show that you can implement Web Services (reasonably) securely, within a corporate environment, using built in security.

          Anyway, a Web Service is not inherently any less secure than a web page. It depends what you let your service do. Every call to a URL is a call to some function or other on your web server. When you are filling in a web site application form and press submit, the URL that the POST gets sent to is a form of remote method. You can provide Web Services that offer exactly the same functionality that was available through passing POST parameters on your web page. This does not open up any security holes that were not already there. It is perfectly possible to build a web service that opens up huge security holes in your system, but then it's just as easy to build a web site that does the same thing.
      • (* Maybe not in the Internet world, but for internal sytems within companys with heterogeneous applications, there is a great demand for it. We have a whole host of different applications written in a multitude of languages and running on a whole host of operating systems that need to communicate. Web Services offer a great way of doing this. *)

        Why not either communicate via the database systems or regular HTTP Post and Get? Send some parameters, and get back the result in whatever format you like: comma-delimited, XML, HTML, BrainF*ck, etc.

        Databases already offer queuing, contention management (multi-user), transactions, etc. Why find other ways to reinvent a wheel that you are already paying for in the DB?

        Or even FTP for a third option. Between these 3, you have plenty of choice and approaches.

        Web services has the same marketing foot that "push services" did. Fortunately, it was pushed into the dump. Somebody just wants to move boxes off the store shelves to keep their pockets fat.
  • by fatarfy ( 319180 )
    Download the full Manning book J2EE and XML Development (pdf) here [theserverside.com]
    You can also get a full copy of Bitter Java [slashdot.org] there.

  • Java is Beautiful (Score:5, Insightful)

    by Anonymous Coward on Wednesday July 03, 2002 @11:59AM (#3814739)
    I never really spend too much time advocating Java, even though I develop in it just about every day. There will always be people who play the other side, the devil's advocate, who regurgitates all the possible negative things that can be said about it...slow, not open, run once and debug everywhere, etc.

    So now, I want to say just how much I really enjoy and appreciate it as a technology. It's a complete dream to work with, with an absolutely huge library, extremely well done documentation and support, instant answers to just about ANY question at Google Groups, and a huge community around it. I think Sun has found a great balance between being open and providing leadership and definition.

    As a professional, the whole .NET thing has given me great pause. When it first came out, so many of my friends, mostly developers, started gleaming with energy about .NET. It was the greatest thing since sliced bread, and it was going to revolutionize computing as we know it. It was so tight, elegant, powerful, with great performance, and a much better GUI library.

    Instead of the hype settling down into seeing it just as a good tool, almost all of them have switched away from it. It was cool at first, they explain, but now they realize that it's still run by Microsoft, it still needs Windows, and almost everyone except Microsoft still has no idea what's going on under the hood.

    So it seems like it's simply a pre-requisite to the Internet Age that the source code must be available. The rules have changed, and the game people now are most excited about playing requires that the source code is available. It's now just a part of the ground rules. You can still play the old game, but the best and brightest are now playing a new game, and to prove yourself and be a part of the new game, you have to play by the rules. There are still people pretending (especially to themselves) that this old game is really exciting, but those playing the new one see how much better it is.

    So, I definitely expect that Java will continue, and that the ringing endorsement of Java by Microsoft will lead to a huge renaissance. It may be that it will have to become GPL'd to have a chance, but that's not clear at the moment. I think it's just a matter of time before it starts to take over on the client, and the eventual GUI for Linux will be written in Java. In the same way that you don't notice the BIOS when you run the OS, you won't even notice the OS when you run whatever becomes the NET GUI.
    • First, .NET was designed to be platform independent. Win32 specific stuff is contained in specific assemblies prefixed with "Microsoft.", such as "Microsoft.Win32" which contains a whole slew of Windows-specific stuff like the Registry.

      The .NET CLI and C# language spec are open standards, which is more than anyone can say for Java. Sun has twice attempted to standardize Java, but pulled out. They want to keep a tight noose on Java because, presumably, they wish to charge licensing for it in the future.

      Go-Mono [go-mono.com] is an open-source, GPL implementation of the .NET CLI and C# for Linux (on several hardware platforms).

      Microsoft had Corel and some of their researchers in Cambridge, UK, develop a clean-room implementation of the .NET CLI and C# for FreeBSD and Windows called "Rotor". They have released it as Shared-Source (meaning you can view the source, but not use it) to demonstrate that it is possible to make .NET cross-platform.

      MS has said that it will discuss commericial licenses of Rotor.

      If there is sufficient demand, .NET will be ported to other platforms by MS or 3rd parties (since it's a standard).

      I don't think .NET will kill Java, that would be absurd. In fact, I hope it DOESN'T kill Java.

      A software world where your main choices are .NET or Java is a very good world indeed!

      But, it's equally absurd to think that Java will kill .NET and .NET will fade away. .NET is poised to sweep through the MS development community, after which it will have as much or more deployment than Java. It's a force to rekon with, whether you like it or not.
    • by alienmole ( 15522 ) on Wednesday July 03, 2002 @01:30PM (#3815590)
      Thanks for the thoughtful post. I'd like to add that I've found it quite easy to evangelize against .NET, even in diehard MS shops, and I suggest that anyone in a position to should try doing this.

      There's hardly an MS shop out there that hasn't felt some misgivings about Microsoft and specifically .NET over the past couple of years - whether because of Microsoft tightening the licensing screws, dumping support for Java, radically changing VB for .NET, or pushing a brand new language (C#) for Microsoft's own benefit, or simply all the information that's come out in court which makes it clear that Microsoft has always been more than willing to screw their customers to make a buck.

      IOW, Microsoft has provided us with an enormous amount of FUD ammunition, all we have to do is load up and start firing. Don't be too in-your-face about it, though. Instead, start by asking questions:

      • Do you feel comfortable committing to .NET as a single-vendor standard? (Point out that open-source alternatives like Mono are still vaporware.)
      • If you're not going to use C# because it's too new and unproven, which language are you going to use to target .NET?
      • If you use VB.NET, aren't you concerned that the next version will leave you out in the cold, as just happened with the previous version of VB in the transition to .NET?
      • Wouldn't it be beneficial to be able to run your server-side apps on any hardware and OS? What if you need to scale up substantially? Will you simply build a huge farm of Windows machines and pay for all those server licenses?

      Don't get overly emphatic about any of this, you're just asking questions. Once the target has had a chance to think about this - maybe over a period of days, weeks, or even months, depending on the degree to which their brains are set in Microsoft concrete - you can slowly start pointing out the benefits of open platforms.

      For example, running Java means using any hardware and OS as your server, today. The WORA creed actually does apply to Java on the server side - we regularly run our server apps on Windows, Linux and Solaris, without changing a line of code. Linux server farms are a heck of a lot cheaper than Windows farms, because of licensing. And if you need a single box that's bigger than any PC-class server, you can't beat the Unix-based hardware that's out there.

      Running Java means wide support from multiple vendors, some of them very large and reliable, like IBM and Sun. There's competition amongst vendors in the form of multiple implementations of application servers, JVMs, and Java compilers - you can pick what you need, from open source to expensive enterprise-oriented products. The equivalents on .NET are all single-sourced - no competition, no openness.

      The lack of competition within .NET has important implications: Microsoft can't fill all niches, and it doesn't even try. Its offerings are usually skewed towards the most lucrative markets, the biggest enterprises, and as a result smaller businesses that don't need all the features have unnecessary stuff pushed on them. In the Java world, if you want something small and light, you can just download an application server like Jetty [mortbay.org], a lightweight but powerful persistence solution like Hibernate [sourceforge.net], and you've got a kick-ass application development and deployment solution. Powerful open and extensible IDEs abound, with Eclipse [eclipse.org] being a top contender.

      What it comes down to is that companies have to be on some weird kind of crack to think that it makes sense to commit their development to .NET. Microsoft has upped the stakes in platform commitment required from their customers, but it's not offering anything in return. Meanwhile, there's a widely used, widely supported, competitive, successful, open, multi-platform alternative that's available today. The choice here is a no-brainer, folks.

      [P.S. for those who object to the Java-centricness of all this, I'm talking about commercial scenarios where Perl, Python etc. are just not considered options. But once companies begin using open solutions, they tend to become more open to other such solutions - I had one IT manager who switched from IIS/ASP to Java/JSP recently ask me where he could download Perl for Windows.]

    • (* I really enjoy and appreciate it as a technology. It's a complete dream to work with, with an absolutely huge library, extremely well done documentation and support, instant answers to just about ANY question at Google Groups, and a huge community around it. I think Sun has found a great balance between being open and providing leadership and definition. *)

      That is not Java the technology, but:

      1. The 'network effect' where the more people that use it, the more info there is on it. Sun is playing Microsoft's game.

      2. Standard API's.

      Why should standard API's be tied to any one language? What is needed is standard GUI interfaces, standard network interfaces, standard file system interfaces, etc. Then the language nor platform would matter. Python, C++, or FORTRAN could all talk to the same API's.

      I know, other languages can still talk to Java API's through some fiddling, but the Java API's are optimized for Java syntax and design.

      And, the run-time-engine thing does not mean much for server software.

      We have plenty of languages already (viva choice). We just need standard protocols so that the OS does not matter for GUI's, etc.
  • An alternative book to consider would be Definitive XML Application Development [garshol.priv.no] by Lars Marius Garshol. Python is not limited to the object oriented programming style of Java. It is the selective blending of alternative programming styles, such as functional programming, that make Python a better choice than Java for many applications. Processing XML is one such example. Numeric (think steering large physics programs)computing is another. Scripting animation for the movie industry is another.

    Python isn't hyped as much as Java. This has had a positive effect on the quality of books written about the language. You don't have to plow through hundreds of bad books when looking for a good book on the language. The referenced Python book had the following description on Amazon.

    In this book, leading XML developer Lars Marius Garshol covers every essential aspect of XML programming, from basic principles through advanced techniques, utilizing DOM, SAX, XSLT, XPath, schemas, and other key XML standards. Garshol presents scores of code examples based on Python, a cross-platform language that is exceptionally well suited for XML development. Garshol also presents new insights into XML application design and optimization, as well as complete sample applications.
  • with all of Microsoft's slick marketing for .NET there's never been a better time to remind the industry which platform got it right first.

    Exactly, and that would be Perl on Unix. That got it right before Microsoft knew there was such a thing as HTTP.

  • "with all of Microsoft's slick marketing for .NET there's never been a better time to remind the industry which platform got it right first"
    • It's not important who's gets there first ... it's important who's there in the end.
  • I like the Java language ... but this Java Virtual Machine is a hindrance. For things like downloaded applets that need to run in anyone's browser on any machine, a portable run-time is essential. But for building server-side applications, the JVM is the problem. So I'm looking for a compiler system with libraries that compiles Java to native machine code (with many platforms supported), and still does everything any Java program would expect ... except for things like being able to share the runtime code, both the executeable and the libraries, across thousands of process instances, and the raw speed native code gets. Oh, and GPL, LGPL, or BSD style licensing would be nice.

    • What exactly is the issue, here? Have you looked at any modern-day JVMs? None of them interpret bytecode on the fly anymore. They all just-in-time compile their code, and can do adaptive optimizations as the program runs.

      For a "server-side" JVM, check out BEA's JRockit [bea.com]. I it is available as a free download [bea.com] (registration required). Right now it only runs on Intel boxes (Linux and Windows) though.

      • 1000 processes doing just-in-time compiling? Now tell me how that resultant machine code is shared securely between processes. If compilation to native machine code can be done, why not do so before run time, and then the stored machine code image can have its one copy in RAM shared by the many processes running. This wouldn't have been an issue with applets in a browser, but it certainly is in a server.

  • The Good

    One look at the table of contents should convince you that the book rates pretty highly on buzzword compliance (XML, DOM, SAX, SOAP, XLST, WSDL, UDDI, JSP, EJB, etc.). When it comes to content that should impress your manager, you could do worse.

    It speaks volumes that the first sentence of the section on "The Good" concerns "buzzword compliance" that will "impress your manager".

    One of the best software engineers I know, who has been writing Java for years and has extensive and ongoing experience with other platforms as well, has said working on Java projects makes him suicidal.

    With indicators like the above, I can see why.

One way to make your old car run better is to look up the price of a new model.

Working...