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.

  • $\begingroup$ I'm not sure this is in our scope, but I will answer anyway. $\endgroup$ – Yuval Filmus Oct 16 '14 at 22:32
  • $\begingroup$ To be fair, they should provide each contestant with access to a machine, possibly a VM, for testing purposes. The rules would be simple: if it runs on the unmodified VM, we'll accept it. Sadly, it's just not feasible to let everybody install their own interpreters. $\endgroup$ – Patrick87 Oct 16 '14 at 23:03
  • 2
    $\begingroup$ That said... it's their competition and their rules. They're not saying that nobody gets to rely on software being there; they're saying you can't rely on Java being there. You don't like the rules, complain and don't participate. Better yet, hold your own competition. Then post to a blog how your Java solution spanks the "winner" of the now farcical FBLA competition. $\endgroup$ – Patrick87 Oct 16 '14 at 23:07

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.

  • $\begingroup$ Would that consist of me going into the java installation directory, and then copying the files into the jar, and then make it a .exe? $\endgroup$ – CoderMusgrove Oct 17 '14 at 0:09
  • $\begingroup$ I have no idea, I'm not an expert in Java. This aspect of your question belongs to stackoverflow. $\endgroup$ – Yuval Filmus Oct 17 '14 at 0:10

Not the answer you're looking for? Browse other questions tagged or ask your own question.