I don't think there is another language out there that could have given Minecraft the kind of success that it's had (The same applies to Runescape). Many Windows users have a JVM + the Java plugin installed already, and the only other widely-known plugin that gives the kind of 3D performance that you can extract out of Java is Unity3D. While Unity is easy enough to install, it's been around for a lot less long and it's less widely known and developed for. Most users would have experienced a jarring "please install this plugin" moment before they got to play, and I'm pretty sure that the immediacy with which players have been able to get into Minecraft has been a big part of its success.
Contrary to what you repeatedly hear about Java, it actually has very decent performance. Sure, the ME edition is horrible (if that was somebody's only exposure to Java game programming I'd forgive them for never wanting to touch the language again), and some years ago applet performance was awful (which seems to have left a bad taste in the mouths of a significant number of hackers), but these days if you avoid Swing (and why would you want such a toolkit for a 3D game like Minecraft anyway?) and use a library like LWJGL then you can produce a game with decent performance and graphics. Minecraft is a bit of a mixed bag when it comes to scaling down to older machines, but it still runs reasonably well on quite a lot of older hardware (up to about 5 yrs old, or thereabouts). That leaves you with a very large potential userbase.
Also contrary to what you might hear, Java's actually not that shabby of a language either. Sure, you sacrifice some of the features and syntactic sugar found in higher-level languages like Python & Ruby (in return for performance), but garbage collection and higher-level features like reflection that are not found in C/C++ mean that development speed is still pretty good. There are a wide variety of available libraries to help you out too.
Lastly, much of Java's reputation for verbosity doesn't apply to games development. You don't have to use any of the libraries that require XML-heavy configuration like Spring or Hibernate, nor any of horrifyingly verbose stuff like EJBs or JDBC (actually there's nothing forcing you to use those for enterprise stuff either). Once you've taken care of the performance-intensive graphics stuff, you're "only" left with the core game logic. While a higher-level language like Python, Ruby or Lua could reduce the amount of code you need to write by a certain amount, the difference is not as pronounced as it is between, say, C++ and Lua, due to Java's automatic memory management.
And seriously, who gives a toss about whether something's dorky and uncool? I didn't care back in high school that people thought I was a dork for programming or even just for using computers (this was before the internet and Apple made computers cool!) and nobody should have to give a shit what programming language snobs think of their choice of language either, as long as they're getting the job done.
Contrary to what you repeatedly hear about Java, it actually has very decent performance. Sure, the ME edition is horrible (if that was somebody's only exposure to Java game programming I'd forgive them for never wanting to touch the language again), and some years ago applet performance was awful (which seems to have left a bad taste in the mouths of a significant number of hackers), but these days if you avoid Swing (and why would you want such a toolkit for a 3D game like Minecraft anyway?) and use a library like LWJGL then you can produce a game with decent performance and graphics. Minecraft is a bit of a mixed bag when it comes to scaling down to older machines, but it still runs reasonably well on quite a lot of older hardware (up to about 5 yrs old, or thereabouts). That leaves you with a very large potential userbase.
Also contrary to what you might hear, Java's actually not that shabby of a language either. Sure, you sacrifice some of the features and syntactic sugar found in higher-level languages like Python & Ruby (in return for performance), but garbage collection and higher-level features like reflection that are not found in C/C++ mean that development speed is still pretty good. There are a wide variety of available libraries to help you out too.
Lastly, much of Java's reputation for verbosity doesn't apply to games development. You don't have to use any of the libraries that require XML-heavy configuration like Spring or Hibernate, nor any of horrifyingly verbose stuff like EJBs or JDBC (actually there's nothing forcing you to use those for enterprise stuff either). Once you've taken care of the performance-intensive graphics stuff, you're "only" left with the core game logic. While a higher-level language like Python, Ruby or Lua could reduce the amount of code you need to write by a certain amount, the difference is not as pronounced as it is between, say, C++ and Lua, due to Java's automatic memory management.
And seriously, who gives a toss about whether something's dorky and uncool? I didn't care back in high school that people thought I was a dork for programming or even just for using computers (this was before the internet and Apple made computers cool!) and nobody should have to give a shit what programming language snobs think of their choice of language either, as long as they're getting the job done.