Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: REM cost reform

Never use deprecated fields, methods, or classes in new code. Java provides an @deprecated annotation to indicate the deprecation of specific fields, methods, and classes. For example, many methods of java.util.Date, such as Date.getYear(), have been explicitly deprecated. THI05-J. Do not use Thread.stop() to terminate threads describes issues that can result from using the deprecated Thread.stop() method. 

The Java SE documentation provides a list of deprecated APIs for each version of the language:

...

The methods and classes listed in the following table 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 throw undeclared checked exceptions

java.util.Date (many methods)

java.util.Calendar

 


java.util.Dictionary<K,V>

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

java.util.Datejava.time (since Java 8)

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

...

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

Rule

Severity

Likelihood

Detectable

Remediation Cost

Repairable

Priority

Level

MET02-J

Low

Unlikely

Medium

Yes

No

P2

L3

Automated Detection

Detecting uses of deprecated methods is straightforward. Obsolete methods have no automatic means of detection.

ToolVersionCheckerDescription
Parasoft Jtest
9.5PB.API.DPRAPI, TRS.THRDImplementedSonarQube Java Plugin
Include Page
Parasoft_V
Parasoft_V
CERT.MET02.DPRAPI
CERT.MET02.THRD
Do not use deprecated APIs
Avoid calling unsafe deprecated methods of 'Thread' and 'Runtime'
SonarQube
Include Page
SonarQube
Java Plugin
_V
SonarQube
Java Plugin
_V
CallToDeprecatedMethodImplemented
S1874"@Deprecated" code should not be used

Related Guidelines

ISO/IEC TR 24772:2010

Deprecated Language Features [MEM]

MITRE CWE

CWE-589, Call to Non-ubiquitous API

Android Implementation Details

The Android SDK has deprecated and obsolete APIs. Also, there may exist incompatible APIs depending on the SDK version. Consequently, it is recommended that developers refer to the "Android API Differences Report" and consider replacing deprecated APIs.

Bibliography

...


...