.NET (udtales "dot net") er et software-framework som primært kører på Microsoft Windows, men også findes i version til Linux og Mac, og som giver mulighed for at afvikle programmer skrevet i et .NET-programmeringssprog såsom C# eller Visual Basic .NET.
.NET Frameworket kan betragtes som et abstraktionslag mellem applikationen og styresystemet.
Der findes en række .NET-programmeringssprog. En række af de oprindelige programmeringsprog fra Microsoft er kommet i en .NET-version, men der er foretaget grundlæggende ændringer i sprogene for at de kan bruges i .NET. Det er Microsofts mål, at man skal kunne udvikle i alle programmeringssprog til .NET. Dette foregår konkret ved, at der findes en compiler for hvert sprog. Alle kompilere genererer den samme form for bytecode, som så kan eksekveres/oversættes af en interpreter (fortolker) (CLR: Common Language Runtime). Frameworket indeholder APIer til næsten alt, hvad en applikation kan have brug for, da det er tanken at alle programmer på Windows i fremtiden (bortset fra drivere og andre low-level teknologier) skal kunne gøre brug af .NET frameworket.
Hukommelseshåndtering
.NET Frameworks CLR fritager udvikleren for at håndtere hukommelsen (allokering og frigivelse af hukommelse); i stedet varetager det selv hukommelseshåndteringen selvom der ikke er nogen garanti for hvornår garbage collectoren (proces til automatisk frigivelse af hukommelse) vil udføre sin arbejdsopgave, medmindre et eksplicit kald udstedes. Så længe der findes referencer til et objekt i det instantierede .NET program, vil hukommelseshåndteringen betragte det som værende i brug af CLR. Når der ikke længere findes nogen referencer til et objekt, og det dermed ikke kan tilgås eller anvendes længere, bliver det markeret til indsamling. Objektet optager dog stadig den del af hukommelsen, som er blevet allokeret til det. Selve frigivelsen af hukommelsen sker ikke før hukommelseshåndteringen har været forbi.
.NET's hukommelseshåndtering kører periodisk i en separat tråd fra den som programmet afvikles i, hvor det håndterer alle de ubrugte objekter og genindsamler hukommelsen allokeret til dem.
VB til VB.NET
Før Microsoft skrinlagde det oprindelige Visual Basic og flyttede resourcerne til .NET-udgaven VB.NET, var Visual Basic et af de mest anvendte programmeringssprog. I forbindelse med frigivelsen af .NET-versionen, diskuterede flere medier, hvor alle de nuværende VB-programmører ville søge hen. De kunne opkvalificere sig til VB.NET, hvilket ville være som at starte forfra og skulle lære et nyt programmeringssprog. Det blev diskuteret om de ville skifte til Java eller tage springet til det mere moderne C#. Microsoft har dog gjort meget for at lette overgangen for Visual Basic-programmørenes, ved efterfølgende at tilføje mange af de oprindelige funktionaliteter i sproget til Visual Studio .NET 2005-udgaven, hvilket har fastholdt en stor del af udviklerne.
.NET og Java
Microsoft's C# og CLI (Common Language Infrastructure) har mange ligheder med Sun's Java og JVM (Java Virtual Machine). De er konkurrenter og bruger begge en virtuel maskine, der gør det muligt at lave programmer uden at skulle tage højde for med hvilken hardware de skal udføres. Begge bruger deres egen mellemkode, Microsoft kalder deres for Common Intermediate Language (CIL) mens Sun kalder deres Java bytecode. I .NET bliver mellemkoden altid kompileret enten lige før den skal udføres (JIT – just-in-time) eller lang tid før ved brug af ngen.exe værktøjet. Med Java er det enten fortolket, JIT eller prekompileret. De har begge nogle omfattende klassebiblioteker og der er stor lighed mellem strukturen af klasserne i .NET og J2EE.
Alternative implementationer
Mono
Da .NET kun findes i en fuldstændig version til Windows, gik folk fra Open Source-bevægelsen i samarbejde med Novell i gang med at implementere en Open Source udgave af CLR, kaldet Mono. Målet er at kunne køre programmer compileret til CLR på en række platforme, såsom Windows, Linux, Mac OS X, iOS og Solaris.
Udover implementeringen af CLR-kernen bliver der også udviklet en lang række værktøjer i forbindelse med Monoprojektet, og hvor Microsoft kun fokuserer på sprogene C#, Visual Basic og C++, er der i Open Source-verdenen udviklet CLR-kompilere til en lang række andre sprog, såsom Ada, Cobol, Python, Java, Perl m.fl.