The value means nothing for the Java program itself. The shell calling the Java program can use it to determine what to do next.
A small example of how I usually compile Linux programs from source and install them: These are three separate commands:
- ./configure reads my environment settings, and creates a build script (Makefile) based on them
- make uses the instructions in the generated Makefile to actually compile the code into an executable
- make install then installs the created executable into a specified location
The && work similarly to how they work in Java: if ./configure succeeds the shell will call make. If that too succeeds the shell will call make install. If ./configure fails (e.g. because a required library is missing) then the shell will abort and not call the remainder. Failure is usually indicated by a non-0 return (i.e. 0 is good, everything else is bad).