скачать Плохая практика использования собственных Java-классов Sun?




java скачать (6)

Предупреждение о компиляторе отображает предупреждения, если вы используете собственные классы Java Sun. Я считаю, что использовать эти классы в целом неплохо. Я читал это где-то. Однако, помимо предупреждений, есть ли какие-либо фундаментальные причины, почему вы не должны их использовать?


Недавно у меня был случай, который показал реальную проблему, с которой вы можете столкнуться, когда используете эти классы: у нас был код, который бы не компилировался, потому что метод, который он использовал на солнце. * Класс просто не существовал в OpenJDK на Ubuntu. Поэтому я предполагаю, что при использовании этих классов вы больше не можете говорить такие вещи, как «это работает с Java 5», потому что он будет работать только на определенной реализации Java.



Поскольку они являются внутренними API-интерфейсами: они могут быть изменены бездокументарным или неподдерживаемым образом, и они привязаны к определенному JRE / JDK ( Sun в вашем случае), что ограничивает переносимость ваших программ.

Старайтесь избегать использования таких API-интерфейсов, всегда предпочитайте общедоступный документированный и заданный класс.


Собственные Java-классы Sun являются частью их реализации Java, не являющейся частью Java API, использование которых недокументировано и неподдерживается. Поскольку они являются внутренними, они могут быть изменены в любое время по любой причине, которую решает команда, работающая с Sun JVM.

Кроме того, реализация Java Sun не является единственной! Ваш код не сможет переноситься в JVM от других поставщиков, таких как Oracle / BEA и IBM.


Попробуйте запустить код с помощью JVM, отличного от Sun, и посмотрите, что произойдет ...

(Ваш код не будет работать с исключением ClassNotFound)


Да, потому что никто не гарантирует, что эти классы или API будут одинаковыми со следующей версией Java, и я уверен, что не гарантировано, что эти классы доступны в версиях Java от других поставщиков.

Таким образом, вы связываете свой код с специальной версией Java и теряете хотя бы переносимость.





sun