Amaç, JVM sürümünü uyumluluk değişikliklerine, yan etkilere, hatalara ve / veya bir sürümde bir şekilde ve başka bir sürümde başka bir şekilde çalışan tanımlanmamış davranışa bağlı olarak algılayan java kodu yazmaktır. Ayrıca kod, boşluklardan ve okunaklı değişken adlarından ödün vermeden en az biraz okunabilir olmalıdır.
Bu amacı sağlamak için kesin resmi kurallar şunlardır:
Kod java yazılmalı ve içinde çalıştığı JRE sürümünü çıkarmalıdır.
Kod, özellikle java sürümünü algılamak için sağlanan veya JDK veya JRE sürümünü ücretsiz veren herhangi bir JDK veya JRE API'sini kullanmamalıdır.
Kod yansıma kullanmamalıdır.
Kod yalnızca Hotspot Java SE 5, 6 ve 7'de çalışmak için gereklidir, ancak diğer JVM'lerde de çalışabilir.
Kod, sınıf yolunda herhangi bir üçüncü taraf kitaplığı kullanmamalıdır.
Kod başka bir işlem başlatmamalıdır, java veya değil.
Kod, ortam değişkenlerini kullanmamalıdır.
Kod, önceden varolan dosyaları veya klasörleri arayan dosya sisteminde arama yapmamalıdır.
Kod tek bir dosyada bulunmalı ve
public static void main(String[] args)
veya ile çağrılmalıdırpublic static void main(String... args)
.Kod, JRE'de bulunan herkese açık olmayan herhangi bir API kullanmamalıdır.
Kod, yürütme sırasında NoClassDefFoundError, NoSuchMethodError, ClassNotFoundException veya NoSuchMethodException oluşturmamalıdır.
Kod, internet veya herhangi bir yerel ağ ile bağlantısı kesilmiş bir sistemde çalıştırılmalıdır.
Neden bir versiyonda bir şekilde, başka bir versiyonda başka bir şekilde davrandığını açıklamalısınız.
puanlama
En iyi çözümü ölçmek için kullanılan yöntem max (n / s) 'dir; burada n, bu kurallardan herhangi birini (en az 5, 6 ve 7 sürümlerini) ihlal etmeden algılanan farklı java sürümlerinin sayısıdır ve s, sözcük belirteçlerinin sayısıdır çözelti içinde.