Java has surely not failed in being cross platform, not if we are comparing it with .NET.
.NET Core still doesn't run in many environments, where I can gladly put Java on. The computing world is much bigger than just macOS, Windows and GNU/Linux.
And then there is the issue that even Swing/JavaFX/SWT are better supported that whatever .NET Core UI framework one can think of.
Xamarin is nice and way better than React Native, Cordova or Qt, and yet you aren't going to find much love for it on online forums.
On game development C# got lucky with Unity, because finally there was a company that was firm to hold on to managed languages in game development no matter what, and they managed to turn out one of the best engines out there for indies.
Had Unity decided to go the way of Unreal with UnrealScript and the story would be quite different.
I still remember the JavaGamming initiative at Java ONE, Java3D or the JOGL project, but like many other Sun initiatives, they let it die after a couple of years. Maybe here the story would have been different if they were actually committed to it.
Thing is UNIX companies never understood desktop and gaming cultures, so here .NET has notoriously an advantage by having been part of a desktop OS SDK since its inception, from a company that actually understands desktop and gaming cultures.
Stack allocation is the one 'killer feature' c# has had over java since forever. Really critical for games, ie 3d math for example. Still no 'value objects' in java, I don't when or if they're planned nowadays, i stopped following that long ago.
> And then there is the issue that even Swing/JavaFX/SWT are better supported that whatever .NET Core UI framework one can think of.
Try to use GUI designers and commercial component libraries for Swing/JavaFX/SWT and then try to use GUI designers XNA/FNA, Qt and Gtk+ while using only C# code.
I am speaking about production quality GUI tooling with commercial support, not a legacy framework abandoned by Microsoft due to their internal politics, or some bindings written over a couple of weekends that still rely mostly on C++.
> "[C# is] sort of Java with reliability, productivity and security deleted."
-- Gosling on https://www.cnet.com/news/why-microsofts-c-isnt/
Oracle is improving Java native interop with projects Panama,
http://openjdk.java.net/projects/panama/
Java has surely not failed in being cross platform, not if we are comparing it with .NET.
.NET Core still doesn't run in many environments, where I can gladly put Java on. The computing world is much bigger than just macOS, Windows and GNU/Linux.
And then there is the issue that even Swing/JavaFX/SWT are better supported that whatever .NET Core UI framework one can think of.
Xamarin is nice and way better than React Native, Cordova or Qt, and yet you aren't going to find much love for it on online forums.
On game development C# got lucky with Unity, because finally there was a company that was firm to hold on to managed languages in game development no matter what, and they managed to turn out one of the best engines out there for indies.
Had Unity decided to go the way of Unreal with UnrealScript and the story would be quite different.
I still remember the JavaGamming initiative at Java ONE, Java3D or the JOGL project, but like many other Sun initiatives, they let it die after a couple of years. Maybe here the story would have been different if they were actually committed to it.
Thing is UNIX companies never understood desktop and gaming cultures, so here .NET has notoriously an advantage by having been part of a desktop OS SDK since its inception, from a company that actually understands desktop and gaming cultures.