It is far too early to make a call about the chances of success for Java, either as a programming language or run-time environment. The article you referenced adds to our knowledge, but be cautious reading too much into Java for embedded systems, particularly deeply embedded systems. What follows is a reply also to voop's question in Post 2536.
Understand that I am a fan of Java, object-oriented programming, and I very much like the idea behind the Java Virtual Machine design of Network Computers. WIND will be a strong Java player if the language lives up to its potential. So believing or not believing in the future importance of Java has no obvious impact, one way or the other, on the investor's view of WIND. Should the 2nd generation NC/OS from NCI live up to its original excitement, and be based on VxWorks, then Java probably would be a net plus for WIND. Also, given WIND's extensive resources and developments in Java, I suspect that WIND would extend its hegemony easily to include Java.
Now, let me give you other considerations about Java, which admittedly are mostly negative:
1. Apparently Gerstner at sees Java as IBM's means to re-establish the company as a software leader. Gerstner may be excellent at trimming fat from big, bloated companies, but a technical spokesman for the industry he is not. His enthusiasm may well be a bad sign for Java. 2. Microsoft is trying to kill the acclaimed run-anywhere properties of Java, and annihilate the NC. Bill Gates may not be successful in these endeavors, but not for want of trying. The NetPC and WinTerm were deliberate efforts to bracket the NC (NetPC on the high end and WinTerm on the low end) and confuse the market. It almost confused IBM, since initially IBM announced intentions to build a NetPC, then dropped it after they must have realized they were playing into Microsoft's nefarious hands. IBM pointedly gave lack of customer interest as the reason they dropped the NetPC, but I suspect the real reason was to thwart Microsoft. Finally, Microsoft is taking dead aim at the NC by contaminating Java with Windows extensions, in order to trash the "run-anywhere" threat. If the DOJ could stop Microsoft from messing with Java, the world might be better place, but they can't and they shouldn't even try. However, if Microsoft succeeds in its sabotage, at most Java will evolve into yet another computer language, mostly useful for web-page programming in Windows. 3. Pure object-orientedness is not nearly as important to most programmers as many pundits proclaim. Regular run-time libraries provide programmers with almost everything they need for reusability of parts. The construct of a public API to a useful set of related functions is adequate for most programmers, and often safer than trying to incorporate poorly understood objects in rich ways. Deeply embedded systems like things to be safe. 4. Run-anywhere Java only has an intrinsic advantage when random application parts must be downloaded interactively over a network with relatively limited bandwidth. This situation is met with the human machine interface to random applications using popular wired and wireless WANs. This situation could be altered near-term if cable modems become prevalent (Gates invested $1 billion to each of two cable companies to seed this process.) The limited bandwidth situation might even be eliminated for the entire world in one stroke if Bill Gates successfully launches Teledesic, the LEO satellite system, for a mere few billions of dollars. Knowing that Bill Gates will be spending the latter part of his life trying to figure out how best to spend his money (after spending the first part figuring out how to become the world's richest man), I would suggest that he give Teledesic to the world, with all needed operating expenses for 100 years. This would amount to the greatest gift anyone ever gave to mankind (providing unlimited high-bandwidth communication free). It would also drive a stake in Java's heart. 5. Deeply embedded systems almost never need random access to application parts on a server. In other words, there is rarely a need for a JVM with deeply embedded systems. (Deeply embedded systems are WIND's primary stomping grounds, and where it reigns supreme. WIND also will be a player in multi-application systems with interactive human interfaces, often by forming a generic OS layer to a competitive application layer like Spyglass, or NCI's NC/OS. But generally this is the playground of Microsoft and lessor companies like Geoworks.) 6. The JVM has a way to go just to be adequate for most deeply embedded systems. Time is not the friend of the JVM. 7. The C/C++ de facto standard for high-level programming, with a mature set of development tools and the ability to run on any system just with a cross-compile, is a monumental obstacle to Java becoming a dominant programming language. I suspect that lots of embedded systems developers lean toward C, being distrusting even of C++'s hiding of details as well as its relative inefficiency. For example, EC++ (Embedded C++, or C++ for embedded systems, is now being touted as a solution for some inherent inefficiencies of C++.) Java's initial design, including uncontrollable garbage collection, clearly is unacceptable to most embedded systems developers.
To summarize, I wish pure, run-anywhere Java all the success in the new year. But don't be surprised if nothing earth shaking happens with Java in 1998.
Allen |