Какие-либо проблемы возникают из-за использования функций устаревших в Java?? Если так, почему они сохраняют эту функцию?? Действительно ли это - дурная привычка при использовании устаревшего метода в Java как java.sql.Date.getMonth
или getYear
или getDate
???
Некоторые потенциальные проблемы:
System.runFinalizersOnExit
и его злой близнец Runtime.runFinalizersOnExit
)Thread.stop
)Код может сломаться в будущем ...
устаревшие функции являются предупреждением о том, что эта функция будет удалена.
Ищите альтернативные способы решения проблемы прямо сейчас, или вы иметь взлом кода в будущем.
Фактически ни один из методов не был удален, поэтому существующий код будет продолжать работать. Sun уделяет большое внимание обратной совместимости.
Основное преимущество состоит в том, чтобы отойти от кода, который по какой-то причине работает неоптимально, и обычно есть замена в другом месте библиотеки времени выполнения. Следовательно, использовать их - плохая привычка, и вам следует обратить внимание и использовать рекомендуемые замены всякий раз, когда компилятор отмечает отказ. Как правило, рекомендуется устранять предупреждения компилятора.
Вы можете увидеть список того, что является устаревшим в документации Javadocs. Список Java 5 находится по адресу http://download.oracle.com/javase/1.5.0/docs/api/deprecated-list.html
Утраченные методы сохраняются, чтобы код, написанный для предыдущей версии Java, по-прежнему функционировал. Если бы они просто удалили код, то ранее функционировавший код перестал бы работать, когда вы обновили Java до новой версии.
Использование устаревших функций не вызовет у вас никаких проблем, кроме тех, из-за которых метод был устаревшим. Однако лучше всего выяснить, что пришло на смену устаревшему методу. Устаревшая функциональность была заменена новой функциональностью, возможно, в новом классе. Большая часть устаревшей функциональности Date была перенесена в Calendar. Проверьте Javadoc для этого метода, чтобы увидеть рекомендуемую замену.
Как отмечали другие, Sun никогда не удаляла устаревшие методы из JDK, но то же самое нельзя сказать об устаревших методах в сторонних библиотеках. Они иногда исчезают (проект Lucene, например, имеет довольно "текучий" API, делая значительные чистки при значительных обновлениях версий).
Даже в JDK устаревший метод означает, что "теперь есть лучший способ сделать это", и вам, вероятно, следует обновить свой код, чтобы использовать новую версию.
Очень редко бывает, что устаревший метод не работает правильно для того, для чего он изначально предназначался, но замена обычно работает более надежно, или в большем количестве обстоятельств, или более общим образом. Хорошими примерами здесь являются упомянутые вами функции Date (устаревшие, потому что они плохо работают с различными локалями/календарями), или преобразования строк в байты, которые работают только с 7-битным ASCII. Эти оговорки/ограничения не могут быть исправлены без нового интерфейса, или потому, что кто-то может зависеть от "сломанной" реализации, поэтому вместо обновления метода его обесценивают и предоставляют альтернативный.
Устаревший класс или метод может быть удален в будущей версии. У Sun была привычка обесценивать вещи и никогда не удалять их, что, на мой взгляд, не очень хорошо, потому что это заставляет использовать устаревшие методы. Тем не менее, вы не должны использовать устаревшие методы там, где это возможно (а это всегда должно быть возможно). Это особенно касается внешних библиотек, которые, имхо, обычно не так боятся удалять устаревший код, как Sun.