Abstract
When writing a Java library, it is very difficult to hide functionality that is intended not to be used by clients. The visibility concept of Java often forces the developer to expose implementation details. Consequently, we find a high number of public classes and methods in many Java libraries. Thus, client programmers must rely on documentation in order to identify the entry points of the library, i.e. the methods originally intended to be used by clients.
In this paper, we introduce a new metric, called the Method Weight, that assists in detecting entry points. Applying this metric on some well-known open-source Java libraries considerably supported the process of identifying their entry points. Furthermore, the metric provides a classification criterion to distinguish libraries with focused functionality from plain collections of utility classes.
This work was supported by Bundesministerium für Bildung und Forschung, research framework Unternehmen Region, project BIZWARE.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Apache Foundation: Byte Code Engineering Library (BCEL) 5.2, http://jakarta.apache.org/bcel/
Apache Foundation: Commons IO Library 2.0.1, http://commons.apache.org/io/
Bloch, J.: Effective Java, 2nd edn. Addison-Wesley (2008)
Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20, 476–493 (1994), http://portal.acm.org/citation.cfm?id=630808.631131
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading/MA (1995)
Gosling, J., Joy, B., Steele, G.L., Bracha, G.: Java Language Specification, 3rd edn. Addison-Wesley (2005)
Halstead, M.H.: Elements of software science. Elsevier (1977)
Henning, M.: API Design Matters. Communications of the ACM (CACM) 52(5), 46–56 (2009)
Java Community Process: Java Specification Request (JSR)-294, http://jcp.org/en/jsr/detail?id=294
Kerievsky, J.: Refactoring to Patterns. Addison-Wesley (2005)
Knoernschild, K.: JarAnalyzer 1.2, http://www.kirkk.com/main/main/jaranalyzer
Lafortune, E.: ProGuard 4.6, http://proguard.sourceforge.net/
McCabe, T.J.: A complexity measure. IEEE Transactions on Software Engineering 2(4), 308–320 (1976)
OpenJDK: Project jigsaw, http://openjdk.java.net/projects/jigsaw/
OSGi Alliance: OSGi Service Platform Release 4.2 (2010), http://www.osgi.org/Download/Release4V42
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 1053–1058 (1972), http://doi.acm.org/10.1145/361598.361623
Spinellis, D.D.: ckjm 1.9 — an implementation of the Chidamber and Kemerer metrics for Java, http://www.spinellis.gr/sw/ckjm/
Tulach, J.: Practical API Design: Confessions of a Java Framework Architect. APress (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Baar, T., Kumar, P. (2012). Detecting Entry Points in Java Libraries. In: Clarke, E., Virbitskaite, I., Voronkov, A. (eds) Perspectives of Systems Informatics. PSI 2011. Lecture Notes in Computer Science, vol 7162. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-29709-0_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-29709-0_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-29708-3
Online ISBN: 978-3-642-29709-0
eBook Packages: Computer ScienceComputer Science (R0)