Ziel ist es, Java-Code zu schreiben, der die JVM-Version anhand von Kompatibilitätsänderungen, Nebenwirkungen, Fehlern und / oder undefiniertem Verhalten erkennt, die in einer Version auf eine andere Art und Weise funktionieren. Außerdem sollte der Code mindestens ein bisschen lesbar sein, ohne auf Leerzeichen und lesbare Variablennamen zu verzichten.
Um dieses Ziel zu erreichen, lauten die genauen formalen Regeln:
Der Code muss in Java geschrieben sein und die JRE-Version ausgeben, in der er ausgeführt wird.
Der Code darf keine JDK- oder JRE-API verwenden, die speziell für die Erkennung der Java-Version bereitgestellt wurde oder die JDK- oder JRE-Version kostenlos zur Verfügung stellt.
Der Code darf keine Reflektion verwenden.
Der Code ist nur für die Verwendung in Hotspot Java SE 5, 6 und 7 erforderlich, kann jedoch auch in anderen JVMs verwendet werden.
Der Code darf keine Bibliotheken von Drittanbietern im Klassenpfad verwenden.
Der Code darf keinen anderen Prozess starten, weder Java noch.
Der Code darf keine Umgebungsvariablen verwenden.
Der Code darf das Dateisystem nicht nach bereits vorhandenen Dateien oder Ordnern durchsuchen.
Der Code muss in einer einzigen Datei enthalten sein und über
public static void main(String[] args)
oder aufgerufen werdenpublic static void main(String... args)
.Der Code darf keine nicht öffentliche API verwenden, die in der JRE vorhanden ist.
Der Code darf während seiner Ausführung keine NoClassDefFoundError, NoSuchMethodError, ClassNotFoundException oder NoSuchMethodException generieren.
Der Code sollte auf einem System ausgeführt werden, das nicht mit dem Internet oder einem lokalen Netzwerk verbunden ist.
Sie sollten erklären, warum es sich in einer Version auf die eine und in einer anderen Version auf die andere Weise verhält.
Wertung
Die Methode zur Messung der besten Lösung ist max (n / s), wobei n die Anzahl der verschiedenen Java-Versionen ist, die erkannt wurden, ohne dass eine dieser Regeln verletzt wurde (mindestens Version 5, 6 und 7), und s die Anzahl der lexikalischen Token in der Lösung.