
|
|
Sun, Java, and
Halloween - The Dark Color of Java By Jonathan Campbell Many older programmers like me resist change. It is natural to the human species (and probably others) that changes in environment cause a certain amount of anxiety and discomfort. The dizzying changes that I have seen in my programming career 30 years or so would make most people's heads spin. Which is why when I first heard of Java I was really not looking forward to learning to yet another new language. I had cut my teeth as a systems and language runtime system programmer on assembly language, then C, and (ugh) C++. I even liked the object-oriented approach that you could use in C++ if you didn't step on yourself by using older constructs of C. When I took my first Java course, I was pleasantly surprised. It was enough like C that it was easy to write. The method library was huge; it seemed that you hardly had to write any code at all. The object approach made sense. But some things made me uneasy about this language. Its "total break" from C seemed superficial. The difficulty of calling native methods written in C or C++ seemed absurdly difficult. The lack of destructors seemed odd, at best. When I pointed out to my Java instructor the obvious flaw in not having destructors that other resources owned by structures deallocated by the garbage collector are lost forever he said "yeah, you're right, I wonder why they didn't think of that." Last year, at a going-away party for a friend who was a member of the ANSI Language Committee, I found out about something very odd. Somehow Sun Microsystems had convinced a majority of the committee to approve Java as a standard language, yet allow Sun to continue to be its sole proprietor and designer. This is the first time in the history of computing that this has happened. Previously any language that was approved as a standard was then maintained and modified only by the majority of the ANSI Committee for that language. In the last year I watched and read about Java implementation projects. I found some disturbing trends:
Then, in late October 1998, probably the most significant document ever written about computer industry practices referred to as the Halloween Document was spirited out of Microsoft. (See http://www.opensource.org/halloween.html.) It outlined a strategy proposed by a Microsoft analyst to destroy Linux and other so-called "open systems" (freeware) consortia. The strategy is to create new, complex protocols or extend public-domain ones in a way such as to make it impossible for the open software "competition" to keep up. With a staff of 14,000 software engineers, Microsoft can spin protocols and publish them faster than most organizations can write prototypes. I realized immediately that I had seen this before at Digital, where I worked for 18 years. We spoke openly about "extending" protocols in a way that the competition would be unlikely to match. We would make the extension very desirable to customers (such as long passwords), and thereby "lock in" customers to Digital's "value-added" software and hardware products. I remembered how difficult it had been to convince the network engineering group to promote standard TCP/IP and stop adding features to DECnet. Microsoft and other companies have been playing this game for a long time. Microsoft's "extensions" to C++ in VC++, promotion of Microsoft mail extensions and use of TNEF ("transport-neutral encapsulation format") instead of MIME, incompatibility of various versions of Microsoft Office, are all mechanisms used to keep customers buying and keep competitors off-balance. Then I realized that somewhere in Sun there might be a similar document prepared when Java was being designed. (If there isn't, there are certainly a number of peculiar coincidences.) Seen in this light, Java is an absolutely masterful attempt to wean organizations and developers away from the Microsoft (VC++, MFC, VB) and open-software (straight procedural C) camps and into the Sun orbit. Let's see what that document would have said:
Let's look at these from the perspective I've outlined above, that is, to "gain market share" for Sun Microsystems.
I have said to my friends that the only difference between Scott McNealy and Bill Gates is $40 billion in personal assets. I believe that the main focus of Java is precisely to move programmers and organizations from Microsoft's orbit to Sun's orbit (pardon the pun please). If this is not a conscious policy of Sun, it might as well be, because if Java is successful it will turn the tables around: instead of the "Windows monopoly," Sun will own the "Java/JVM monopoly." Conclusions It is the author's opinion that, like Microsoft and other companies in the computer industry, Sun's intentions in the creation of the Java language and environment, are not benevolent, but rather an attempt by Sun to hijack the entire computing industry by providing the "standard" platform. Because of the acceleration of speeds of non-Sun CPUs (Intel, AMD, and Compaq/Digital Alpha) and the competition from Microsoft and non-commercial freeware UNIX (Linux), general acceptance of the Java language and environment is a life-or-death issue for Sun. Sun created Java in such a way that it deprecates billions of lines of C/C++ code, by encouraging organizations to adopt a new computing paradigm that is, at its core, incompatible with C/C++. The Java language itself has severe deficiencies, such as the deallocation of non-memory resources (the lack of destructors), which the author believes were necessary compromises from the beginning to prevent control outside the Sun-defined Java environment. Sun has twisted and distorted the ANSI Language Standards process. Anti-Microsoft fervor allowed Sun to push the ANSI committee to approve Java as a national standard language yet allow Sun to retain complete control of it, turning this national standards body into a rubber stamp for Sun Microsystems. The abstraction of objects fostered by Java what the author refers to as "JavaThink" appears to cause otherwise good software engineers to skip some of the usual steps involved in good software engineering practice, such as data flow analysis, fault tolerance, data persistence, and performance. Over-objectification also creates complexity from simple tasks. Finally, the lack of structures and the need to use get/put methods for touching anything in an object makes instruction streams extremely short, making it physically impossible for Java programs to run anywhere near as fast as equivalent C/C++ programs on many current processors and certainly the majority of future processors. As a 30-year veteran of the computing industry, I suggest that organizations take great care if they decide to adopt the "Java" environment, to be certain that it really matches the long-term needs of the organization, and that the off-the-shelf software available in the JDK and the marketplace really matches their requirements. The near-total deprecation of Java on the Web (due to security considerations), the serious problems enumerated above (especially the abandonment of billions of lines of public-domain and standardized code and libraries), and the ownership of the technology by a single private entity would make me think twice before adoption. JLC December 3, 1998 [1]The object abstractions, the functional independence of the methods, and the focus on the object interfaces (CORBA "services") tend to obscure and in some cases even subvert some of the fundamental functions of the system being built. In C, data (or a pointer to it) is passed and acted upon by procedures, whereas in Java the objects through which the data passes, rather than the data itself, become the primary focus. Perhaps these are just examples of poor system design non-congruence of the object data and system data, for instance. But I have seen it too often to be coincidence. Even ordinary discussions about data flow analysis can be a frustrating experience, because in organizations that have embraced JavaThink people think in terms of objects and services one step removed from the data and actions upon it. [2] The emergence of hostile Java applets and bytecode viruses has dramatically reduced use of Java applets, I expect that by this time next year there will be no Websites that have Java client-side code. For more information about this, see http://www.rstcorp.com/hostile-applets |
Back to the Natural Therapy Virtual Clinic
Order a Natural Therapy Manual or Contact Jonathan Campbell
©Graphics, Web design, and content Copyright 2003-2010 by Jonathan L. Campbell.
Jonathan Campbell, Health Consultant
124 Metropolitan Ave.
Roslindale, MA 02131-4208
Jonathan regrets that, because of time constraints, he cannot
respond
to individual phone or email messages outside of prepaid consultations.
To set up a consultation, please click here.
To find out about Home and Homebuilding
Quality Assurance, go to
http://www.cqs.com/homeqa
What's Wrong With Dricore:
http://www.cqs.com/homeqa/dricore.htm
Stop Spam - Subscribe to SpamCop - http://www.spamcop.net
Reduce The Burden of the HIV and AIDS
diagnosis -
http://www.reducetheburden.org