Characterizing the Usage, Evolution and Impact of Java Annotations in Practice

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

Full description

Saved in:
Bibliographic Details
Published inIEEE transactions on software engineering Vol. 47; no. 5; pp. 969 - 986
Main Authors Yu, Zhongxing, Bai, Chenggang, Seinturier, Lionel, Monperrus, Martin
Format Journal Article
LanguageEnglish
Published New York IEEE 01.05.2021
IEEE Computer Society
Institute of Electrical and Electronics Engineers
Subjects
Online AccessGet full text

Cover

Loading…
Abstract 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.
AbstractList 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.
Author Bai, Chenggang
Monperrus, Martin
Seinturier, Lionel
Yu, Zhongxing
Author_xml – sequence: 1
  givenname: Zhongxing
  orcidid: 0000-0002-8584-3570
  surname: Yu
  fullname: Yu, Zhongxing
  email: zhoyu@kth.se
  organization: KTH Royal Institute of Technology, Stockholm, Sweden
– sequence: 2
  givenname: Chenggang
  orcidid: 0000-0003-2224-2337
  surname: Bai
  fullname: Bai, Chenggang
  email: bcg@buaa.edu.cn
  organization: Beihang University, Beijing, China
– sequence: 3
  givenname: Lionel
  surname: Seinturier
  fullname: Seinturier, Lionel
  email: Lionel.Seinturier@inria.fr
  organization: Inria Lille Nord Europe, Villeneuve d'Ascq, France
– sequence: 4
  givenname: Martin
  orcidid: 0000-0003-3505-3383
  surname: Monperrus
  fullname: Monperrus, Martin
  email: martin.monperrus@csc.kth.se
  organization: KTH Royal Institute of Technology, Stockholm, Sweden
BackLink https://inria.hal.science/hal-02091516$$DView record in HAL
https://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-296843$$DView record from Swedish Publication Index
BookMark eNpV0c9r2zAUB3AxOlja7j7YRbDTYE6fJEv2O4Ys_THCNli7q5BtKVGXSqnkpHR__WxcCjsJpM_7gt73lJyEGCwhHxjMGQO8uP21mnNgOOfIQDL1hswYCiyE5HBCZgBYF1LW-I6c5nwPALKq5Ix8X25NMm1vk__rw4b2W0vvstnYL3R1jLtD72OgJnT05mE_MBod_WaOhi5CiL0ZXzP1gf4cM3xrz8lbZ3bZvn85z8jd5ep2eV2sf1zdLBfroi1B9kXjWCddx2rBLCurqu0MOmigYrWTUjgOpuGKVVgpY0soUVa1UKJ0TeeQI4ozUky5-cnuD43eJ_9g0rOOxuuv_vdCx7TRf_qt5qjqUgz-8-S3Zvcfvl6s9XgHHJANazuywX6a7D7Fx4PNvb6PhxSG72guuUJVSiwHBZNqU8w5Wfcay0CPjeihET02ol8aGUY-TiPeWvvKa1UrkEr8A3D4hqA
CODEN IESEDJ
CitedBy_id crossref_primary_10_1145_3478097
crossref_primary_10_1016_j_simpa_2023_100491
crossref_primary_10_1109_ACCESS_2021_3087795
crossref_primary_10_1109_TSE_2023_3252259
crossref_primary_10_1109_ACCESS_2024_3372618
crossref_primary_10_1016_j_infsof_2022_107089
crossref_primary_10_1007_s10515_024_00425_0
crossref_primary_10_1016_j_infsof_2022_107143
Cites_doi 10.1109/32.935855
10.1002/spe.2346
10.3115/v1/P14-5010
10.1145/1985793.1985796
10.1145/512529.512558
10.1145/3084226.3084259
10.1109/ASWEC.2009.19
10.1145/231379.231389
10.1145/2509136.2509528
10.1109/ICSM.2000.883028
10.3109/00952990.2011.597280
10.1145/3133909
10.1145/1852786.1852801
10.1109/ASE.2015.69
10.1145/2025113.2025119
10.1145/1390630.1390656
10.1145/1985793.1985889
10.1145/2884781.2884812
10.1145/2884781.2884848
10.1109/ICSE.2017.53
10.1145/2384616.2384680
10.1145/2884781.2884869
10.1145/2635868.2635922
10.1109/MS.1985.230345
10.1145/2568225.2568295
10.1007/s10664-015-9393-5
10.1145/582419.582441
10.1007/s10664-012-9236-6
10.1007/978-3-540-70592-5_28
10.1145/2814270.2814279
10.1145/2884781.2884882
10.1109/ICSE.2017.52
10.1145/1985793.1985860
10.1145/2642937.2642982
ContentType Journal Article
Copyright Copyright IEEE Computer Society 2021
Distributed under a Creative Commons Attribution 4.0 International License
Copyright_xml – notice: Copyright IEEE Computer Society 2021
– notice: Distributed under a Creative Commons Attribution 4.0 International License
DBID 97E
RIA
RIE
AAYXX
CITATION
JQ2
K9.
1XC
VOOES
ADTPV
AOWAS
D8V
DOI 10.1109/TSE.2019.2910516
DatabaseName IEEE All-Society Periodicals Package (ASPP) 2005-present
IEEE All-Society Periodicals Package (ASPP) 1998–Present
IEEE Xplore
CrossRef
ProQuest Computer Science Collection
ProQuest Health & Medical Complete (Alumni)
Hyper Article en Ligne (HAL)
Hyper Article en Ligne (HAL) (Open Access)
SwePub
SwePub Articles
SWEPUB Kungliga Tekniska Högskolan
DatabaseTitle CrossRef
ProQuest Health & Medical Complete (Alumni)
ProQuest Computer Science Collection
DatabaseTitleList

ProQuest Health & Medical Complete (Alumni)

Database_xml – sequence: 1
  dbid: RIE
  name: IEL
  url: https://proxy.k.utb.cz/login?url=https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1939-3520
EndPage 986
ExternalDocumentID oai_DiVA_org_kth_296843
oai_HAL_hal_02091516v1
10_1109_TSE_2019_2910516
8686056
Genre orig-research
GrantInformation_xml – fundername: National Natural Science Foundation of China
  grantid: 61772055
  funderid: 10.13039/501100001809
– fundername: Wallenberg AI, Autonomous Systems and Software Program
– fundername: Equipment Preliminary R&D Project of China
  grantid: 41402020102
– fundername: Knut och Alice Wallenbergs Stiftelse; Knut and Alice Wallenberg Foundation
  funderid: 10.13039/501100004063
GroupedDBID --Z
-DZ
-~X
.DC
0R~
29I
4.4
5GY
6IK
85S
8R4
8R5
97E
AAJGR
AASAJ
ABPPZ
ABQJQ
ABVLG
ACGFO
ACGOD
ACIWK
ACNCT
AENEX
AKJIK
ALIPV
ALMA_UNASSIGNED_HOLDINGS
ASUFR
ATWAV
BEFXN
BFFAM
BGNUA
BKEBE
BKOMP
BPEOZ
CS3
DU5
EBS
EDO
EJD
HZ~
IEDLZ
IFIPE
IPLJI
JAVBF
LAI
M43
MS~
O9-
OCL
P2P
Q2X
RIA
RIC
RIE
RIG
RNS
RXW
S10
TAE
TN5
TWZ
UHB
UPT
WH7
YZZ
AAYXX
CITATION
JQ2
K9.
.4S
1XC
3EH
3V.
5VS
7WY
7X7
88E
88I
8FE
8FG
8FI
8FJ
8FL
8G5
9M8
AAYOK
ABFSI
ABJCF
ABUWG
ADBBV
AETIX
AFKRA
AI.
AIBXA
ALLEH
ARAPS
ARCSS
AZQEC
BENPR
BEZIV
BGLVJ
BPHCQ
BVXVI
CCPQU
DWQXO
E.L
F20
FRNLG
FYUFA
GNUQQ
GROUPED_ABI_INFORM_COMPLETE
GROUPED_ABI_INFORM_RESEARCH
GUQSH
HCIFZ
HMCUK
H~9
I-F
IBMZZ
ICLAB
IFJZH
ITG
ITH
K60
K6V
K6~
K7-
L6V
M0C
M0N
M1P
M1Q
M2O
M2P
M7S
OHT
P62
PQBIZ
PQBZA
PQQKQ
PROAC
PSQYO
PTHSS
RNI
RZB
UKHRP
UQL
VH1
VOOES
XOL
YYP
ZCG
ADTPV
AOWAS
D8V
ID FETCH-LOGICAL-c405t-bf1d5fd1831e1477cda9f0b0718f553f20ab2617976ae40495783634fbdf92993
IEDL.DBID RIE
ISSN 0098-5589
1939-3520
IngestDate Sat Aug 24 00:48:35 EDT 2024
Fri Sep 06 13:19:42 EDT 2024
Fri Sep 13 05:41:51 EDT 2024
Fri Aug 23 04:09:32 EDT 2024
Wed Jun 26 19:26:43 EDT 2024
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue 5
Keywords Software Evolution
Empirical Study
Statistical Modelling
Annotation
Language English
License Distributed under a Creative Commons Attribution 4.0 International License: http://creativecommons.org/licenses/by/4.0
LinkModel DirectLink
MergedId FETCHMERGED-LOGICAL-c405t-bf1d5fd1831e1477cda9f0b0718f553f20ab2617976ae40495783634fbdf92993
ORCID 0000-0003-2224-2337
0000-0003-3505-3383
0000-0002-8584-3570
OpenAccessLink https://inria.hal.science/hal-02091516
PQID 2526964594
PQPubID 21418
PageCount 18
ParticipantIDs ieee_primary_8686056
swepub_primary_oai_DiVA_org_kth_296843
hal_primary_oai_HAL_hal_02091516v1
proquest_journals_2526964594
crossref_primary_10_1109_TSE_2019_2910516
PublicationCentury 2000
PublicationDate 2021-05-01
PublicationDateYYYYMMDD 2021-05-01
PublicationDate_xml – month: 05
  year: 2021
  text: 2021-05-01
  day: 01
PublicationDecade 2020
PublicationPlace New York
PublicationPlace_xml – name: New York
PublicationTitle IEEE transactions on software engineering
PublicationTitleAbbrev TSE
PublicationYear 2021
Publisher IEEE
IEEE Computer Society
Institute of Electrical and Electronics Engineers
Publisher_xml – name: IEEE
– name: IEEE Computer Society
– name: Institute of Electrical and Electronics Engineers
References ref13
ref12
ref15
ref14
ref53
gosling (ref17) 2000
ref52
ref11
ref54
(ref39) 2017
ref16
overflow (ref42) 2018
(ref36) 2015
ref51
basit (ref3) 2005
ref46
ref45
ref48
casalnuovo (ref5) 2015
ref47
ref44
gosling (ref19) 2014
ref43
john (ref26) 0
riegler (ref49) 2018
ref8
ref9
ref4
ref6
dietrich (ref10) 2017
guerra (ref21) 2016
ref35
ref34
ref37
ref31
ref30
ref33
ref32
ref2
cohen (ref7) 1975
josh (ref27) 2017
(ref41) 2018
ref24
ref23
nagappan (ref38) 2005
ref25
ref20
ref22
jungle (ref28) 2018
gosling (ref18) 2005
ref29
(ref40) 2017
torvalds (ref1) 2018
rocha (ref50) 2011
References_xml – year: 2017
  ident: ref39
  article-title: Annotation type suppresswarnings
– ident: ref12
  doi: 10.1109/32.935855
– start-page: 109
  year: 2005
  ident: ref3
  article-title: An empirical study on limits of clone unification using generics
  publication-title: Proc 17th Int Conf Softw Eng Knowl Eng
  contributor:
    fullname: basit
– ident: ref45
  doi: 10.1002/spe.2346
– ident: ref34
  doi: 10.3115/v1/P14-5010
– ident: ref51
  doi: 10.1145/1985793.1985796
– ident: ref16
  doi: 10.1145/512529.512558
– ident: ref31
  doi: 10.1145/3084226.3084259
– ident: ref52
  doi: 10.1109/ASWEC.2009.19
– ident: ref14
  doi: 10.1145/231379.231389
– ident: ref23
  doi: 10.1145/2509136.2509528
– year: 2018
  ident: ref42
  article-title: Arguments against annotations
  contributor:
    fullname: overflow
– ident: ref37
  doi: 10.1109/ICSM.2000.883028
– ident: ref24
  doi: 10.3109/00952990.2011.597280
– start-page: 755
  year: 2015
  ident: ref5
  article-title: Assert use in GitHub projects
  publication-title: Proceedings of the International Conference on Software Engineering ICSE'94
  contributor:
    fullname: casalnuovo
– year: 2018
  ident: ref28
  article-title: Annotations and its benefits in java
  contributor:
    fullname: jungle
– ident: ref35
  doi: 10.1145/3133909
– ident: ref20
  doi: 10.1145/1852786.1852801
– ident: ref2
  doi: 10.1109/ASE.2015.69
– year: 2015
  ident: ref36
  article-title: Sal annotations
– ident: ref4
  doi: 10.1145/2025113.2025119
– start-page: 9:1
  year: 2017
  ident: ref10
  article-title: Contracts in the wild: A study of Java programs
  publication-title: European Conf on Object-Oriented Programming
  contributor:
    fullname: dietrich
– ident: ref43
  doi: 10.1145/1390630.1390656
– ident: ref9
  doi: 10.1145/1985793.1985889
– start-page: 284
  year: 2005
  ident: ref38
  article-title: Use of relative code churn measures to predict system defect density
  publication-title: Proc 27th Int l Conf Software Eng
  contributor:
    fullname: nagappan
– ident: ref8
  doi: 10.1145/2884781.2884812
– ident: ref47
  doi: 10.1145/2884781.2884848
– ident: ref32
  doi: 10.1109/ICSE.2017.53
– ident: ref25
  doi: 10.1145/2384616.2384680
– ident: ref22
  doi: 10.1145/2884781.2884869
– ident: ref48
  doi: 10.1145/2635868.2635922
– year: 2005
  ident: ref18
  publication-title: Java(TM) Language Specification
  contributor:
    fullname: gosling
– year: 2014
  ident: ref19
  publication-title: The java language specification java se 8 edition
  contributor:
    fullname: gosling
– ident: ref33
  doi: 10.1109/MS.1985.230345
– ident: ref11
  doi: 10.1145/2568225.2568295
– year: 2018
  ident: ref1
  article-title: Sparse-a semantic parser for c
  contributor:
    fullname: torvalds
– year: 1975
  ident: ref7
  publication-title: Applied Multiple Regression/Correlation Analysis for the Behavioral Sciences
  contributor:
    fullname: cohen
– year: 2018
  ident: ref49
  article-title: Be a better developer
  contributor:
    fullname: riegler
– ident: ref29
  doi: 10.1007/s10664-015-9393-5
– year: 2000
  ident: ref17
  publication-title: Java Language Specifi cation Second Edition The Java Series
  contributor:
    fullname: gosling
– ident: ref30
  doi: 10.1145/582419.582441
– ident: ref44
  doi: 10.1007/s10664-012-9236-6
– ident: ref53
  doi: 10.1007/978-3-540-70592-5_28
– ident: ref54
  doi: 10.1145/2814270.2814279
– ident: ref13
  doi: 10.1145/2884781.2884882
– year: 0
  ident: ref26
  publication-title: Applied RegressionAnalysis A Research Tool
  contributor:
    fullname: john
– start-page: 426
  year: 2011
  ident: ref50
  article-title: How annotations are used in Java: An empirical study
  publication-title: Proc Int Conf Softw Eng Knowl Eng
  contributor:
    fullname: rocha
– start-page: 9:1
  year: 2016
  ident: ref21
  article-title: Design patterns for annotation-based APIs
  publication-title: Proc 11th Latin-Amer Conf Pattern Languages Program
  contributor:
    fullname: guerra
– ident: ref6
  doi: 10.1109/ICSE.2017.52
– ident: ref46
  doi: 10.1145/1985793.1985860
– year: 2018
  ident: ref41
  article-title: Annotations
– year: 2017
  ident: ref27
  article-title: Project lombok: Clean, concise java code
  contributor:
    fullname: josh
– year: 2017
  ident: ref40
  article-title: Lesson: Annotations
– ident: ref15
  doi: 10.1145/2642937.2642982
SSID ssj0005775
ssib017516339
ssib053395008
Score 2.4629133
Snippet Annotations have been formally introduced into Java since Java 5. Since then, annotations have been widely used by the Java community for different purposes,...
SourceID swepub
hal
proquest
crossref
ieee
SourceType Open Access Repository
Aggregation Database
Publisher
StartPage 969
SubjectTerms Annotation
Annotations
Computer Science
empirical study
Evolution
Java
Libraries
Open source software
Programming Languages
Runtime
Software Engineering
software evolution
Source code
statistical modelling
Title Characterizing the Usage, Evolution and Impact of Java Annotations in Practice
URI https://ieeexplore.ieee.org/document/8686056
https://www.proquest.com/docview/2526964594/abstract/
https://inria.hal.science/hal-02091516
https://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-296843
Volume 47
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV1bS-QwFD448-SLl1Wx3giLCIIde0nS9HGYHZmVVQQd8S0kTYIidEQ78-Cv96SXWV182LdSQkj7JZwvyXe-A3CshYojlZnQpMKEVDsXCpxHIXJZUWA44FT7846raz6Z0ssH9rACZ8tcGGttLT6zA_9Y3-WbWTH3R2Xnggtk37wHPRElTa7WXzlHlrHOH5MxkXdXklF-fnc79hqufJBgbGS-svmnENR79ALIurLKV5L52Ti0DjYX63DVDbPRmDwP5pUeFO__ODj-73dswFrLOsmwmSabsGLLH7DeVXQg7QLfguvR0r_5HWMaQXZIpl56dkbGi3aSElUa8rtOriQzRy7VQpFhWc6aO_038lSSmzb1ahumF-O70SRsKy6EBRK3KtQuNswZXOaxjWmWFUblLtJIQ4RjLHVJpLS3cEcOoyzFzQXzSSApddo45Fl5ugP9clbaXSAKW1LOI5cq3IIWTruMOuV47GJrVcoDOO1AkC-NsYasNyRRLhEw6QGTLWAB_ESUls28I_Zk-Ef6d8h2cyQtfBEHsOX_9LJV-5MDOOhAle3yfJOJr6vubXRoACcN0F96__V0P5QImXyuHnEQXNB07_vu92E18SqXWgJ5AP3qdW4PkaZU-qienx-jJOLl
link.rule.ids 230,315,786,790,802,891,27957,27958,55109
linkProvider IEEE
linkToHtml http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV1dT9swFL3i4wFexoAhsrFhIYSERErS2I7zWLGiAm2FRDvxZtmxLRBSOo20D_z6XeejA7QH3qLIspwcW_fYPvdcgGMtVByp1IQmESak2rlQ4DwKkcuKHMMBp9qfd4zGfDCl1_fsfgXOlrkw1tpKfGY7_rG6yzezfO6Pys4FF8i--SqsY5yPsjpb65-gI01Z65DJmMjaS8koO5_c9b2KK-t0MToyX9v8VRBaffASyKq2ylua-do6tAo3l1swagdaq0yeOvNSd_KXdx6OH_2Sz_Cp4Z2kV0-UbVixxQ5stTUdSLPEd2F8sXRwfsGoRpAfkqkXn52R_qKZpkQVhlxV6ZVk5si1WijSK4pZfav_TB4LctskX32B6WV_cjEIm5oLYY7UrQy1iw1zBhd6bGOaprlRmYs0EhHhGEtcN1Lam7gji1GW4vaC-TSQhDptHDKtLNmDtWJW2H0gCltSziOXKNyE5k67lDrleOxia1XCAzhtQZC_a2sNWW1JokwiYNIDJhvAAjhClJbNvCf2oDeU_h3y3QxpC1_EAez6P71s1fzkAA5aUGWzQJ9l11dW90Y6NICTGug3vf98_NWTCJl8Kh9wEFzQ5Ov_uz-EjcFkNJTDq_HNN9jses1LJYg8gLXyz9x-R9JS6h_VXP0LxCnmOw
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Characterizing+the+Usage%2C+Evolution+and+Impact+of+Java+Annotations+in+Practice&rft.jtitle=IEEE+transactions+on+software+engineering&rft.au=Yu%2C+Zhongxing&rft.au=Bai%2C+Chenggang&rft.au=Seinturier%2C+Lionel&rft.au=Monperrus%2C+Martin&rft.date=2021-05-01&rft.issn=0098-5589&rft.eissn=1939-3520&rft.volume=47&rft.issue=5&rft.spage=969&rft.epage=986&rft_id=info:doi/10.1109%2FTSE.2019.2910516&rft.externalDBID=n%2Fa&rft.externalDocID=10_1109_TSE_2019_2910516
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0098-5589&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0098-5589&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0098-5589&client=summon