mboost-dp1

Java vs. C# (Sprogmæssigt)


Gå til bund
Gravatar #1 - Windcape
17. maj 2009 00:46
Set fra et rent sprogmæssig synspunkt, hvor vi ignorer hvilke platforme softwaren kan køres på, så vil jeg gerne sammenligne C# med Java.

Fordi efter at have kodet i begge dele i nogle år, kan jeg skrive lange lister over mangler og problemer med Java.

Men jeg tænker at der må være nogle ting som Java kan, som C# ikke kan.

Er der nogen der kan give eksempler på sådanne?

Kun for de seneste brugbare versioner, altså Java 1.6 versus C# 3.5.

(Også, C# 4.0 er snart klar, Java 7 roadmap ?!?!?!)
Gravatar #2 - arne_v
17. maj 2009 01:49
#1

C# er et betydeligt større sprog end Java og er langt hen af vejen et superset af Java, så der er ikke specielt mange sprog features som Java har men C# ikke har.

Jeg kan umiddelbart kun tænke på:
- checked exceptions
- strictfp
- synchronized på methods
- static import
- inner classes og anonymous inner classes [C# har anden funktionalitet som løser samme opgave]
- transient [.NET library leverer samme funktionalitet på library level]
- fallthrough switch cases [jeg vil være tilbøjelig til at kalde det en fejl fremfor en feature, men det er anderledes]

Endvidere er Java enums meget anderledes end C# enums og burde nok på listen.

Ikke nogen speciel lang liste. Listen over hvad C# har sprog mæssigt som Java ikke har vil være meget længere.




Gravatar #3 - arne_v
17. maj 2009 01:51
Windcape (1) skrev:
Set fra et rent sprogmæssig synspunkt, hvor vi ignorer hvilke platforme softwaren kan køres på, så vil jeg gerne sammenligne C# med Java.


Udover sprog features og platform/levrandør aspektet så er der et tredie område, hvor der er store forskelle nemlig biblioteket.
Gravatar #4 - arne_v
17. maj 2009 01:53
Windcape (1) skrev:
Kun for de seneste brugbare versioner, altså Java 1.6 versus C# 3.5.


C# 3.5 eksisterer ikke og kommer heller aldrig til at eksistere.

C# versionerne går 2.0 -> 3.0 -> 4.0 (hvor C# 3.0 kom sammen med .NET 3.5 mens der ikek kom ny C# version sammen med .NET 3.0).
Gravatar #5 - Windcape
17. maj 2009 02:51
ups, ja, det var en smutter med versionnummeret. Ellers en god liste af ting, nogle af dem kender jeg ihvertfald ikke til endnu.

- synchronized på methods


Er funktionaliteten bag dette ikke cirka det samme som lock() i C# ?

transient

Dvs. det svarer til [NonSerialized] attributten i C# ?
Gravatar #6 - arne_v
17. maj 2009 13:30
Windcape (5) skrev:
Er funktionaliteten bag dette ikke cirka det samme som lock() i C# ?


Java:


public void m() {
synchronized(o) {
...
}
}


og C#:


public void M()
{
lock(o)
{
...
}
}


gør det samme, men Java tillader:


public synchronized void m() {
...
}


hvor den ved ikke static metode låser på this og ved static metoder låser på class objektet.
Gravatar #7 - arne_v
17. maj 2009 13:31
Windcape (5) skrev:
Dvs. det svarer til [NonSerialized] attributten i C# ?


Jep. Men nu spurgte du jo til sporget. Java transient er en feature i sproget mens .NET NonSerialized er en feature i librariet.
Gravatar #8 - arne_v
17. maj 2009 13:45
#2

En mere:
- Java har return type covariance
Gravatar #9 - Windcape
17. maj 2009 19:12
arne_v (7) skrev:
Jep. Men nu spurgte du jo til sporget. Java transient er en feature i sproget mens .NET NonSerialized er en feature i librariet.
Rigtigt, jeg ville bare være sikker på at det var det du mente med library level.
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