Microsoft had to rebuild Minecraft in C# for xbox one and windows 10 because they wouldn't want that garbage on their platform.
Microsoft is just stupid, they will have to support different source codes just because their Xbox One is way too much dependant of C#. Since their Xbox is just a modified version of the Windows kernel, they could have just taken any JVM and installed it on their Xbox One with the proper settings, job done.
As for Windows 10, the UWP (Universal Windows Platform) is a waste of time and a shit load of crap, also, if like me you prefer to use the standard PC login method instead of a MS account (because the "use an Internet account as PC account" is stupid), you can't access the Windows Store which means you can't download/install the game. Even the CEO of Epic Games can tell you that our "legacy" Win32 still have years to live. There is no difference between Minecraft UWP and Minecraft Win32 on Windows 10 so in the end it's just "OH LOOK, WE PORTED OUR GAME TO OUR PLATFORM THAT NOBODY WILL USE BUT WE'LL DO IT FOR MARKETING PURPOSES #YOLO_SWAG_PROGRAMMING_MONEY".
client and server libraries jar file if you do not worry whatever you play under Linux or Mac OS X because LWJGL has a lot of native extensions via class define calling so like LoaderInfo of AS3.
But how are Mac OS X , Solaris OS and Linux? I think they are mad to Windows users. If you use Linux than Minecraft has not to load native extension for Linux OS.
Who uses Solaris to play video games ? About the native librairies, I have (re)downloaded Minecraft on Linux, I typed "java -jar Minecraft.jar" in my Terminal and voilà, the game just ran fine (and I even managed to gain 7 FPS compared to Windows 10). If LWJGL is yelling at user because of "missing OpenGL extension or something" it's the user's fault, not yours. This reminds me of the early days of Minecraft where you had to update LWJGL and such yourself because the launcher downloaded obsolete versions (it caused a huge pain in the asses of Linux users too).
Minecraft runs pretty badly because of Java. It just can't handle the massive amount of data being processed by it, and if you run a lot of mods you'll notice the memory usage spiking to several Gb easily. Some mod packs won't run on 32 bit systems at all.
Microsoft also made a mistake, 1) if you take the standard Windows installer, you'll get a built-in outdated JVM. 2) Regardless of 1) the default settings point to a 32 bits JVM (even on a 64 bits PC). 3) The default JVM settings are designed by retarded monkeys who can't read a documentation properly which is causing the problem you describe.
This is why I use some special JVM settings (they come from the Internet, they're not mine), if you have 1 Gb to spare for Minecraft :
-Xmx1G -Xms1G -Xmn128m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxTenuringThreshold=15 -XX:MaxGCPauseMillis=30 -XX:GCPauseIntervalMillis=150 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=2048m -XX:+UseCodeCacheFlushing -XX:SoftRefLRUPolicyMSPerMB=2000 -XX:ParallelGCThreads=10
If you have 3 Gb to spare to Minecraft :
-Xmx3G -Xms3G -Xmn768m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxTenuringThreshold=15 -XX:MaxGCPauseMillis=30 -XX:GCPauseIntervalMillis=150 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=2048m -XX:+UseCodeCacheFlushing -XX:SoftRefLRUPolicyMSPerMB=10000 -XX:ParallelGCThreads=10
Depending on the computer and the JVM, what I've posted may work or not, so please don't bash me if they do nothing or worse.
Also, Minecraft still relies on "immediate OpenGL" (like Half-Life), hence why OptiFine or a mod that allow you to use modern OpenGL (if your PC allow you to do it of course) is highly recommended.
I hope both Java and Android to die.
Java cannot die, it already conquered a lot of areas that C# will never conquer (like Windows can't conquer areas that are dominated by Linux). Android became a victim of Google's cancer, their forced "Google Apps" on Nexus ROMs which OEMs (Samsung, Motorola, Sony...) uses is one of those reasons. On my Motorola Moto X 2013 (codename "ghost"), my stock ROM starting to act like shit (even after multiple factory resets), I took the risk of installing "Oct-OS" and I succeeded, this result in less CPU/RAM being wasted, more battery life, no more Google/Motorola junk and my phone can live for more than 5 years. If you can, find and install a pure AOSP (Android Open Source Project) ROM or MiUI (chinese are good developers and phone manufacturers, way to go Xiaomi ^^) and you won't blame Android again. I have the feeling that Google becomes a cancer by killing everything it touches, "Google Chrome" is one of their another victim. I wish Windows/Apple/Steam/AMD/ATI and many other companies die but that won't be possible because they are supported by goats or they have monopolized their market.
Everyone should understand that Java isn't designed for fast paced games like Striker mentioned. And I think this applies to C# as well, if you are looking to make a FPS/RTS/racing game (in other words, a game where "a tiny delay matters"), then Java (and probably C#) aren't the proper languages, move to a "low level language" like C or C++. If your game is something like a Space Invaders, Tetris, Monopoly, then it's ok to use a high level language. Recently, I started programming a Were Wolf game with client-server multiplayer and maybe webcam/microphone capture support in the future, I could have used C# but I'll loose the compatibility with Linux and OS X (unless everyone install Mono as CLR), using C/C++ would require more time and I don't want to deal too much with the low level stuff and guess what I have chosen ? Java. You also need to take in account that each language has it's advantages and it's limits, even for C and C++ which some people consider as "gods". If you want to argue about programming languages, a web site already exists for you: https://wiki.theory.org/YourLanguageSucks
Guys, stop talking trash about Java. Getting motivated for my studies is already hard enough, if in addition to that I learn that what I'm learning is useless and bad, I'm not sure how I'll do...
But actually, I like Java. (even though that's the only language I know besides PHP)
Like I said above (and Striker said it too), Java is pretty cool as-is even if it has some downsides (a 100% programming language will never exists) and it's reputation of being used in enterprises is well deserved (at least in France, I don't know about the other countries).
think that when you study computing science in university you have to learn languages like C and then move to others, I think java should be the means not the end of learning. wink-wink - I remember how I did study microbiology in the first course of university only to never touch it anymore, but it was essential in anathomopatology. wink-wink - Don't feel you are wasting your time!.
Assuming we put aside the fact that I was reading tutorials and praticising on my own when I was young: during my first year of "specialization" (I was 18 years old back then), the first language I learned was C#, Java and Python and they all are "high level programming languages", when I graduated to university at 20, I was being taught C (using ANSI ISO C90 standards) which is this time a "low level programming language". Why we teach in this order ? Because the execution environment of "high programming level languages" (CLR on C#/JVM on Java/Python interpreter) makes a huge part of the dirty job for you: you don't have to deal with memory allocation, you have useful types (List, Map, Set, Dictionary...), in other words, you have the "right to be dirty". When you move to C however, you don't have the built-in List, Map, Set, Dictionary types, you have the joy and charm of dealing with pointers, you wanted memory allocation ? Do it yourself (and clean it yourself).
We live in a world today where programming is getting being taught to very young kids (I saw experiments on 6/8/10 years old with graphical programming languages then "high level programming languages"), imagine teaching to 6 year old kids structures, pointers, memory allocation.