Machine-independent

From Wikipedia, the free encyclopedia

In Computer science, a machine-independent program is any program that can be run by any computer, without regard to its architecture or operating system.

Any well-written Java or .NET application could be machine-independent because these platforms run on virtual machines on top of the real computer. The real machine-dependent part is the virtual machine, so this is the (usually little compared to the class libraries) chunk of code that needs to be ported.

To be machine-independent, the application also must not use any machine or platform-specific resources available. Examples of platform specific features are .NET P/Invoke and Java Native Interface, both of which allow the direct use of native libraries.

This is an example of a machine-independent C# application: it would open ".\data.xml" in Microsoft Windows and "./data.xml" in Linux (it also prints the resulting path).

using System;
using System.IO;

namespace Test
{
    class TestApp
    {
        public static void Main(string[] args)
        {
            string filePath = "." + Path.DirectorySeparatorChar + "data.xml";
            Console.WriteLine("The file path is: {0}", filePath);
            using(Stream fileData = File.Open())
            {
                // Do anything with the file (for example, process it using System.Xml)
                // and don't worry about closing the stream because the using statesment
                // will do it for you (although you could use try-catch-finally)
            }
        }
    }
}