The explanation of device independence from W3C is as follows: "At it's inception, virtually the only way to access the Web was through a personal computer or workstation. While there were lots of variations, accessing the Web almost always involved using a modern computer with a reasonably large color display. Computers may still be the primary means of accessing the Web, but in recent years the number of different kinds of devices accessing the Web has grown by leaps and bounds. Mobile phones, personal digital assistants, eBook readers, television systems, voice response systems, music players, kiosks, digital picture frames, in-car navigation systems and even domestic appliances are all starting to access the Web more and more. Device Independence refers to the goal of having a single Web that is accessible from any of these devices." Source: W3C, http://www.w3.org/standards/webofdevices/independence
The process of making a software application be able to function on a wide variety of devices regardless of the local hardware on which the software is used. Usually based upon the usage of Hardware Abstraction Layers that provide a common interface to hardware resources such as memory, CPU, the OS, and attached devices. Often implemented as Virtual Machine architectures. The Common Object Request Boracker Architecture (CORBA), the Java Virtual Machine (JVM), and the Windows Hardware Abstraction are common examples of device independence. Source: Object Management Group and Java Development Community