Genel olarak, aynı kaynağın aynı derleyici tarafından ancak farklı bir platformda derlendiğinde aynı bayt kodunu üreteceğine dair bir garanti olmadığını söylemeliyim.
Farklı dilleri (kod sayfaları) içeren senaryolara bakardım, örneğin Japonca dil desteğine sahip Windows. Çok baytlı karakterleri düşünün; derleyici her zaman tüm dilleri desteklemesi gerektiğini varsaymadığı sürece, 8-bit ASCII için optimize edebilir.
Java Dil Spesifikasyonunda ikili uyumluluk ile ilgili bir bölüm vardır .
SOM'da (Forman, Conner, Danforth ve Raper, Proceedings of OOPSLA '95) Release-to-Release Binary Compatibility çerçevesinde, Java programlama dili ikili dosyaları, yazarların tanımladığı tüm ilgili dönüşümler altında ikili uyumludur (bazı uyarılarla birlikte örnek değişkenlerin eklenmesine saygı). Şemalarını kullanarak, Java programlama dilinin desteklediği bazı önemli ikili uyumlu değişikliklerin bir listesi:
• Performansı iyileştirmek için mevcut yöntemleri, kurucuları ve başlatıcıları yeniden uygulamak.
• Yöntemleri veya yapıcıları, daha önce normalde oluşmaması gereken veya sonsuz bir döngüye girerek veya bir kilitlenmeye neden olarak başarısız olan istisnaları attığı girdilere ilişkin değerler döndürmek için değiştirme.
• Mevcut bir sınıfa veya arabirime yeni alanlar, yöntemler veya yapıcılar ekleme.
• Bir sınıfın özel alanlarını, yöntemlerini veya yapıcılarını silme.
• Tüm paket güncellendiğinde, paketteki sınıfların ve arabirimlerin varsayılan (yalnızca paket) erişim alanlarını, yöntemlerini veya yapıcılarını silme.
• Mevcut bir tür bildirimindeki alanları, yöntemleri veya yapıcıları yeniden sıralama.
• Bir yöntemi sınıf hiyerarşisinde yukarı taşıma.
• Bir sınıfın veya arabirimin doğrudan üst arabirimlerinin listesini yeniden sıralama.
• Tür hiyerarşisine yeni sınıf veya arabirim türleri ekleme.
Bu bölüm, tüm uygulamalar tarafından garanti edilen ikili uyumluluk için minimum standartları belirtir. Java programlama dili, uyumlu kaynaklardan geldiği bilinmeyen, ancak kaynakları burada açıklanan uyumlu yollarla değiştirilen sınıfların ve arabirimlerin ikili dosyaları karıştırıldığında uyumluluğu garanti eder. Bir uygulamanın sürümleri arasındaki uyumluluğu tartıştığımızı unutmayın. Java SE platformunun sürümleri arasındaki uyumluluk tartışması bu bölümün kapsamı dışındadır.