In 1990, Sun Microsystems began a project called Green to develop software for consumer electronics. Sun is best known for its popular Unix workstations but has also engineered several popular software packages, including the Solaris operating system and the Network File System (NFS). James Gosling, a veteran of classic network software design, was assigned to the new Green project.
Gosling began writing software in C++ for embedding into such items as toasters, VCRs, and Personal Digital Assistants (PDAs). The embedded software makes appliances more intelligent, typically by adding digital displays or by using artificial intelligence to better control the mechanisms. However, it soon became apparent to Gosling that C++ was the wrong tool for the job. C++ is flexible enough to control embedded systems, but it is susceptible to bugs that can crash the system. In particular, C++ uses direct references to system resources and requires the programmer to keep track of how these resources are managed, which is a significant burden on programmers. This burden of resource management is a barrier to writing reliable, portable software, and it is a serious problem for consumer electronics. After all, computer users have come to expect their software to have some bugs, but few expect their toasters to crash.
Gosling began writing software in C++ for embedding into such items as toasters, VCRs, and Personal Digital Assistants (PDAs). The embedded software makes appliances more intelligent, typically by adding digital displays or by using artificial intelligence to better control the mechanisms. However, it soon became apparent to Gosling that C++ was the wrong tool for the job. C++ is flexible enough to control embedded systems, but it is susceptible to bugs that can crash the system. In particular, C++ uses direct references to system resources and requires the programmer to keep track of how these resources are managed, which is a significant burden on programmers. This burden of resource management is a barrier to writing reliable, portable software, and it is a serious problem for consumer electronics. After all, computer users have come to expect their software to have some bugs, but few expect their toasters to crash.