Issue No. 04 - April (2000 vol. 33)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/2.839318
<p>Despite Java attributes (memory management, strong type checking, and built-in support for exception handling) that promote reliable, bug-free software, some features contribute to, rather than alleviate, programmer stress because they create obscure places for bugs to hide. The authors have identified seven features that can lead to particularly resistant bugs. Their goal is not to indict Java--they are strong supporters, and their own organizations have adopted Java as their primary programming language. Rather, they want programmers to better understand Java's weaknesses and know how to cope with them.</p> <p>Being aware of these design weaknesses (Java's false sense of protection, constructor confusion, finalizer methods, subclass substitution, container limitations, final parameters, and initialization diffusion), programmers can make sure that Java's design flaws don't make implementation more difficult than it has to be.</p>
J. M. Bieman, R. T. Alexander and J. Viega, "Coping with Java Programming Stress," in Computer, vol. 33, no. , pp. 30-38, 2000.