Secara keseluruhan, saya harus mengatakan tidak ada jaminan bahwa sumber yang sama akan menghasilkan bytecode yang sama ketika dikompilasi oleh kompiler yang sama tetapi pada platform yang berbeda.
Saya akan melihat skenario yang melibatkan bahasa yang berbeda (halaman kode), misalnya Windows dengan dukungan bahasa Jepang. Pikirkan karakter multi-byte; kecuali kompilator selalu menganggap ia perlu mendukung semua bahasa yang mungkin dioptimalkan untuk ASCII 8-bit.
Ada bagian tentang kompatibilitas biner di Spesifikasi Bahasa Java .
Dalam kerangka kerja Kompatibilitas Biner Rilis-ke-Rilis di SOM (Forman, Conner, Danforth, dan Raper, Proceedings of OOPSLA '95), biner bahasa pemrograman Java kompatibel dengan biner di bawah semua transformasi relevan yang diidentifikasi oleh penulis (dengan beberapa peringatan sehubungan dengan penambahan variabel instan). Menggunakan skema mereka, berikut adalah daftar beberapa perubahan penting yang kompatibel dengan biner yang didukung oleh bahasa pemrograman Java:
• Menerapkan kembali metode, konstruktor, dan penginisialisasi yang ada untuk meningkatkan kinerja.
• Mengubah metode atau konstruktor untuk mengembalikan nilai pada input yang sebelumnya mereka lemparkan pengecualian yang biasanya tidak boleh terjadi atau gagal dengan masuk ke loop tak terbatas atau menyebabkan kebuntuan.
• Menambahkan bidang, metode, atau konstruktor baru ke kelas atau antarmuka yang ada.
• Menghapus bidang privat, metode, atau konstruktor kelas.
• Ketika seluruh paket diperbarui, menghapus bidang akses default (hanya paket), metode, atau konstruktor kelas dan antarmuka dalam paket.
• Menyusun ulang bidang, metode, atau konstruktor dalam deklarasi tipe yang ada.
• Memindahkan metode ke atas dalam hierarki kelas.
• Menyusun ulang daftar superinterfaces langsung dari sebuah kelas atau antarmuka.
• Memasukkan kelas atau tipe antarmuka baru dalam hierarki tipe.
Bab ini menetapkan standar minimum untuk kompatibilitas biner yang dijamin oleh semua implementasi. Bahasa pemrograman Java menjamin kompatibilitas ketika biner kelas dan antarmuka dicampur yang tidak diketahui berasal dari sumber yang kompatibel, tetapi sumbernya telah dimodifikasi dengan cara kompatibel yang dijelaskan di sini. Perhatikan bahwa kita membahas kompatibilitas antara rilis aplikasi. Diskusi tentang kompatibilitas di antara rilis platform Java SE berada di luar cakupan bab ini.