TY - JOUR
T1 - Characterizing the Usage, Evolution and Impact of Java Annotations in Practice
AU - Yu, Zhongxing
AU - Bai, Chenggang
AU - Seinturier, Lionel
AU - Monperrus, Martin
N1 - Publisher Copyright:
© 1976-2012 IEEE.
PY - 2021/5/1
Y1 - 2021/5/1
N2 - Annotations have been formally introduced into Java since Java 5. Since then, annotations have been widely used by the Java community for different purposes, such as compiler guidance and runtime processing. Despite the ever-growing use, there is still limited empirical knowledge about the actual usage of annotations in practice, the changes made to annotations during software evolution, and the potential impact of annotations on code quality. To fill this gap, we perform the first large-scale empirical study about Java annotations on 1,094 notable open-source projects hosted on GitHub. Our study systematically investigates annotation usage, annotation evolution, and annotation impact, and generates 10 novel and important findings. We also present the implications of our findings, which shed light for developers, researchers, tool builders, and language or library designers in order to improve all facets of Java annotation engineering.
AB - Annotations have been formally introduced into Java since Java 5. Since then, annotations have been widely used by the Java community for different purposes, such as compiler guidance and runtime processing. Despite the ever-growing use, there is still limited empirical knowledge about the actual usage of annotations in practice, the changes made to annotations during software evolution, and the potential impact of annotations on code quality. To fill this gap, we perform the first large-scale empirical study about Java annotations on 1,094 notable open-source projects hosted on GitHub. Our study systematically investigates annotation usage, annotation evolution, and annotation impact, and generates 10 novel and important findings. We also present the implications of our findings, which shed light for developers, researchers, tool builders, and language or library designers in order to improve all facets of Java annotation engineering.
KW - Annotation
KW - empirical study
KW - software evolution
KW - statistical modelling
UR - https://www.scopus.com/pages/publications/85105977574
U2 - 10.1109/TSE.2019.2910516
DO - 10.1109/TSE.2019.2910516
M3 - 文章
AN - SCOPUS:85105977574
SN - 0098-5589
VL - 47
SP - 969
EP - 986
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 5
M1 - 8686056
ER -