Isn't software needed from programs to run? I am a student who has entered a game programming competition called FBLA at school, and I sent them an email because I had a few questions about how the competition is ran.

The main question I had, since I'm a Java programmer was in short:
"Does the program need to be an executable, and if a java update/install is needed to run my program, will they install it?"

Their response was (quote):
"The file does need to be a .exe and the entire program needs to be able to run independently on the judges’ machines. Installing JAVA then running your program is not the intent of this competition. I understand your concern as a JAVA programmer, but this competition is set specifically to this format so that all the programmers know, up front, what is expected."

I can understand the file needing to be an Executable file, but when they said, "Installing JAVA then running your program is not the intent of this competition." really angered me.

If I'm going to make an application in C++, doesn't it require a version of C++ Redistributable? What about DirectX, that's software needed for some C++ programs, isn't it? What about programming in C, and C#?

My argument to them is doesn't all programming languages have a necessity to some form of software in one way or another? Without it, wouldn't applications be very limited, or not run at all?

If someone could please help me settle this issue for installing Java on a machine being no different to making game applications in other languages, I would really appreciate it.
Languages like C and C++ can be compiled to include all libraries they use statically (as part of the executable). This means that the executable will be able to run by itself. Of course, even in this case the executable is supported by the operating system, but this is "for free".

You are right that practical applications normally use dynamically linked libraries and even external data files, but programs arising in programming competitions are usually more low-key and can stand on their own.

The judges have a very practical reason in requiring that the executable be self-sufficient, namely it makes it much easier for them to run it. Java environments are not standard, take up a lot of space, and are time-consuming to install. In principle (and perhaps in practice) you could compile your Java code to Java bytecode and thence to an actual executable, and if you link the appropriate runtime libraries statically, you would get a standalone executable.