A Java nyelv megalkotásakor a platformfüggetlenség volt a cél. A Microsoft szerette volna a saját megoldásaival kiegészíteni a Java-t, de erre nem volt engedélye, így megszületett a .NET keretrendszer és a C# programozás. A C# egy olyan objektumorientált nyelv, aminek az alapja a C++ és a Java, de nem volt cél az, hogy minden rendszeren fussanak a megírt alkalmazások.