Don't take this personal, and I have NO grievance with you, but your lack on understanding in this subject may have an impact on peoples willingness to learn.
Your "Yes" is simply not true at all.
Most games will use interrupts and/or pointers to do several things at once and 99% will require processor specific calls to achieve optimal results. Macs and PC's (and Windows and Linux for the latter) handle interrupts, pointers and direct calls differently and the hardware is totally different.
I don't get it... I program iso c++ and build using the gnu autotools... a pointer is a pointer (with the only exceptions being difference between 64bit and 32bit)... interrupts may be handled differently but they are programmed in the same way... the hardware is mostly abstracted away by APIs (OpenGL, OpenAL etc etc)...
If the game was programmed that used networking, again it's TOTALLY different for Mac and PC based hardware, typical example is a PC will use COM1: and COM2: and a Mac will use "Modem" and "Printer" for essentially the same thing. Likewise Macs have to flush the data stream before allowing another, PC's don't.
Once again, normal programmers use API's to handle this sort of thing, they don't "flush the data stream themselves" in one platform and not in another.
File handling (loading binaries, resources) is totally different between all platforms. C:\Program Files\Game\Textures\tex34.jpg would certainly cause a crash on a Mac and Linux. The only way round this is to use relative directories rather than fixed directories but this assumes that the owner of the machine isn't someone who likes to 'tinker' with their machine and has the system configured how they want. C:\%os.root%\Drivers would work on the majority of machines but ONLY if the user hasn't moved their Drivers directory to somewhere else. If they have, the game is useless.
Paths may be differently handled, but tbh that syntactical, rather than programmatic difference, and easily handled with compiler conditionals. 99% of modern applications will use relative directories, and if the user has screwed around with where files need to be, of course the dependencies will fail, however, usually games are either
a) Self-contained and thus don't require high level dependancies that it can't determine on the system already (Who screws around with where Windows puts its' directx dlls anyway?)
b) Packaged properly in one of the repositories like Ubuntu where apt can install it, combined with any dependancies already in the system.
c) If the user screwed with their setup, they also screwed with the program, and they are responsible for setting library/include paths to where they moved the new libraries, with semantic links if necessary.
Talking of graphics, AWT is handled TOTALLY different on each and every version of Java platforms. There is not one VM that handles the AWT the same way across all platforms.
Java in Windows is a LOT faster than Java on a Mac. The differences in the two are so great that even advanced delta-timing just wouldn't cause a game to be the same product on either platform.
AWT? You mean the ancient "platform native" windowing toolkit java used to use pre-2.0? I didn't think anyone used that any more. I have not heard of "advanced delta-timing", though a few googles bring up a lot of game development sites that aren't native c++ development communities... and you are complaining about performance?
Java is cross platform because it is a language that can be run on a multitude of hardware (Mac, Windows, Linux, Symbian, etc)
No, java runs on a JVM. The JVM is compiled on a multiple of operating systems (Mac, Windows, Linux, Symbian are operating systems, not hardware)
unlike something like VB.Net/c# which is only PC.
VB.net I have no idea, but c# and the .net development framework has MONO to run on other operating systems, which is open source.
But each and every platform has a different VM (and even then there are many variations in VM's) so the game would need to be tested on a multitude of machines with a multitude of VM's to ensure a wider compatibility.
True, but as long as they are the same "version" of the JVM, they should run with limited compatibility problems. You major concern is whether your external apis like JOGL's hookup to opengl still works ok.
If you wrote PURE Java, that is used the commands that are native to the language much like BASIC was years ago (GWBasic, Mallard, QBasic, pBasic, RealBasic, etc) then you'd be able to port relatively easy and with hardly any OS/Platform checking. But once you start adding anything to do with graphics, networking or specific calls to hardware, you're hitting none-portability.
As far as I was concerned, not that I program java a great deal any more, networking was handled by Java Sockets, and was operating system independant. Depending on whether you are using native java graphics (using the SWT or the old Graphics g), which might be a bit slow for games, or using something like JOGL, you might get different results, indeed.
I could go on, but the myth that Java is cross-platform is literally a google away and I'm surprised you didn't research more before posting your answer.
Java itself is not cross platform, because it doesn't *see* the platform, all it sees is the JVM. The JVM acts as middleware to protect Java from having to see the nitty gritty. External libraries such as JOGL might have special cases I guess, I am not an expert in that.