Нет Java-препроцессора и нет возможности условно компилировать.
В него встроена очень примитивная функция отладки, благодаря которой компиляции разрешается удалять условные блоки с постоянным условием, которое является ложным для облегчения устранениякод отладки - но я не помню, если спецификация требует или позволяет код, который будет удален из скомпилированного класса.
static final boolean DEBUG=false;
...
if(Debugging.DEBUG) {
// some code which the compile may (or must?) eliminate
}
Если вы хотитеобнаруживать O / S во время выполнения и выполнять разные действия на разных платформах, в каждой JVM требуется ряд системных свойств, которые описаны в System.getProperties()
.См. JavaDoc относительно его установки или сетевого расположения:
api/java/lang/System.html#getProperties()