I always break into a little smile when I read the newspaper and see someone mentioning a programming language, especially Java. Think back, way back. How many times have you read newspaper articles discussing Fortran, Pascal, Scheme, or Cobol? OK, that may be too far back for some of you. How about C++, C#, or Smalltalk? Sure, they receive a little coverage every now and then, but Java seems, at least in my opinion, to be mentioned most often.

The last time I saw Java mentioned was in an article in the Financial Post, reporting on comments made by Mike Lazaridis, Research in Motion's (RIM) co-chief executive, at Comdex. "We have to move to one powerful standard," said Lazaridis. "Java sets up an open-standard platform that all designers can design for—RIM has adopted it for all future BlackBerries." His view was reported as the following: Many problems facing mobile devices could be eliminated if more technology companies were prepared to move to the Java-based J2ME. Let's make this clear, because there are two points being made. First, standards are very important, not only for developers, but for companies and consumers. They enable companies to develop product and service offerings that can operate with other mobile devices and other companies' offerings. Second, Java, specifically J2ME, is a powerful, open-standard platform that technology companies should adopt and support.

One could argue that companies should not adopt standards, but set their own and try to monopolize on them. How else will a company make money? Kill your competition—yeah, that's the ticket. Why would you ever want your software to work with anyone else's? The strong will survive and the weak will be bought out.

My response to these statements can be summed up in two words: reuse and complexity. Take, for example, peer-to-peer (P2P) computing. If you wanted to build a P2P application, you could write your own peer and communication protocol, figure out how to have the application installed everywhere, and then develop applications that work only with it. What a waste of time! Wouldn't you rather just develop applications that work with all peers, not just yours? Do you really want to develop a custom communication protocol? Why not just reuse the work of others, and increase your abstraction level? That's the only way we are going to manage complexity anyway. There is no point in having everybody develop the same things. Why not get people working at different abstraction levels, making them co-exist and using the work of others? Standards, such as those proposed for the JXTA project, help save time and money. They get everyone working together, and they help with the formation of working communities. Sounds like a good thing to me!

About the Author

Dwight Deugo is a professor of computer science at Carleton University in Ottawa, Ontario. Dwight has been an editor for SIGS and 101communications publications, and serves as chair of the Java Programming track at the SIGS Conference for Java Development. He can be reached via e-mail at [email protected].