I could tell you, but then I'd have to Bill you I recently read Design Patterns by Erich Gamma, et al. It’s a great book, so if you haven’t had time to look through it, I strongly urge you do so. (See Resources for more information on the book.) The book is a catalog of object-oriented patterns that, through experience, many object-oriented (OO) designers have developed and used effectively. What I found most interesting about the book wasn’t the content but how much of the Java API uses these design patterns. This exemplifies the thoroughness and depth of knowledge demonstrated by the designers of the APIs. What I find tragic is that even though I and many of my peers understand this point, many in the computing community simply don’t get it. Countless commentators, editors, and analysts are busy predicting the demise of Java or limiting it to an over-hyped fad that won’t amount to much. Few of the “industry experts” really understand technology, particularly Java, well enough to make objective observations.You’ve probably heard of Robert X. Cringely. He wrote the Triumph of the Nerds, which was turned into a mini-series on PBS. He has a commentary page, called “I, Cringely,” on www.pbs.org. (See Resources for a link to his site.) I respect Robert’s opinions; he is one of the few who actually researches a subject before writing about it. I sent e-mail to him to tell him that I generally agree with his commentaries but disagreed with his views on Java. He sent me this response:You can’t write anything in Java that can’t be written (and run faster) in C++. Java may well be the next important phase in software development, but it is only a phase. Java is the Pascal of the 90s.Java and the transistor: A technological shiftWhen Bell Labs physicists Bardeen, Brattain, and Shockley created the first point contact bipolar transistor in 1948, someone must have made the observation that a transistor can’t do anything more than what a vacuum tube can do. Basically, transistors and vacuum tubes are merely amplifiers, and for many years, tubes were cheaper, faster, and basically better amplifiers than transistors were. Robert Noyce and Gordon Moore didn’t view the transistor as just a vacuum tube replacement. They understood the potential of transistors, founded Fairchild Semiconductor, and later founded a new company called Intel. One could argue that the transistor is just a phase in amplifier development, but transistors have become so ubiquitous that they have influenced our lives in profound ways.Like the transistor, Java is no great leap in terms of fundamental operations. What makes Java significant is what makes the transistor significant: a shift in the direction of technology and how we use it. It’s not about rewriting old applications in Java or moving from C++ to Java. It’s about a new class of functionality that just wasn’t considered practical before. Java bytecodes are an abstract representation of processors. This means that information contained in something as pedestrian as a smart card in your wallet or a ring on your finger can be understood by any computer anywhere. Another possibility is that complex information stored in a database can be represented efficiently and succinctly as a Java object using Java Blend API. These objects can be delivered to any type of display device or can come from any type of data entry device using remote method invocation (RMI). All of this was theoretically possible before Java but was considered impractical due to complex implementation details.The word on Java — from the non-developers’ perspectiveOn the Java literature front, I read an article titled “As the Sun Sets,” written by David Coursey, a self-proclaimed expert in the technology field. Mr. Coursey argued that Sun Microsystems ultimately will lose control of Java, and that Microsoft will be the company that benefits the most from Java technology. His fundamental reasoning is that Microsoft “writes better code.” Without entering into the whole religious battle, I disagree completely with this argument. I don’t think Microsoft writes better code. There is no doubt that the company has some of some of the best computing talent on its staff, but I don’t think that talent finds its way into, for example, Microsoft Word. I asked Mr. Coursey what his technical qualifications were, and he responded:I am not an engineer or a coder…but I have a large number of people whose opinions I respect and provide technical vetting for my work.I find it curious that so much is written about technology by people who have no formal education in the sciences. There appears to be a fascination in publishing opinions without understanding the fundamentals of the underlying technology. I’m not talking about understanding HTML and how a Web browser works. I’m talking about the simplicity and ease of use of RMI, the sophistication of the bytecode verifier, and the robustness of the Java virtual machine (JVM) memory model. These topics require a thorough understanding of software engineering principles that only comes from education and real-world experience — two assets that seem to be in short supply from the self-proclaimed experts.The gospel according to BillLast April, the JavaOne conference and the Software Development conference were held simultaneously and across the street from each other at San Francisco’s Moscone Convention Center. Microsoft chairman Bill Gates presented a press briefing, and I secured a front row seat. I wanted to find out firsthand what Bill’s vision of the future was. It turns out that his grand vision was basically the same as everyone else’s. Bill touted his thin clients, the NetPC and the Windows terminal, and he talked about Windows CE for embedded devices. Referring to Java, he argued that platform independence could not be achieved, claiming that 54 percent of programmers in the industry use Visual Basic as their primary programming environment, and that there were only 56 Java books in print! I have authored two Java books myself, and I think the chairman is off by a lot. Surprisingly, many of the reporters covering the briefing hung on every word uttered by the Microsoft chairman, seeming to swallow what he said without question. Some even called him a visionary! The following day, I spoke with Sun’s Scott McNealy; I asked him if he’d heard Bill Gates’s speech, and he replied in the negative. When asked what I thought of it, I told Scott that Bill had presented false facts — in fact, that he blatantly lied. Scott stopped me in mid-sentence, saying, “He knows he’s lying.” It got me thinking that if Bill knows he is lying, and Scott knows Bill knows Bill is lying, then it’s all just a game of who can gain the greatest mindshare of the people who have little or no knowledge of technology.Everyone paints a picture of what the future will be, often based on what they want the future to be. Bill Gates will downplay the significance of Java so it does not threaten Windows. David Coursey will downplay Sun’s role in order that his model of computing excellence, Microsoft, will not be challenged. Robert Cringely — well, I think he hasn’t had any time to play with the JDK. If he did, I think he might have a different opinion.ConclusionWhat is the ultimate future of Java? I don’t know. One thing I do know is that many — too many — people simply don’t understand what Java is and what it can do. This is tragic. There are even those who don’t know that Sun developed the technology. I often ask students of my Java classes, “Who developed Java?,” and I hear “IBM” or “AT&T.” Sometimes I even hear “Microsoft”! As developers, systems architects, and even hackers, we must educate the public. We must tell people in simple, easy-to-understand terms what Java is, what it can do, and why it represents a step forward. Most of all, we must make people understand that they need to study technology objectively, make informed decisions, and not follow along blindly. When we have done this, everyone will know what we already know: Java is simply a superior technology.Madhu Siddalingaiah is cofounder of PraxisNET, a Washington, DC-based Java solutions company. He has been deeply involved in Java technology since its first beta release in fall 1995. Madhu teaches hands-on Java training courses for Learning Tree International and has authored the Java How-to published by Waite Group Press, and Java API for Dummies, Quick Reference, published by IDG Books Worldwide. Before Java, Madhu designed hardware and software for satellite flight instrumentation, communications receivers, and 3D graphics. Outside the technology field, Madhu can be found playing drums and flying helicopters, but not at the same time. Software Development