Please feel free to forward this newsletter to as many friends as possible. I have a personal goal of having one million readers. I can achieve it with your help.

the Software View: The importance of JavaTM for today's software design engineer and Information Technology Consultant

Welcome back, gentle readers, it is news to you! Your faithful correspondent has been scouring the news outlets to cull some precious nuggets for you. Scott McNealy, Chairman of the Board, Chief Executive Officer, and President of Sun Microsystems, Incorporated just returned from a trip to Japan. He was there selling Java for Japanese companies to incorporate into their consumer electronic devices.

For those of you with Internet and World Wide Web access and a Netscape Navigator web browser, please point your browser to:
http://www.softwareview.com/
Scroll down the page and you will spy a link entitled, "Current views web log (fresh news daily! Click reload, clear the browser cache)" The daily news page is also known as a "web log". It is en vogue and the fashion of these days to call it that. Click on the link, click "reload" on your browser or clear your browser cache to ensure that you always receive the freshest, hottest daily news concerning Java, Linux, XML, and the software industry! The link never changes, but I will be updating the HTML file page behind it every day. Please, do take a gander at it every day.

Also, some important news, gentle readers. the Software View is now an Associate Internet World Wide Web site of Amazon.com. I would like to extend my sincere, heartfelt gratitude and thanks for your patronage. I am offering links to books, et cetera that you can purchase from my web site. I would greatly appreciate it if you would purchase software industry books from my web site. Help support my newsletter and web site by purchasing items from Amazon.com from my web site. Here is the URL (Uniform Resource Locator):
Click here

Now, dear readers, on with this week's episode of the Software View!

PC Week Magazine's Spencer F. Katt writes, "Nobody was ogling Microsoft's SQL Server 7.0 Beta 3 at a recent Palo Alto SIG meeting. To kick off the inaugural meeting, a Microsoft product manager raffled off a series of prizes, including T-shirts, techie toys and a copy of the database's latest beta. Winners were allowed to reach into a bin and grab whatever trinket they wanted. When the game was over, guess what was left, unclaimed and unwanted, at the bottom of the barrel? SQL Server 7.0 Beta 3, according to a Katt confidant."

Halloween documents were leaked from Microsoft detailing their fear of Linux. In more Microsoft fun, Pete Higgins, Microsoft's top Internet Vice President and 15 years Microsoft veteran resigned. Gee, I wonder why? Methinks maybe because Microsoft properties like MSN, Sidewalk, and Slate have all taken such a drubbing on the Internet!?

In testimony given during the landmark Microsoft antitrust lawsuit, Bill Gates said, "This antitrust thing will blow over." According to the notes, Gates added: "We may change our e-mail retention policy." When that last statement was read the antitrust lawsuit courtroom erupted in laughter. Some of the most damning evidence given in the trial has been e-mail sent by Microsoft's own executives.

Oracle Inside. Microsoft's WebTV central site runs on an Oracle database.

Now, dear readers, on with this week's episode of the Software View! The "Information Technology Market Trends" Conference was held this past Thursday in Bellevue, Washington at the Doubletree Hotel. I spoke in the Overlake conference hall on the first floor. There were six speakers, and I was the last one to speak, the anchor speaker. Here is a transcript of my address, as well as questions I addressed during the question and answer session following the speeches.

"Please allow me the privilege of an introduction, as well as a short, shameless marketing blurb and plug. My name is Mark Kuharich. I currently serve as a software design engineer and Java consultant in the field. I achieved a Bachelors degree in Computer Science from the United States Military Academy at West Point, New York. At one time, I formerly served as a full time employee for Microsoft Corporation in Redmond, Washington. I helped them ship the Internet Explorer version 4.0. Now, I spend all of my time learning and using Sun Microsystems' Java software technology platform.

Okay, Warning! Here is a short, shameless marketing blurb and plug. I am the Editor-in-Chief of the Software View, a free, no cost, e-mail and web based newsletter with articles, commentary, and my views of developments in the software world. I have a personal goal of having one million readers. The Internet site is located on the World Wide Web at:
http://www.softwareview.com/
Please, do take it upon yourself to go visit the Web site, read my articles, and please join my newsletter. The newsletter is a labor of love for me. It is my passion. I would like to extend a personal invitation for you to share in it with me. Okay, that was the end of my short, shameless marketing blurb and plug.

My talk this afternoon is entitled, "The importance of Java for today's software design engineer and Information Technology Consultant".

First of all, I would like to answer the question of, "What is Java?" Java is a software technology platform invented at Sun Microsystems, Incorporated. It consists of not only the Java programming language itself, but also of the Java virtual machine and its associated core Java class files and applications programming interfaces, or API's.

Java has the potential of becoming the de facto programming language for the Internet and World Wide Web, and the standard for cross-platform executable content. Its mantra is "Write once, run anywhere". Java annihilates the switching costs of portability between operating systems for software applications.

We are all truly fortunate to be alive and to be witness to the dawning of a new era, a paradigm-shift to the era of the networked enterprise economy. An era where every electronic device in the world will possess an Internet protocol (IP) address and be connected to the Internet and World Wide Web. Java will potentially be the applications software engine that drives this ubiquitous connectivity.

The roots of the Java language itself harken back from the C and C++ programming languages. James Gosling, its inventor, wanted current software engineers to be able to quickly pick up the new language. Because everything inherits from Object, Java is object-oriented from the ground up. This helps programmers enforce good object-oriented practices, which leads to more maintainable software programming code.

The Java Runtime Environment (also known as the Java Runtime or JRE) consists of the Java virtual machine, the Java platform core classes, and supporting files. It provides a standard set of facilities for manipulating the user interface, communicating across a network, and so forth.

What makes Java intriguing is that it is also a runtime environment embodied in what is called a virtual machine (VM). This VM sits, in essence, between the Java program and the machine it is running on, offering the program an "abstract computer" that executes the Java code and guarantees certain behaviors regardless of the underlying hardware or software operating system. Java compilers thus turn Java programs not into assembly language for a particular machine but into cross-platform, platform-neutral Java "byte codes" that the machine-specific VM interprets on the fly. The Java VM also enforces security policies, providing a sandbox that limits what the Java program can do.

Java is simple, small, object-oriented, network-ready, robust, secure, architecture-neutral and portable, high-performance, inherently multi-threaded, and dynamic.

In the business world, Java makes sense for deployment in extranets. Java's cross-platform promise means that you can create applications to use with your customers and suppliers and not have to worry about not having control over the environments they're running. The fact that Java applets are downloaded on the fly eliminates the explicit software installation process and extends their reach.

Another compelling use for Java is in the middle tier logic of transaction-processing systems and database processing - not the servers or the clients but the "business logic" in the middle that actually describes the processes of filling an order or tracking a request. Java's platform neutrality means that you can write code once and have it run on any Java-enabled system. Having the flexibility to move from, say, a Microsoft Windows NT to a Sun Microsystems Solaris Unix server without rewriting code is very beneficial. Java will be the engine of commercial distributed systems. Java middle-tier servers will eliminate two sources of pain in enterprise systems today. First, most organizations are struggling to overcome the barriers between their accounting, customer records, inventory, sales, and other core business systems. The barriers between these systems exist because the applications were built at separate times by separate teams, and often with different technologies. Java will be employed to extend, integrate, and repair existing applications. The Java server will also be the primary request-handling service in the architecture. Java's dynamic nature makes it ideal for servicing a variety of unpredictable requests from users. Java's ability to support a variety of user interfaces will also be beneficial. Java application servers will play three roles:

  1. Brokering user requests for services received via Internet protocols (often from the Internet itself). In most cases, the user requests are simple, but satisfying those requests is not.
  2. Managing the invocation of application functions and the retrieval of information in response to user requests. Simple user requests require complex actions by databases and other back-end systems.
  3. Running business logic that either performs calculations, integrates information, or executes business rules and policies.

Java's ability to load classes and components on the fly makes it flexible enough to cope with fluid application demands. Java will adopt a central role in corporate information processing. First, developers will use Java to build larger and more complex middle-tier applications than are typical today. Next, developers will use Java to manage data on the middle tier, in coordination with production databases. Finally, database developers will use Java to write stored procedures. The availability of Java for creation of logic on all tiers of an enterprise environment will give the skills of development shops leverage that they don't enjoy today. Currently, most shops have at least three groups of specialists, each of which works with a different language or tool. Most development shops build client code with one language (often Microsoft Visual Basic), databases and database procedures using a second language (usually an SQL variant), and middle-tier logic using a third tool (often C++). Maintaining these three separate skill categories is more expensive than developing a staff with one set of language skills that is applicable to all tiers in an enterprise architecture. The Enterprise JavaBeans applications programming interfaces (API's) will key Java's evolution as a language for both middle-tier logic and database processing. The benefits await you.

It also would be unwise to ignore Java's prowess as simply a good back-end server development environment. JavaBeans offer a mechanism for building general-purpose business software components that you can reuse with minimal modifications. And Java's simplicity (relative to C++) improves programmers' productivity.

Another place Java makes sense is in highly vertical, single-purpose applications that are essentially custom-developed front ends to transaction-processing systems, often as replacements for traditional "host" terminal applications. In these environments, a general-purpose desktop personal computer is unnecessary and even counterproductive.

What about embedded networked electronic devices? Java started out as a language for television set-top boxes. EmbeddedJava is designed specifically for severely resource constrained environments. EmbeddedJava is derived from the Java API, therefore EmbeddedJava applications are upward compatible to both PersonalJava and Java. Developers use EmbeddedJava to create a variety of products including mobile phones, pagers, process control, instrumentation, office peripherals, and networking routers and switches. EmbeddedJava applications run on real-time operating systems, and are optimized for the constraints of small memory footprints and diverse visual displays. EmbeddedJava enables manufacturers of devices to take advantage of the portability and flexibility of Java in their product software. TCI has signed a deal to use Java in its television set-top boxes, and Nokia and Motorola have signed a similar deal to use Java in cellular phones.

Finally, in closing, I would like to leave you with what I believe are three things critical for today's software design engineer and Information Technology consultant. The three most important things are:

Number one. Please do take the time to learn about the Java programming language. It will be the preferred language among vendors of enterprise applications, tools, and platforms. Even Microsoft acknowledges Java's utility as a language, and has exposed its extensive Windows API's to Java developers. Even internal development teams within Microsoft have clamored to be able to develop in Java. And they have reported orders of magnitude improvement in developer productivity.

Number two. Please do take the time to learn about the server technologies available for Java software developers. These include, but are not limited to, Enterprise JavaBeans, JavaServer Pages, the Java Servlet API, the Java Naming and Directory Interface (JNDI), Java Database Connectivity (JDBC), Java Blend, and the Java Embedded Server.

Number three. Please do take the time to learn about JavaBeans. JavaBeans is the platform-neutral, software component architecture for the Java application environment. It's the ideal choice for developing or assembling network-aware solutions for heterogeneous hardware and operating system environments - within the enterprise or across the Internet.

Here is a good resource to help you start learning about the aforementioned three critical things.
http://www.softwareview.com/

Question: How do you explain the Corel disaster and Java's performance problems?
Answer: When Corel tried to rewrite their desktop personal productivity software applications in Java, it was a fiasco. My mother has a saying. "When the only tool you have is a hammer, every situation looks like a nail." Java is not a panacea, it is not a silver bullet. It is not ideal for every situation. When you use desktop personal productivity software applications like word processing or number crunching with spreadsheets, you need the absolutely fastest performance response. You can only get that by dropping down into using native methods. I believe that Java has better opportunities within the middle tier and on the server side. To address your question concerning Java's performance problems, I concede that it can be faster, but I believe that Sun Microsystems is adequately addressing these concerns with just-in-time Java compilers (JIT's) and by virtue of their HotSpot technology, which uses Java inlining.

Question: What are your views concerning Java opportunities, finding Java jobs in the Pacific Northwest?
Answer: There are a few opportunities, and I believe the market is growing rapidly. Java is undergoing a gestational period right now and will explode in a couple of years. The trends are inevitable.

Question: How will JavaBeans replace Microsoft's Component Object Model (COM)?
Answer: JavaBeans is a software component architecture from Sun Microsystems, Incorporated. Microsoft's COM is shipped with every copy of Windows. It is a force to be reckoned with. Microsoft is not going to disappear overnight. Their monopoly will have influence for a couple of years. Fortunately for us, Java is not rip and replace. It is complementary. Both Sun and Microsoft offer software bridges that allow JavaBeans and COM to interoperate."

Question: Is it difficult to learn Java?
Answer: If you have a C++ background it is very easy to pick up. I am living proof that one can learn Java. If I can do it, I'm sure anyone can!

Sincerely,
Mark Kuharich

Join my free e-mail newsletter called the Software View by clicking here or sending mail to thesoftwareview-owner@west-point.org