Today every programmer learns Java at school, but my university (where I walked uphill, both ways, barefoot, in the snow) had used C, Pascal, and Ada of all things. Later I went straight from C/C++ to C# when Microsoft released the .NET Framework. Eventually I also picked up Java on the side, after it had already matured and acquired the status of a lingua franca among developers. Seeing the recent decline of interest in .NET, first at Microsoft and then in the general programming public, I decided to revisit the language.
The new overview article, Java for C# Programmers, consolidates my notes while digesting the standard literature, Core Java and Effective Java, plus various Oracle tutorials. There are plenty of articles on the web that explain C# for Java programmers, but very few in the other direction. My overview is of course not exhaustive, but I tried to cover the most important and surprising differences. Hopefully it will be useful to others making the jump.
2013-08-25: Added link to Mikhail Vorontsov’s excellent Java Performance Tuning Guide. This growing article collection analyzes many basic language and library elements. Great resource for anyone concerned about execution speed and/or memory consumption.