.NET
Hvad kan programmører og udviklere bruge .NET til? Hvilke fordele giver det systemadministratorer og web-udviklere på sigt? Vi forklarer teknologien og dens tekniske egenskaber i et par artikler, der også beskriver, hvad den kan anvendes til.
.NET
.NET er teknologi fra Microsoft, hvor software udvikles til integreret anvendelse på Internet med brug af XML. Software bygges som komponenter, som giver mulighed for at distribuere intelligente informationer over Internet.
.NET fik sit navn i sommer, men det er et projekt, som Microsofts udviklere har arbejdet på siden 1997. Mediernes omtale af den nye platform har været fokuseret på de strategiske aspekter. Med sin lancering af .NET skifter Microsoft fokus fra Windows-pc'er i netværk til Internet-services i det store brede globale perspektiv. Men markedsstrategien er så langt fra hele historien. I denne og følgende artikler skal vi se på teknikken i .NET, og hvad du kan få ud af den.
I sidste uge afholdtes Microsoft Visual Studio .NET Developer Conference i København. Denne konference på tre dage samlede 2000 programmører og udviklere fra hele verden omkring foredrag om .NET og programudvikling med Visual Studio. Konferencen har hjemmeside på adressen: http://www.microsoft.com/europe/vsnet/.
Visual Studio
Start med Visual Studio .NET
Vil du udvikle programmer til den nye teknologi .NET og prøve teknikkerne i praksis, skal du starte med Visual Studio .NET. Dette produkt, Visual Studio .NET, er Microsofts centrale værktøj til udvikling af .NET programmer. I tilknytning til dette findes der mange eksempler og informationer om teknologien på Microsofts Internet sider, herunder MSDN.
Produktet Visual Studio .NET findes i dag i en beta 1 version, der kan fås fra Microsoft på tre cd-rom'er. Produktet kommer i en revideret beta 2 version hen imod sommer, siger Microsoft. Det endelige og færdige produkt skulle nok nå at komme sidst i år.
Forsvinder de gamle teknologier?
Flere gange på konferencen spurgte deltagerne til, hvorvidt udviklerne skal stoppe med at skrive programmer til Windows API og COM og allerede nu gå over til .NET-platformen? Talerne svarede typisk, at Windows 32bits API og COM forsvinder ikke. Det er blevet modne og stabile teknologier, og de vil fortsat køre i mange år endnu.
Desuden findes Visual Studio .NET endnu kun i beta-version. Derfor skal udviklerne gøre deres eksisterende programmer færdige på den nuværende platform. På den anden side er det vigtigt at eksperimentere med .NET og inddrage det i planlægningen af de næste programmer.
Runtime
Teknologisk kerne: CLR
.NET bygger på flere ældre velkendte ideer, som her bliver anvendt i praktisk produktion. To vigtige teknikker skal introduceres med det samme, og den første er runtime-motoren i .NET.
I kernen af .NET finder vi Common Language Runtime (CLR), der er en virtuel maskine. Det er et kørselsmodul, en såkaldt runtime, der afvikler programmer i Microsofts Intermediate Language (IL). IL er programmernes primære kodesprog, som køres direkte af en Just-in-Time compiler (JIT) i computeren. Compilere oversætter programmer skrevet i Visual Basic, C++, C# (C-sharp) eller et af de mange andre sprog til dette IL-sprog.
Tidligere blev kildeteksten oversat til binærkode, som processoren direkte kunne udføre. Men nu er der indført et lag imellem - et kodesprog mellem kildeteksten og den rene maskinkode. JIT og IL er en logisk programmaskine, der adskiller den fysiske processor og programmet.
Denne konstruktion er anvendt før, som for eksempel i Javas virtuelle maskine, som afvikler Java-programmer i bytecode. Men det er en opfindelse, som er meget ældre end Java.
.Net til Windows - og måske andre
.NET teknologien kommer naturligvis til Windows. Men runtime modulet i .NET kan teknisk set overføres til andre platforme. Det er teknologisk muligt at køre .NET kernen på mange forskellige processorer og for eksempel Unix-styresystemer. Hvorvidt det sker, er vanskeligt at svare på, da det mere er et strategisk spørgsmål.
OOP
Systematisk objektorienteret
Den anden teknologiske pointe kan siges kort: Alt i .NET er objekter og klasser. Det gælder også de simple datatyper heltal (int) og strenge, som håndteres som objekter og klasser.
Heller ikke denne idé er ny. Men alligevel giver denne systematiske anvendelse af objekter ganske store fordele for .NET, som vi senere skal uddybe videre.
Programmeringssproget Smalltalk tilbage i halvfjerdserne var rent objektorienteret. Men problemet med de første objektorienterede sprog og modeller var effektivitet. Selv mindre programmer, der skulle udføre behandling af større datamængder, kom ikke igennem opgaven på nogen rimelig tid. Det tog timer at udføre trivielle sorteringer og søgninger på større datamængder. Det betød, at ren objektorienteret programmering forblev en teori for flertallet af programmører.
Bjarne Stroustrup løste dette problem i programmeringssproget C++, fordi han kombinerede objektorienterede metoder med C-programmering. Dermed kunne programmørerne optimere programmerne, så de også blev praktisk brugbare. Det sidste brød godt nok reglerne for ren objektorienteret programmering (OOP), men det gav programmerne den nødvendige effektivt, så de afleverede resultater efter sekunder.
For så vidt var ren OOP forbeholdt programmører, der havde ubegrænset computerkraft til rådighed. Hvilket ikke var tilfældet i blandt pc-brugerne.
Programmeringssproget Java gik et skridt tilbage fra C++ og strammede op på de objektorienterede principper. Men det betød også, at de første Java-programmer var meget tunge. Det kostede tab af hastighed at fastholde de rene objektive metoder. Java fik samme rygte som Smalltalk, at det var et dejligt programmeringssprog for dem, der havde uendeligt med computerkraft.
Vi er da nået til det sted i historien, hvor Microsoft kommer med .NET og melder ud, at firmaet har løst de teknologiske problemer i at køre ren OOP på en pc. Det kan nu køre på en pc, og stadig levere en effektiv ydelse. Den løsning har Microsoft indbygget i kernen i .NET.
Garbage Collection
Garbage collection
En af de klassiske problemer i at køre OOP på mindre maskiner er det, som kaldes garbage collection (GC, automatisk oprydning). Garbage collection er administration af computerens hukommelse, og har været et stort teknisk problem i OOP på små maskiner.
Når tusinder af objekter oprettes og slettes under programmets afvikling, bliver hukommelsen segmenteret i små områder. Efter programmet har kørt en periode, efterlader det en masse små ledige hukommelseområder, der er spredt ud over det hele. Man taler om segmentering af hukommelsen. Det skal ryddes op, så hukommelsen kan genbruges, ellers løber programmet ud for hukommelse og standser helt.
Denne oprydning hedder garbage collection, og det tager tid fra andre processer. Brugerne oplever ofte GC ved, at deres program pludselig står stille. Brugerens proces fryser, mens GC er gået i gang med at rydde op i hukommelsen.
Microsoft udmelder med .NET, at man blandt andet har løst garbage collection problemet. Demonstrationen med en tredimensional realtids model blev vist på computerskærmene allerede på konferencens første dag. En taler nævnte, at Microsoft har haft de skrappeste programmører, de kunne finde, til at skrive garbage collectoren, som er indbygget i kernen af .NET.
NET for programmører
Dette er et tekniske budskab fra NET: Ideerne er gamle og velkendte. Men Microsoft melder nu ud, at firmaet kan få det til at køre på standard pc'ere. Hvad det i praksis betyder for programmører og systemadministratorer, illustrerer vi i følgende artikler. Vi fortsætter i næste artikel med at forklare .NET for programmører.