Regarding EXEs: Neither Sun Java nor Microsoft C# create real EXEs out of the box. Visual C#.NET gives you something that's called .EXE, but it actually is only a stub that starts the .NET runtime and passes the bytecode to it - which more or less is what Mac OS X does for you when you double click on a .jar archive. But as FlameDuck said, there are also Java compilers available that can create native code for you.
Writing games with Java: Have a look at Andrew Davison's book "Killer Game Programming in Java". Everything is doable in Java - and already has been done - but in the end you will find that BlitzMax makes your life significantly easier than Java ever could, especially in this domain.
But don't let anybody fool you on that "write once, run anywhere" promise. It actually only is "write once, test anywhere". Or, as id Software's John Carmack said: "Write once, run anywhere. Ha. Hahahahaha."
If your looking for future employment: Stick to Java. There are millions of extremely boring, but probably well paid Java developer jobs out there. You know, like writing another financial software module for a bank or insurance company, or yet another crappy human resources or project management software. You won't find many INTERESTING Java jobs out there (like programming robots), unless you start your own business. Being the industry's "lingua franca" is Java's curse.
Besides all that, Java is a great language if you want to write academically clean object-oriented code. That's one of the reasons why universities love to teach in Java. Java follows that whole OO-paradigma through to the bitter end, giving you basically no alternative to it. You cannot write procedural/functional code in Java - even if it would make more sense for the task at hand.
Java also strongly enforces multi-threading - with the same disclaimer: Even if it does not make real sense for the task at hand. Carefully read most network programming tutorials for Java, and you will see that they usually spawn one thread per connection -- absolute overkill and the best way to bring every server to its knees, but until Java 1.4 you did not even have a choice.
Java is not a silver bullet and has its shortcomings and flaws just like any other programming language. What makes it special, however, is its wide acceptance. Basically everybody in the business speaks or at least understands it. In that sense, it is a bit like the English language.
Writing games with Java: Have a look at Andrew Davison's book "Killer Game Programming in Java". Everything is doable in Java - and already has been done - but in the end you will find that BlitzMax makes your life significantly easier than Java ever could, especially in this domain.
But don't let anybody fool you on that "write once, run anywhere" promise. It actually only is "write once, test anywhere". Or, as id Software's John Carmack said: "Write once, run anywhere. Ha. Hahahahaha."
If your looking for future employment: Stick to Java. There are millions of extremely boring, but probably well paid Java developer jobs out there. You know, like writing another financial software module for a bank or insurance company, or yet another crappy human resources or project management software. You won't find many INTERESTING Java jobs out there (like programming robots), unless you start your own business. Being the industry's "lingua franca" is Java's curse.
Besides all that, Java is a great language if you want to write academically clean object-oriented code. That's one of the reasons why universities love to teach in Java. Java follows that whole OO-paradigma through to the bitter end, giving you basically no alternative to it. You cannot write procedural/functional code in Java - even if it would make more sense for the task at hand.
Java also strongly enforces multi-threading - with the same disclaimer: Even if it does not make real sense for the task at hand. Carefully read most network programming tutorials for Java, and you will see that they usually spawn one thread per connection -- absolute overkill and the best way to bring every server to its knees, but until Java 1.4 you did not even have a choice.
Java is not a silver bullet and has its shortcomings and flaws just like any other programming language. What makes it special, however, is its wide acceptance. Basically everybody in the business speaks or at least understands it. In that sense, it is a bit like the English language.