It is a new programming language developed by Sun Microsystems that has much in common with the beverage that shares its name. It's good, it's hot, and people know it around the world. Java (the programming language) beats the other stuff hands down though, it's free. Many have heard of Java, yet few know what it is, or what it can do. It certainly has the potential to become a part of our everyday lives, existing in our mobile phones, televisions, and Internet browsers. If you are interested in your future read on.
Java is still in its infancy stage, yet to fulfil its intended purpose. Designed in 1990 as an embedded language for consumer electronics, it was later discovered to be an ideal interface to the Internet. In 1996, Netscape added Java support to its popular Navigator Web browser. The Web began to stir from its static text coma as excited programmers began to incorporate Java applications, "applets", into their Web pages.
An applet is like an application, but it doesn't run stand-alone. An applet must adhere to a set of conventions that allows it to run within a Java-compatible browser. The technology is still evolving, and today, most Java applets are simple animations, or user interactions. The future is brighter, promising full-blown applications over the Internet; imagine using Microsoft Office from your television. For now, though, those who have experienced an applet may be left disappointed. A casual user is unlikely to be impressed with scrolling text, or simple animations, especially if they must pay for them with increased download times. Behind the scenes, unbeknownst to them, truly amazing things are happening.
A Java applet begins its life by being "called" by a Web page. To be technologically correct, the applet is embedded in the Web page. The Web browser then downloads the applet and runs it on your machine. If you just missed the amazing part: it runs on your machine. How can a program from an unknown source be trusted to run on your computer without your permission? It can't unless that program was created using a secure language like Java, and then wrapped with a secure viewing browser like Netscape Navigator. The concept of being able to run applications on your system is significant for several reasons. If you want to see a picture, but don't have a picture viewer, you can get both at once. This eliminates the problem of not having the correct helper application or even worse: having to settle for what's available. The ability to run applications on your system has another significant advantage. Traditionally when you view something that "runs" on a Web page, or is interactive, the work takes place on the remote computer, not yours. Java frees Internet resources, allowing the work to take place on the client's system rather than the server's.
If all applications were run on remote computers, the servers would be inundated with traffic, and these collectively would propagate to bring the entire Internet to a grinding halt. With a growing Internet population, the prospect of this is real. There is a better way. If it can be done safely, isn't it quicker, not to mention more considerate, to get what you need, take it with you, and use it on your time? A good analogy is a long bank queue, with everyone waiting for the person in front of them to finish. Some will be quick, and others will attempt a hostile takeover on your lunch hour. Imagine a different world where tellers were issued at the bank. Instead of waiting for a teller to become free, you could simply take the teller you require from an almost endless supply, then complete your transaction without delaying the people behind you. You would only have to wait in line to get a teller. If the bank got hundreds of new customers every day, would there be any other way to do it? The issue of security would still have to be addressed. Away from the work environment, how could you trust the teller you got? The bank manager wouldn't be around to oversee her. You would have to put her in a sandbox.
A sandbox is the name given to the concept of setting the boundaries in which a Java applet can "play". A Java applet cannot look at arbitrary files on the machine it's running on, or have unauthorized access to system resources. It can't introduce a virus or other malicious logic, delete critical files, or gain access to your passwords unless you allow it to. It is security measures like the sandbox that make Java much more than just a new programming language. Meet Java, the run-time environment.
If Java were just another programming language, the industry would have greeted its introduction with a resounding yawn. 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 platform. Java compilers thus turn Java programs not into language for a particular machine but into a platform-neutral byte code that the machine-specific VM interprets on the fly1. A Java compiler is like a translator who translates a language to a common ground like English. Since English is known around the world, specific translators, like the VM, are able to translate English into the language specific for their country. With so many different computers connected to the Internet, platform independence is necessary.
Java has been thrust into the spotlight with its new language built on the core values of security and platform independence. Sun Microsystems has promised a "Write once, run anywhere" language suited to an Internet community comprised of a smorgasbord of different computer, hardware, and software configurations. The power to write programs that run on most everyone's computer is revolutionary. For Internet applications, though, the value of platform independence degrades exponentially without strict, built-in security. Java provides this security, and has the power to change the way we compute.