Intentando compilar mi aplicación contra java 1.7 Encontré lo que había un nuevo método agregado en javax.sql.CommonDataSource (y por lo tanto en j.s.DataSource) -. getParentLogger()
. Puede comparar CommonDataSource:1.7 con CommonDataSource:1.6Nuevo método agregado en javax.sql.CommonDataSource en 1.7
Para mí, este cambio definitivamente rompe la compatibilidad con versiones anteriores. Por ejemplo, mi aplicación (que contiene implementaciones de DataSource) incluso no compila contra 1.7 sin cambios en el código.
En mi opinión, debería haber razones muy fuertes para hacer esto, pero no puedo buscar en Google ni siquiera una. ¿Alguien puede explicar el razonamiento detrás de este cambio? Cómo se supone que debe lidiar con eso correctamente, para mí es la primera vez que me encuentro con una incompatibilidad hacia atrás con Java, así que no tengo ninguna "mejores prácticas" aquí ...
no es la primera vez. Esto siempre sucede cuando actualizan JDBC. Estoy de acuerdo en que esto no es una buena cosa (tm). Muchos controladores, por ejemplo, necesitan mantener versiones separadas solo por esto. Es un problema, pero solo debería generar errores de compilación, no errores de tiempo de ejecución (es decir, puede compilar para JDK6 y aún así ejecutarlo contra JDK7). – Thilo
Las interfaces JDBC se volvieron incompatibles hacia atrás varias veces (al agregar métodos) en el pasado. Debería poder agregar los métodos adicionales a sus clases, y deberían funcionar sin problemas en entornos anteriores a 1.7. –
Hm ... ¿No rompe la compatibilidad binaria? Quiero decir, mi implementación de DS se compiló con DS anterior, sin agregar un método nuevo, parece ser un cambio binario incompatible, ¿no? – BegemoT