by insomniac_lemon » 8/14/2013
Minecraft was started and is still being developed in Java.
There's also no real reason to re-write/port the PC version of Minecraft to another language, because any "speed issues" are there because of poorly-written and un-optimized code (one of the reasons performance changes dramatically even between post-release versions), using another language would not help much, if at all (in fact, might be worse if Mojang tries developing for a language they are inexperienced with).
Not only that: Minecraft is cross platform. It works on any desktop OS that can run Java, and without much need for more effort besides OS-specific issues (mostly with OS X from what I've seen). It would be hard to replicate this in a language that is fast, not to mention most people even recommending not using Java would say just to develop it in C, which would result in Mojang either only supporting Windows, using some crappy port, or needing to make specific clients for each OS. Maybe they could use GIT somehow, but I still doubt it would be better than now.
Anyways: there's no real reason, Minecraft just needs more work and speeding up, it's not Java's fault. Java is better than it once was and is still getting better. Switching languages at this point does not make sense at all, would take more work than fixing Minecraft now, and is a whole other project in itself. If you want it in another language, try MC:PE or MC360 instead (hint: they're pretty much in "beta" mode like what the PC version had).
by xer0 » 8/14/2013
Okay, you seem a bit misguided about these technologies, let's see if I can bring you up-to-speed in a clear and concise manner.
Java is an interpreted (meaning it's converted to machine language as it's being used, not prior, like other languages such as C/C++) programming language that runs off of a virtual machine. This makes Java inherently slower than the other languages, for reasons you'll come to understand later on in this reply. The Java Virtual Machine (JVM) is (simply put) a piece of software that converts Java code to native machine code, and executes it. This allows Java to run on all the platforms that support the machine's architecture (currently 6+ BILLION devices are compatible with the JVM.) This means that if I write an Java application on my Windows computer, I can run it on my Linux computer, and even my Macintosh, whenever I wish, without editing the code base. If i used C/C++ or any other native language (must be compiled for each device architecture that I wish to run it on), then I'd have to write a Windows version that supports Windows GUI APi's (Application Programming Interface), then I'd have to write a version for Macintosh that supports its GUI API, (The Cocoa framework) and then I'd have to write another version for Linux/Unix systems that support THEIR GUI APi's (Qt and GTK). All this could take weeks, and if Notch had written Minecraft this way, it could takes weeks or months just to get the Mac version of 1.6.2 after it was released for Windows.
Java is a byte-code interpreted language running on a virtual machine
Lastly, Notch wrote Minecraft in Java because he is very familiar with the language. He had no idea that the game would end up generating millions in revenue,while gathering a cult-following, and becoming the most successful Indie game ever developed. And besides, even if he did, he would still have chosen Java for it's ease-of-use, portability, and the fact that with current processing power, only the really low-end machines would even have a problem with performance.
“区块”概念在Minecraft Infdev阶段时首次引进。 在Beta 1.3版本引进MCRegion之前, Minecraft以36进制编码的区块坐标为文件名，将区块信息储存在独立的“.dat”文件中（Alpha level format）。为了减少磁盘占用，MCRegion将地平面上32*32平方块内的所有区块打包存储在以十进制编码的区块坐标为文件名的“.mcr”文件中；这种存储方式降低了Minecraft运行时同时打开的文件数量。MCRegion后来被当下的Anvil文件格式取代，新格式沿用了MCRegion打包存储的方法，并使用了新的“.mca”文件格式。
现在（2012年11月22日时），方块的辅助信息独立地被保存在区块信息内，特别的，天空光照（SkyLight）和（BlockLight）两个数组信息不在挂在方块ID后。Anvil文件格式出现后, 开发组在Notch原先设想的基础上对NBT格式（二进制命名标签格式）做出了改变，添加了一个和字节数组标签（byte array tag）相近的整数数组标签（integer array tag）——只有区块的等高线信息使用NBT格式存储。