Soruyu okuduktan sonra biraz araştırayım dedim. Arada çok bariz bir kaç fark var, ama bu farklar yapısal düzeyde ve programcının yazdığı programı direk nasıl etkiler pek emin değilim. Biraz açıklayalım.
- ManagedBean JSF kütüphanesi tarafından yönetilmekte. CDI Bean jee container tarafından yönetilmekte. Temel fark; ManagedBean kullarak tomcat üzerinde bir geliştirme yapabilirken, CDI kullanarak Tomcat yetmeyecek. Glassfish, Tomee, WAS vs seçeneklere geçmek gerekecek.
- JSF 2.3 den itibaren ManagedBean kavramı deprecated, yani yavaştan kullanımdan kaldırılıyor. Bence tomcat'den vazgeçmek kolay değil. Insanlar tomcat den vazgeçmeyip JSF'den vazgeçebilir. Daha olası geliyor.
- CDI jee container tarafından yönetildiğine göre jee containerin verdiği bazı özelliklerle daha iyi entegre olabilir gibi geldi. Mesela JNDI kaynakları, EJB gibi. Keza aynı şekilde beanın scope alanı da genişlemiş olur.
- Kaynaklarda dependency injection açısından daha iyi özellikleri var denilmiş ama bariz bir örnek göremedim. Bir önceki maddedeki tahminlerim bakii.
Şimdilik bu kadar. Senin de tecrübelerin varsa duymak isterim :)
İyi çalışmalar.