una que polimorfismo modificadores metodos instancia estandares ejemplos codificacion clases atributos atributo acceso java sun

polimorfismo - que es un atributo en java



¿Es una mala práctica usar las clases de Java propietarias de Sun? (7)

El compilador muestra advertencias si usa las clases de Java propietarias de Sun. Soy de la opinión de que generalmente es una mala idea usar estas clases. Lo leí en alguna parte. Sin embargo, aparte de las advertencias, ¿hay alguna razón fundamental por la que no debes usarlas?



Debido a que son API internas: están sujetas a cambios de una manera no documentada o no compatible y están vinculadas a un JRE / JDK específico ( Sun en su caso), lo que limita la portabilidad de sus programas.

Intente evitar el uso de tales API, siempre prefiera una clase pública documentada y especificada.


Hace poco tuve un caso que mostraba un problema del mundo real al que puedes acceder cuando utilizas estas clases: teníamos un código que no compilaba porque un método que estaba usando en una clase sun. * simplemente no existía en OpenJDK en Ubuntu. Así que supongo que cuando utilizas estas clases ya no puedes decir cosas como ''esto funciona con Java 5'', porque solo funcionará en una determinada implementación de Java.


Intente ejecutar su código con una JVM que no sea de Sun y vea qué ocurre ...

(Su código fallará con una excepción ClassNotFound)


La Documentación JDK 6 incluye un enlace titulado Note About sun.* Paquetes . Este es un documento de los documentos de Java 1.2, por lo que las referencias a sun.* Deben tratarse como si com.sun.*

Los puntos más importantes de esto son:

Las clases que Sun incluye con Java 2 SDK, Standard Edition, caen en los grupos de paquetes java.* , javax.* , org.* Y sun.* . Todos los paquetes, excepto el sun.* , Son una parte estándar de la plataforma Java y se admitirán en el futuro. En general, los paquetes como sun.* , Que están fuera de la plataforma Java, pueden ser diferentes en todas las plataformas de SO (Solaris, Windows, Linux, Macintosh, etc.) y pueden cambiar en cualquier momento sin previo aviso con las versiones de SDK (1.2, 1.2.1, 1.2.3, etc.). Los programas que contienen llamadas directas al sun.* paquetes no son 100% Pure Java.

y

Cada compañía que implementa la plataforma Java lo hará a su manera privada. Las clases en sun.* Están presentes en el SDK para admitir la implementación de Sun de la plataforma Java: las clases sun.* Son las que hacen que las clases de la plataforma Java funcionen "bajo las cubiertas" para Sun Java 2 SDK. Estas clases, en general, no estarán presentes en la plataforma Java de otro proveedor. Si su programa Java solicita una clase "sun.package.Foo" por su nombre, puede fallar con ClassNotFoundError, y habrá perdido una gran ventaja de desarrollar en Java.


Las clases de Java propietarias de Sun son parte de su implementación de Java, no son parte de la API de Java; su uso no está documentado ni es compatible. Como son internos, se pueden cambiar en cualquier momento por cualquier motivo que decida el equipo que trabaja en Sun JVM.

¡Además, la implementación de Java de Sun no es la única que existe! Su código no podría ser transferible a las JVM de otros proveedores como Oracle / BEA e IBM.


Sí, porque nadie garantiza que estas clases o API serán las mismas con la próxima versión de Java y apuesto a que no está garantizado que esas clases estén disponibles en versiones Java de otros proveedores.

Entonces acoplas tu código a la versión especial de Java y pierdes al menos la portabilidad.