Skip to main content

Preventing Composition Problems in Modular Java Applications

  • Conference paper
  • First Online:
Software Quality. The Future of Systems- and Software Development (SWQD 2016)

Part of the book series: Lecture Notes in Business Information Processing ((LNBIP,volume 238))

Included in the following conference series:

  • 1058 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    http://docs.oracle.com/javase/7/docs/api/java/lang/LinkageError.html (Jun 2015).

  2. 2.

    http://sab39.netreach.com/Software/Japitools/42/.

  3. 3.

    http://clirr.sourceforge.net/.

  4. 4.

    http://ispras.linuxbase.org/index.php/Java_API_Compliance_Checker.

  5. 5.

    http://depfind.sourceforge.net/.

  6. 6.

    https://code.google.com/p/joops/.

  7. 7.

    https://maven.apache.org/.

  8. 8.

    https://gradle.org/.

  9. 9.

    https://commons.apache.org/proper/commons-io/.

  10. 10.

    http://asm.ow2.org/.

  11. 11.

    https://eclipse.org/.

  12. 12.

    https://jenkins-ci.org/.

  13. 13.

    https://developer.ibm.com/urbancode/products/urbancode-release/.

  14. 14.

    http://mvnrepository.com/artifact/org.apache.commons/commons-io (Jun 2015), http://mvnrepository.com/artifact/commons-io/commons-io (Jun 2015).

  15. 15.

    https://github.com/kjezek/simple-booking-study.

  16. 16.

    http://www.sonarqube.org/.

References

  1. Belguidoum, M., Dagnat, F.: Formalization of component substitutability. Electron. Notes Theoret. Comput. Sci. 215, 75–92 (2008)

    Article  Google Scholar 

  2. 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)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. Ponomarenko, A., Rubanov, V.: Backward compatibility of software interfaces: steps towards automatic verification. Program. Comput. Softw. 38(5), 257–267 (2012)

    Article  Google Scholar 

  5. 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)

    Google Scholar 

  6. 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)

    Google Scholar 

  7. Drossopoulou, S., Wragg, D., Eisenbach, S.: What is Java binary compatibility? In: ACM SIGPLAN Notices, vol. 33, pp. 341–361. ACM (1998)

    Google Scholar 

  8. des Rivières, J.: Evolving Java-based APIs (2007). http://wiki.eclipse.org/Evolving_Java-based_APIs. Accessed 1 December 2014

  9. 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)

    Article  MathSciNet  MATH  Google Scholar 

  10. 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)

    Google Scholar 

  11. 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)

    Google Scholar 

  12. 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)

    Article  Google Scholar 

  13. 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)

    Google Scholar 

  14. Dietrich, J., Jezek, K., Brada, P.: What Java Developers Know About Compatibility. And Why This Matters, ArXiv e-prints, August 2014

    Google Scholar 

  15. Jezek, K., Dietrich, J., Brada, P.: How java apis break - an empirical study. J. IST 65, 129–146 (2015)

    Google Scholar 

  16. Brada, P.: Enhanced type-based component compatibility using deployment context information. Electron. Notes Theor. Comput. Sci. 279(2), 17–31 (2011)

    Article  Google Scholar 

  17. 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)

    Google Scholar 

  18. Lindholm, T., Yellin, F., Bracha, G., Buckley, A.: The Java Virtual Machine Specification. Java SE 7 Edition. Oracle America Inc., California (2012)

    Google Scholar 

  19. Jezek, K., Ambroz, J.: Detecting incompatibilities concealed in duplicated software libraries. In: SEAA 2015 (2015) inprint

    Google Scholar 

  20. 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)

    Google Scholar 

  21. 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

    Google Scholar 

  22. 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

    Google Scholar 

  23. 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)

    Chapter  Google Scholar 

  24. 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)

    Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Kamil Jezek .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics