mboost-dp1

unknown

.Net overhaler Java

- , redigeret af Net_Srak

Microsofts .Net-platform har, ifølge IDC, overhalet java som udviklingsplatform til it-systemer i nordiske virksomheder. Det anslås at .Net bliver brugt i 35 procent af alle danske virksomheder mod 25 procent for J2EE.

En af årsagerne menes at være det faktum at Microsoft har bundet .Net-platformen tæt sammen med Windows.

J2EE er dog stadig den mest indtjenende af de to platforme, da den er meget brugt blandt de største virksomheder.





Gå til bund
Gravatar #51 - runesoft
21. apr. 2004 14:32
hov, jeg var ikke færdig ;)

#47 -> Og hvorfor tror du så der er noget i .NET der hedder CTS (Common Type System) ? Det er netop for at du ikke behøver bekymre dig om typekonvertering og netop så du kan bruge objekterne på tværs af alle sprog uden noget bøvl whatsoever.

Ja, hvorfor er der CTS. Hvorfor bruger alle .Net ikke samme typer? Det ville da være meget lettere?
Gravatar #52 - Acro
21. apr. 2004 14:57
#23 sKIDROw:
Hvis Microsoft laver funktioner i deres .NET-udgave, som ikke findes i andre, så mister de jo selv fordelen ved, at deres programmer (eks. Office) kan afvikles på andre platforme. Hvorfor skulle de ønske det?

#32 tryl:
Fremtidige Windows-versioner vil sikkert kunne køre .NET-applikationer på niveau med andre, da det vil blive en del af kernen. Så hastigheden er kun en gene nu, hvor det er en udvidelse til operativsystemet.

#46 runesoft:
Nogle foretrækker A andre B, og hvorfor ikke give alle friheden til at vælge selv?
Gravatar #53 - sguft
21. apr. 2004 15:20
#51: Beklager, men du giver ingen mening eller også forstår jeg dig bare ikke, det jeg siger er jo netop at alle .NET sprog bruger samme typer så hvad mener du med at de ikke gør det ?
Gravatar #54 - sKIDROw
21. apr. 2004 15:34
#52 Acro

Tjahh kender ikke deres motiver med .NET
Eller deres motiver bag at de har lagt 'landminer' ud. (Læs:sofware patenter)
Men HÅBER da det bedste, det ville klæde dem... ;)
Gravatar #55 - runesoft
21. apr. 2004 18:23
#52 Af samme grund som jeg:
- ikke kan se det smarte i at man både kan måle afstande i meter, fod eller mil
- ikke kan se det smarte ved ikke at køre i samme side af vejen i hele verdenen.
- bedst kan lige at kigge på kode skrevet ved brug af en namingconvention
- gennerelt er pro standardisering. Jeg er meget glad for f.eks. XML, men det bliver først rigtigt smart når der defineres standarder for hvordan det bruges (så som encoding og gængse datastrukturer)

Jeg er generelt for standardiseringer, og jeg kan ikke se det smarte i at have flere sprog der kan nøjagtigt det samme. Jeg synes ikke at det bringer programmørerne sammen. Derimod synes jeg at det skilder programmører med samme kompetencer.


#53 Jeg har lige søgt på det. Det er ikke CTS jeg snakker om, men CLS (Common Language Specification).
Problemet opstår hvis jeg definerer et objekt i C#, som i sin grænseflade bruger f.eks. uint (unsigned integer). Denne type findes ikke i VB.Net, og så kan objekter lige pludseligt ikke bruges på tværs.
Jeg ser hellere at alle typer kan bruges i alle sprog og man derfor ikke skal lave sin grænseflader specielle hvis andre sprog skal tilgå den.
Gravatar #56 - sguft
21. apr. 2004 18:44
#55: Hvor læser du alt det henne ?
C# er udelukkende et .NET sprog, det indeholder ingen typer i sig selv, men benytter udelukkende typerne fra CTS.

uint i C# bliver konverteret til System.UInt32

se evt. denne tabel: Built-In Types Table

CTS er for datatyper hvad CLS er for sprogene og CLR er for virtual machines. Det er dog korrekt at du f.eks. kan anvende standardtyperne i C++ og at det kan give problemer, men det er et spørgsmål om at være opmærksom på at benytte .NET typer når du skriver .NET applikationer.
Gravatar #57 - runesoft
21. apr. 2004 19:22
#56 Jeg har det stående i en bog (som jeg nu smider ud!). Efter at have prøvet det på min egen krop må jeg jo sige at det fungerer. Virker det så også med overloadede operatorer?
Gravatar #58 - runesoft
21. apr. 2004 19:36
#56 Jeg kan se at det fungerer i vb, men ikke nødvendigvis i alle andre sprog

nu bliver jeg så alligevel i tvivl
Gravatar #59 - bob
21. apr. 2004 20:06
#57
Man kan i sit assembly angive attributten CLSCompliant(true), hvilket gør at compileren compiletime undersøger om assembliet er CLSCompliant og melder en fejl hvis det ikke er. Den mest oplagte ikke-CLS-compliant ting man kan fremhæve er, at C# er case sensitive hvilket VB.net ikke er. Derfor vil man få en compile-time fejl hvis man i en C# klasse har både en doStuff() og en DoStuff() metode (samtidig med at CLSCompliant(true) er sat selvfølgelig).
Gravatar #60 - yesmaster
22. apr. 2004 20:01
Jeg har ikke før undersøgt forskellen på checked/unchecked exceptions (jeg programmer i C++). Med hvis Java tvinger en til checked (tester typer under compilering, right?), så skal jeg aldrig bruge Java!!

Hvis jeg f.eks. bruger et eller andet open-source-v1.0 som jeg statisk linker ind i min kode og alt virker som det skal, så er jeg glad. Et år efter skifter jeg til v2.0, men så har den kære programør besluttet at foruden throw X,Y skal der tilføjes Z. Så er jeg jo nød til at stopper catch (Z) ind alle steder i min kode hvor jeg bruger funktionen foo().

Er ovenstående korrekt?

runesoft

Jeg kan godt forstå fordelen ved flere sproge som ligger oven på .NET (jeg bruger ikke selv .NET endnu)

Vi udvikler udelukket i C++ og skal til at implementere produkt X. Nu findes produkt X allerede, men det er skevet i Pascal. Her vil .NET give mig muligheden for at kompilere pascal koden, nedarve objekterne og videreudvikle på dem via C++ (eller C#, eller whatever).
Gravatar #61 - runesoft
23. apr. 2004 10:45
#60 Hvis du undlader at fange Z, hvad gør din kode så når Z rent faktisk bliver kastet? Crasher? Det er dog ikke nødvendigt at rent faktisk udnytte de exceptions man har erklæret. Det er derfor muligt at definere en grænseflade med exceptions man tænker kan blive brugt i fremtiden.

Jeg har ikke prøvet det, men jeg tror ikke at Pascal direkte kan kompileres som Pascal.Net. Du skal nok rette koden til og bruge de rigtige namespaces etc. Jeg kan forestille mig det svarer til forskellen på at programmere brugergrænseflader i MSC++ og C++Builder.
Gravatar #62 - yesmaster
25. apr. 2004 13:46
#61

Jeg undlader ikke at fange Z, men bruger en (i C++) catch(...) og giver en (så god som overhovedet mulig) fejlmeddelse til brugeren. Jeg har en forhåbning om at funktionen foo() virker i 99.99% af tilfældene, hvis ikke kan jeg ikke bruge koden.

"Det er derfor muligt at definere en grænseflade med exceptions man tænker kan blive brugt i fremtiden."

Jeg synes ikke det kan være rigtigt at jeg skal prøve på at "gætte" hvad tjedeparts-programør kan finde på.

"Jeg har ikke prøvet det, men jeg tror ikke at Pascal direkte kan kompileres som Pascal.Net. Du skal nok rette koden til.."

Rigtigt, men det er dog stadigvæk hurtigere en at skrive koden om til C++.
Gravatar #63 - runesoft
25. apr. 2004 18:38
#61 Det ville du vel også kunne gøre med en checked exception. Alle exceptions nedarver fra klassen "Exception". Så hvis du fanger Exception, opnår du noget i samme stil som jeg tror du beskriver i c++. I Java verdenen skal du dog nok ikke forvente at få den store anderkendelse for at håndtere exceptions på den måde.

Jeg har ikke kodet meget ved brug af unchecked exception, og du har ikke prøvet checked exceptions, så mon ikke vi skal håbe at arkitekterne kender fordele og ulemper ved begge og vælger den bedste løsning (checked:>)
Gravatar #64 - yesmaster
26. apr. 2004 07:46
#63

Fint...Så er tingene måske ikke så forskellige som jeg først troede.

Nu er det altså ikke sådan at min kode kun indeholder catch(...). Jeg bruger også catch ( ex). Der er dog to grunde til at jeg ville vælge denne metode:

1) Hvis der opstår en situation hvor selv den bedste kode ikke kan redde dagen. Fx. har en bruger sparket netwærkskablet ud, hvorefter han prøver at lave en udskrift. Her vil jeg heller vise en "Kunne ikke kontaktet databasen af ukendte grunde" og så lade brugeren prøve igen uden at programmet går død!

2) En catch (...) omkring en main, kan bruges til at frigive ressourcer, lukke databasen o.s.v. når alt går værre end galt. Dette er måske ikke så relevant i Java som har GC.
Gravatar #65 - runesoft
26. apr. 2004 12:14
Du bliver også nødt til at lukke fysiske ressourcer som filer og databaser i Java. I .Net ser det ud til at der er taget højde for dette ved at genindføre (nu skriver jeg genindføre fordi jeg mener at .net ligger så tæt op af Java i grundtanke, at jeg betragter .net som en ny version af Java) deconstructors.

Derudover er der noget i C# der hedder en using blok, som skulle hjælpe til at lukke fysiske ressourcer (kalder dispose), før objekter ellers ville blive garbage collected (Jeg har dog ikke gjort det ret meget i den syntaks konstruktion).
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login