プリプロセッサがない

Javaには#defineとか#ifdefなどのプリプロセッサがない。うーん、CPUだのOSだのそういう環境で何か動作を変えるということはできるのかな。というか、そういう発想がJavaでは邪道? そもそもLinuxで動いているのかWindowsで動いているのか取得する方法はあるのかな。