« export to excel but in new page | Java learning videos »
Comparision between C# and JAVA
by Vahid 25. January 2009 15:30
here is a quick comparision between microsoft c# (.net) and java
| Concept | C# | Java | Notes |
|---|---|---|---|
| Virtual machine | CLR | JVM | CLR is not quite the same as JVM concept, but very similar. |
| Namespace | namespace/ using | package/ imports | C# allows multiple namespaces in a file, Java does not. |
| Attributes | [attribute] | @annotation | C# 1.0, Java 1.5 |
| Base class | base | super | |
| abstract objects | abstract class | abstract class | |
| abstract methods | abstract | abstract | |
| sealed objects | sealed | final | In both cases, sealing is discouraged. |
| sealed methods | sealed | final | |
| replacement methods | new keyword | not supported | Effectively ignores the base method. |
| constants | const / readonly | final static | |
| Enum’s | enum keyword | enum keyword | C# 1.0, Java 1.5 |
| virtual functions | explicit virtual | always virtual | This is one of the gotcha’s when working between the two languages |
| override intention | override | @Override (though members override by default) | Causes compiler error if method is not actually overriding a base method. |
| Class/Type representation of simple types | Map 1:1 with the simple type keywords. | Behave different to simple type keywords. | C# seems more natural than Java in it’s behavior |
| Getters/Setters | get/set keywords, behave like properties | Explicit get/set methods | Again, C# seems more natural with this. |
| Events | Typically via delegates | Typically via interfaces | |
| Reference equivalence | Object. ReferenceEquals() | == | Another C# vs Java gotcha. |
| Value equivalence | == or Object.Equals() | object.equals(), == for value types | Java’s choice of using == for reference equals adds to the need to distinguish between objects and value types. |
| Object introspection | Object.GetType() | object.class | Very similar |
| Exceptions thrown by method | implicit | throws keyword | Actually liking Java’s philosophy here, albeit taking some getting used to. |
| Stack scoping | using keyword, or try/finally keywords | try/finally keywords | ‘using’ keyword is syntax sugar that calls IDisposable.Dispose() method at end of block. |
| Simple synchronization | lock keyword | synchronized keyword | ‘synchronized’ can also be used on a method. |
| Generics | class<type> | class<type> | C# 2.0. Java 1.5. C# has a cleaner implementation and discovery of generics in reflection. In Java, class and class<type> cannot co-exist. class becomes synonymous to class |
| Output parameters | out, ref | Not allowed | Not a huge loss in Java, there are simple workarounds. |
| Switch fall-through | Not allowed | Allowed | |
| iteration | foreach(type x in y) | for (type x : y) | C# 1.0. Java 1.5. |
| Lambda/Closures | => | (future) | C# 3.0. Java 1.7 (maybe) |
Related posts
Differences between XML and JSON Here are some key differences between JavaScript Object Notation (or JSON), an open and text-…The C# Programming Language Version 4.0c# 4.0 by vahidDifferences between asp.net web Site and asp.net Web ApplicationHave ever wondered what the differences between 2 types of asp.net web projects in visual studio 200…
Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen