Abstract
Java JAR files have become a common means to bring reusability into Java programming. While they allow developers to easily share and use third-party libraries, they bring new challenges as well. This paper addresses the problem of Linkage Errors that occur when a type incompatibility or a missing dependency between two libraries is detected at runtime. This is a direct impact of composing applications from pre-existing binary libraries as the problem would be normally detected during compilation. A problem may occur relatively easily as rules of source and binary compatibility in Java differ and may be counter-intuitive. To deal with this problem, we offer a set of tools that analyse existing binaries and discover problems normally leading to runtime errors. The tools work automatically, may complement existing testing, and find problems effectively from the start of development. Their additional features such as detection of redundant or duplicated libraries are usually not provided by standard testing tools.
Keywords
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
References
Belguidoum, M., Dagnat, F.: Formalization of component substitutability. Electron. Notes Theoret. Comput. Sci. 215, 75–92 (2008)
Fluri, B., Gall, H.C.: Classifying change types for qualifying change couplings. In: Proceedings of the 14th IEEE International Conference on Program Comprehension, ICPC 2006, pp. 35–45. IEEE Computer Society, Washington, DC (2006)
Kawrykow, D., Robillard, M.P.: Non-essential changes in version histories. In: Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 351–360. ACM, New York (2011)
Ponomarenko, A., Rubanov, V.: Backward compatibility of software interfaces: steps towards automatic verification. Program. Comput. Softw. 38(5), 257–267 (2012)
Forman, I.R., Conner, M.H., Danforth, S.H., Raper, L.K.: Release-to-release binary compatibility in SOM. In: Proceedings OOPSLA 1995, pp. 426–438. ACM, New York (1995)
Gosling, J., Joy, B., Steele, G., Bracha, G., Buckley, A.: The Java Language Specification, Java SE 7th edn. Addison-Wesley, USA (2012). (3rd edn. 2005)
Drossopoulou, S., Wragg, D., Eisenbach, S.: What is Java binary compatibility? In: ACM SIGPLAN Notices, vol. 33, pp. 341–361. ACM (1998)
des Rivières, J.: Evolving Java-based APIs (2007). http://wiki.eclipse.org/Evolving_Java-based_APIs. Accessed 1 December 2014
De Francesco, N., Lettieri, G., Martini, L.: Using abstract interpretation to add type checking for interfaces in java bytecode verification. Theor. Comput. Sci. 411(22–24), 2174–2201 (2010)
Kästner, C., Apel, S., Thüm, T., Saake, G.: Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. 21(3), 14:1–14:39 (2012)
Gregersen, A.R.: Implications of modular systems on dynamic updating. In: Proceedings of the 14th International ACM Sigsoft Symposium on Component Based Software Engineering, CBSE 2011, pp. 169–178. ACM, New York (2011)
Gregersen, A.R., Jørgensen, B.N.: Dynamic update of java applications-balancing change flexibility vs programming transparency. J. Softw. Maint. Evol. 21(2), 81–112 (2009)
Pukall, M., Grebhahn, A., Schröter, R., Kästner, C., Cazzola, W., Götz, S.: JavAdaptor: unrestricted dynamic software updates for Java. In: Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 989–991. ACM, New York (2011)
Dietrich, J., Jezek, K., Brada, P.: What Java Developers Know About Compatibility. And Why This Matters, ArXiv e-prints, August 2014
Jezek, K., Dietrich, J., Brada, P.: How java apis break - an empirical study. J. IST 65, 129–146 (2015)
Brada, P.: Enhanced type-based component compatibility using deployment context information. Electron. Notes Theor. Comput. Sci. 279(2), 17–31 (2011)
Jezek, K., Holy, L., Slezacek, A., Brada, P.: Software components compatibility verification based on static byte-code analysis. In: SEAA, 39th EUROMICRO, pp. 145–152. IEEE Computer Society (2013)
Lindholm, T., Yellin, F., Bracha, G., Buckley, A.: The Java Virtual Machine Specification. Java SE 7 Edition. Oracle America Inc., California (2012)
Jezek, K., Ambroz, J.: Detecting incompatibilities concealed in duplicated software libraries. In: SEAA 2015 (2015) inprint
Jezek, K., Dietrich, J.: On the use of static analysis to safeguard recursive dependency resolution. In: SEAA 2014, pp. 166–173. IEEE Computer Society (2014)
Holy, L., Snajberk, J., Brada, P.: Visual clutter reduction for UML component diagrams: a tool presentation. In: 2012 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp. 253–254, September 2012
Holy, L., Snajberk, J., Brada, P., Jezek, K.: A visualization tool for reverse engineering of complex component applications. In: 2013 29th IEEE International Conference on Software Maintenance (ICSM), pp. 500–503, September 2013
Petersen, K., Wohlin, C., Baca, D.: The waterfall model in large-scale development. In: Bomarius, F., Oivo, M., Jaring, P., Abrahamsson, P. (eds.) PROFES 2009. LNBIP, vol. 32, pp. 386–400. Springer, Heidelberg (2009)
Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J.: The qualitas corpus: a curated collection of Java code for empirical studies. In: Proceedings APSEC 2010, pp. 336–345. IEEE (2010)
Acknowledgement
This publication was supported by the project LO1506 of the Czech Ministry of Education, Youth and Sports, and by the UWB grant SGS-2013-029 Advanced Computer and Information Systems.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2016 Springer International Publishing Switzerland
About this paper
Cite this paper
Jezek, K., Holy, L., Danek, J. (2016). Preventing Composition Problems in Modular Java Applications. In: Winkler, D., Biffl, S., Bergsmann, J. (eds) Software Quality. The Future of Systems- and Software Development. SWQD 2016. Lecture Notes in Business Information Processing, vol 238. Springer, Cham. https://doi.org/10.1007/978-3-319-27033-3_9
Download citation
DOI: https://doi.org/10.1007/978-3-319-27033-3_9
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-27032-6
Online ISBN: 978-3-319-27033-3
eBook Packages: Computer ScienceComputer Science (R0)