Java och eller .Net?
Vad är det för skillnad mellan de moderna programvarumetoderna .Net och Java? Två mycket upptagna män tar debatten. Thor Henning Hetland duellerar om Java vs .NET på computerworld.no
Klockan är 09.00, och debatten ska just börja. Det är två mycket upptagna män som ska debattera om två mycket populära programmeringsspråk.
Vilket är egentligen bäst av Java och .Net? - Om vi går tillbaka några år skulle jag vilja säga att .Net är aningen mer objektorienterat i VM:en än Java, säger Rune Zakariassen, ämnesansvarig för forskning och högre utbildning inom Microsoft Norge AS.
Objektorienterat VM står för Virtual Machine och är ett system som gör det möjligt att köra program, ett mellanlager mellan operativsystem och applikationer. Java har sin VM och .Net har sin.
Grunden till att Zakariassen hävdar att .Net är mer objektorienterat i sin VM är att allt behandlas som samma objekt i .Net, medan Java i sin VM gör skillnad mellan exempelvis talobjekt och textobjekt, eller int och string som de kallas i Java-världen.
- Skillnaden mellan Java och C# är så marginell att det inte är någon poäng med att utse en vinnare på den här punkten, anser ordföranden i JavaBin, Thor Henning Hetland.
Komponenter Zakariassen kan hålla med om att skillnaderna är marginella, men anser ändå att den marginella skillnaden utfaller till .Nets fördel. Dessutom säger Zakariassen att .Net är betydligt bättre än Java när det gäller komponentorientering.
Komponentorientering betyder utveckling med hjälp av komponenter, det vill säga att applikationer och system är uppdelade i mindre delar. Det har många fördelar och en av dem är enklare underhåll av applikationerna.
Det är lättare att byta en trasig ljuddämpare än att vara tvungen att byta hela motorn. Här håller Hetland bara delvis med Zakariassen.
- Jag skulle egentligen vilja påstå att båda språken är för dåliga på komponentorientering för att få ut maximalt värde av det, säger Hetland, men får mothugg av Zakariassen:
- Det håller jag faktiskt inte med om. Komponentorientering kräver ganska mycket metadata för klasser och samlingar av klasser och .Nets VM skiljer sig ganska mycket från Javas VM på så sätt att exekveringen kräver och använder betydligt mer metadata.
Arv och meta Metadata är data som beskriver andra data, och enligt Zakariassen är poängen att .Net har stöd för så kallad "runtime inheritence". Inheritence betyder arv, och är en viktig princip inom objektorientering; att en klass kan ärva egenskaper av en annan klass, så att ett objekt kan bli en mer specialiserad variant av ett annat.
Att det här kan göras runtime, alltså samtidigt som programmet är i gång, innebär större flexibilitet för dem som vill använda dynamiska språk som SmallTalk och Python. Hetland håller helt med om att .Net är lite bättre när det gäller metadatanivån i klasser och samlingar av klasser.
- När det gäller runtime-perspektivet så gör Javas VM mindre optimeringar under kompileringen och är därför väl så bra som plattform. I nästa version av Java kommer det att finnas klasser och samlingar av klasser på mer eller mindre samma sätt som i .Net, säger Hetland, som inte är helt överens med Zakariassen när det gäller argumentet kring runtime inheritence:
- Det finns bra lösningar i Java för allt det som man i .Net gör med runtime inheritance, men det görs på ett lite annat sätt, förklarar Hetland, som påpekar att Java också har implementeringar av språk som Ruby, SmallTalk och så vidare.
 Hetland vs Zakariassen
Stabilitet Hetland ger Java plus i kanten när det gäller stabilitet.
- Det beror på friheten att kunna välja mellan olika VM, och det finns över 30 olika sådana. Konkurrens ger ofta bättre kvalitet, säger Hetland.
Zakariassen tolkar begreppet stabilitet på ett annat sätt, och tänker mest på ren driftstid, förmåga att hantera fel under drift, "graceful recovery", "fail-over", "clustering" och så vidare.
- Och det här har inte så mycket med antalet VM:er att göra, säger Zakariassen och frågar vilken definition Hetland använder sig av.
Många varianter Hetland berättar att de olika VM:erna i Java har olika egenskaper i fråga om teknisk stabilitet. Ovanpå VM:en kör man en applikationsserver, som det också finns över 30 olika varianter av att välja på. De hanterar alla de stabilitetsbegrepp som Zakariassen nämnde, däribland clustering.
- Här pratar vi om kluster på hundratals till tusentals maskiner som normalscenario i större system. Det är ju inte för inte som i princip alla banker och hela telekommunikationsbranschen använder Java till sådana verksamhetskritiska system, säger Hetland.
- Jag erkänner att finansbranschen har en förkärlek för Java. Och att man där argumenterar med mognad. Men jag tycker att det är svårt att ha bestämda åsikter när det gäller stabilitet. Jag menar att det här är något som går att mäta konkret, men jag har inte sett några undersökningar som har analyserat Javas respektive .Nets "stabilitetsegenskaper", så jag uttalar mig utifrån mina egna erfarenheter. Jag ser inte så stora skillnader mellan Java och .Net utifrån mina egna värderingar, säger Zakariassen.
Länk till artikeln på Computerworld.no
|