Karşılaştırma başlıkları yazılım dünyasında kalıp halinde kullanıldıklarından İngilizce olarak yazılmıştır.
| Java | C# | |
| Geliştirici | Sun Microsystem | Microsoft |
| Geliştirilme Yılı | 1995 | 2000 |
| Veri Tipi | Gelişmiş | Az Gelişmiş |
| Struct Concept | Desteği Yok | Desteği var |
| Switch Case | String in Switch Not Allowed | String in Switch Allowed |
| Delegates | Absent | Supported |
| Referans Tipleri | Java | C# |
| Garbage collection | Var | Var |
| Weak references | Var | Var |
| Reference queue | Var | Var |
| Soft and Phantom references | Var | Yok |
| Proxy support | Var; proxy generation | Var; object contexts |
| Diziler ve Kolleksiyonlar | Java | C# |
| Abstract data types | Var | Var |
| One-dimensional, zero-based index arrays | Var | Var |
| Multidimensional arrays, rectangular (single array) | Yok | Var |
| Multidimensional arrays, jagged (arrays of arrays) | Var | Var |
| Non-zero based arrays | Yok | Some |
| Unified arrays and collections | Yok | Var |
| Maps/dictionaries | Var | Var |
| Sorted dictionaries | Var | Var[25] |
| Sets | Var | Var |
| Sorted sets | Var | Var[26] |
| Lists/vectors | Var | Var |
| Queues/stacks | Var | Var |
| Priority queue | Var | Yok |
| Bags/multisets | Yok | Var |
| Concurrency optimized collections | Var | Var[27] |
| Java | C# |
| // Is valid, as numbers is an object of type short[]
short[] numbers = new short[100]; // Is valid, but it isn’t clear that values // is an object of type double[] double values[] = new double[100]; |
// Is valid, as numbers is an object of type short[]
short[] numbers = new short[100]; double values[] = new double[100]; // Won’t compile! |
| İfadeler ve Operatörler | Java | C# |
| Aritmetik Operatörler | Var | Var |
| Mantıksal Operatörler | Var | Var |
| Bitwise logic operators | Var | Var |
| Şart Operatörler | Var | Var |
| String Birleştirme | Var | Var |
| Casts(Atama) | Var | Var |
| Boxing | Var; implicit | Var; implicit |
| Unboxing | Var; implicit | Var; explicit |
| Lifted operators | Yok | Var |
| Overflow control | Yok | Var |
| Strict floating point evaluation | Var; opt-in/out | Yok |
| Verbatim (here-)strings | Yok | Var[31] |
| Nesne Yönelimi | Java | C# |
| Classes | mandatory | mandatory |
| Interfaces | Var | Var |
| Abstract classes | Var | Var |
| Member accessibility levels | Var; public, package, protected, private | Var; public, internal, protected, private, protected internal |
| Class-level inner classes | Var;static inner classes are class level | Var; all inner classes are class level |
| Instance-level inner classes | Var | Yok |
| Statement-level (local) anonymous classes | Var | Var; Without methods |
| Partial classes | Yok; but see AspectJ[36] | Var |
| Implicit (inferred) anonymous classes | Yok | Var[37] |
| Deprecation/obsolescence | Var | Var |
| Overload versioning | Some | Var |
| Enums can implement interfaces | Var | Yok |
| Properties | Yok, but see JavaBeans spec | Var |
| Events | Provided by standard libraries | Built-in language feature |
| Operator overloading | Yok | Var |
| Indexers | Yok | Var |
| Implicit conversions | Yok | Var |
| Explicit conversions | Yok | Var |
| Fields and initialization | Java | C# |
| Fields | Var | Var |
| Constants | Var | Var; but no support for constant passed parameters[41] |
| Static (class) constructors | Var | Var |
| Instance constructors | Var | Var |
| Finalizers/destructors | Var | Var |
| Instance initializers | Var | Yok; can be simulated with instance constructor |
| Object initialization | Bottom-up (fields and constructors) |
Top-down (fields); bottom-up (constructors) |
| Object initializers | Yok | Var |
| Collection initializers | Yok; can be modelled | Var |
| Array initializers | Var | Var |
| Methot ve Özellikler | Java | C# |
| Static imports | Var | Var[42] |
| Virtual methods | Virtual by default | Yokn-virtual by default |
| Abstract | Var | Var |
| Sealing | Var | Var |
| Explicit interface implementation | Default methods in Java 8 | Var[43] |
| Value (input) parameters | Var | Var |
| Reference (input/output) parameters | Yok | Var |
| Output (output) parameters | Yok | Var |
| Constant (immutable) parameters | Var;final parameters | Yok |
| Variadic methods | Var | Var |
| Optional arguments | Yok[44] | Var |
| Named arguments | Yok | Var |
| Generator methods | Yok | Var |
| Extension / default methods | Var | Var |
| Conditional methods | Yok | Var |
| Partial methods | Yok | Var |
| Exceptions | Java | C# |
| Checked exceptions | Var | Yok |
| Try-catch-finally | Var | Var |
| Generics | Java | C# |
| Implementation | Type erasure | Reification |
| Runtime realization | Yok | Var |
| Covariance | Var | Var |
| Contravariance | Var | Var |
| Reference type constraint | Var; implicit | Var |
| Value/primitive type constraint | Yok | Var |
| Constructor constraint | Yok | Var |
| Relation constraint | Var | Var |
| Primitive/value type support | Yok | Var |
| Migration compatibility | Var | Yok |
| Metadata | Java | C# |
| Metadata annotations/attributes | Interface based; user-defined annotations can be created[68] | Class based |
| Positional arguments | Yok; unless a single argument | Var |
| Named arguments | Var | Var |
| Default values | At definition | Through initialization |
| Nested types | Var | Var |
| Specialization | Yok | Var |
| Conditional metadata | Yok | Var |
| Preprocessing, Compilation and Packaging | Java | C# |
| Namespaces | Packages | Namespaces |
| File contents | Restricted | Free |
| Packaging | Package | Assembly |
| Classes/assembly search path | ClassPath | Both compile-time and runtime[69][70] |
| Conditional compilation | Var | Var |
| Custom errors/warnings | Var; AnnotationProcessor | Var |
| Explicit regions | Yok | Var |
| Threading and Synchronization | Java | C# |
| Threads | Var | Var |
| Thread pool | Var | Var |
| Task-based parallelism | Partial[71] | Var[72] |
| Semaphores | Var | Var |
| Monitors | Var | Var |
| Thread-local variables | Var | Var; ThreadStaticAttribute |
| Native interoperability | Java | C# |
| Cross-language interoperability | Var (with Nashorn, CORBA, JNI orJNA)[78] | Var; C# was designed for it[78] |
| External/native methods | Var | Var |
| Marshalling | External glue code required | Var; metadata controlled |
| Pointers and arithmetics | Yok; but references exist | Var |
| Native types | Var[79] | Var |
| Fixed-size buffers | Yok | Var |
| Explicit stack allocation | Yok | Var |
| Address-of | Yok | Var |
| Object pinning (fix variable to address) | Yok | Var |
| Platform support | Java | C# |
| Linux | Var | via Mono |
| Mac OS X | Var | via Mono |
| Solaris | Var | via Mono |
| FreeBSD | Var | via Mono |
| AIX | Var | Partial? |
| iOS | via RoboVM or Codename One | via Xamarin MonoTouch |
| Windows | Var | Var |
| Windows Mobile | Var | Var |
| Windows Phone | via Codename One[80] | Var |
| Windows 8 Modern | Var | Var |
| Android | via Dalvik, ART | via Xamarin MonoDroid |
| Feature phones | Var | Yok |
| Symbian | Var | Deprecated |
| Blackberry | Var | via cross-compiler[81] |
Kaynak : wikipedia.org