# Bedingte Compilierung



## Alex (4. Dez 2003)

Hallo Leute!

Da es in Java keinen Präprozessor gibt würde ich gerne wissen, ob sich bedingte Compilierung trotzdem irgendwie realisieren lässt.

Grüsse,
Alex


----------



## utnovetur (4. Dez 2003)

Ian F. Darwin empfiehlt in seinem "Java Cookbook" (O'Reilly) in Kapitel 1.10 folgende Methode:

```
final boolean DEBUG = false;
// ...
if (DEBUG) {
   System.err.println("Fehler aufgetreten");
}
```


----------



## bygones (4. Dez 2003)

naja, das hat ja dann eigentlich nichts mit dem bedingten Compilieren zu tun...

Aber ich glaube auch, dass es der einzige Weg ist, das in etwa zu simulieren, einen anderen gibt es nicht !


----------



## utnovetur (6. Dez 2003)

Ein wenig hat es schon mit bedingter Compilierung zu tun:
Da der bollean DEBUG "final" ist, kann sein Wert zur Laufzeit nicht mehr geändert werden.
Ein guter Compiler hat deshalb die Möglichkeit, den gesamten Code der if-Bedingung wegzuoptimieren.
Die if-Bedingung wird also nicht zur Laufzeit, sondern zur Compilezeit überprüft.


----------



## marsias (8. Dez 2003)

Hi!

Ja da hast du gar nicht so unrecht. klingt logisch.
Aber: macht das auch der Compiler?
Und so viele java compiler gibt es doch gar nicht oder?

Sun und IBM.
Wobei die IBM Java Compiler echt gut sein sollen. ---> speed

mfg


----------



## utnovetur (8. Dez 2003)

Ich habe es an einem kleinen Beispiel mit dem SUN-Compiler ausprobiert.
Dabei habe ich den Code erst kompilert und anschließend mit
javap -c Klassenname
wieder dekopiliert.
Der Kompiler optimiert es tatsächlich weg!


----------

