Java's reliability: An Analysis of software defects in Java

The authors consider Java's claim to be a safe and reliable language. First, Java and the aims of the language are introduced and its relationship with C++ is briefly considered. The results of analysing a selection of the software bugs, limitations, weaknesses and flaws that have been found in Java (generically described as Java related defects) are then presented. This analysis is based on reports made available by the worldwide web, on developmental experiences and on analysis of the Java Language Specification. The results obtained indicate that the Java-related defects can be categorised into 12 different categories (not all of which will be relevant to every software project). However, an understanding of these categories can be used to reduce the potential impact that such defects (including those yet to be identified) may have on a particular piece of software. The intention is that a developer who is forewarned is forearmed. A set of strategies is proposed which can be used to minimise the effect of identified defects in the Java language and environment. Such strategies may, of course, have implications for the whole development cycle. It is therefore necessary to consider these effects. In addition, the strategies may have limited applicability and consideration is given to this. Finally, the results of these studies in the light of previous experiences with other object oriented languages are considered and determine the extent to which the Java language developers achieved their aim.

[1]  Andrew Koenig,et al.  C Traps and Pitfalls , 1989 .

[2]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[3]  Les Hatton,et al.  Safer C - developing software for high-integrity and safety-critical systems , 1995, McGrawHill international series in software engineering.

[4]  Gary McGraw,et al.  Java security: hostile applets, holes&antidotes , 1997 .

[5]  Don Syme,et al.  Proving Java Type Soundness , 1999, Formal Syntax and Semantics of Java.