<?xml version="1.0" encoding="utf-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hal="http://hal.archives-ouvertes.fr/" xmlns:gml="http://www.opengis.net/gml/3.3/" xmlns:gmlce="http://www.opengis.net/gml/3.3/ce" version="1.1" xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://api.archives-ouvertes.fr/documents/aofr-sword.xsd">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>HAL TEI export of hal-02182522</title>
      </titleStmt>
      <publicationStmt>
        <distributor>CCSD</distributor>
        <availability status="restricted">
          <licence target="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0 - Universal</licence>
        </availability>
        <date when="2026-05-25T01:11:51+02:00"/>
      </publicationStmt>
      <sourceDesc>
        <p part="N">HAL API Platform</p>
      </sourceDesc>
    </fileDesc>
  </teiHeader>
  <text>
    <body>
      <listBibl>
        <biblFull>
          <titleStmt>
            <title xml:lang="en">Semantic Patches for Java Program Transformation</title>
            <author role="aut">
              <persName>
                <forename type="first">Hong Jin</forename>
                <surname>Kang</surname>
              </persName>
              <idno type="halauthorid">1525800-0</idno>
              <affiliation ref="#struct-88754"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Ferdian</forename>
                <surname>Thung</surname>
              </persName>
              <idno type="halauthorid">692660-0</idno>
              <affiliation ref="#struct-88754"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Julia</forename>
                <forename type="middle">L.</forename>
                <surname>Lawall</surname>
              </persName>
              <idno type="halauthorid">142684-0</idno>
              <affiliation ref="#struct-541725"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Gilles</forename>
                <surname>Muller</surname>
              </persName>
              <idno type="halauthorid">10513-0</idno>
              <orgName ref="#struct-300009"/>
              <affiliation ref="#struct-541725"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">Lingxiao</forename>
                <surname>Jiang</surname>
              </persName>
              <idno type="halauthorid">692661-0</idno>
              <affiliation ref="#struct-88754"/>
            </author>
            <author role="aut">
              <persName>
                <forename type="first">David</forename>
                <surname>Lo</surname>
              </persName>
              <idno type="halauthorid">686466-0</idno>
              <affiliation ref="#struct-88754"/>
            </author>
            <editor role="depositor">
              <persName>
                <forename>Julia</forename>
                <surname>Lawall</surname>
              </persName>
              <email type="md5">63d502e8226951b49a28504376ed798b</email>
              <email type="domain">inria.fr</email>
            </editor>
          </titleStmt>
          <editionStmt>
            <edition n="v1" type="current">
              <date type="whenSubmitted">2019-07-12 19:06:08</date>
              <date type="whenModified">2025-07-22 08:34:02</date>
              <date type="whenReleased">2019-07-15 10:02:44</date>
              <date type="whenProduced">2019-07-15</date>
              <date type="whenEndEmbargoed">2019-07-12</date>
              <ref type="file" target="https://inria.hal.science/hal-02182522v1/document">
                <date notBefore="2019-07-12"/>
              </ref>
              <ref type="file" subtype="author" n="1" target="https://inria.hal.science/hal-02182522v1/file/ecoop19.pdf" id="file-2182522-2169814">
                <date notBefore="2019-07-12"/>
              </ref>
            </edition>
            <respStmt>
              <resp>contributor</resp>
              <name key="153545">
                <persName>
                  <forename>Julia</forename>
                  <surname>Lawall</surname>
                </persName>
                <email type="md5">63d502e8226951b49a28504376ed798b</email>
                <email type="domain">inria.fr</email>
              </name>
            </respStmt>
          </editionStmt>
          <publicationStmt>
            <distributor>CCSD</distributor>
            <idno type="halId">hal-02182522</idno>
            <idno type="halUri">https://inria.hal.science/hal-02182522</idno>
            <idno type="halBibtex">kang:hal-02182522</idno>
            <idno type="halRefHtml">&lt;i&gt;33rd European Conference on Object-Oriented Programming (ECOOP 2019)&lt;/i&gt;, Jul 2019, London, United Kingdom. pp.22:1--22:27, &lt;a target="_blank" href="https://dx.doi.org/10.4230/LIPIcs.ECOOP.2019.22"&gt;&amp;#x27E8;10.4230/LIPIcs.ECOOP.2019.22&amp;#x27E9;&lt;/a&gt;</idno>
            <idno type="halRef">33rd European Conference on Object-Oriented Programming (ECOOP 2019), Jul 2019, London, United Kingdom. pp.22:1--22:27, &amp;#x27E8;10.4230/LIPIcs.ECOOP.2019.22&amp;#x27E9;</idno>
            <availability status="restricted">
              <licence target="https://about.hal.science/hal-authorisation-v1/">HAL Authorization<ref corresp="#file-2182522-2169814"/></licence>
            </availability>
          </publicationStmt>
          <seriesStmt>
            <idno type="stamp" n="CNRS">CNRS - Centre national de la recherche scientifique</idno>
            <idno type="stamp" n="INRIA">INRIA - Institut National de Recherche en Informatique et en Automatique</idno>
            <idno type="stamp" n="INRIA-ROCQ">INRIA Paris - Rocquencourt</idno>
            <idno type="stamp" n="TESTALAIN1">TESTALAIN1</idno>
            <idno type="stamp" n="LIP6" corresp="SORBONNE-UNIVERSITE">Laboratoire d'Informatique de Paris 6</idno>
            <idno type="stamp" n="INRIA2">INRIA 2</idno>
            <idno type="stamp" n="SORBONNE-UNIVERSITE">Sorbonne Université</idno>
            <idno type="stamp" n="SORBONNE-UNIV" corresp="SORBONNE-UNIVERSITE">Sorbonne Université 01/01/2018</idno>
            <idno type="stamp" n="SU-SCIENCES" corresp="SORBONNE-UNIVERSITE">Faculté des Sciences de Sorbonne Université</idno>
            <idno type="stamp" n="TEST-HALCNRS">Collection test HAL CNRS</idno>
            <idno type="stamp" n="SU-TI">Sorbonne Université - Texte Intégral</idno>
            <idno type="stamp" n="ALLIANCE-SU"> Alliance Sorbonne Université</idno>
            <idno type="stamp" n="INRIA-SINGAPOUR">INRIA-SINGAPOUR</idno>
            <idno type="stamp" n="SUPRA_MATHS_INFO">Mathématiques + Informatique</idno>
          </seriesStmt>
          <notesStmt>
            <note type="audience" n="2">International</note>
            <note type="invited" n="0">No</note>
            <note type="popular" n="0">No</note>
            <note type="peer" n="1">Yes</note>
            <note type="proceedings" n="1">Yes</note>
          </notesStmt>
          <sourceDesc>
            <biblStruct>
              <analytic>
                <title xml:lang="en">Semantic Patches for Java Program Transformation</title>
                <author role="aut">
                  <persName>
                    <forename type="first">Hong Jin</forename>
                    <surname>Kang</surname>
                  </persName>
                  <idno type="halauthorid">1525800-0</idno>
                  <affiliation ref="#struct-88754"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Ferdian</forename>
                    <surname>Thung</surname>
                  </persName>
                  <idno type="halauthorid">692660-0</idno>
                  <affiliation ref="#struct-88754"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Julia</forename>
                    <forename type="middle">L.</forename>
                    <surname>Lawall</surname>
                  </persName>
                  <idno type="halauthorid">142684-0</idno>
                  <affiliation ref="#struct-541725"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Gilles</forename>
                    <surname>Muller</surname>
                  </persName>
                  <idno type="halauthorid">10513-0</idno>
                  <orgName ref="#struct-300009"/>
                  <affiliation ref="#struct-541725"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">Lingxiao</forename>
                    <surname>Jiang</surname>
                  </persName>
                  <idno type="halauthorid">692661-0</idno>
                  <affiliation ref="#struct-88754"/>
                </author>
                <author role="aut">
                  <persName>
                    <forename type="first">David</forename>
                    <surname>Lo</surname>
                  </persName>
                  <idno type="halauthorid">686466-0</idno>
                  <affiliation ref="#struct-88754"/>
                </author>
              </analytic>
              <monogr>
                <meeting>
                  <title>33rd European Conference on Object-Oriented Programming (ECOOP 2019)</title>
                  <date type="start">2019-07-15</date>
                  <date type="end">2019-07-19</date>
                  <settlement>London</settlement>
                  <country key="GB">United Kingdom</country>
                </meeting>
                <imprint>
                  <publisher>Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik</publisher>
                  <biblScope unit="serie">Leibniz International Proceedings in Informatics (LIPIcs)</biblScope>
                  <biblScope unit="volume">134</biblScope>
                  <biblScope unit="pp">22:1--22:27</biblScope>
                </imprint>
              </monogr>
              <idno type="doi">10.4230/LIPIcs.ECOOP.2019.22</idno>
            </biblStruct>
          </sourceDesc>
          <profileDesc>
            <langUsage>
              <language ident="en">English</language>
            </langUsage>
            <textClass>
              <keywords scheme="author">
                <term xml:lang="en">Java</term>
                <term xml:lang="en">Program transformation</term>
              </keywords>
              <classCode scheme="https://dl.acm.org/ccs" n="ACM2012.E.1"/>
              <classCode scheme="halDomain" n="info.info-se">Computer Science [cs]/Software Engineering [cs.SE]</classCode>
              <classCode scheme="halTypology" n="COMM">Conference papers</classCode>
              <classCode scheme="halOldTypology" n="COMM">Conference papers</classCode>
              <classCode scheme="halTreeTypology" n="COMM">Conference papers</classCode>
            </textClass>
            <abstract xml:lang="en">
              <p>Developing software often requires code changes that are widespread and applied to multiple locations. There are tools for Java that allow developers to specify patterns for program matching and source-to-source transformation. However, to our knowledge, none allows for transforming code based on its control-flow context. We prototype Coccinelle4J, an extension to Coccinelle, which is a program transformation tool designed for widespread changes in C code, in order to work on Java source code. We adapt Coccinelle to be able to apply scripts written in the Semantic Patch Language (SmPL), a language provided by Coccinelle, to Java source files. As a case study, we demonstrate the utility of Coccinelle4J with the task of API migration. We show 6 semantic patches to migrate from deprecated Android API methods on several open source Android projects. We describe how SmPL can be used to express several API migrations and justify several of our design decisions.</p>
            </abstract>
          </profileDesc>
        </biblFull>
      </listBibl>
    </body>
    <back>
      <listOrg type="structures">
        <org type="institution" xml:id="struct-88754" status="VALID">
          <orgName>Singapore Management University</orgName>
          <orgName type="acronym">SIS</orgName>
          <desc>
            <address>
              <country key="SG"/>
            </address>
            <ref type="url">https://www.smu.edu.sg/</ref>
          </desc>
        </org>
        <org type="researchteam" xml:id="struct-541725" status="OLD">
          <idno type="RNSR">201421141Y</idno>
          <orgName>Well Honed Infrastructure Software for Programming Environments and Runtimes</orgName>
          <orgName type="acronym">Whisper</orgName>
          <date type="start">2018-01-01</date>
          <date type="end">2020-12-31</date>
          <desc>
            <address>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/equipes/whisper</ref>
          </desc>
          <listRelation>
            <relation active="#struct-454310" type="direct"/>
            <relation active="#struct-300009" type="indirect"/>
            <relation active="#struct-541703" type="direct"/>
            <relation active="#struct-413221" type="indirect"/>
            <relation name="UMR7606" active="#struct-441569" type="indirect"/>
          </listRelation>
        </org>
        <org type="laboratory" xml:id="struct-454310" status="VALID">
          <idno type="IdRef">241614864</idno>
          <idno type="RNSR">196718247G</idno>
          <idno type="ROR">https://ror.org/05eyd5d35</idno>
          <orgName>Centre Inria de Paris</orgName>
          <date type="start">2016-03-10</date>
          <desc>
            <address>
              <addrLine>48 Rue Barrault, 75013 Paris</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/centre/paris</ref>
          </desc>
          <listRelation>
            <relation active="#struct-300009" type="direct"/>
          </listRelation>
        </org>
        <org type="institution" xml:id="struct-300009" status="VALID">
          <idno type="ROR">https://ror.org/02kvxyf05</idno>
          <orgName>Institut National de Recherche en Informatique et en Automatique</orgName>
          <orgName type="acronym">Inria</orgName>
          <desc>
            <address>
              <addrLine>Domaine de VoluceauRocquencourt - BP 10578153 Le Chesnay Cedex</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.inria.fr/en/</ref>
          </desc>
        </org>
        <org type="laboratory" xml:id="struct-541703" status="VALID">
          <idno type="IdRef">13558292X</idno>
          <idno type="RNSR">199712651U</idno>
          <idno type="ROR">https://ror.org/05krcen59</idno>
          <orgName>LIP6</orgName>
          <date type="start">2018-01-01</date>
          <desc>
            <address>
              <addrLine>4 Place JUSSIEU 75252 PARIS CEDEX 05</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.lip6.fr/</ref>
          </desc>
          <listRelation>
            <relation active="#struct-413221" type="direct"/>
            <relation name="UMR7606" active="#struct-441569" type="direct"/>
          </listRelation>
        </org>
        <org type="regroupinstitution" xml:id="struct-413221" status="VALID">
          <idno type="IdRef">221333754</idno>
          <idno type="ROR">https://ror.org/02en5vm52</idno>
          <orgName>Sorbonne Université</orgName>
          <orgName type="acronym">SU</orgName>
          <date type="start">2018-01-01</date>
          <desc>
            <address>
              <addrLine>21 rue de l’École de médecine - 75006 Paris</addrLine>
              <country key="FR"/>
            </address>
            <ref type="url">http://www.sorbonne-universite.fr/</ref>
          </desc>
        </org>
        <org type="regroupinstitution" xml:id="struct-441569" status="VALID">
          <idno type="IdRef">02636817X</idno>
          <idno type="ISNI">0000000122597504</idno>
          <idno type="ROR">https://ror.org/02feahw73</idno>
          <orgName>Centre National de la Recherche Scientifique</orgName>
          <orgName type="acronym">CNRS</orgName>
          <date type="start">1939-10-19</date>
          <desc>
            <address>
              <country key="FR"/>
            </address>
            <ref type="url">https://www.cnrs.fr/</ref>
          </desc>
        </org>
      </listOrg>
    </back>
  </text>
</TEI>