Tujuannya adalah untuk menulis kode java yang mendeteksi versi JVM dengan mengandalkan perubahan kompatibilitas, efek samping, bug dan / atau perilaku tidak terdefinisi yang bekerja dengan cara dalam satu versi dan cara lain di versi lain. Selanjutnya, kode harus setidaknya sedikit terbaca, tanpa mengorbankan spasi putih dan nama variabel yang dapat dibaca.
Untuk memastikan tujuan itu, aturan formal yang tepat adalah:
Kode harus ditulis dalam java dan harus menampilkan versi JRE di mana ia berjalan.
Kode tidak boleh menggunakan JDK atau JRE API yang disediakan khusus untuk mendeteksi versi java atau yang memberikan versi JDK atau JRE secara gratis.
Kode tidak boleh menggunakan refleksi.
Kode ini hanya diperlukan untuk bekerja di Hotspot Java SE 5, 6 dan 7, tetapi dapat bekerja di JVM lainnya.
Kode tidak boleh menggunakan perpustakaan pihak ketiga apa pun di classpath.
Kode tidak boleh memulai proses lain, java atau tidak.
Kode tidak boleh menggunakan variabel lingkungan.
Kode tidak boleh mencari sistem file untuk mencari file atau folder yang sudah ada.
Kode harus dimuat dalam satu file dan dipanggil melalui
public static void main(String[] args)
ataupublic static void main(String... args)
.Kode tidak boleh menggunakan API non-publik apa pun yang ada di JRE.
Kode tidak boleh menghasilkan NoClassDefFoundError, NoSuchMethodError, ClassNotFoundException atau NoSuchMethodException selama eksekusi.
Kode harus dijalankan dalam sistem yang terputus dari internet atau dari jaringan lokal apa pun.
Anda harus memberikan penjelasan mengapa berperilaku dalam satu cara dalam versi dan cara lain di versi lain.
Mencetak gol
Metode yang digunakan untuk mengukur solusi terbaik adalah maks (n / s), di mana n adalah jumlah versi java yang berbeda yang terdeteksi tanpa melanggar salah satu aturan ini (setidaknya versi 5, 6 dan 7) dan s adalah jumlah token leksikal dalam solusinya.