You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 83 Next »

Never use deprecated fields, methods, or classes in new code. The Java SE 6 documentation provides a complete list of deprecated APIs [[API 2006]]. Java also provides a @deprecated annotation to indicate the deprecation of specific fields, methods, and classes. For instance, many methods of java.util.Date, such as Date.getYear(), have been explicitly deprecated. Rule THI05-J. Do not use Thread.stop() to terminate threads describes issues that can result from using the deprecated Thread.stop() method.

Obsolete fields, methods, and classes should not be used. Java lacks any annotation that indicates obsolescence; nevertheless, several classes and methods are documented as obsolete. For instance, the java.util.Dictionary class is marked as obsolete; new code should use java.util.Map<K,V> instead [[API 2006]].

Obsolete Methods and Classes

The following methods and classes must not be used:

Class or Method

Replacement

Rule

java.lang.Character.isJavaLetter()

java.lang.Character.isJavaIdentifierStart()

 

java.lang.Character.isJavaLetterOrDigit()

java.lang.Character.isJavaIdentifierPart()

 

java.lang.Character.isSpace()

java.lang.Character.isWhitespace()

 

java.lang.Class.newInstance()

java.lang.reflect.Constructor.newInstance()

ERR06-J. Do not let code throw undeclared checked exceptions

java.util.Date (many methods)

java.util.Calendar

 

java.util.Dictionary

java.util.Map<K,V>

 

java.util.Properties.save()

java.util.Properties.store()

 

java.lang.Thread.run()

java.lang.Thread.start()

THI00-J. Do not invoke Thread.run()

java.lang.Thread.stop()

java.lang.Thread.interrupt()

THI05-J. Do not use Thread.stop() to terminate threads

java.lang.ThreadGroup (many methods)

java.util.concurrent.Executor

THI01-J. Do not invoke ThreadGroup methods

The Java Virtual Machine (JVM) Profiler Interface (JVMPI) and JVM Debug Interface (JVMDI) are also deprecated and have been replaced by the JVM Tool Interface (JVMTI). See rule ENV05-J. Do not deploy an application that can be remotely monitored for more information.

Risk Assessment

Using deprecated or obsolete classes or methods in program code can lead to erroneous behavior.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

MET02-J

high

likely

medium

P18

L1

Automated Detection

Detecting uses of deprecated methods is straightforward. Obsolete methods and thread-unsafe methods have no automatic means of detection.

Related Guidelines

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="004253f6-694e-4463-808b-f85689b2267f"><ac:plain-text-body><![CDATA[

[ISO/IEC TR 24772:2010

http://www.aitcnet.org/isai/]

Deprecated language features [MEM]

]]></ac:plain-text-body></ac:structured-macro>

MITRE CWE

CWE-589. Call to non-ubiquitous API

Bibliography

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="124cdd02-2f27-4b1f-a00c-15b67ed14950"><ac:plain-text-body><![CDATA[

[[API 2006

AA. Bibliography#API 06]]

[Deprecated API

http://java.sun.com/javase/6/docs/api/deprecated-list.html], [Dictionary

http://download.oracle.com/javase/6/docs/api/java/util/Dictionary.html]

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="46d33639-21f6-4f8c-8e67-059f8a686d5b"><ac:plain-text-body><![CDATA[

[[SDN 2008

AA. Bibliography#SDN 08]]

Bug database, [Bug ID 4264153

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4264153]

]]></ac:plain-text-body></ac:structured-macro>


      05. Methods (MET)      

  • No labels