C# via Java: Introduction

So, I’ve recently changed jobs. Rather than working in .NET land, I’ve migrated over to Java land.

But never fear! I’ll continue to peer under the covers of .NET, but my next series will use my new experience in Java to explore the design decisions made in the development of the C# programming language.

After all, the design of C# was based on Java 1.2, and both languages have continued to evolve since then, incorporating modern software engineering concepts and requirements. Exploring the differences and similarities between the two will (hopefully) give us a deeper understanding into why .NET is implemented the way it is, the trade-offs involved, and what choices were made when new features were designed and added to the language and framework.

Among others, I’ll be looking at differences in:

  • Primitives
  • Operators
  • Generics
  • Exceptions
  • Accessibility
  • Collections
  • Delegates and inner classes
  • Concurrency

In my next post, I’ll start off by looking at the type primitives available in each language, and how Java and C# actually incorporate two different concepts of primitive types in their fundamental language design and use.

I’m also thinking of looking at the inner details of Java and the JVM in my blogs, as well as C# and the CLR. If you’ve got any comments or thoughts on this, please let me know.