Valid HTML 4.0! Valid CSS!
%%% -*-BibTeX-*-
%%% ====================================================================
%%%  BibTeX-file{
%%%     author          = "Nelson H. F. Beebe",
%%%     version         = "1.231",
%%%     date            = "05 June 2023",
%%%     time            = "13:50:03 MDT",
%%%     filename        = "java2010.bib",
%%%     address         = "University of Utah
%%%                        Department of Mathematics, 110 LCB
%%%                        155 S 1400 E RM 233
%%%                        Salt Lake City, UT 84112-0090
%%%                        USA",
%%%     telephone       = "+1 801 581 5254",
%%%     FAX             = "+1 801 581 4148",
%%%     URL             = "http://www.math.utah.edu/~beebe",
%%%     checksum        = "28420 40091 200378 2012215",
%%%     email           = "beebe at math.utah.edu, beebe at acm.org,
%%%                        beebe at computer.org (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "bibliography; BibTeX; HotJava; HotJava;
%%%                        HotJavaBean; HTML; Java; Java3D; JavaBean;
%%%                        JavaChip; JavaCUP; JavaDev; JavaDump;
%%%                        JavaEngine; JavaLanche; JavaLex; JavaMan;
%%%                        JavaManagement; JavaOne; JavaOS; JavaPVM;
%%%                        JavaQ; JavaScript; JavaSoft; JavaSpace;
%%%                        JavaStation; JavaStations; JavaStudio;
%%%                        JavaTalk; JBuilder; JChat; JClass; Jcon;
%%%                        JDKs; JetAssist; JetForm; JFactory; JLex;
%%%                        JPython; JRes; JSafe; JScape; JScript;
%%%                        JScriptTest; JSpace; JTable; JTAPI; KJPrice;
%%%                        MacJava; MetaJava; NexusJava; PersonalJava;
%%%                        picoJava; PJAmi; PowerJ; Scala; SpecJava;
%%%                        TclJava; TowerJ; World Wide Web; WWW",
%%%     license         = "public domain",
%%%     supported       = "yes",
%%%     docstring       = "This bibliography records books and other
%%%                        publications about the Java programming
%%%                        language, and related software, for the years
%%%                        2010--2019.  The companion bibliography,
%%%                        java.bib, covers the years 1995--1999, and
%%%                        java2000.bib covers 2000--2009.
%%%
%%%                        At version 1.231, year coverage looked
%%%                        like this:
%%%
%%%                             2001 (   1)    2008 (   0)    2015 (  87)
%%%                             2002 (   0)    2009 (   0)    2016 (  78)
%%%                             2003 (   0)    2010 ( 107)    2017 ( 106)
%%%                             2004 (   0)    2011 (  78)    2018 (  81)
%%%                             2005 (   0)    2012 ( 157)    2019 (  62)
%%%                             2006 (   0)    2013 ( 107)
%%%                             2007 (   0)    2014 ( 120)
%%%
%%%                             Article:        921
%%%                             Book:            50
%%%                             InCollection:     1
%%%                             InProceedings:    6
%%%                             MastersThesis:    1
%%%                             Misc:             2
%%%                             Proceedings:      3
%%%
%%%                             Total entries:  984
%%%
%%%                        Further information on Java development and
%%%                        the HotJava WorldWideWeb browser can be
%%%                        found at the URL http://java.sun.com/.
%%%                        Netscape versions 2.03-beta or later
%%%                        support Java as well.
%%%
%%%                        A Java applet index and repository is
%%%                        available at http://www.gamelan.com/.
%%%
%%%                        Visix has extended their
%%%                        platform-independent window systems support
%%%                        to include Java; details are at
%%%                        http://www.visix.com/
%%%
%%%                        A tutorial on Java is available at
%%%                        http://java.sun.com/tutorial, a white paper
%%%                        on the Java language is at
%%%                        http://java.sun.com/1.0alpha3/doc/overview/
%%%                        java/index.html, and a white paper on the
%%%                        HotJava browser is at http://java.sun.com/
%%%                        1.0alpha3/doc/overview/hotjava/index.html.
%%%
%%%                        A status report on Java security problems
%%%                        is available at http://java.sun.com/sfaq;
%%%                        a good discussion of these issues can be
%%%                        found in the reference Hamilton:1996:JSN
%%%                        below.
%%%
%%%                        John December maintains a Java bibliography
%%%                        that includes press releases and online
%%%                        references at http://www.december.com/john//
%%%                        works/java/bib.html; a snapshot of that
%%%                        collection was incorporated in this
%%%                        bibliography on 17-Dec-1995.
%%%
%%%                        The Web site for Java World magazine is at
%%%                        http://www.javaworld.com/; many entries in
%%%                        this bibliography were found in resources
%%%                        there.
%%%
%%%                        An interesting press release detailing
%%%                        plans about Java-on-a-chip is available
%%%                        at http://www.sun.com:80/sparc/newsreleases/nr95-042.html.
%%%
%%%                        LINPACK benchmark results for Java on a
%%%                        number of different machines have recently
%%%                        been offered at
%%%                        http://www.netlib.org/benchmark/linpackjava/.
%%%                        If you use a Java-aware browser to visit
%%%                        that URL, you can run the benchmark on your
%%%                        own machine, and report the results back to
%%%                        the LINPACK developers.
%%%
%%%                        Other Java sites on the Internet include
%%%                        (see entry DeRoest:1996:PHP below):
%%%
%%%                        Java FAQS:
%%%                            http://www-net.com/java/faq
%%%                            http://lightyear.ncsa.uiuc.edu/~srp/java/javabooks.html
%%%                            http://www.digitalfocus.com/faq/
%%%                            http://www.afu.com/javafaq.html
%%%
%%%                        JavaScript handbook:
%%%                            http://home.netscape.com/eng/mozilla/2.0/handbook/javascript/index.html
%%%
%%%                        Java tutorials:
%%%                            http://www.neca.com/~vmis/java.html
%%%                            http://sunsite.unc.edu/javafaq/javafaq.html
%%%                            http://www.phrantic.com/scoop/onjava.html
%%%
%%%                        JavaScript tutorials:
%%%                            http://www.freqgrafx.com/411/tutorial.html
%%%                            http://ourworld.compuserve.com/homepages/voodoo/script.html
%%%
%%%                        Java and porting projects:
%%%                            http://www.javasoft.com/
%%%                            ftp://ftp4.netscape.com/pub/MacJava
%%%                            http://java.blackdown.org/java-linux.html
%%%                            http://www.osf.org/mall/web/javaport.htm
%%%                            http://www.lls.se/~matjo/PJAmi/PJAmi.html
%%%                            http://ncc.hursley.ibm.com/javainfo/ (IBM's
%%%                            official Java home page)
%%%                            http://www.hp.com/go/JAVA (Hewlett--Packard'
%%%                            official Java home page)
%%%
%%%                        Java books in languages other than English:
%%%                            http://lightyear.ncsa.uiuc.edu/~srp/java/japanese.html
%%%                            http://wwwiz.com/books/european.html
%%%
%%%                        Java books at Amazon bookstore (warning:
%%%                        also contains many entries for books about
%%%                        the island of Java in Indonesia):
%%%                            http://www.wholesaleproducts.com/computer-javascript.html
%%%                            http://www.wholesaleproducts.com/computer-java.html
%%%
%%%                        This bibliography was initially built from
%%%                        searches in the OCLC Content1st database.
%%%                        Additions were then made from all of the
%%%                        bibliographies in the TeX User Group
%%%                        collection, from bibliographies in the
%%%                        author's personal files, from the IEEE
%%%                        INSPEC CD-ROM database (1995--Sept 1996),
%%%                        from the Compendex database, from the
%%%                        UnCover database, and from the OCLC
%%%                        BooksInPrint database.
%%%
%%%                        Numerous errors in the sources noted above
%%%                        have been corrected.  Spelling has been
%%%                        verified with the UNIX spell and GNU ispell
%%%                        programs using the exception dictionary
%%%                        stored in the companion file with extension
%%%                        .sok.
%%%
%%%                        BibTeX citation tags are uniformly chosen as
%%%                        name:year:abbrev, where name is the family
%%%                        name of the first author or editor, year is a
%%%                        4-digit number, and abbrev is a 3-letter
%%%                        condensation of important title
%%%                        words. Citation tags were automatically
%%%                        generated by software developed for the
%%%                        BibNet Project.
%%%
%%%                        In this bibliography, entries are sorted
%%%                        first by ascending year, and within each
%%%                        year, alphabetically by author or editor, and
%%%                        then, if necessary, by the 3-letter
%%%                        abbreviation at the end of the BibTeX
%%%                        citation tag, using the bibsort -byyear
%%%                        utility.  Year order has been chosen to make
%%%                        it easier to identify the most recent work.
%%%
%%%                        The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%  }
%%% ====================================================================
@Preamble{"\input bibnames.sty " #
          "\input path.sty " #
          "\ifx \undefined \booktitle \def \booktitle #1{{{\em #1}}}    \fi" #
          "\ifx \undefined \circled   \def \circled   #1{(#1)}          \fi" #
          "\ifx \undefined \Dbar       \def \Dbar {\leavevmode\raise0.2ex\hbox{--}\kern-0.5emD} \fi" #
          "\ifx \undefined \k         \let \k = \c                      \fi" #
          "\ifx \undefined \pkg       \def \pkg       #1{{{\tt #1}}}    \fi" #
          "\ifx \undefined \reg       \def \reg         {\circled{R}}   \fi" #
          "\ifx \undefined \TM        \def \TM          {${}^{\sc TM}$} \fi" #
          "\hyphenation{
                        Aero-space
                        Gur-e-wich
                        Horst-mann
                        ROAST-ER
                        Rich-ard
                        Sep-tem-ber
                        data-bases
                        roast-er
          }"
}

%%% ====================================================================
%%% Acknowledgement abbreviations:
@String{ack-nhfb = "Nelson H. F. Beebe,
                    University of Utah,
                    Department of Mathematics, 110 LCB,
                    155 S 1400 E RM 233,
                    Salt Lake City, UT 84112-0090, USA,
                    Tel: +1 801 581 5254,
                    FAX: +1 801 581 4148,
                    e-mail: \path|beebe@math.utah.edu|,
                            \path|beebe@acm.org|,
                            \path|beebe@computer.org| (Internet),
                    URL: \path|http://www.math.utah.edu/~beebe/|"}

%%% ====================================================================
%%% Institution abbreviations:
@String{inst-CSC                = "Center for Scientific Computing, Department
                                  of Mathematics, University of Utah"}

@String{inst-CSC:adr            = "Salt Lake City, UT 84112, USA"}

%%% ====================================================================
%%% Journal abbreviations:
@String{j-ACM-COMM-COMP-ALGEBRA = "ACM Communications in Computer Algebra"}

@String{j-ADA-USER-J            = "Ada User Journal"}

@String{j-ADV-ENG-SOFTWARE      = "Advances in Engineering Software"}

@String{j-ADV-EXP-MED-BIO       = "Advances in experimental medicine and
                                  biology"}

@String{j-ADV-IMAGING           = "Advanced Imaging"}

@String{j-AMER-STAT             = "The American Statistician"}

@String{j-APL-QUOTE-QUAD        = "APL Quote Quad"}

@String{j-APPL-MATH-COMP        = "Applied Mathematics and Computation"}

@String{j-BIOINFORMATICS        = "Bioinformatics"}

@String{j-BUSINESS-WEEK         = "Business week"}

@String{j-CACM                  = "Communications of the ACM"}

@String{j-CCCUJ                 = "C/C++ Users Journal"}

@String{j-CCPE                  = "Concurrency and Computation: Prac\-tice and
                                  Experience"}

@String{j-CHEMO-INTELL-LAB      = "Chemometrics and Intelligent Laboratory
                                  Systems"}

@String{j-COMP-ARCH-NEWS        = "ACM SIGARCH Computer Architecture News"}

@String{j-COMP-CIVIL-ENG        = "Journal of Computing in Civil Engineering"}

@String{j-COMP-EDU-J            = "Computers in education journal"}

@String{j-COMP-GEOSCI           = "Computers and Geosciences"}

@String{j-COMP-J                = "The Computer Journal"}

@String{j-COMP-LANGS            = "Computer Languages"}

@String{j-COMP-LANGS-SYS-STRUCT = "Computer Languages, Systems and Structures"}

@String{j-COMP-MATH-APPL        = "Computers and Mathematics with
                                  Applications"}

@String{j-COMP-NET-AMSTERDAM    = "Computer Networks (Amsterdam, Netherlands:
                                  1999)"}

@String{j-COMP-PHYS-COMM        = "Computer Physics Communications"}

@String{j-COMP-STANDARDS-INTERFACES = "Computer Standards and Interfaces"}

@String{j-COMP-STAT             = "Computational Statistics"}

@String{j-COMP-STRUCTURES       = "Computers and Structures"}

@String{j-COMP-SURV             = "ACM Computing Surveys"}

@String{j-COMPUT-APPL-ENG-EDUC  = "Computer Applications in Engineering
                                  Education"}

@String{j-COMPUT-MATH-APPL      = "Computers and Mathematics with Applications"}

@String{j-COMPUT-BULL           = "The Computer Bulletin"}

@String{j-COMPUT-HUM-BEHAV      = "Computers in Human Behavior"}

@String{j-COMPUT-METH-PROG-BIOMED = "Computer Methods and Programs in
                                  Biomedicine"}

@String{j-COMPUT-SCI-ENG        = "Computing in Science and Engineering"}

@String{j-COMPUT-SECUR          = "Computers and Security"}

@String{j-COMPUTER              = "Computer"}

@String{j-COMPUTERS-AND-GRAPHICS = "Computers and Graphics"}

@String{j-COMPUTING             = "Computing"}

@String{j-CONTROL-ENG           = "Control Engineering"}

@String{j-CPE                   = "Concurrency: Prac\-tice and Experience"}

@String{j-DDJ                   = "Dr. Dobb's Journal of Software Tools"}

@String{j-EDN                   = "EDN"}

@String{j-ELECT-NOTES-THEOR-COMP-SCI = "Electronic Notes in Theoretical
                                  Computer Science"}

@String{j-ELECTRONIC-DESIGN     = "Electronic Design"}

@String{j-ELECTRONIC-ENG-TIMES  = "Electronic Engineering Times"}

@String{j-ELECTRONIC-LIBRARY    = "Electronic Library"}

@String{j-ELECTRONIK            = "Elektronik"}

@String{j-ELETTRONICA-OGGI      = "Elettronica Oggi"}

@String{j-EMBED-SYS-PROG        = "Embedded Systems Programming"}

@String{j-EMBEDDED-LINUX-J      = "Embedded Linux Journal"}

@String{j-EMPIR-SOFTWARE-ENG    = "Empirical Software Engineering"}

@String{j-FORM-METHODS-SYST-DES = "Formal Methods in System Design"}

@String{j-FORM-ASP-COMPUT       = "Formal Aspects of Computing"}

@String{j-FRONTIERS-EDU-CONF    = "Frontiers in Education Conference"}

@String{j-FUND-INFO             = "Fundamenta Informaticae"}

@String{j-FUT-GEN-COMP-SYS      = "Future Generation Computer Systems"}

@String{j-FUTURE-INTERNET       = "Future Internet"}

@String{j-HIGHER-ORDER-SYMB-COMPUT = "Higher-Order and Symbolic Computation"}

@String{j-IBM-JRD               = "IBM Journal of Research and Development"}

@String{j-IBM-SYS-J             = "IBM Systems Journal"}

@String{j-IEE-PROC-COMPUT-DIGIT-TECH = "IEE Proceedings. Computers and Digital
                                  Techniques"}

@String{j-IEEE-CGA              = "IEEE Computer Graphics and Applications"}

@String{j-IEEE-COMPUT-ARCHIT-LETT = "IEEE Computer Architecture Letters"}

@String{j-IEEE-CONCURR          = "IEEE Concurrency"}

@String{j-IEEE-DISTRIB-SYST-ONLINE = "IEEE Distributed Systems Online"}

@String{j-IEEE-MICRO            = "IEEE Micro"}

@String{j-IEEE-MULTIMEDIA       = "IEEE MultiMedia"}

@String{j-IEEE-SEC-PRIV         = "IEEE Security \& Privacy"}

@String{j-IEEE-SIGNAL-PROCESS-MAG = "IEEE signal processing magazine"}

@String{j-IEEE-SOFTWARE         = "IEEE Software"}

@String{j-IEEE-SPECTRUM         = "IEEE Spectrum"}

@String{j-IEEE-TRANS-BIG-DATA   = "IEEE Transactions on Big Data"}

@String{j-IEEE-TRANS-CONSUMER-ELECTRONICS = "IEEE Transactions on Consumer
                                  Electronics"}

@String{j-IEEE-TRANS-COMPUT     = "IEEE Transactions on Computers"}

@String{j-IEEE-TRANS-EDUC       = "IEEE transactions on education"}

@String{j-IEEE-TRANS-PAR-DIST-SYS = "IEEE Transactions on Parallel and
                                  Distributed Systems"}

@String{j-IEEE-TRANS-SOFTW-ENG  = "IEEE Transactions on Software Engineering"}

@String{j-IETE-TECH-REV         = "IETE Technical Review"}

@String{j-IJHPCA                = "The International Journal of High Performance
                                  Computing Applications"}

@String{j-INF-CONTROL           = "Information and Control"}

@String{j-INFO-PROC-LETT        = "Information Processing Letters"}

@String{j-INFO-RETRIEVAL-LIB-AUTO = "Information Retrieval and Library
                                  Automation"}

@String{j-INFO-SOFTWARE-TECH    = "Information and Software Technology"}

@String{j-INFORMATION-WEEK      = "Information Week"}

@String{j-INFOWORLD             = "InfoWorld"}

@String{j-INT-J-COMPUT-SYST-SCI-ENG = "International Journal of Computer Systems
                                  Science and Engineering"}

@String{j-INT-J-ENG-EDUC        = "International Journal of Engineering
                                  Education"}

@String{j-INT-J-INFO-SEC        = "International Journal of Information
                                  Security"}

@String{j-INT-J-PARALLEL-PROG   = "International Journal of Parallel
                                  Programming"}

@String{j-INT-J-ROBOTICS-AUTOMATION = "International Journal of Robotics and
                                  Automation"}

@String{j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER = "International Journal on
                                  Software Tools for Technology Transfer
                                  (STTT)"}

@String{j-INT-J-SYST-SCI        = "International Journal of Systems Science"}

@String{j-INTEL-TECH-J          = "Intel Technology Journal"}

@String{j-J-ACM                 = "Journal of the ACM"}

@String{j-J-AUTOM-REASON        = "Journal of Automated Reasoning"}

@String{j-J-COMP-INFO-SYS       = "The Journal of Computer Information
                                  Systems"}

@String{j-J-COMP-SCI-TECH       = "Journal of Computer Science and Technology"}

@String{j-J-COMP-SECUR          = "Journal of Computer Security"}

@String{j-J-COMP-SYS-SCI        = "Journal of Computer and System Sciences"}

@String{j-J-COMPUT-APPL-MATH      = "Journal of Computational and Applied
                                  Mathematics"}

@String{j-J-COMPUT-BIOL         = "Journal of Computational Biology"}

@String{j-J-COMPUT-GRAPH-STAT   = "Journal of Computational and Graphical
                                  Statistics"}

@String{j-COMPUT-SECUR          = "Computers \& Security"}

@String{j-J-CRYPTO-ENG          = "Journal of Cryptographic Engineering"}

@String{j-J-DIGITAL-IMAGING     = "Journal of Digital Imaging"}

@String{j-J-FUNCT-PROGRAM       = "Journal of Functional Programming"}

@String{j-J-GEOPHYS-RES         = "Journal of Geophysical Research"}

@String{j-J-GRID-COMP           = "Journal of Grid Computing"}

@String{j-J-INFO-SEC-APPL =     "Journal of Information Security and
                                 Applications (JISA)"}

@String{j-J-INFO-SCI-ENG        = "Journal of Information Science and
                                  Engineering"}

@String{j-J-LOGIC-ALG-PROG      = "Journal of Logic and Algebraic Programming"}

@String{j-J-NETW-COMPUT-APPL    = "Journal of Network and Computer
                                  Applications"}

@String{j-J-OPEN-RES-SOFT       = "Journal of Open Research Software"}

@String{j-J-OPEN-SOURCE-SOFT    = "Journal of Open Source Software"}

@String{j-J-OPER-RES-SOC        = "OR: the journal of the Operational Research
                                  Society"}

@String{j-J-PAR-DIST-COMP       = "Journal of Parallel and Distributed
                                  Computing"}

@String{j-J-SOFTW-EVOL-PROC     = "Journal of Software: Evolution and Process"}

@String{j-J-SOFTW-MAINT-EVOL    = "Journal of Software Maintenance and
                                  Evolution: Research and Practice"}

@String{j-J-STAT-SOFT           = "Journal of Statistical Software"}

@String{j-J-SUPERCOMPUTING      = "The Journal of Supercomputing"}

@String{j-J-SYST-SOFTW          = "The Journal of systems and software"}

@String{j-J-UCS                 = "J.UCS: Journal of Universal Computer
                                  Science"}

@String{j-JERIC                 = "ACM Journal on Educational Resources in
                                  Computing (JERIC)"}

@String{j-LECT-NOTES-COMP-SCI   = "Lecture Notes in Computer Science"}

@String{j-LINUX-J               = "Linux Journal"}

@String{j-LIT-LING-COMP         = "Literary and Linguistic Computing"}

@String{j-LOGIN                 = ";login: the USENIX Association newsletter"}

@String{j-LOPLAS                = "ACM Letters on Programming Languages and
                                  Systems"}

@String{j-MAGMA                 = "Magma"}

@String{j-MARKUP-LANG           = "Markup languages: theory \& practice"}

@String{j-MATH-COMP-EDU         = "Mathematics and computer education"}

@String{j-MICROPROC-MICROSYS    = "Microprocessors and Microsystems"}

@String{j-MICROPROC-REP         = "Microprocessor report"}

@String{j-MINI-MICRO-SYSTEMS    = "Mini-Micro Systems"}

@String{j-MOL-SIM               = "Molecular simulation"}

@String{j-MULTIMEDIA-SYSTEMS    = "Multimedia Systems"}

@String{j-MULTIMEDIA-TOOLS-APPLIC = "Multimedia Tools and Applications"}

@String{j-NETWORK-COMPUTING     = "Network Computing"}

@String{j-NETWORK-SECURITY      = "Network Security"}

@String{j-NEUROIMAGE            = "NeuroImage"}

@String{j-NORDIC-J-COMPUT       = "Nordic Journal of Computing"}

@String{j-OPER-SYS-REV          = "Operating Systems Review"}

@String{j-PACMHCI               = "Proceedings of the ACM on Human-Computer
                                   Interaction (PACMHCI)"}

@String{j-PACMPL                = "Proceedings of the ACM on Programming
                                   Languages (PACMPL)"}

@String{j-PARALLEL-ALGORITHMS-APPL = "Parallel Algorithms and Applications"}

@String{j-PARALLEL-COMPUTING    = "Parallel Computing"}

@String{j-PARALLEL-DIST-COMP-PRACT = "Parallel and Distributed Computing
                                  Practices"}

@String{j-PARALLEL-PROCESS-LETT = "Parallel Processing Letters"}

@String{j-PC-MAGAZINE           = "PC Magazine"}

@String{j-PERF-EVAL             = "Performance evaluation"}

@String{j-PERS-COMPUT-WORLD     = "Personal computer world"}

@String{j-PRIMUS                = "PRIMUS (Problems Resources and Issues in
                                  Mathematics Undergraduate Studies)"}

@String{j-PROC-AM-CONTROL-CONF  = "Proceedings of the American Control
                                  Conference"}

@String{j-PROC-IEEE             = "Proceedings of the IEEE"}

@String{j-PROC-SPIE             = "Proceedings of the SPIE --- The
                                  International Society for Optical
                                  Engineering"}

@String{j-PROC-VLDB-ENDOWMENT   = "Proceedings of the VLDB Endowment"}

@String{j-PROG-COMP-SOFT        = "Programming and Computer Software;
                                  translation of Programmirovaniye (Moscow,
                                  USSR) Plenum"}

@String{j-QUEUE                 = "ACM Queue: Tomorrow's Computing Today"}

@String{j-REAL-TIME-SYST        = "Real-Time Systems"}

@String{j-REV-ESP-ELECT         = "Revista espa{\~n}ola de electronica"}

@String{j-SCI-COMPUT-PROGRAM    = "Science of Computer Programming"}

@String{j-SCI-PROG              = "Scientific Programming"}

@String{j-SCPE                  = "Scalable Computing: Practice and Experience"}

@String{j-SIGADA-LETTERS        = "ACM SIGADA Ada Letters"}

@String{j-SIGAPP                = "ACM SIGAPP Applied Computing Review"}

@String{j-SIGCSE                = "SIGCSE Bulletin (ACM Special Interest Group
                                  on Computer Science Education)"}

@String{j-SIGMETRICS            = "ACM SIGMETRICS Perform. Eval. Rev."}

@String{j-SIGMOD                = "SIGMOD Record (ACM Special Interest Group
                                  on Management of Data)"}

@String{j-SIGPLAN               = "ACM SIG{\-}PLAN Notices"}

@String{j-SIGSAM                = "SIGSAM Bulletin (ACM Special Interest Group
                                  on Symbolic and Algebraic Manipulation)"}

@String{j-SIGSOFT               = "ACM SIGSOFT Software Engineering Notes"}

@String{j-SIM-SERIES            = "Simulation series"}

@String{j-SIMULATION            = "Simulation"}

@String{j-SOFTWAREX             = "SoftwareX"}

@String{j-SPE                   = "Soft\-ware\emdash Prac\-tice and
                                  Experience"}

@String{j-SYS-ADMIN             = "SysAdmin"}

@String{j-SYS-COMP-JAPAN        = "Systems and computers in Japan"}

@String{j-SYST-CONTROL-INFO     = "Systems, Control and Information =
                                  Shisutemu Seigyo Joho Gakkai shi"}

@String{j-TAAS                  = "ACM Transactions on Autonomous and
                                  Adaptive Systems (TAAS)"}

@String{j-TACO                  = "ACM Transactions on Architecture and Code
                                  Optimization"}

@String{j-TALG                  = "ACM Transactions on Algorithms"}

@String{j-TAP                   = "ACM Transactions on Applied Perception"}

@String{j-TCBB                  = "IEEE/ACM Transactions on Computational
                                  Biology and Bioinformatics"}

@String{j-TECHNIQUE-SCI-INFORMATIQUES = "Technique et science informatiques :
                                  TSI"}

@String{j-TECS                  = "ACM Transactions on Embedded Computing
                                  Systems"}

@String{j-THEOR-COMP-SCI        = "Theoretical Computer Science"}

@String{j-TISSEC                = "ACM Transactions on Information and System
                                  Security"}

@String{j-TIST                 = "ACM Transactions on Intelligent Systems and
                                  Technology (TIST)"}

@String{j-TMIS                  = "ACM Transactions on Management Information
                                  Systems (TMIS)"}

@String{j-TOCE                  = "ACM Transactions on Computing Education"}

@String{j-TOCHI                 = "ACM Transactions on Computer-Human
                                  Interaction"}

@String{j-TOCL                  = "ACM Transactions on Computational Logic"}

@String{j-TOCS                  = "ACM Transactions on Computer Systems"}

@String{j-TODAES                = "ACM Transactions on Design Automation of
                                   Electronic Systems"}

@String{j-TOIT                  = "ACM Transactions on Internet Technology (TOIT)"}

@String{j-TOMACS                = "ACM Transactions on Modeling and
                                  Computer Simulation"}

@String{j-TOMPECS               = "ACM Transactions on Modeling and Performance
                                  Evaluation of Computing Systems (TOMPECS)"}

@String{j-TOMS                  = "ACM Transactions on Mathematical Software"}

@String{j-TOPC                  = "ACM Transactions on Parallel Computing
                                  (TOPC)"}

@String{j-TOPLAS                = "ACM Transactions on Programming Languages
                                  and Systems"}

@String{j-TOPS                  = "ACM Transactions on Privacy and Security
                                  (TOPS)"}

@String{j-TOS                   = "ACM Transactions on Storage"}

@String{j-TOSEM                 = "ACM Transactions on Software Engineering
                                  and Methodology"}

@String{j-TWEB                  = "ACM Transactions on the Web (TWEB)"}

@String{j-VLDB-J                = "VLDB Journal: Very Large Data Bases"}

@String{j-WIRTSCHAFTSINFORMATIK = "Wirtschaftsinformatik"}

%%% ====================================================================
%%% Publishers and their addresses:
@String{pub-ACM                 = "ACM Press"}
@String{pub-ACM:adr             = "New York, NY 10036, USA"}

@String{pub-AIP                 = "American Institute of Physics"}
@String{pub-AIP:adr             = "Woodbury, NY, USA"}

@String{pub-APRESS              = "Apress"}
@String{pub-APRESS:adr          = "Berkeley, CA, USA"}

@String{pub-ARTECH              = "Artech House Inc."}
@String{pub-ARTECH:adr          = "Norwood, MA, USA"}

@String{pub-AW                  = "Ad{\-d}i{\-s}on-Wes{\-l}ey"}
@String{pub-AW:adr              = "Reading, MA, USA"}

@String{pub-AW-LONGMAN          = "Ad{\-d}i{\-s}on-Wes{\-l}ey Longman"}
@String{pub-AW-LONGMAN:adr      = "Reading, MA, USA"}

@String{pub-BIRKHAUSER          = "Birkh{\"a}user Verlag"}
@String{pub-BIRKHAUSER:adr      = "Basel, Switzerland"}

@String{pub-BROOKS-COLE         = "Brooks\slash Cole"}
@String{pub-BROOKS-COLE:adr     = "Pacific Grove, CA, USA"}

@String{pub-CAMBRIDGE           = "Cambridge University Press"}
@String{pub-CAMBRIDGE:adr       = "Cambridge, UK"}

@String{pub-CHAPMAN-HALL-CRC    = "Chapman and Hall/CRC"}
@String{pub-CHAPMAN-HALL-CRC:adr = "Boca Raton, FL, USA"}

@String{pub-CHARLES-RIVER-MEDIA = "Charles River Media, Inc."}
@String{pub-CHARLES-RIVER-MEDIA:adr = "403 VFW Drive, PO Box 417, Rockland, MA
                                  02370, USA"}

@String{pub-CORIOLIS            = "Coriolis Group Books"}
@String{pub-CORIOLIS:adr        = "Scottsdale, AZ, USA"}

@String{pub-COURSE-TECHNOLOGY   = "Course Technology"}
@String{pub-COURSE-TECHNOLOGY:adr = "Cambridge, MA, USA"}

@String{pub-CRC                 = "CRC Press"}
@String{pub-CRC:adr             = "2000 N.W. Corporate Blvd., Boca Raton, FL
                                  33431-9868, USA"}

@String{pub-HUNGRY-MINDS        = "Hungry Minds"}
@String{pub-HUNGRY-MINDS:adr    = "909 Third Avenue, New York, NY 10022, USA"}

@String{pub-HUNGRY-MINDS-IN     = "Hungry Minds"}
@String{pub-HUNGRY-MINDS-IN:adr = "Indianapolis, IN, USA"}

@String{pub-IBM-PRESS           = "IBM Press"}
@String{pub-IBM-PRESS:adr       = ""}

@String{pub-IDG                 = "IDG Books"}
@String{pub-IDG:adr             = "San Mateo, CA, USA"}

@String{pub-IDG-WORLDWIDE       = "I D G Books Worldwide"}
@String{pub-IDG-WORLDWIDE:adr   = "Indianapolis, IN, USA"}

@String{pub-IEEE                = "IEEE Computer Society Press"}
@String{pub-IEEE:adr            = "1109 Spring Street, Suite 300, Silver
                                  Spring, MD 20910, USA"}

@String{pub-IOS                 = "IOS Press"}
@String{pub-IOS:adr             = "Amsterdam, The Netherlands"}

@String{pub-IRWIN-MCGRAW-HILL   = "Irwin\slash McGraw Hill"}
@String{pub-IRWIN-MCGRAW-HILL:adr = "Boston, MA, USA"}

@String{pub-ISO                 = "International Organization for Standardization"}
@String{pub-ISO:adr             = "Geneva, Switzerland"}

@String{pub-ITP                 = "International Thomson Publishing"}
@String{pub-ITP:adr             = "London, New York, Boston, Madrid,
                                  \\ldots{}"}

@String{pub-JONES-BARTLETT      = "Jones and Bartlett"}
@String{pub-JONES-BARTLETT:adr  = "Boston, MA, USA"}

@String{pub-KLUWER              = "Kluwer Academic Publishers Group"}
@String{pub-KLUWER:adr          = "Norwell, MA, USA, and Dordrecht, The
                                  Netherlands"}

@String{pub-MANNING             = "Manning Publications"}
@String{pub-MANNING:adr         = "Greenwich, CT, USA"}

@String{pub-MCGRAW-HILL         = "Mc{\-}Graw-Hill"}
@String{pub-MCGRAW-HILL:adr     = "New York, NY, USA"}

@String{pub-MIT                 = "MIT Press"}
@String{pub-MIT:adr             = "Cambridge, MA, USA"}

@String{pub-MORGAN-KAUFMANN     = "Morgan Kaufmann Publishers"}
@String{pub-MORGAN-KAUFMANN:adr = "Los Altos, CA 94022, USA"}

@String{pub-MT                  = "M\&T Books"}
@String{pub-MT:adr              = "M\&T Publishing, Inc., 501 Galveston Drive,
                                  Redwood City, CA 94063, USA"}

@String{pub-NASA                = "National Aeronautics and Space
                                  Administration"}
@String{pub-NASA:adr            = "Washington, DC, USA"}

@String{pub-NEW-RIDERS          = "New Riders Publishing"}
@String{pub-NEW-RIDERS:adr      = "Carmel, IN, USA"}

@String{pub-NIST                = "National Institute for Standards and
                                  Technology"}
@String{pub-NIST:adr            = "Gaithersburg, MD, USA"}

@String{pub-NO-STARCH           = "No Starch Press"}
@String{pub-NO-STARCH:adr       = "San Francisco, CA, USA"}

@String{pub-NORTON              = "W. W. Norton \& Co."}
@String{pub-NORTON:adr          = "New York, NY, USA"}

@String{pub-ORA                 = "O'Reilly \& {Associates, Inc.}"}
@String{pub-ORA:adr             = "981 Chestnut Street, Newton, MA 02164, USA"}

@String{pub-ORA-MEDIA           = "O'Reilly Media, Inc."}
@String{pub-ORA-MEDIA:adr       = "1005 Gravenstein Highway North, Sebastopol,
                                  CA 95472, USA"}

@String{pub-OSBORNE             = "Osborne/McGraw-Hill"}
@String{pub-OSBORNE:adr         = "Berkeley, CA, USA"}

@String{pub-PACKT               = "Packt Publishing"}
@String{pub-PACKT:adr           = "Birmingham"}

@String{pub-PEACHPIT            = "Peachpit Press, Inc."}
@String{pub-PEACHPIT:adr        = "1085 Keith Avenue, Berkeley, CA 94708, USA"}

@String{pub-PEARSON-EDUCATION   = "Pearson Education"}
@String{pub-PEARSON-EDUCATION:adr = "Upper Saddle River, NJ, USA"}

@String{pub-PH                  = "Pren{\-}tice-Hall"}
@String{pub-PH:adr              = "Englewood Cliffs, NJ 07632, USA"}

@String{pub-PHPTR               = "P T R Pren{\-}tice-Hall"}
@String{pub-PHPTR:adr           = "Englewood Cliffs, NJ 07632, USA"}

@String{pub-PRAGMATIC-BOOKSHELF = "Pragmatic Bookshelf"}
@String{pub-PRAGMATIC-BOOKSHELF:adr = "Raleigh, NC, USA"}

@String{pub-PRINCETON           = "Princeton University Press"}
@String{pub-PRINCETON:adr       = "Princeton, NJ, USA"}

@String{pub-QUE                 = "Que Corporation"}
@String{pub-QUE:adr             = "Indianapolis, IN, USA"}

@String{pub-R-D-BOOKS           = "R\&D Books"}
@String{pub-R-D-BOOKS:adr       = "Lawrence, KS, USA; Berkeley, CA, USA"}

@String{pub-SAE                 = "Society of Automotive Engineers"}
@String{pub-SAE:adr             = "Warrendale, PA, USA"}

@String{pub-SAMS                = "Howard W. Sams"}
@String{pub-SAMS:adr            = "Indianapolis, IN 46268, USA"}

@String{pub-SCOTT-JONES         = "Scott\slash Jones"}
@String{pub-SCOTT-JONES:adr     = "El Granada, CA, USA"}

@String{pub-SIAM                = "SIAM Press"}
@String{pub-SIAM:adr            = "Philadelphia, PA, USA"}

@String{pub-SITEPOINT           = "SitePoint Pty. Ltd."}
@String{pub-SITEPOINT:adr       = "Collingwood, VIC, Australia"}

@String{pub-SPIE                = "SPIE Optical Engineering Press"}
@String{pub-SPIE:adr            = "Bellingham, WA, USA"}

@String{pub-SUN-MICROSYSTEMS-PRESS = "Sun Microsystems Press"}
@String{pub-SUN-MICROSYSTEMS-PRESS:adr = "Palo Alto, CA, USA"}

@String{pub-SUNSOFT             = "SunSoft Press"}
@String{pub-SUNSOFT:adr         = "2550 Garcia Avenue, Mountain View, CA
                                  94043-1100, USA"}

@String{pub-SV                  = "Spring{\-}er-Ver{\-}lag"}
@String{pub-SV:adr              = "Berlin, Germany~/ Heidelberg, Germany~/
                                  London, UK~/ etc."}

@String{pub-SYBEX               = "Sybex, Inc."}
@String{pub-SYBEX:adr           = "2021 Challenger Driver, Suite 100, Alameda,
                                  CA 94501, USA"}

@String{pub-USENIX              = "USENIX Association"}
@String{pub-USENIX:adr          = "Berkeley, CA, USA"}

@String{pub-WILEY               = "John Wiley and Sons"}
@String{pub-WILEY:adr           = "New York, NY, USA; London, UK; Sydney,
                                  Australia"}

@String{pub-WILEY-COMPUTER      = "Wiley Computer Publishers"}
@String{pub-WILEY-COMPUTER:adr  = "New York, NY, USA"}

@String{pub-WROX                = "Wrox Press"}
@String{pub-WROX:adr            = "Chicago, IL, USA"}

%%% ====================================================================
%%% Series abbreviations:
@String{ser-LNCS                = "Lecture Notes in Computer Science"}

@String{ser-LNCSE               = "Lecture Notes in Computational
                                   Science and Engineering"}

%%% ====================================================================
%%% Bibliography entries, sorted by year, and then by citation key.
@Book{Stark:2001:JJV,
  author =       "Robert F. St{\"a}rk and Joachim Schmid and Egon
                 B{\"o}rger",
  title =        "{Java} and the {Java Virtual Machine}: definition,
                 verification, validation",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "x + 381",
  year =         "2001",
  ISBN =         "3-540-42088-6",
  ISBN-13 =      "978-3-540-42088-0",
  LCCN =         "QA76.73.J38 S785 2001",
  bibdate =      "Mon May 6 06:26:30 MDT 2002",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib",
  note =         "Includes CD-ROM with the entire text of the book and
                 numerous examples and exercises.",
  price =        "US\$49.95",
  acknowledgement = ack-nhfb,
  keywords =     "Java (computer program language); virtual computer
                 systems",
}

@Article{Akai:2010:EAS,
  author =       "Shumpei Akai and Shigeru Chiba",
  title =        "Extending {AspectJ} for separating regions",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "45--54",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837852.1621616",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Synchronization is a good candidate for an aspect in
                 aspect-oriented programming (AOP) since programmers
                 have to choose the best granularity of synchronization
                 for the underlying hardware to obtain the best
                 execution performance. If synchronization is an aspect,
                 programmers can change the synchronization code
                 independently of the rest of the program when the
                 program runs on different hardware. However, existing
                 AOP languages such as AspectJ have problems. They
                 cannot select an arbitrary code region as a join point.
                 Moreover, they cannot enforce weaving of a
                 synchronization aspect. Since it is an alternative
                 feature in feature modeling, at least one of available
                 synchronization aspects must be woven. Otherwise, the
                 program would be thread-unsafe. Since an aspect in
                 AspectJ is inherently optional, programmers must be
                 responsible for weaving it. To solve these problems,
                 this paper proposes two new constructs for AspectJ,
                 {\em regioncut\/} and {\em assertions for advice}.
                 Regioncut selects arbitrary code region as a join point
                 and assertion for advice enforces weaving a mandatory
                 advice. We implemented these constructs by extending
                 the AspectBench compiler. We evaluated the design of
                 our constructs by applying them to two open-source
                 software products, Javassist and Hadoop.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "aspect-oriented programming; feature-oriented
                 programming; region; synchronization",
}

@Article{Albert:2010:PIM,
  author =       "Elvira Albert and Samir Genaim and Miguel
                 G{\'o}mez-Zamalloa",
  title =        "Parametric inference of memory requirements for
                 garbage collected languages",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "121--130",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806651.1806671",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The accurate prediction of program's memory
                 requirements is a critical component in software
                 development. Existing heap space analyses either do not
                 take deallocation into account or adopt specific models
                 of garbage collectors which do not necessarily
                 correspond to the actual memory usage. We present a
                 novel approach to inferring upper bounds on memory
                 requirements of Java-like programs which is {\em
                 parametric\/} on the notion of {\em object lifetime},
                 i.e., on when objects become collectible. If objects
                 lifetimes are inferred by a reachability analysis, then
                 our analysis infers accurate upper bounds on the memory
                 consumption for a {\em reachability\/} -based garbage
                 collector. Interestingly, if objects lifetimes are
                 inferred by a {\em heap liveness\/} analysis, then we
                 approximate the program minimal memory requirement,
                 i.e., the peak memory usage when using an optimal
                 garbage collector which frees objects as soon as they
                 become dead. The key idea is to integrate information
                 on objects lifetimes into the process of generating the
                 {\em recurrence equations\/} which capture the memory
                 usage at the different program states. If the heap size
                 limit is set to the memory requirement inferred by our
                 analysis, it is ensured that execution will not exceed
                 the memory limit with the only assumption that garbage
                 collection works when the limit is reached. Experiments
                 on Java bytecode programs provide evidence of the
                 feasibility and accuracy of our analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "garbage collection; java bytecode; live heap space
                 analysis; low-level languages; peak memory
                 consumption",
}

@Article{Ali:2010:DJB,
  author =       "Mohammed F. M. Ali and Mohammed I. Younis and Kamal Z.
                 Zamli and Widad Ismail",
  title =        "Development of {Java} based {RFID} application
                 programmable interface for heterogeneous {RFID}
                 system",
  journal =      j-J-SYST-SOFTW,
  volume =       "83",
  number =       "11",
  pages =        "2322--2331",
  month =        nov,
  year =         "2010",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Nov 1 11:40:40 MDT 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01641212",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of systems and software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Altman:2010:OTJ,
  author =       "E. Altman and M. Arnold and R. Bordawekar and R. M.
                 Delmonico and N. Mitchell and P. F. Sweeney",
  title =        "Observations on tuning a {Java} enterprise application
                 for performance and scalability",
  journal =      j-IBM-JRD,
  volume =       "54",
  number =       "5",
  pages =        "2:1--2:12",
  month =        "????",
  year =         "2010",
  CODEN =        "IBMJAE",
  DOI =          "https://doi.org/10.1147/JRD.2010.2057090",
  ISSN =         "0018-8646 (print), 2151-8556 (electronic)",
  ISSN-L =       "0018-8646",
  bibdate =      "Sun Feb 20 14:29:19 MST 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.research.ibm.com/journal/",
  acknowledgement = ack-nhfb,
  fjournal =     "IBM Journal of Research and Development",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5288520",
}

@Article{Apel:2010:CUF,
  author =       "Sven Apel and Delesley Hutchins",
  title =        "A calculus for uniform feature composition",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "19:1--19:33",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1745312.1745316",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The goal of {\em feature-oriented programming\/} (FOP)
                 is to modularize software systems in terms of features.
                 A {\em feature\/} refines the content of a base
                 program. Both base programs and features may contain
                 various kinds of software artifacts, for example,
                 source code in different languages, models, build
                 scripts, and documentation. We and others have noticed
                 that when composing features, different kinds of
                 software artifacts can be refined in a uniform way,
                 regardless of what they represent. We present gDeep, a
                 core calculus for feature composition, which captures
                 the language independence of FOP; it can be used to
                 compose features containing many different kinds of
                 artifact in a type-safe way. The calculus allows us to
                 gain insight into the principles of FOP and to define
                 general algorithms for feature composition and
                 validation. We provide the formal syntax, operational
                 semantics, and type system of gDeep and outline how
                 languages like Java, Haskell, Bali, and XML can be
                 plugged in.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
  keywords =     "feature composition; Feature-oriented programming;
                 principle of uniformity; type systems",
}

@Article{Auerbach:2010:LJC,
  author =       "Joshua Auerbach and David F. Bacon and Perry Cheng and
                 Rodric Rabbah",
  title =        "{Lime}: a {Java}-compatible and synthesizable language
                 for heterogeneous architectures",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "89--108",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869469",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Barabash:2010:TGC,
  author =       "Katherine Barabash and Erez Petrank",
  title =        "Tracing garbage collection on highly parallel
                 platforms",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "1--10",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837855.1806653",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The pervasiveness of multiprocessor and multicore
                 hardware and the rising level of available parallelism
                 are radically changing the computing landscape. Can
                 software deal with tomorrow's potential higher
                 parallelism? In this paper we study this issue from the
                 garbage collection perspective. In particular, we
                 investigate the scalability of parallel heap tracing,
                 which stands at the core of the garbage collection
                 activity. Heap shapes can be sequential in nature, and
                 prevent the collector from scaling the trace. We start
                 by proposing the idealized trace utilization as a
                 scalability measure for evaluating the scalability of a
                 given heap shape. We then examine standard Java
                 benchmarks and evaluate the existence of non-scalable
                 object-graph shapes in their execution. Next, we
                 propose and implement a prototype of garbage collection
                 techniques that attempt to ameliorate the object-graph
                 shape problem. Finally, we measure and report their
                 efficacy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "garbage collection; memory management; parallel
                 garbage collection; runtime systems",
}

@Article{Barbuti:2010:AIA,
  author =       "Roberto Barbuti and Nicoletta {De Francesco} and Luca
                 Tesei",
  title =        "An Abstract Interpretation Approach for Enhancing the
                 {Java Bytecode Verifier}",
  journal =      j-COMP-J,
  volume =       "53",
  number =       "6",
  pages =        "679--700",
  month =        jul,
  year =         "2010",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxp031",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Tue Aug 3 15:52:17 MDT 2010",
  bibsource =    "http://comjnl.oxfordjournals.org/content/vol53/issue6/index.dtl;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "This article is the winner of The Computer Journal
                 Wilkes Award for 2010.",
  URL =          "http://comjnl.oxfordjournals.org/cgi/content/abstract/53/6/679;
                 http://comjnl.oxfordjournals.org/cgi/reprint/53/6/679;
                 http://www.oxfordjournals.org/our_journals/computer_journal/wilkes_award.html",
  acknowledgement = ack-nhfb,
  fjournal =     "The Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
}

@Article{Basanta-Val:2010:NHR,
  author =       "Pablo Basanta-Val and Marisol Garc{\'\i}a-Valls and
                 Iria Est{\'e}vez-Ayres",
  title =        "{No-Heap Remote Objects} for distributed real-time
                 {Java}",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "7:1--7:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814546",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "This article presents an approach to providing
                 real-time support for Java's Remote Method Invocation
                 (RMI) and its integration with the RTSJ memory model in
                 order to leave out garbage collection. A new construct
                 for remote objects, called {\em No-heap Remote
                 object\/} ({\em NhRo\/}), is introduced. The use of a
                 NhRo guarantees that memory required to perform a
                 remote invocation (at the server side) does not use
                 heap memory. Thus, the aim is to avoid garbage
                 collection in the remote invocation process, improving
                 predictability and memory isolation of distributed
                 Java-based real-time applications. The article presents
                 the bare model and the main programming patterns that
                 are associated with the NhRo model. Sun RMI
                 implementation has been modified to integrate the NhRo
                 model in both static and dynamic environments.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "distributed real-time Java; DRTSJ; Real-time Java;
                 real-time remote objects; region-based memory
                 management; RTSJ",
}

@Article{Basanta-Val:2010:SSS,
  author =       "Pablo Basanta-Val and Iria Estevez-Ayres and Marisol
                 Garcia-Valls and Luis Almeida",
  title =        "A Synchronous Scheduling Service for Distributed
                 Real-Time {Java}",
  journal =      j-IEEE-TRANS-PAR-DIST-SYS,
  volume =       "21",
  number =       "4",
  pages =        "506--519",
  month =        apr,
  year =         "2010",
  CODEN =        "ITDSEO",
  DOI =          "https://doi.org/10.1109/TPDS.2009.95",
  ISSN =         "1045-9219 (print), 1558-2183 (electronic)",
  ISSN-L =       "1045-9219",
  bibdate =      "Thu May 13 12:06:56 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Parallel and Distributed
                 Systems",
  journal-URL =  "http://www.computer.org/tpds/archives.htm",
}

@Article{Bebenita:2010:STB,
  author =       "Michael Bebenita and Florian Brandner and Manuel
                 Fahndrich and Francesco Logozzo and Wolfram Schulte and
                 Nikolai Tillmann and Herman Venter",
  title =        "{SPUR}: a trace-based {JIT} compiler for {CIL}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "708--725",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869517",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bodden:2010:AOR,
  author =       "E. Bodden and K. Havelund",
  title =        "Aspect-Oriented Race Detection in {Java}",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "36",
  number =       "4",
  pages =        "509--527",
  month =        jul # "\slash " # aug,
  year =         "2010",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2010.25",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5406531",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Ceccato:2010:MLD,
  author =       "Mariano Ceccato and Thomas Roy Dean and Paolo Tonella
                 and Davide Marchignoli",
  title =        "Migrating legacy data structures based on variable
                 overlay to {Java}",
  journal =      j-J-SOFTW-MAINT-EVOL,
  volume =       "22",
  number =       "3",
  pages =        "211--237",
  month =        apr,
  year =         "2010",
  CODEN =        "JSMECT",
  DOI =          "https://doi.org/10.1002/smr.418",
  ISSN =         "1532-060X (print), 1532-0618 (electronic)",
  ISSN-L =       "1532-060X",
  bibdate =      "Wed Jan 31 10:00:28 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwmaintevol.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software Maintenance and Evolution:
                 Research and Practice",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Chalin:2010:TIG,
  author =       "Patrice Chalin and Robby and Perry R. James and
                 Jooyong Lee and George Karabotsos",
  title =        "Towards an industrial grade {IVE} for {Java} and next
                 generation research platform for {JML}",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "12",
  number =       "6",
  pages =        "429--446",
  month =        nov,
  year =         "2010",
  CODEN =        "????",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Tue Sep 6 22:15:47 MDT 2011",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=1433-2779&volume=12&issue=6;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=1433-2779&volume=12&issue=6&spage=429",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer: STTT",
}

@Article{Chambers:2010:FEE,
  author =       "Craig Chambers and Ashish Raniwala and Frances Perry
                 and Stephen Adams and Robert R. Henry and Robert
                 Bradshaw and Nathan Weizenbaum",
  title =        "{FlumeJava}: easy, efficient data-parallel pipelines",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "363--375",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1809028.1806638",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "MapReduce and similar systems significantly ease the
                 task of writing data-parallel code. However, many
                 real-world computations require a pipeline of
                 MapReduces, and programming and managing such pipelines
                 can be difficult. We present FlumeJava, a Java library
                 that makes it easy to develop, test, and run efficient
                 data-parallel pipelines. At the core of the FlumeJava
                 library are a couple of classes that represent
                 immutable parallel collections, each supporting a
                 modest number of operations for processing them in
                 parallel. Parallel collections and their operations
                 present a simple, high-level, uniform abstraction over
                 different data representations and execution
                 strategies. To enable parallel operations to run
                 efficiently, FlumeJava defers their evaluation, instead
                 internally constructing an execution plan dataflow
                 graph. When the final results of the parallel
                 operations are eventually needed, FlumeJava first
                 optimizes the execution plan, and then executes the
                 optimized operations on appropriate underlying
                 primitives (e.g., MapReduces). The combination of
                 high-level abstractions for parallel data and
                 computation, deferred evaluation and optimization, and
                 efficient parallel primitives yields an easy-to-use
                 system that approaches the efficiency of hand-optimized
                 pipelines. FlumeJava is in active use by hundreds of
                 pipeline developers within Google.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "data-parallel programming; java; mapreduce",
}

@Article{Costa:2010:RMN,
  author =       "Gabriele Costa and Fabio Martinelli and Paolo Mori and
                 Christian Schaefer and Thomas Walter",
  title =        "Runtime monitoring for next generation {Java ME}
                 platform",
  journal =      j-COMPUT-SECUR,
  volume =       "29",
  number =       "1",
  pages =        "74--87",
  month =        feb,
  year =         "2010",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:19 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167404809000790",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Curley:2010:RDT,
  author =       "Edward Curley and Binoy Ravindran and Jonathan
                 Anderson and E. Douglas Jensen",
  title =        "Recovering from distributable thread failures in
                 distributed real-time {Java}",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "8:1--8:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814547",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "We consider the problem of recovering from the
                 failures of distributable threads (``threads'') in
                 distributed real-time systems that operate under
                 runtime uncertainties including those on thread
                 execution times, thread arrivals, and node failure
                 occurrences. When a thread experiences a node failure,
                 the result is a broken thread having an orphan. Under a
                 termination model, the orphans must be detected and
                 aborted, and exceptions must be delivered to the
                 farthest, contiguous surviving thread segment for
                 resuming thread execution. Our application/scheduling
                 model includes the proposed distributable thread
                 programming model for the emerging Distributed
                 Real-Time Specification for Java (DRTSJ), together with
                 an exception-handler model. Threads are subject to
                 time/utility function (TUF) time constraints and an
                 utility accrual (UA) optimality criterion. A key
                 underpinning of the TUF/UA scheduling paradigm is the
                 notion of ``best-effort'' where higher importance
                 threads are always favored over lower importance ones,
                 irrespective of thread urgency as specified by their
                 time constraints. We present a thread scheduling
                 algorithm called HUA and a thread integrity protocol
                 called TPR. We show that HUA and TPR bound the orphan
                 cleanup and recovery time with bounded loss of the
                 best-effort property. Our implementation experience for
                 HUA/TPR in the Reference Implementation of the proposed
                 programming model for the DRTSJ demonstrates the
                 algorithm/protocol's effectiveness.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "distributable thread; Distributed; distributed
                 scheduling; Java; real-time; thread integrity",
}

@Article{Dam:2010:PCI,
  author =       "Mads Dam and Bart Jacobs and Andreas Lundblad and
                 Frank Piessens",
  title =        "Provably correct inline monitoring for multithreaded
                 {Java}-like programs",
  journal =      j-J-COMP-SECUR,
  volume =       "18",
  number =       "1",
  pages =        "37--59",
  month =        "????",
  year =         "2010",
  CODEN =        "JCSIET",
  DOI =          "https://doi.org/10.3233/JCS-2010-0365",
  ISSN =         "0926-227X (print), 1875-8924 (electronic)",
  ISSN-L =       "0926-227X",
  bibdate =      "Tue May 24 06:24:34 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jcompsecur.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Computer Security",
  journal-URL =  "http://content.iospress.com/journals/journal-of-computer-security",
}

@Article{DeFrancesco:2010:UAI,
  author =       "Nicoletta {De Francesco} and Giuseppe Lettieri and
                 Luca Martini",
  title =        "Using abstract interpretation to add type checking for
                 interfaces in {Java} bytecode verification",
  journal =      j-THEOR-COMP-SCI,
  volume =       "411",
  number =       "22--24",
  pages =        "2174--2201",
  day =          "17",
  month =        may,
  year =         "2010",
  CODEN =        "TCSCDI",
  ISSN =         "0304-3975 (print), 1879-2294 (electronic)",
  ISSN-L =       "0304-3975",
  bibdate =      "Mon Mar 28 17:10:32 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/03043975",
  abstract =     "Java interface types support multiple inheritance.
                 Because of this, the standard bytecode verifier ignores
                 them, since it is not able to model the class hierarchy
                 as a lattice. Thus, type checks on interfaces are
                 performed at run time. We propose a verification
                 methodology that removes the need for run-time checks.
                 The methodology consists of: (1) an augmented verifier
                 that is very similar to the standard one, but is also
                 able to check for interface types in most cases; (2)
                 for all other cases, a set of additional simpler
                 verifiers, each one specialized for a single interface
                 type. We obtain these verifiers in a systematic way by
                 using abstract interpretation techniques. Finally, we
                 describe an implementation of the methodology and
                 evaluate it on a large set of benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "Theoretical Computer Science",
  journal-URL =  "http://www.sciencedirect.com/science/journal/03043975",
}

@Article{Deitcher:2010:JEJ,
  author =       "Avi Deitcher",
  title =        "{JSormdb} --- an embedded {JavaScript} database",
  journal =      j-LINUX-J,
  volume =       "2010",
  number =       "192",
  pages =        "4:1--4:??",
  month =        apr,
  year =         "2010",
  CODEN =        "LIJOFX",
  ISSN =         "1075-3583 (print), 1938-3827 (electronic)",
  ISSN-L =       "1075-3583",
  bibdate =      "Tue Nov 23 11:41:54 MST 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "Linux Journal",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J508",
}

@Article{Dietrich:2010:POD,
  author =       "K. Dietrich and F. R{\"o}ck",
  title =        "Performance Optimizations for {DAA} Signatures on
                 {Java} enabled Platforms",
  journal =      j-J-UCS,
  volume =       "16",
  number =       "4",
  pages =        "519--??",
  month =        "????",
  year =         "2010",
  CODEN =        "????",
  ISSN =         "0948-6968",
  ISSN-L =       "0948-6968",
  bibdate =      "Wed Aug 25 21:53:00 MDT 2010",
  bibsource =    "http://www.jucs.org/jucs;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.jucs.org/jucs_16_4/performance_optimizations_for_daa",
  acknowledgement = ack-nhfb,
  fjournal =     "J.UCS: Journal of Universal Computer Science",
  journal-URL =  "http://www.jucs.org/jucs",
}

@Article{DosSantos:2010:MPB,
  author =       "Osmar Marchi {Dos Santos} and Andy Wellings",
  title =        "Measuring and policing blocking times in real-time
                 systems",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "2:1--2:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814541",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "In real-time systems, the execution-time overrun of a
                 thread may lead to a deadline being missed by the
                 thread or even others threads in the system. From a
                 fault tolerance perspective, both execution time
                 overruns and deadline misses can be considered timing
                 errors that could potentially cause a failure in the
                 system's ability to deliver its services in a timely
                 manner. In this context, the ideal is to detect the
                 error in the system as soon as possible, so that the
                 propagation of the error can be limited and error
                 recovery strategies can take place with more accurate
                 information. The run-time support mechanism usually
                 deployed for monitoring the timing requirements of
                 real-time systems is based on deadline monitoring, that
                 is, the system calls specific application code whenever
                 a deadline is violated. Recognizing that deadline
                 monitoring may not be enough for providing an adequate
                 level of fault tolerance for timing errors, major
                 real-time programming standards, like Ada, POSIX and
                 the Real-Time Specification for Java (RTSJ), have
                 proposed different mechanisms for monitoring the
                 execution time of threads. Nevertheless, in order to
                 provide a complete fault tolerance approach for timing
                 errors, the potential blocking time of threads also has
                 to be monitored. In this article, we propose mechanisms
                 for measuring and policing the blocking time of threads
                 in the context of both {\em basic priority
                 inheritance\/} and {\em priority ceiling protocols}.
                 The notion of {\em blocking-time clocks and timers\/}
                 for the POSIX standard is proposed, implemented and
                 evaluated in the open-source real-time operating system
                 MaRTE OS. Also, a {\em blocking time monitoring
                 model\/} for measuring and policing blocking times in
                 the RTSJ framework is specified. This model is
                 implemented and evaluated in the (RTSJ-compliant)
                 open-source middleware jRate, running on top of MaRTE
                 OS.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "error detection; POSIX standard; Real-time
                 specification for Java; timing errors",
}

@Article{Egbring:2010:POS,
  author =       "Marco Egbring and Gerd A. Kullak-Ublick and Stefan
                 Russmann",
  title =        "{Phynx}: an open source software solution supporting
                 data management and web-based patient-level data review
                 for drug safety studies in the general practice
                 research database and other health care databases",
  journal =      "Pharmacoepidemiology and Drug Safety",
  volume =       "19",
  number =       "1",
  pages =        "38--44",
  year =         "2010",
  DOI =          "https://doi.org/10.1002/pds.1860",
  ISSN =         "1053-8569 (print), 1099-1557 (electronic)",
  ISSN-L =       "1053-8569",
  bibdate =      "Tue Jan 30 07:39:48 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  keywords =     "Adobe Flex 3, Apache Tomcat, claims databases,
                 Eclipse, electronic medical records, general practice
                 research database (GPRD), Internet, Java, MySQL,
                 pharmacoepidemiology, Talend Open Studio, validation",
}

@Article{Elmas:2010:GRA,
  author =       "Tayfun Elmas and Shaz Qadeer and Serdar Tasiran",
  title =        "{Goldilocks}: a race-aware {Java} runtime",
  journal =      j-CACM,
  volume =       "53",
  number =       "11",
  pages =        "85--92",
  month =        nov,
  year =         "2010",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/1839676.1839698",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Fri Oct 29 17:02:13 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Flanagan:2010:AMD,
  author =       "Cormac Flanagan and Stephen N. Freund",
  title =        "Adversarial memory for detecting destructive races",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "244--254",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806625",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Multithreaded programs are notoriously prone to race
                 conditions, a problem exacerbated by the widespread
                 adoption of multi-core processors with complex memory
                 models and cache coherence protocols. Much prior work
                 has focused on static and dynamic analyses for race
                 detection, but these algorithms typically are unable to
                 distinguish destructive races that cause erroneous
                 behavior from benign races that do not. Performing this
                 classification manually is difficult, time consuming,
                 and error prone.\par

                 This paper presents a new dynamic analysis technique
                 that uses {\em adversarial memory\/} to classify race
                 conditions as destructive or benign on systems with
                 relaxed memory models. Unlike a typical language
                 implementation, which may only infrequently exhibit
                 non-sequentially consistent behavior, our adversarial
                 memory implementation exploits the full freedom of the
                 memory model to return older, unexpected, or stale
                 values for memory reads whenever possible, in an
                 attempt to crash the target program (that is, to force
                 the program to behave erroneously). A crashing
                 execution provides concrete evidence of a destructive
                 bug, and this bug can be strongly correlated with a
                 specific race condition in the target
                 program.\par

                 Experimental results with our Jumble prototype for Java
                 demonstrate that adversarial memory is highly effective
                 at identifying destructive race conditions, and in
                 distinguishing them from race conditions that are real
                 but benign. Adversarial memory can also reveal
                 destructive races that would not be detected by
                 traditional testing (even after thousands of runs) or
                 by model checkers that assume sequential consistency.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "concurrency; dynamic analysis; race conditions;
                 relaxed memory models",
}

@Article{Gama:2010:SAA,
  author =       "Kiev Gama and Didier Donsez",
  title =        "A survey on approaches for addressing dependability
                 attributes in the {OSGi} service platform",
  journal =      j-SIGSOFT,
  volume =       "35",
  number =       "3",
  pages =        "1--8",
  month =        may,
  year =         "2010",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/1764810.1764818",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:15:53 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The OSGi service platform is being used in software
                 industry as the de facto middleware for developing and
                 deploying modular Java applications, using SOA
                 principles in centralized solutions. OSGi provides a
                 dynamic platform where components and services can be
                 deployed and undeployed at runtime, attracting the
                 attention of both commercial and research projects.
                 Although the platform is used in fields with different
                 purposes (e.g. experimentally used in healthcare,
                 commercially used in application servers) but where
                 dependability should be a pre-requisite for
                 applications, it is a fact that the OSGi technology
                 does not provide a dependable platform for executing
                 applications with such needs. Different research
                 efforts try to address dependability attributes
                 (availability, integrity, maintainability, reliability,
                 safety, and confidentiality) in the OSGi service
                 platform, but not necessarily all of these attributes
                 are completely covered or explicitly addressed in the
                 textual references. We provide a brief survey on recent
                 research efforts that try to improve dependability in
                 the OSGi service platform. We analyze and identify
                 which attributes are addressed on each approach, and
                 provide a discussion on the employed techniques,
                 similarities and results achieved on such approaches.
                 Al-though this survey remains limited to one technology
                 (OSGi), the problematic as well as all the employed
                 techniques in the analyzed efforts are pertinent to
                 other service and component-based systems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Geoffray:2010:VSM,
  author =       "Nicolas Geoffray and Ga{\"e}l Thomas and Julia Lawall
                 and Gilles Muller and Bertil Folliot",
  title =        "{VMKit}: a substrate for managed runtime
                 environments",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "7",
  pages =        "51--62",
  month =        jul,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1735997.1736006",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:01 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Managed Runtime Environments (MREs), such as the JVM
                 and the CLI, form an attractive environment for program
                 execution, by providing portability and safety, via the
                 use of a bytecode language and automatic memory
                 management, as well as good performance, via
                 just-in-time (JIT) compilation. Nevertheless,
                 developing a fully featured MRE, including e.g. a
                 garbage collector and JIT compiler, is a herculean
                 task. As a result, new languages cannot easily take
                 advantage of the benefits of MREs, and it is difficult
                 to experiment with extensions of existing MRE based
                 languages.\par

                 This paper describes and evaluates VMKit, a first
                 attempt to build a common substrate that eases the
                 development of high-level MREs. We have successfully
                 used VMKit to build two MREs: a Java Virtual Machine
                 and a Common Language Runtime. We provide an extensive
                 study of the lessons learned in developing this
                 infrastructure, and assess the ease of implementing new
                 MREs or MRE extensions and the resulting performance.
                 In particular, it took one of the authors only one
                 month to develop a Common Language Runtime using VMKit.
                 VMKit furthermore has performance comparable to the
                 well-established open-source MREs Cacao, Apache Harmony
                 and Mono, and is 1.2 to 3 times slower than JikesRVM on
                 most of the Dacapo benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "just in time compiler; virtual machine; vmkit",
}

@Article{Gill:2010:MDP,
  author =       "Nasib Singh Gill and Pradeep Tomar",
  title =        "Modified development process of component-based
                 software engineering",
  journal =      j-SIGSOFT,
  volume =       "35",
  number =       "2",
  pages =        "1--6",
  month =        mar,
  year =         "2010",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/1734103.1734120",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:15:52 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Component-based software engineering (CBSE) is a
                 branch of software engineering, the priority of which
                 is the separation of concerns in respect of the
                 wide-ranging functionality available throughout a given
                 software system. CBSE emphasizes on building system by
                 reusing high quality configurable software components.
                 This reduces its development cost as well as
                 time-to-market and ensures higher reliability, better
                 maintainability and quality by exploiting reusability.
                 In the traditional approach, when a software system is
                 going to be developed, the implementation has to be
                 done from scratch. With the advent of Object-Oriented
                 Technology (OOT), reusable software components have
                 become an indispensable part of programming knowledge.
                 In addition to those classes and methods included in
                 standard libraries of programming languages, such as
                 the Java API library, many reusable software components
                 are developed by software development organizations
                 specifically for reuse or repackaged from previously
                 developed systems. We propose here a modified
                 development process of CBSE and present our modified
                 development process of CBSE for increasing reusability
                 in different abstraction levels: architecture level,
                 modular design level and framework level. This modified
                 development process of CBSE change the reusability
                 approach into two different approaches
                 composition-based approach and generation-based. Lastly
                 on the basis of these two approaches we divide
                 component reuse into two different processes. First one
                 is process of development of reusable components which
                 is composition-based approach and second one is process
                 of development with reusable components which is based
                 on the generation-based according X model with the
                 benefits of reusable components in programming",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Book{Goodrich:2010:DSA,
  author =       "Michael T. Goodrich and Roberto Tamassia",
  title =        "Data Structures and Algorithms in {Java}",
  publisher =    pub-WILEY,
  address =      pub-WILEY:adr,
  edition =      "Fifth",
  pages =        "xxii + 714",
  year =         "2010",
  ISBN =         "0-470-38326-7 (hardcover), 0-470-39880-9 (paperback)",
  ISBN-13 =      "978-0-470-38326-1 (hardcover), 978-0-470-39880-7
                 (paperback)",
  LCCN =         "QA76.73.J38 G66 2010",
  bibdate =      "Thu Mar 22 12:04:32 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigact.bib;
                 z3950.loc.gov:7090/Voyager",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language); Data structures
                 (Computer science); Computer algorithms",
}

@Article{Haubl:2010:CES,
  author =       "Christian H{\"a}ubl and Christian Wimmer and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Compact and efficient strings for {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "75",
  number =       "11",
  pages =        "1077--1094",
  day =          "1",
  month =        nov,
  year =         "2010",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Apr 1 18:39:38 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Heidenreich:2010:GST,
  author =       "Florian Heidenreich and Jendrik Johannes and Mirko
                 Seifert and Christian Wende and Marcel B{\"o}hme",
  title =        "Generating safe template languages",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "99--108",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1621607.1621624",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Template languages are widely used within generative
                 programming, because they provide intuitive means to
                 generate software artefacts expressed in a specific
                 object language. However, most template languages
                 perform template instantiation on the level of string
                 literals, which allows neither syntax checks nor
                 semantics analysis. To make sure that generated
                 artefacts always conform to the object language, we
                 propose to perform static analysis at template design
                 time. In addition, the increasing popularity of
                 domainspecific languages (DSLs) demands an approach
                 that allows to reuse both the concepts of template
                 languages and the corresponding tools.\par

                 In this paper we address the issues mentioned above by
                 presenting how existing languages can be automatically
                 extended with generic template concepts (e.g.,
                 placeholders, loops, conditions) to obtain safe
                 template languages. These languages provide means for
                 syntax checking and static semantic analysis w.r.t. the
                 object language at template design time. We discuss the
                 prerequisites for this extension, analyse the types of
                 correctness properties that can be assured at template
                 design time, and exemplify the key benefits of this
                 approach on a textual DSL and Java.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "generative programming; language extension; safe
                 authoring; template language",
}

@Article{Hellyer:2010:LCW,
  author =       "Laurence Hellyer and Richard Jones and Antony L.
                 Hosking",
  title =        "The locality of concurrent write barriers",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "83--92",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806651.1806666",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Concurrent and incremental collectors require barriers
                 to ensure correct synchronisation between mutator and
                 collector. The overheads imposed by particular barriers
                 on particular systems have been widely studied.
                 Somewhat fewer studies have also compared barriers in
                 terms of their termination properties or the volume of
                 floating garbage they generate. Until now, the
                 consequences for locality of different barrier choices
                 has not been studied, although locality will be of
                 increasing importance for emerging architectures. This
                 paper provides a study of the locality of concurrent
                 write barriers, independent of the processor
                 architecture, virtual machine, compiler or garbage
                 collection algorithm.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "garbage collection; java; language implementation;
                 memory management",
}

@Article{Higuera-Toledano:2010:ISI,
  author =       "M. Teresa Higuera-Toledano and Doug Locke and Angelo
                 Corsaro",
  title =        "Introduction to special issue on {Java} technologies
                 for real-time and embedded systems",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "1:1--1:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814540",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Hsiao:2010:EST,
  author =       "Chun-Feng Hsiao and Chih-Ping Chu",
  title =        "Enhancing {SCORM} through creating a reusable {Java}
                 class repository",
  journal =      j-SPE,
  volume =       "40",
  number =       "10",
  pages =        "865--881",
  month =        sep,
  year =         "2010",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.979",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Jun 21 17:09:49 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "7 May 2010",
}

@Article{James:2010:FMC,
  author =       "Perry R. James and Patrice Chalin",
  title =        "Faster and More Complete Extended Static Checking for
                 the {Java} Modeling Language",
  journal =      j-J-AUTOM-REASON,
  volume =       "44",
  number =       "1--2",
  pages =        "??--??",
  month =        feb,
  year =         "2010",
  CODEN =        "JAREEW",
  DOI =          "https://doi.org/10.1007/s10817-009-9134-9",
  ISSN =         "0168-7433 (print), 1573-0670 (electronic)",
  ISSN-L =       "0168-7433",
  bibdate =      "Sat Apr 2 11:10:16 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/jautomreason.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10817-009-9134-9",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Autom. Reason.",
  articleno =    "145",
  fjournal =     "Journal of Automated Reasoning",
  journal-URL =  "http://link.springer.com/journal/10817",
}

@Article{Joseph:2010:PII,
  author =       "Damien Joseph and Soon Ang and Roger H. L. Chang and
                 Sandra A. Slaughter",
  title =        "Practical intelligence in {IT}: assessing soft skills
                 of {IT} professionals",
  journal =      j-CACM,
  volume =       "53",
  number =       "2",
  pages =        "149--154",
  month =        feb,
  year =         "2010",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/1646353.1646391",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Thu Feb 4 17:13:32 MST 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "What qualities make a successful it professional?
                 Certainty strong technical skills are sine qua non. As
                 a result, the technology geek remains the stereotype of
                 an information technology (IT) professional. Indeed,
                 when companies hire IT professionals, their focus is
                 often on the 'hard' skills needed to perform the work,
                 such as years of Java programming
                 experience.\par

                 However, there is a growing (and gnawing) awareness
                 that technical skills alone are insufficient for
                 success in IT, particularly in today's dynamic,
                 distributed and complex workplace. Companies are
                 exploring outsourcing and offshoring to become more
                 flexible and contain costs while strategically
                 leveraging IT. Consequently, IT professionals (whether
                 onsite or offshore, in-house or outsourced) must
                 acquire a broader set of skills beyond their
                 traditional technical skills. These broader managerial
                 or interpersonal skills are generically labeled 'soft
                 skills.'\par

                 Despite the increasing importance of soft skills, very
                 little systematic research has conceptualized such
                 skills and even less has measured these skills. Given
                 this gap in the literature, this article introduces
                 'practical intelligence' as the overarching concept
                 that could provide a better understanding of this
                 broader set of skills required of IT professionals. We
                 describe the development of the SoftSkills for IT
                 (SSIT) instrument for assessing an IT professional's
                 level of practical intelligence, and report the results
                 of a study that validates this instrument by comparing
                 the practical intelligence of experienced IT
                 professionals versus novices. We conclude by drawing
                 out implications of our study for IT recruitment,
                 training and development, and suggest future research
                 directions.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Kienle:2010:ATT,
  author =       "Holger M. Kienle",
  title =        "It's About Time to Take {JavaScript} (More)
                 Seriously",
  journal =      j-IEEE-SOFTWARE,
  volume =       "27",
  number =       "3",
  pages =        "60--62",
  month =        may # "\slash " # jun,
  year =         "2010",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2010.76",
  ISSN =         "0740-7459 (print), 0740-7459 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Thu May 13 07:56:44 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Kim:2010:EAE,
  author =       "Minseong Kim and Andy Wellings",
  title =        "Efficient asynchronous event handling in the real-time
                 specification for {Java}",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "5:1--5:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814544",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The Real-Time Specification for Java (RTSJ) is
                 becoming mature. It has been implemented, formed the
                 basis for research and used in serious applications.
                 Some strengths and weaknesses are emerging. One of the
                 areas that requires further elaboration is asynchronous
                 event handling (AEH). The primary goal for handlers in
                 the RTSJ is to have a lightweight concurrency
                 mechanism. Some implementation will, however, simply
                 map a handler to a real-time thread and this results in
                 undermining the original motivations and introduces
                 performance penalties. However it is generally unclear
                 how to map handlers to real-time threads effectively.
                 Also the support for nonblocking handlers in the RTSJ
                 is criticized as lacking in configurability as
                 implementations are unable to take advantage of them.
                 This article, therefore, examines the AEH techniques
                 used in some popular RTSJ implementations and proposes
                 two efficient AEH models for the RTSJ. We then define
                 formal models of the RTSJ AEH implementations using the
                 automata formalism provided by the UPPAAL model
                 checking tool. Using the automata models, their
                 properties are explored and verified. In the proposed
                 models, blocking and nonblocking handlers are serviced
                 by different algorithms. In this way, it is possible to
                 assign a real-time thread to a handler at the right
                 time in the right place while maintaining the fewest
                 possible threads overall and to give a certain level of
                 configurability to AEH. We also have implemented the
                 proposed models on an existing RTSJ implementation,
                 jRate and executed a set of performance tests that
                 measure their respective dispatch and multiple-handler
                 completion latencies. The results from the tests and
                 the verifications indicate that the proposed models
                 require fewer threads on average with better
                 performance than other approaches.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "asynchronous event handling; blocking handler;
                 multiple-server switching phenomenon; nonblocking
                 handler; RTSJ",
}

@Article{Ko:2010:EAW,
  author =       "Andrew J. Ko and Brad A. Myers",
  title =        "Extracting and answering why and why not questions
                 about {Java} program output",
  journal =      j-TOSEM,
  volume =       "20",
  number =       "2",
  pages =        "4:1--4:??",
  month =        aug,
  year =         "2010",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/1824760.1824761",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Wed Sep 8 18:47:44 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "When software developers want to understand the reason
                 for a program's behavior, they must translate their
                 questions about the behavior into a series of questions
                 about code, speculating about the causes in the
                 process. The Whyline is a new kind of debugging tool
                 that avoids such speculation by instead enabling
                 developers to select a question about program output
                 from a set of ``why did and why didn't'' questions
                 extracted from the program's code and execution. The
                 tool then finds one or more possible explanations for
                 the output in question. These explanations are derived
                 using a static and dynamic slicing, precise call
                 graphs, reachability analyses, and new algorithms for
                 determining potential sources of values. Evaluations of
                 the tool on two debugging tasks showed that developers
                 with the Whyline were three times more successful and
                 twice as fast at debugging, compared to developers with
                 traditional breakpoint debuggers. The tool has the
                 potential to simplify debugging and program
                 understanding in many software development contexts.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
  keywords =     "debugging; questions; Whyline",
}

@Article{Kolling:2010:GPE,
  author =       "Michael K{\"o}lling",
  title =        "The {Greenfoot} Programming Environment",
  journal =      j-TOCE,
  volume =       "10",
  number =       "4",
  pages =        "14:1--14:??",
  month =        nov,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1868358.1868361",
  ISSN =         "1946-6226",
  bibdate =      "Thu Dec 9 11:26:15 MST 2010",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Greenfoot is an educational integrated development
                 environment aimed at learning and teaching programming.
                 It is aimed at a target audience of students from about
                 14 years old upwards, and is also suitable for college-
                 and university-level education. Greenfoot combines
                 graphical, interactive output with programming in Java,
                 a standard, text-based object-oriented programming
                 language. This article first describes Greenfoot and
                 then goes on to discuss design goals and motivations,
                 strengths and weaknesses of the system, and its
                 relation to two environments with similar goals,
                 Scratch and Alice.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Computing Education",
}

@Article{Lee:2010:JSD,
  author =       "Byeongcheol Lee and Ben Wiedermann and Martin Hirzel
                 and Robert Grimm and Kathryn S. McKinley",
  title =        "{Jinn}: synthesizing dynamic bug detectors for foreign
                 language interfaces",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "36--49",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1809028.1806601",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Programming language specifications mandate static and
                 dynamic analyses to preclude syntactic and semantic
                 errors. Although individual languages are usually
                 well-specified, composing languages is not, and this
                 poor specification is a source of many errors in {\em
                 multilingual\/} programs. For example, virtually all
                 Java programs compose Java and C using the Java Native
                 Interface (JNI). Since JNI is informally specified,
                 developers have difficulty using it correctly, and
                 current Java compilers and virtual machines (VMs)
                 inconsistently check only a subset of JNI
                 constraints.\par

                 This paper's most significant contribution is to show
                 how to synthesize dynamic analyses from state machines
                 to detect foreign function interface (FFI) violations.
                 We identify three classes of FFI constraints encoded by
                 eleven state machines that capture thousands of JNI and
                 Python/C FFI rules. We use a mapping function to
                 specify which state machines, transitions, and program
                 entities (threads, objects, references) to check at
                 each FFI call and return. From this function, we
                 synthesize a context-specific dynamic analysis to find
                 FFI bugs. We build bug detection tools for JNI and
                 Python/C using this approach. For JNI, we dynamically
                 and transparently interpose the analysis on Java and C
                 language transitions through the JVM tools interface.
                 The resulting tool, called Jinn, is compiler and
                 virtual machine {\em independent}. It detects and
                 diagnoses a wide variety of FFI bugs that other tools
                 miss. This approach greatly reduces the annotation
                 burden by exploiting common FFI constraints: whereas
                 the generated Jinn code is 22,000+ lines, we wrote only
                 1,400 lines of state machine and mapping code. Overall,
                 this paper lays the foundation for a more principled
                 approach to developing correct multilingual software
                 and a more concise and automated approach to FFI
                 specification.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "dynamic analysis; ffi bugs; foreign function
                 interfaces (FFI); java native interface (jni);
                 multilingual programs; python/C; specification;
                 specification generation",
}

@Article{Lerner:2010:FTJ,
  author =       "Reuven M. Lerner",
  title =        "At the forge: testing {JavaScript}",
  journal =      j-LINUX-J,
  volume =       "2010",
  number =       "191",
  pages =        "6:1--6:??",
  month =        mar,
  year =         "2010",
  CODEN =        "LIJOFX",
  ISSN =         "1075-3583 (print), 1938-3827 (electronic)",
  ISSN-L =       "1075-3583",
  bibdate =      "Tue Nov 23 11:41:53 MST 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "Linux Journal",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J508",
}

@Article{Lerner:2010:SDT,
  author =       "Benjamin S. Lerner and Herman Venter and Dan
                 Grossman",
  title =        "Supporting dynamic, third-party code customizations in
                 {JavaScript} using aspects",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "361--376",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869490",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Long:2010:TDSa,
  author =       "Brad Long",
  title =        "Towards the design of a set-based {Java} collections
                 framework",
  journal =      j-SIGSOFT,
  volume =       "35",
  number =       "5",
  pages =        "1--7",
  month =        sep,
  year =         "2010",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/1838687.1838705",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:15:57 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The Java Collections Framework (JCF) was introduced as
                 standard in JDK 1.2. Since then several significant
                 enhancements have been made including the introduction
                 of generics and typed collections. One striking design
                 choice of the Java language designers was the exclusion
                 of map from the collections hierarchy. This paper looks
                 at how maps could be incorporated into the Java
                 collections hierarchy by describing early work on YACL
                 (Yet Another Collections Library). The intention of
                 YACL is to provide a suite of set-based collections
                 classes and operations whilst continuing to be
                 compatible with the JCF.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Long:2010:TDSb,
  author =       "Brad Long",
  title =        "Towards the design of a set-based {Java} collections
                 framework",
  journal =      j-SIGSOFT,
  volume =       "35",
  number =       "6",
  pages =        "1--7",
  month =        nov,
  year =         "2010",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/1874391.1874401",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:15:58 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The Java Collections Framework (JCF) was introduced as
                 standard in JDK 1.2. Since then several significant
                 enhancements have been made including the introduction
                 of generics and typed collections. One striking design
                 choice of the Java language designers was the exclusion
                 of map from the collections hierarchy. This paper looks
                 at how maps could be incorporated into the Java
                 collections hierarchy by describing early work on YACL
                 (Yet Another Collections Library). The intention of
                 YACL is to provide a suite of set-based collections
                 classes and operations whilst continuing to be
                 compatible with the JCF",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Marino:2010:DSE,
  author =       "Daniel Marino and Abhayendra Singh and Todd Millstein
                 and Madanlal Musuvathi and Satish Narayanasamy",
  title =        "{DRFX}: a simple and efficient memory model for
                 concurrent programming languages",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "351--362",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806636",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The most intuitive memory model for shared-memory
                 multithreaded programming is {\em sequential
                 consistency\/} (SC), but it disallows the use of many
                 compiler and hardware optimizations thereby impacting
                 performance. Data-race-free (DRF) models, such as the
                 proposed C++0x memory model, guarantee SC execution for
                 datarace-free programs. But these models provide no
                 guarantee at all for racy programs, compromising the
                 safety and debuggability of such programs. To address
                 the safety issue, the Java memory model, which is also
                 based on the DRF model, provides a weak semantics for
                 racy executions. However, this semantics is subtle and
                 complex, making it difficult for programmers to reason
                 about their programs and for compiler writers to ensure
                 the correctness of compiler optimizations.\par

                 We present the DRFx memory model, which is simple for
                 programmers to understand and use while still
                 supporting many common optimizations. We introduce a
                 {\em memory model (MM) exception\/} which can be
                 signaled to halt execution. If a program executes
                 without throwing this exception, then DRFx guarantees
                 that the execution is SC. If a program throws an MM
                 exception during an execution, then DRFx guarantees
                 that the program has a data race. We observe that SC
                 violations can be detected in hardware through a
                 lightweight form of conflict detection. Furthermore,
                 our model safely allows aggressive compiler and
                 hardware optimizations within compiler-designated
                 program regions. We formalize our memory model, prove
                 several properties about this model, describe a
                 compiler and hardware design suitable for DRFx, and
                 evaluate the performance overhead due to our compiler
                 and hardware requirements.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "data races; memory model exception; memory models;
                 sequential consistency; soft fences",
}

@Article{Markstrum:2010:JDP,
  author =       "Shane Markstrum and Daniel Marino and Matthew Esquivel
                 and Todd Millstein and Chris Andreae and James Noble",
  title =        "{JavaCOP}: {Declarative} pluggable types for {Java}",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "2",
  pages =        "4:1--4:37",
  month =        jan,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1667048.1667049",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:35 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Pluggable types enable users to enforce multiple type
                 systems in one programming language. We have developed
                 a suite of tools, called the JavaCOP framework, that
                 allows developers to create pluggable type systems for
                 Java. JavaCOP provides a simple declarative language in
                 which program constraints are defined over a program's
                 abstract syntax tree. The JavaCOP compiler
                 automatically enforces these constraints on programs
                 during compilation. The JavaCOP framework also includes
                 a dataflow analysis API in order to support type
                 systems which depend on flow-sensitive information.
                 Finally, JavaCOP includes a novel test framework which
                 helps users gain confidence in the correctness of their
                 pluggable type systems. We demonstrate the framework by
                 discussing a number of pluggable type systems which
                 have been implemented in JavaCOP in order to detect
                 errors and enforce strong invariants in programs. These
                 type systems range from general-purpose checkers, such
                 as a type system for nonnull references, to
                 domain-specific ones, such as a checker for conformance
                 to a library's usage rules.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
  keywords =     "JavaCOP; pluggable type systems",
}

@Article{Mateos:2010:ANI,
  author =       "Cristian Mateos and Alejandro Zunino and Marcelo
                 Campo",
  title =        "An approach for non-intrusively adding malleable
                 fork\slash join parallelism into ordinary {JavaBean}
                 compliant applications",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "36",
  number =       "3",
  pages =        "288--315",
  month =        oct,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.cl.2009.12.003",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Thu Mar 8 08:39:20 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/14778424",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842410000035",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems \& Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424",
}

@Article{Mateos:2010:MJN,
  author =       "Cristian Mateos and Alejandro Zunino and Marcelo
                 Campo",
  title =        "{m-JGRIM}: a novel middleware for {Gridifying Java}
                 applications into mobile {Grid} services",
  journal =      j-SPE,
  volume =       "40",
  number =       "4",
  pages =        "331--362",
  day =          "10",
  month =        apr,
  year =         "2010",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.961",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Mar 17 10:16:22 MDT 2010",
  bibsource =    "http://www.interscience.wiley.com/jpages/0038-0644;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "Feb 3 2010 10:58AM",
}

@Article{McGachey:2010:CJC,
  author =       "Phil McGachey and Antony L. Hosking and J. Eliot B.
                 Moss",
  title =        "Classifying {Java} class transformations for pervasive
                 virtualized access",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "75--84",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1621607.1621620",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The indirection of object accesses is a common theme
                 for target domains as diverse as transparent
                 distribution, persistence, and program instrumentation.
                 Virtualizing accesses to fields and methods (by
                 redirecting calls through accessor and indirection
                 methods) allows interposition of arbitrary code,
                 extending the functionality of an application beyond
                 that intended by the original developer.\par

                 We present class modifications performed by our RuggedJ
                 transparent distribution platform for standard Java
                 virtual machines. RuggedJ abstracts over the location
                 of objects by implementing a single object model for
                 local and remote objects. However the implementation of
                 this model is complicated by the presence of native and
                 system code; classes loaded by Java's bootstrap class
                 loader can be rewritten only in a limited manner, and
                 so cannot be modified to conform to RuggedJ's complex
                 object model. We observe that system code comprises the
                 majority of a given Java application: an average of
                 76\% in the applications we study. We consider the
                 constraints imposed upon pervasive class transformation
                 within Java, and present a framework for systematically
                 rewriting arbitrary applications. Our system
                 accommodates all system classes, allowing both user and
                 system classes alike to be referenced using a single
                 object model.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "Java; object model; program transformation",
}

@Article{McIlroy:2010:HJR,
  author =       "Ross McIlroy and Joe Sventek",
  title =        "{Hera-JVM}: a runtime system for heterogeneous
                 multi-core architectures",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "205--222",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869478",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{McLane:2010:UIV,
  author =       "Jonathan C. McLane and W. Walter Czech and David A.
                 Yuen and Mike R. Knox and Shuo Wang and Jim B. S.
                 Greensky and Erik O. D. Sevre",
  title =        "Ubiquitous interactive visualization of large-scale
                 simulations in geosciences over a {Java}-based
                 web-portal",
  journal =      j-CCPE,
  volume =       "22",
  number =       "12",
  pages =        "1750--1773",
  day =          "25",
  month =        aug,
  year =         "2010",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1532",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:46 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "26 Oct 2009",
}

@Article{Mitchell:2010:FTL,
  author =       "Nick Mitchell and Edith Schonberg and Gary Sevitsky",
  title =        "Four Trends Leading to {Java} Runtime Bloat",
  journal =      j-IEEE-SOFTWARE,
  volume =       "27",
  number =       "1",
  pages =        "56--63",
  month =        jan # "\slash " # feb,
  year =         "2010",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2010.7",
  ISSN =         "0740-7459 (print), 0740-7459 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Thu May 13 07:56:44 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Mytkowicz:2010:EAJ,
  author =       "Todd Mytkowicz and Amer Diwan and Matthias Hauswirth
                 and Peter F. Sweeney",
  title =        "Evaluating the accuracy of {Java} profilers",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "187--197",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806618",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Performance analysts profile their programs to find
                 methods that are worth optimizing: the 'hot' methods.
                 This paper shows that four commonly-used Java profilers
                 ({\em xprof , hprof , jprofile, and yourkit\/}) often
                 disagree on the identity of the hot methods. If two
                 profilers disagree, at least one must be incorrect.
                 Thus, there is a good chance that a profiler will
                 mislead a performance analyst into wasting time
                 optimizing a cold method with little or no performance
                 improvement.\par

                 This paper uses causality analysis to evaluate
                 profilers and to gain insight into the source of their
                 incorrectness. It shows that these profilers all
                 violate a fundamental requirement for sampling based
                 profilers: to be correct, a sampling-based profiler
                 must collect samples randomly.\par

                 We show that a proof-of-concept profiler, which
                 collects samples randomly, does not suffer from the
                 above problems. Specifically, we show, using a number
                 of case studies, that our profiler correctly identifies
                 methods that are important to optimize; in some cases
                 other profilers report that these methods are cold and
                 thus not worth optimizing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "bias; observer effect; profiling",
}

@Article{Nakaike:2010:LER,
  author =       "Takuya Nakaike and Maged M. Michael",
  title =        "Lock elision for read-only critical sections in
                 {Java}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "269--278",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806627",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "It is not uncommon in parallel workloads to encounter
                 shared data structures with read-mostly access
                 patterns, where operations that update data are
                 infrequent and most operations are read-only.
                 Typically, data consistency is guaranteed using mutual
                 exclusion or read-write locks. The cost of atomic
                 update of lock variables result in high overheads and
                 high cache coherence traffic under active sharing, thus
                 slowing down single thread performance and limiting
                 scalability.\par

                 In this paper, we present {\em SOLERO (Software
                 Optimistic Lock Elision for Read-Only critical
                 sections)}, a new lock implementation called for
                 optimizing read-only critical sections in Java based on
                 sequential locks. SOLERO is compatible with the
                 conventional lock implementation of Java. However,
                 unlike the conventional implementation, only critical
                 sections that may write data or have side effects need
                 to update lock variables, while read-only critical
                 sections need only read lock variables without writing
                 them. Each writing critical section changes the lock
                 value to a new value. Hence, a read-only critical
                 section is guaranteed to be consistent if the lock is
                 free and its value does not change from the beginning
                 to the end of the read-only critical section.\par

                 Using Java workloads including SPECjbb2005 and the
                 HashMap and TreeMap Java classes, we evaluate the
                 performance impact of applying SOLERO to read-mostly
                 locks. Our experimental results show performance
                 improvements across the board, often substantial, in
                 both single thread speed and scalability over the
                 conventional lock implementation (mutual exclusion) and
                 read-write locks. SOLERO improves the performance of
                 SPECjbb2005 by 3-5\% on single and multiple threads.
                 The results using the HashMap and TreeMap benchmarks
                 show that SOLERO outperforms the conventional lock
                 implementation and read-write locks by substantial
                 multiples on multi-threads.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "java; just-in-time compiler; lock; lock elision;
                 monitor; optimization; synchronization",
}

@Article{Namjoshi:2010:NOP,
  author =       "Manjiri A. Namjoshi and Prasad A. Kulkarni",
  title =        "Novel online profiling for virtual machines",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "7",
  pages =        "133--144",
  month =        jul,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1735997.1736016",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:01 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Application {\em profiling\/} is a popular technique
                 to improve program performance based on its behavior.
                 {\em Offline\/} profiling, although beneficial for
                 several applications, fails in cases where prior
                 program runs may not be feasible, or if changes in
                 input cause the profile to not match the behavior of
                 the actual program run. Managed languages, like Java
                 and C\\#, provide a unique opportunity to overcome the
                 drawbacks of offline profiling by generating the
                 profile information online during the current program
                 run. Indeed, online profiling is extensively used in
                 current VMs, especially during selective compilation to
                 improve program {\em startup\/} performance, as well as
                 during other feedback-directed optimizations.\par

                 In this paper we illustrate the drawbacks of the
                 current {\em reactive\/} mechanism of online profiling
                 during selective compilation. Current VM profiling
                 mechanisms are slow -- thereby delaying associated
                 transformations, and estimate future behavior based on
                 the program's immediate past -- leading to potential
                 misspeculation that limit the benefits of compilation.
                 We show that these drawbacks produce an average
                 performance loss of over 14.5\% on our set of benchmark
                 programs, over an {\em ideal offline\/} approach that
                 accurately compiles the hot methods early. We then
                 propose and evaluate the potential of a novel strategy
                 to achieve similar performance benefits with an online
                 profiling approach. Our new online profiling strategy
                 uses early determination of loop iteration bounds to
                 predict future method hotness. We explore and present
                 promising results on the potential, feasibility, and
                 other issues involved for the successful implementation
                 of this approach.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "java; online profiling; virtual machines",
}

@Article{Nasseri:2010:CMR,
  author =       "E. Nasseri and S. Counsell and M. Shepperd",
  title =        "Class movement and re-location: an empirical study of
                 {Java} inheritance evolution",
  journal =      j-J-SYST-SOFTW,
  volume =       "83",
  number =       "2",
  pages =        "303--315",
  month =        feb,
  year =         "2010",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Tue Sep 7 07:27:05 MDT 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01641212",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of systems and software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Misc{Nourie:2010:REJ,
  author =       "D. Nourie and M. McCloskey",
  title =        "Regular Expressions and the {Java} Programming
                 Language",
  howpublished = "Web report",
  year =         "2010",
  bibdate =      "Wed Sep 09 10:06:46 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/string-matching.bib",
  URL =          "http://java.sun.com/developer/technicalArticles/releases/1.4regex",
  acknowledgement = ack-nhfb,
}

@Article{Odaira:2010:ERT,
  author =       "Rei Odaira and Kazunori Ogata and Kiyokuni Kawachiya
                 and Tamiya Onodera and Toshio Nakatani",
  title =        "Efficient runtime tracking of allocation sites in
                 {Java}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "7",
  pages =        "109--120",
  month =        jul,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837854.1736014",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:01 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Tracking the allocation site of every object at
                 runtime is useful for reliable, optimized Java. To be
                 used in production environments, the tracking must be
                 accurate with minimal speed loss. Previous approaches
                 suffer from performance degradation due to the
                 additional field added to each object or track the
                 allocation sites only probabilistically. We propose two
                 novel approaches to track the allocation sites of every
                 object in Java with only a 1.0\% slow-down on average.
                 Our first approach, the {\em
                 Allocation-Site-as-a-Hash-code (ASH) Tracker}, encodes
                 the allocation site ID of an object into the hash code
                 field of its header by regarding the ID as part of the
                 hash code. ASH Tracker avoids an excessive increase in
                 hash code collisions by dynamically shrinking the
                 bit-length of the ID as more and more objects are
                 allocated at that site. For those Java VMs without the
                 hash code field, our second approach, the {\em
                 Allocation-Site-via-a-Class-pointer (ASC) Tracker},
                 makes the class pointer field in an object header refer
                 to the allocation site structure of the object, which
                 in turn points to the actual class structure. ASC
                 Tracker mitigates the indirection overhead by
                 constant-class-field duplication and allocation-site
                 equality checks. While a previous approach of adding a
                 4-byte field caused up to 14.4\% and an average 5\%
                 slowdown, both ASH and ASC Trackers incur at most a
                 2.0\% and an average 1.0\% loss. We demonstrate the
                 usefulness of our low-overhead trackers by an
                 allocation-site-aware memory leak detector and
                 allocation-site-based pretenuring in generational GC.
                 Our pretenuring achieved on average 1.8\% and up to
                 11.8\% speedups in SPECjvm2008.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "allocation site; hash code; memory allocation",
}

@Article{Ogata:2010:SJN,
  author =       "Kazunori Ogata and Dai Mikurube and Kiyokuni Kawachiya
                 and Scott Trent and Tamiya Onodera",
  title =        "A study of {Java}'s non-{Java} memory",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "191--204",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869477",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Pironti:2010:PCJ,
  author =       "Alfredo Pironti and Riccardo Sisto",
  title =        "Provably correct {Java} implementations of {Spi
                 Calculus} security protocols specifications",
  journal =      j-COMPUT-SECUR,
  volume =       "29",
  number =       "3",
  pages =        "302--314",
  month =        may,
  year =         "2010",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:20 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167404809000832",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Pitter:2010:RTJ,
  author =       "Christof Pitter and Martin Schoeberl",
  title =        "A real-time {Java} chip-multiprocessor",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "9:1--9:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814548",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Chip-multiprocessors are an emerging trend for
                 embedded systems. In this article, we introduce a
                 real-time Java multiprocessor called JopCMP. It is a
                 symmetric shared-memory multiprocessor, and consists of
                 up to eight Java Optimized Processor (JOP) cores, an
                 arbitration control device, and a shared memory. All
                 components are interconnected via a system on chip bus.
                 The arbiter synchronizes the access of multiple CPUs to
                 the shared main memory. In this article, three
                 different arbitration policies are presented,
                 evaluated, and compared with respect to their real-time
                 and average-case performance: a fixed priority, a
                 fair-based, and a time-sliced arbiter.\par

                 Tasks running on different CPUs of a
                 chip-multiprocessor (CMP) influence each others'
                 execution times when accessing a shared memory.
                 Therefore, the system needs an arbiter that is able to
                 limit the worst-case execution time of a task running
                 on a CPU, even though tasks executing simultaneously on
                 other CPUs access the main memory. Our research shows
                 that timing analysis is in fact possible for
                 homogeneous multiprocessor systems with a shared
                 memory. The timing analysis of tasks, executing on the
                 CMP using time-sliced memory arbitration, leads to
                 viable worst-case execution time bounds.\par

                 The time-sliced arbiter divides the memory access time
                 into equal time slots, one time slot for each CPU. This
                 memory arbitration scheme allows for a calculation of
                 upper bounds of Java application worst-case execution
                 times, depending on the number of CPUs, the time slot
                 size, and the memory access time. Examples of
                 worst-case execution time calculation are presented,
                 and the analyzed results of a real-world application
                 task are compared to measured execution time results.
                 Finally, we evaluate the tradeoffs when using a
                 time-predictable solution compared to using
                 average-case optimized chip-multiprocessors, applying
                 three different benchmarks. These experiments are
                 carried out by executing the programs on the CMP
                 prototype.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "Java processor; multiprocessor; Real-time system;
                 shared memory; worst-case execution time",
}

@Article{Pizlo:2010:SFT,
  author =       "Filip Pizlo and Lukasz Ziarek and Petr Maj and Antony
                 L. Hosking and Ethan Blanton and Jan Vitek",
  title =        "{SCHISM}: fragmentation-tolerant real-time garbage
                 collection",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "146--159",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806615",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Managed languages such as Java and C\# are being
                 considered for use in hard real-time systems. A hurdle
                 to their widespread adoption is the lack of garbage
                 collection algorithms that offer predictable
                 space-and-time performance in the face of
                 fragmentation. We introduce SCHISM/CMR, a new
                 concurrent and real-time garbage collector that is
                 fragmentation tolerant and guarantees time-and-space
                 worst-case bounds while providing good throughput.
                 SCHISM/CMR combines mark-region collection of
                 fragmented objects and arrays (arraylets) with separate
                 replication-copying collection of immutable arraylet
                 spines, so as to cope with external fragmentation when
                 running in small heaps. We present an implementation of
                 SCHISM/CMR in the Fiji VM, a high-performance Java
                 virtual machine for mission-critical systems, along
                 with a thorough experimental evaluation on a wide
                 variety of architectures, including server-class and
                 embedded systems. The results show that SCHISM/CMR
                 tolerates fragmentation better than previous schemes,
                 with a much more acceptable throughput penalty.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "fragmentation; mark-region; mark-sweep; real-time;
                 replication-copying",
}

@Article{Richards:2010:ADB,
  author =       "Gregor Richards and Sylvain Lebresne and Brian Burg
                 and Jan Vitek",
  title =        "An analysis of the dynamic behavior of {JavaScript}
                 programs",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "1--12",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806598",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The JavaScript programming language is widely used for
                 web programming and, increasingly, for general purpose
                 computing. As such, improving the correctness, security
                 and performance of JavaScript applications has been the
                 driving force for research in type systems, static
                 analysis and compiler techniques for this language.
                 Many of these techniques aim to reign in some of the
                 most dynamic features of the language, yet little seems
                 to be known about how programmers actually utilize the
                 language or these features. In this paper we perform an
                 empirical study of the dynamic behavior of a corpus of
                 widely-used JavaScript programs, and analyze how and
                 why the dynamic features are used. We report on the
                 degree of dynamism that is exhibited by these
                 JavaScript programs and compare that with assumptions
                 commonly made in the literature and accepted industry
                 benchmark suites.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "dynamic behavior; dynamic metrics; execution tracing;
                 javascript; program analysis",
}

@Article{Sartor:2010:ZRD,
  author =       "Jennifer B. Sartor and Stephen M. Blackburn and Daniel
                 Frampton and Martin Hirzel and Kathryn S. McKinley",
  title =        "{Z}-rays: divide arrays and conquer speed and
                 flexibility",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "471--482",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806649",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Arrays are the ubiquitous organization for indexed
                 data. Throughout programming language evolution,
                 implementations have laid out arrays contiguously in
                 memory. This layout is problematic in space and time.
                 It causes heap fragmentation, garbage collection pauses
                 in proportion to array size, and wasted memory for
                 sparse and over-provisioned arrays. Because of array
                 virtualization in managed languages, an array layout
                 that consists of indirection pointers to fixed-size
                 discontiguous memory blocks can mitigate these problems
                 transparently. This design however incurs significant
                 overhead, but is justified when real-time deadlines and
                 space constraints trump performance.\par

                 This paper proposes {\em z-rays}, a discontiguous array
                 design with flexibility and efficiency. A z-ray has a
                 spine with indirection pointers to fixed-size memory
                 blocks called {\em arraylets}, and uses five
                 optimizations: (1) inlining the first N array bytes
                 into the spine, (2) lazy allocation, (3) zero
                 compression, (4) fast array copy, and (5) arraylet
                 copy-on-write. Whereas discontiguous arrays in prior
                 work improve responsiveness and space efficiency,
                 z-rays combine time efficiency and flexibility. On
                 average, the best z-ray configuration performs within
                 12.7\% of an unmodified Java Virtual Machine on 19
                 benchmarks, whereas previous designs have {\em two to
                 three times\/} higher overheads. Furthermore, language
                 implementers can configure z-ray optimizations for
                 various design goals. This combination of performance
                 and flexibility creates a better building block for
                 past and future array optimization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "arraylets; arrays; compression; heap; z-rays",
}

@Article{Schmidt:2010:ERA,
  author =       "Richard B. Schmidt",
  title =        "Experience report: {Ada} \& {Java} integration in the
                 {FAA}'s {ERAM SWIM} program",
  journal =      j-SIGADA-LETTERS,
  volume =       "30",
  number =       "3",
  pages =        "33--34",
  month =        dec,
  year =         "2010",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/1879097.1879075",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Mon Jan 10 13:57:43 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGAda Ada Letters",
}

@Article{Schoeberl:2010:NRT,
  author =       "Martin Schoeberl and Wolfgang Puffitsch",
  title =        "Nonblocking real-time garbage collection",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "6:1--6:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814545",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "A real-time garbage collector has to fulfill two basic
                 properties: ensure that programs with bounded
                 allocation rates do not run out of memory and provide
                 short blocking times. Even for incremental garbage
                 collectors, two major sources of blocking exist,
                 namely, root scanning and heap compaction. Finding root
                 nodes of an object graph is an integral part of tracing
                 garbage collectors and cannot be circumvented. Heap
                 compaction is necessary to avoid probably unbounded
                 heap fragmentation, which in turn would lead to
                 unacceptably high memory consumption. In this article,
                 we propose solutions to both issues.\par

                 Thread stacks are local to a thread, and root scanning,
                 therefore, only needs to be atomic with respect to the
                 thread whose stack is scanned. This fact can be
                 utilized by either blocking only the thread whose stack
                 is scanned, or by delegating the responsibility for
                 root scanning to the application threads. The latter
                 solution eliminates blocking due to root scanning
                 completely. The impact of this solution on the
                 execution time of a garbage collector is shown for two
                 different variants of such a root scanning
                 algorithm.\par

                 During heap compaction, objects are copied. Copying is
                 usually performed atomically to avoid interference with
                 application threads, which could render the state of an
                 object inconsistent. Copying of large objects and
                 especially large arrays introduces long blocking times
                 that are unacceptable for real-time systems. In this
                 article, an interruptible copy unit is presented that
                 implements nonblocking object copy. The unit can be
                 interrupted after a single word move.\par

                 We evaluate a real-time garbage collector that uses the
                 proposed techniques on a Java processor. With this
                 garbage collector, it is possible to run high-priority
                 hard real-time tasks at 10 kHz parallel to the garbage
                 collection task on a 100 MHz system.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "Garbage collection; nonblocking copying; real-time;
                 root scanning",
}

@Article{Schoeberl:2010:WCE,
  author =       "Martin Schoeberl and Wolfgang Puffitsch and Rasmus
                 Ulslev Pedersen and Benedikt Huber",
  title =        "Worst-case execution time analysis for a {Java}
                 processor",
  journal =      j-SPE,
  volume =       "40",
  number =       "6",
  pages =        "507--542",
  month =        may,
  year =         "2010",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.968",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Jun 21 17:09:46 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "6 Apr 2010",
}

@Article{Schultz:2010:WAJ,
  author =       "Christopher Schultz",
  title =        "{Web} applications with {Java\slash JSP}",
  journal =      j-LINUX-J,
  volume =       "2010",
  number =       "197",
  pages =        "4:1--4:??",
  month =        sep,
  year =         "2010",
  CODEN =        "LIJOFX",
  ISSN =         "1075-3583 (print), 1938-3827 (electronic)",
  ISSN-L =       "1075-3583",
  bibdate =      "Tue Nov 23 11:41:55 MST 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "Linux Journal",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J508",
}

@Article{Sciampacone:2010:EMS,
  author =       "R. A. Sciampacone and V. Sundaresan and D. Maier and
                 T. Gray-Donald",
  title =        "Exploitation of multicore systems in a {Java} virtual
                 machine",
  journal =      j-IBM-JRD,
  volume =       "54",
  number =       "5",
  pages =        "1:1--1:11",
  month =        "????",
  year =         "2010",
  CODEN =        "IBMJAE",
  DOI =          "https://doi.org/10.1147/JRD.2010.2057911",
  ISSN =         "0018-8646 (print), 2151-8556 (electronic)",
  ISSN-L =       "0018-8646",
  bibdate =      "Sun Feb 20 14:29:19 MST 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.research.ibm.com/journal/",
  acknowledgement = ack-nhfb,
  fjournal =     "IBM Journal of Research and Development",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5288520",
}

@Article{Servetto:2010:MMC,
  author =       "Marco Servetto and Elena Zucca",
  title =        "{MetaFJig}: a meta-circular composition language for
                 {Java}-like classes",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "464--483",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869498",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Siebert:2010:CPR,
  author =       "Fridtjof Siebert",
  title =        "Concurrent, parallel, real-time garbage-collection",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "11--20",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837855.1806654",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "With the current developments in CPU implementations,
                 it becomes obvious that ever more parallel multicore
                 systems will be used even in embedded controllers that
                 require real-time guarantees. When garbage collection
                 is used in these systems, parallel and concurrent
                 garbage collection brings important performance
                 advantages in the average case. In a real-time system,
                 however, guarantees on the GC's performance in the
                 worst case are required.\par

                 This paper explains how the single-CPU real-time GC of
                 the Java implementation JamaicaVM was changed to make
                 it a hard real-time garbage collector that is parallel
                 and concurrent. Parallel means that an arbitrary number
                 of CPUs may perform GC work in parallel, while
                 concurrent means that the GC work can be performed
                 concurrently to the application code without
                 pre-empting the application. In addition, the single
                 units of work that this garbage collector has to
                 perform are very small and uniform and the total amount
                 of GC work is bounded by a function of the heap size,
                 such that it becomes possible for any application that
                 has a bounded amount of reachable memory to run the GC
                 work such that sufficient GC progress can be ensured
                 for the application never to run out of heap space.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "concurrent; garbage collection; java; multicore;
                 parallel; real-time",
}

@Article{Singer:2010:EGC,
  author =       "Jeremy Singer and Richard E. Jones and Gavin Brown and
                 Mikel Luj{\'a}n",
  title =        "The economics of garbage collection",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "103--112",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806651.1806669",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "This paper argues that economic theory can improve our
                 understanding of memory management. We introduce the
                 {\em allocation curve}, as an analogue of the demand
                 curve from microeconomics. An allocation curve for a
                 program characterises how the amount of garbage
                 collection activity required during its execution
                 varies in relation to the heap size associated with
                 that program. The standard treatment of microeconomic
                 demand curves (shifts and elasticity) can be applied
                 directly and intuitively to our new allocation curves.
                 As an application of this new theory, we show how {\em
                 allocation elasticity\/} can be used to control the
                 heap growth rate for variable sized heaps in Jikes
                 RVM.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "allocation curve; elasticity; garbage collection;
                 java; memory management; microeconomics",
}

@Article{Smans:2010:AVJ,
  author =       "Jan Smans and Bart Jacobs and Frank Piessens and
                 Wolfram Schulte",
  title =        "Automatic verification of {Java} programs with dynamic
                 frames",
  journal =      j-FORM-ASP-COMPUT,
  volume =       "22",
  number =       "3--4",
  pages =        "423--457",
  month =        may,
  year =         "2010",
  CODEN =        "FACME5",
  DOI =          "https://doi.org/10.1007/s00165-010-0148-1",
  ISSN =         "0934-5043 (print), 1433-299X (electronic)",
  ISSN-L =       "0934-5043",
  bibdate =      "Tue Mar 17 20:58:35 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/formaspcomput.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s00165-010-0148-1",
  acknowledgement = ack-nhfb,
  fjournal =     "Formal Aspects of Computing",
  journal-URL =  "http://link.springer.com/journal/165",
}

@Article{Spoto:2010:MSL,
  author =       "Fausto Spoto and {\'E}tienne Payet",
  title =        "Magic-sets for localised analysis of {Java} bytecode",
  journal =      j-HIGHER-ORDER-SYMB-COMPUT,
  volume =       "23",
  number =       "1",
  pages =        "29--86",
  month =        mar,
  year =         "2010",
  CODEN =        "LSCOEX",
  ISSN =         "1388-3690 (print), 2212-0793 (electronic)",
  ISSN-L =       "1388-3690",
  bibdate =      "Tue Sep 6 16:06:25 MDT 2011",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=1388-3690&volume=23&issue=1;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=1388-3690&volume=23&issue=1&spage=29",
  acknowledgement = ack-nhfb,
  fjournal =     "Higher-Order and Symbolic Computation",
}

@Article{Spoto:2010:TAJ,
  author =       "Fausto Spoto and Fred Mesnard and {\'E}tienne Payet",
  title =        "A termination analyzer for {Java} bytecode based on
                 path-length",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "3",
  pages =        "8:1--8:70",
  month =        mar,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1709093.1709095",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:48 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "It is important to prove that supposedly terminating
                 programs actually terminate, particularly if those
                 programs must be run on critical systems or downloaded
                 into a client such as a mobile phone. Although
                 termination of computer programs is generally
                 undecidable, it is possible and useful to prove
                 termination of a large, nontrivial subset of the
                 terminating programs. In this article, we present our
                 termination analyzer for sequential Java bytecode,
                 based on a program property called {\em path-length}.
                 We describe the analyses which are needed before the
                 path-length can be computed such as sharing, cyclicity,
                 and aliasing. Then we formally define the path-length
                 analysis and prove it correct with respect to a
                 reference denotational semantics of the bytecode. We
                 show that a constraint logic program {\em P\/}$_{{\em
                 CLP \/ }}$ can be built from the result of the
                 path-length analysis of a Java bytecode program {\em
                 P\/} and formally prove that if {\em P\/}$_{{\em CLP \/
                 }}$ terminates, then {\em P\/} also terminates. Hence a
                 termination prover for constraint logic programs can be
                 applied to prove the termination of {\em P}. We
                 conclude with some discussion of the possibilities and
                 limitations of our approach. Ours is the first existing
                 termination analyzer for Java bytecode dealing with any
                 kind of data structures dynamically allocated on the
                 heap and which does not require any help or annotation
                 on the part of the user.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
  keywords =     "Abstract interpretation; Java; Java bytecode;
                 termination analysis",
}

@Article{Spring:2010:RAI,
  author =       "Jesper Honig Spring and Filip Pizlo and Jean Privat
                 and Rachid Guerraoui and Jan Vitek",
  title =        "{Reflexes}: {Abstractions} for integrating highly
                 responsive tasks into {Java} applications",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "4:1--4:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814543",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Achieving submillisecond response times in a managed
                 language environment such as Java or C\# requires
                 overcoming significant challenges. In this article, we
                 propose Reflexes, a programming model and runtime
                 system infrastructure that lets developers seamlessly
                 mix highly responsive tasks and timing-oblivious Java
                 applications. Thus enabling gradual addition of
                 real-time features, to a non-real-time application
                 without having to resort to recoding the real-time
                 parts in a different language such as C or Ada.
                 Experiments with the Reflex prototype implementation
                 show that it is possible to run a real-time task with a
                 period of 45$ \mu $ s with an accuracy of 99.996\%
                 (only 0.001\% worse than the corresponding C
                 implementation) in the presence of garbage collection
                 and heavy load ordinary Java threads.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "Java virtual machine; memory management; Real-time
                 systems",
}

@Book{Stark:2010:BIA,
  author =       "Jonathan Stark",
  title =        "Building {iPhone} apps with {HTML}, {CSS}, and
                 {JavaScript}: Making {App Store} apps without
                 {Objective-C} or {Cocoa}",
  publisher =    pub-ORA-MEDIA,
  address =      pub-ORA-MEDIA:adr,
  pages =        "xv + 166",
  year =         "2010",
  ISBN =         "1-4493-8023-9, 0-596-80578-0",
  ISBN-13 =      "978-1-4493-8023-6, 978-0-596-80578-4",
  LCCN =         "????",
  bibdate =      "Wed Jul 28 09:12:55 MDT 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.bibsys.no:2100/BIBSYS",
  acknowledgement = ack-nhfb,
  subject =      "Cascading Style Sheets; HTML (document markup
                 language); computer software; development; iPhone
                 (Smartphone); programming; JavaScript (computer program
                 language)",
}

@Book{Stefanov:2010:JP,
  author =       "Stoyan Stefanov",
  title =        "{JavaScript} patterns",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "xvi + 216",
  year =         "2010",
  ISBN =         "1-4493-9911-8 (paperback), 0-596-80675-2 (paperback)",
  ISBN-13 =      "978-1-4493-9911-5 (paperback), 978-0-596-80675-0
                 (paperback)",
  LCCN =         "QA76.73.J39 S734 2010",
  bibdate =      "Wed Apr 27 11:12:26 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 melvyl.cdlib.org:210/CDL90",
  acknowledgement = ack-nhfb,
  subject =      "JavaScript (Computer program language); Software
                 patterns; Web site development",
}

@Article{Steimann:2010:TMI,
  author =       "Friedrich Steimann and Thomas Pawlitzki and Sven Apel
                 and Christian K{\"a}stner",
  title =        "Types and modularity for implicit invocation with
                 implicit announcement",
  journal =      j-TOSEM,
  volume =       "20",
  number =       "1",
  pages =        "1:1--1:??",
  month =        jun,
  year =         "2010",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/1767751.1767752",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Jul 6 16:17:49 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Through implicit invocation, procedures are called
                 without explicitly referencing them. Implicit
                 announcement adds to this implicitness by not only
                 keeping implicit which procedures are called, but also
                 where or when --- under implicit invocation with
                 implicit announcement, the call site contains no signs
                 of that, or what it calls. Recently, aspect-oriented
                 programming has popularized implicit invocation with
                 implicit announcement as a possibility to separate
                 concerns that lead to interwoven code if conventional
                 programming techniques are used. However, as has been
                 noted elsewhere, as currently implemented it
                 establishes strong implicit dependencies between
                 components, hampering independent software development
                 and evolution. To address this problem, we present a
                 type-based modularization of implicit invocation with
                 implicit announcement that is inspired by how
                 interfaces and exceptions are realized in Java. By
                 extending an existing compiler and by rewriting several
                 programs to make use of our proposed language
                 constructs, we found that the imposed declaration
                 clutter tends to be moderate; in particular, we found
                 that, for general applications of implicit invocation
                 with implicit announcement, fears that programs
                 utilizing our form of modularization become
                 unreasonably verbose are unjustified.",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
  keywords =     "aspect-oriented programming; event-driven programming;
                 Implicit invocation; modularity; publish/subscribe;
                 typing",
}

@Article{Sutherland:2010:CTC,
  author =       "Dean F. Sutherland and William L. Scherlis",
  title =        "Composable thread coloring",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "5",
  pages =        "233--244",
  month =        may,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1693453.1693485",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:39:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "This paper introduces the language-independent concept
                 of ``thread usage policy.'' Many multi-threaded
                 software systems contain policies that regulate
                 associations among threads, executable code, and
                 potentially shared state. A system, for example, may
                 constrain which threads are permitted to execute
                 particular code segments, usually as a means to
                 constrain those threads from accessing or writing
                 particular elements of state. These policies ensure
                 properties such as state confinement or reader/writer
                 constraints, often without recourse to locking or
                 transaction discipline.\par

                 Our approach allows developers to concisely document
                 their thread usage policies in a manner that enables
                 the use of sound scalable analysis to assess
                 consistency of policy and as-written code. This paper
                 identifies the key semantic concepts of our thread
                 coloring language and illustrates how to use its
                 succinct source-level annotations to express models of
                 thread usage policies, following established annotation
                 conventions for Java.\par

                 We have built a prototype static analysis tool,
                 implemented as an integrated development environment
                 plug-in (for the Eclipse IDE), that notifies developers
                 of discrepancies between policy annotations and
                 as-written code. Our analysis technique uses several
                 underlying algorithms based on abstract interpretation,
                 call-graphs, and type inference. The resulting overall
                 analysis is both sound and composable. We have used
                 this prototype analysis tool in case studies to model
                 and analyze more than a million lines of code.\par

                 Our validation process included field trials on a wide
                 variety of complex large-scale production code selected
                 by the host organizations. Our in-field experience led
                 us to focus on potential adoptability by real-world
                 developers. We have developed techniques that can
                 reduce annotation density to less than one line per
                 thousand lines of code (KLOC). In addition, the
                 prototype analysis tool supports an incremental and
                 iterative approach to modeling and analysis. This
                 approach enabled field trial partners to directly
                 target areas of greatest concern and to achieve useful
                 results within a few hours.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "annotation; Java; keywords: state consistency;
                 multicore; race conditions; state confinement; thread
                 policy",
}

@Article{Tatsubori:2010:EJT,
  author =       "Michiaki Tatsubori and Akihiko Tozawa and Toyotaro
                 Suzumura and Scott Trent and Tamiya Onodera",
  title =        "Evaluation of a just-in-time compiler retrofitted for
                 {PHP}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "7",
  pages =        "121--132",
  month =        jul,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1735997.1736015",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:01 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Programmers who develop Web applications often use
                 dynamic scripting languages such as Perl, PHP, Python,
                 and Ruby. For general purpose scripting language usage,
                 interpreter-based implementations are efficient and
                 popular but the server-side usage for Web application
                 development implies an opportunity to significantly
                 enhance Web server throughput. This paper summarizes a
                 study of the optimization of PHP script processing. We
                 developed a PHP processor, P9, by adapting an existing
                 production-quality just-in-time (JIT) compiler for a
                 Java virtual machine, for which optimization
                 technologies have been well-established, especially for
                 server-side application. This paper describes and
                 contrasts microbenchmarks and SPECweb2005 benchmark
                 results for a well-tuned configuration of a traditional
                 PHP interpreter and our JIT compiler-based
                 implementation, P9. Experimental results with the
                 microbenchmarks show 2.5-9.5x advantage with P9, and
                 the SPECweb2005 measurements show about 20-30\%
                 improvements. These results show that the acceleration
                 of dynamic scripting language processing does matter in
                 a realistic Web application server environment. CPU
                 usage profiling shows our simple JIT compiler
                 introduction reduces the PHP core runtime overhead from
                 45\% to 13\% for a SPECweb2005 scenario, implying that
                 further improvements of dynamic compilers would provide
                 little additional return unless other major overheads
                 such as heavy memory copy between the language runtime
                 and Web server frontend are reduced.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "dynamic scripting languages; just-in-time compiler;
                 php",
}

@Article{Teng:2010:TPA,
  author =       "Q. M. Teng and H. C. Wang and Z. Xiao and P. F.
                 Sweeney and E. Duesterwald",
  title =        "{THOR}: a performance analysis tool for {Java}
                 applications running on multicore systems",
  journal =      j-IBM-JRD,
  volume =       "54",
  number =       "5",
  pages =        "4:1--4:17",
  month =        "????",
  year =         "2010",
  CODEN =        "IBMJAE",
  DOI =          "https://doi.org/10.1147/JRD.2010.2058481",
  ISSN =         "0018-8646 (print), 2151-8556 (electronic)",
  ISSN-L =       "0018-8646",
  bibdate =      "Sun Feb 20 14:29:19 MST 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.research.ibm.com/journal/",
  acknowledgement = ack-nhfb,
  fjournal =     "IBM Journal of Research and Development",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5288520",
}

@Article{Titzer:2010:ICR,
  author =       "Ben L. Titzer and Thomas W{\"u}rthinger and Doug Simon
                 and Marcelo Cintra",
  title =        "Improving compiler-runtime separation with {XIR}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "7",
  pages =        "39--50",
  month =        jul,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837854.1736005",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:01 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Intense research on virtual machines has highlighted
                 the need for flexible software architectures that allow
                 quick evaluation of new design and implementation
                 techniques. The interface between the compiler and
                 runtime system is a principal factor in the flexibility
                 of both components and is critical to enabling rapid
                 pursuit of new optimizations and features. Although
                 many virtual machines have demonstrated modularity for
                 many components, significant dependencies often remain
                 between the compiler and the runtime system components
                 such as the object model and memory management system.
                 This paper addresses this challenge with a carefully
                 designed strict compiler-runtime interface and the XIR
                 language. Instead of the compiler backend lowering
                 object operations to machine operations using
                 hard-wired runtime-specific logic, XIR allows the
                 runtime system to implement this logic, simultaneously
                 simplifying and separating the backend from
                 runtime-system details. In this paper we describe the
                 design and implementation of this compiler-runtime
                 interface and the XIR language in the C1X dynamic
                 compiler, a port of the HotSpotTM Client compiler. Our
                 results show a significant reduction in backend
                 complexity with XIR and an overall reduction in the
                 compiler-runtime interface complexity while still
                 generating comparable quality code with only minor
                 impact on compilation time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "compilers; intermediate representations; java; JIT;
                 lowering; object model; register allocation; runtime
                 interface; software architecture; virtual machines",
}

@Article{Torlak:2010:MCA,
  author =       "Emina Torlak and Mandana Vaziri and Julian Dolby",
  title =        "{MemSAT}: checking axiomatic specifications of memory
                 models",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "341--350",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806635",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Memory models are hard to reason about due to their
                 complexity, which stems from the need to strike a
                 balance between ease-of-programming and allowing
                 compiler and hardware optimizations. In this paper, we
                 present an automated tool, MemSAT, that helps in
                 debugging and reasoning about memory models. Given an
                 axiomatic specification of a memory model and a
                 multi-threaded test program containing assertions,
                 MemSAT outputs a trace of the program in which both the
                 assertions and the memory model axioms are satisfied,
                 if one can be found. The tool is fully automatic and is
                 based on a SAT solver. If it cannot find a trace, it
                 outputs a minimal subset of the memory model and
                 program constraints that are unsatisfiable. We used
                 MemSAT to check several existing memory models against
                 their published test cases, including the current Java
                 Memory Model by Manson et al. and a revised version of
                 it by Sevcik and Aspinall. We found subtle
                 discrepancies between what was expected and the actual
                 results of test programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "axiomatic specifications; bounded model checking;
                 memory models; sat",
}

@Article{Ugawa:2010:IRB,
  author =       "Tomoharu Ugawa and Hideya Iwasaki and Taiichi Yuasa",
  title =        "Improved replication-based incremental garbage
                 collection for embedded systems",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "73--82",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806651.1806664",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "We have developed an incremental compacting garbage
                 collector for embedded Java systems. The collector
                 divides the heap into equal sized pages and uses the
                 segregated free lists for fast allocation. Collectors
                 that have such a heap layout have a problem of
                 fragmentation in allocating objects larger than the
                 page size. We solve this problem by using the
                 replication-based incremental compaction. The compactor
                 evacuates all objects in one area, the evacuation area,
                 of the heap, thereby creating a large chunk of free
                 space. We developed an algorithm for choosing the
                 evacuation area that effectively cures fragmentation.
                 The compactor does not use any read-barriers. Instead,
                 it uses a technique similar to the replication-based
                 incremental copying collection. This needs forwarding
                 pointers for all evacuated objects. Rather than
                 introducing an extra field for each object, we use a
                 hash table to store forwarding pointers.\par

                 Evaluation of this garbage collector implemented in
                 Sun's J2ME Java Virtual Machine showed that all the
                 benchmarks used were able to run without memory
                 starvation using the heap sizes of only 151\%-286\% of
                 the maximum amount of live data plus 8 KB of the hash
                 table. Experiments on a desktop computer, though it is
                 not a platform for embedded systems, showed that the
                 maximum pause time was shorter than 200 &\#956;s, which
                 was comparable to that of our implementation of the
                 snapshot-at-the-beginning collector without compaction.
                 On an ARM processor, the runtime overhead was 1\%-16\%
                 with 8.0\% on average compared to the mark-sweep
                 collector.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "compaction; embedded systems; fragmentation; garbage
                 collection; real-time garbage collection",
}

@Article{Upadhyaya:2010:UDS,
  author =       "Gautam Upadhyaya and Samuel P. Midkiff and Vijay S.
                 Pai",
  title =        "Using data structure knowledge for efficient lock
                 generation and strong atomicity",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "5",
  pages =        "281--292",
  month =        may,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1693453.1693490",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:39:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "To achieve high-performance on multicore systems,
                 sharedmemory parallel languages must efficiently
                 implement atomic operations. The commonly used and
                 studied paradigms for atomicity are fine-grained
                 locking, which is both difficult to program and
                 error-prone; optimistic software transactions, which
                 require substantial overhead to detect and recover from
                 atomicity violations; and compiler-generation of locks
                 from programmer-specified atomic sections, which leads
                 to serialization whenever imprecise pointer analysis
                 suggests the mere possibility of a conflicting
                 operation. This paper presents a new strategy for
                 compiler-generated locking that uses data structure
                 knowledge to facilitate more precise alias and lock
                 generation analyses and reduce unnecessary
                 serialization. Implementing and evaluating these ideas
                 in the Java language shows that the new strategy
                 achieves eight-thread speedups of 0.83 to 5.9 for the
                 five STAMP benchmarks studied, outperforming software
                 transactions on all but one benchmark, and nearly
                 matching programmer-specified fine-grained locks on all
                 but one benchmark. The results also indicate that
                 compiler knowledge of data structures improves the
                 effectiveness of compiler analysis, boosting
                 eight-thread performance by up to 300\%. Further, the
                 new analysis allows for software support of strong
                 atomicity with less than 1\% overhead for two
                 benchmarks and less than 20\% for three others. The
                 strategy also nearly matches the performance of
                 programmer-specified fine-grained locks for the
                 SPECjbb2000 benchmark, which has traditionally not been
                 amenable to static analyses.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "automatic lock generation; parallel programming;
                 transactional memory",
}

@Article{VanCutsem:2010:PDP,
  author =       "Tom {Van Cutsem} and Mark S. Miller",
  title =        "Proxies: design principles for robust object-oriented
                 intercession {APIs}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "12",
  pages =        "59--72",
  month =        dec,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1899661.1869638",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Dec 15 10:25:15 MST 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Proxies are a powerful approach to implement
                 meta-objects in object-oriented languages without
                 having to resort to metacircular interpretation. We
                 introduce such a meta-level API based on proxies for
                 Javascript. We simultaneously introduce a set of design
                 principles that characterize such APIs in general, and
                 compare similar APIs of other languages in terms of
                 these principles. We highlight how principled
                 proxy-based APIs improve code robustness by avoiding
                 interference between base and meta-level code that
                 occur in more common reflective intercession
                 mechanisms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{VanderHart:2010:PC,
  author =       "Luke VanderHart and Stuart Sierra",
  title =        "Practical {Clojure}",
  publisher =    pub-APRESS,
  address =      pub-APRESS:adr,
  pages =        "xvi + 210",
  year =         "2010",
  ISBN =         "1-4302-7231-7, 1-4302-7230-9 (e-book)",
  ISBN-13 =      "978-1-4302-7231-1, 978-1-4302-7230-4 (e-book)",
  LCCN =         "????",
  bibdate =      "Fri Nov 23 10:33:38 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/common-lisp.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "The expert's voice in open source",
  acknowledgement = ack-nhfb,
  subject =      "Java virtual machine; Clojure (Computer program
                 language)",
}

@Book{VanLoan:2010:ITC,
  author =       "Charles F. {Van Loan} and K.-Y. Daisy Fan",
  title =        "Insight through computing: a {MATLAB} introduction to
                 computational science and engineering",
  publisher =    pub-SIAM,
  address =      pub-SIAM:adr,
  pages =        "xviii + 434",
  year =         "2010",
  ISBN =         "0-89871-691-8",
  ISBN-13 =      "978-0-89871-691-7",
  LCCN =         "QA297 .V25 2010",
  bibdate =      "Fri Nov 16 10:03:00 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/matlab.bib;
                 http://www.math.utah.edu/pub/tex/bib/numana2010.bib;
                 z3950.loc.gov:7090/Voyager",
  URL =          "http://www.loc.gov/catdir/enhancements/fy1007/2009030277-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1007/2009030277-d.html;
                 http://www.loc.gov/catdir/enhancements/fy1007/2009030277-t.html",
  acknowledgement = ack-nhfb,
  subject =      "Numerical analysis; Data processing; Science; Computer
                 simulation; Engineering mathematics; MATLAB",
  tableofcontents = "Preface \\
                 MATLAB glossary \\
                 Programming topics \\
                 Software \\
                 1. From formula to program \\
                 2. Limits and error \\
                 3. Approximation with fractions \\
                 4. The discrete versus the continuous \\
                 5. Abstraction \\
                 6. Randomness \\
                 7. The second dimension \\
                 8. Reordering \\
                 9. Search \\
                 10. Points, polygons and circles \\
                 11. Text file processing \\
                 12. The matrix: part II \\
                 13. Acoustic file processing \\
                 14. Divide and conquer \\
                 15. Optimization \\
                 Appendix A. Refined graphics \\
                 Appendix B. Mathematical facts \\
                 Appendix C. MATLAB, Java, and C \\
                 Appendix D. Exit interview \\
                 Index",
}

@Article{VanNieuwpoort:2010:SHL,
  author =       "Rob V. {Van Nieuwpoort} and Gosia Wrzesi{\'n}ska and
                 Ceriel J. H. Jacobs and Henri E. Bal",
  title =        "{Satin}: a high-level and efficient grid programming
                 model",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "3",
  pages =        "9:1--9:39",
  month =        mar,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1709093.1709096",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:46:48 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Computational grids have an enormous potential to
                 provide compute power. However, this power remains
                 largely unexploited today for most applications, except
                 trivially parallel programs. Developing parallel grid
                 applications simply is too difficult. Grids introduce
                 several problems not encountered before, mainly due to
                 the highly heterogeneous and dynamic computing and
                 networking environment. Furthermore, failures occur
                 frequently, and resources may be claimed by
                 higher-priority jobs at any time.\par

                 In this article, we solve these problems for an
                 important class of applications: divide-and-conquer. We
                 introduce a system called Satin that simplifies the
                 development of parallel grid applications by providing
                 a rich high-level programming model that completely
                 hides communication. All grid issues are transparently
                 handled in the runtime system, not by the programmer.
                 Satin's programming model is based on Java, features
                 spawn-sync primitives and shared objects, and uses
                 asynchronous exceptions and an abort mechanism to
                 support speculative parallelism.\par

                 To allow an efficient implementation, Satin
                 consistently exploits the idea that grids are
                 hierarchically structured. Dynamic load-balancing is
                 done with a novel cluster-aware scheduling algorithm
                 that hides the long wide-area latencies by overlapping
                 them with useful local work. Satin's shared object
                 model lets the application define the consistency model
                 it needs. If an application needs only loose
                 consistency, it does not have to pay high performance
                 penalties for wide-area communication and
                 synchronization.\par

                 We demonstrate how grid problems such as resource
                 changes and failures can be handled transparently and
                 efficiently. Finally, we show that adaptivity is
                 important in grids. Satin can increase performance
                 considerably by adding and removing compute resources
                 automatically, based on the application's requirements
                 and the utilization of the machines and networks in the
                 grid.\par

                 Using an extensive evaluation on real grids with up to
                 960 cores, we demonstrate that it is possible to
                 provide a simple high-level programming model for
                 divide-and-conquer applications, while achieving
                 excellent performance on grids. At the same time, we
                 show that the divide-and-conquer model scales better on
                 large systems than the master-worker approach, since it
                 has no single central bottleneck.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
  keywords =     "divide-and-conquer; Grid computing; programming
                 model",
}

@Article{Vechev:2010:PPC,
  author =       "Martin Vechev and Eran Yahav and Greta Yorsh",
  title =        "{PHALANX}: parallel checking of expressive heap
                 assertions",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "8",
  pages =        "41--50",
  month =        aug,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1837855.1806658",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:55:48 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Unrestricted use of heap pointers makes software
                 systems difficult to understand and to debug. To
                 address this challenge, we developed PHALANX -- a
                 practical framework for dynamically checking expressive
                 heap properties such as ownership, sharing and
                 reachability. PHALANX uses novel parallel algorithms to
                 efficiently check a wide range of heap properties
                 utilizing the available cores.\par

                 PHALANX runtime is implemented on top of IBM's Java
                 production virtual machine. This has enabled us to
                 apply our new techniques to real world software. We
                 checked expressive heap properties in various scenarios
                 and found the runtime support to be valuable for
                 debugging and program understanding. Further, our
                 experimental results on DaCapo and other benchmarks
                 indicate that evaluating heap queries using parallel
                 algorithms can lead to significant performance
                 improvements, often resulting in linear speedups as the
                 number of cores increases.\par

                 To encourage adoption by programmers, we extended an
                 existing JML compiler to translate expressive JML
                 assertions about the heap into their efficient
                 implementation provided by PHALANX. To debug her
                 program, a programmer can annotate it with expressive
                 heap assertions in JML, that are efficiently checked by
                 PHALANX.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "ownership; parallel garbage collector; virtual
                 machine",
}

@Article{Villazon:2010:ARA,
  author =       "Alex Villaz{\'o}n and Walter Binder and Danilo
                 Ansaloni and Philippe Moret",
  title =        "Advanced runtime adaptation for {Java}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "85--94",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1621607.1621621",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Dynamic aspect-oriented programming (AOP) enables
                 runtime adaptation of aspects, which is important for
                 building sophisticated, aspect-based software
                 engineering tools, such as adaptive profilers or
                 debuggers that dynamically modify instrumentation code
                 in response to user interactions. Today, many AOP
                 frameworks for Java, notably AspectJ, focus on aspect
                 weaving at compile-time or at load-time, and offer only
                 limited support for aspect adaptation and reweaving at
                 runtime. In this paper, we introduce HotWave, an AOP
                 framework based on AspectJ for standard Java Virtual
                 Machines (JVMs). HotWave supports dynamic (re)weaving
                 of previously loaded classes, and it ensures that all
                 classes loaded in a JVM can be (re)woven, including the
                 classes of the standard Java class library. HotWave
                 features a novel mechanism for inter-advice
                 communication, enabling efficient data passing between
                 advices that are woven into the same method. We explain
                 HotWave's programming model and discuss our
                 implementation techniques. As case study, we present an
                 adaptive, aspect-based profiler that leverages
                 HotWave's distinguishing features.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "AspectJ; bytecode instrumentation; code hotswapping;
                 dynamic aspect-oriented programming; Java Virtual
                 Machine; runtime aspect adaptation and (re)weaving",
}

@Article{Villazon:2010:HCA,
  author =       "Alex Villaz{\'o}n and Walter Binder and Danilo
                 Ansaloni and Philippe Moret",
  title =        "{HotWave}: creating adaptive tools with dynamic
                 aspect-oriented programming in {Java}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "95--98",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1621607.1621622",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Developing tools for profiling, debugging, testing,
                 and reverse engineering is error-prone, time-consuming,
                 and therefore costly when using low-level techniques,
                 such as bytecode instrumentation. As a solution to
                 these problems, we promote tool development in Java
                 using high-level aspect-oriented programming (AOP). We
                 demonstrate that the use of aspects yields compact
                 tools that are easy to develop and extend. As enabling
                 technology, we rely on HotWave, a new tool for dynamic
                 and comprehensive aspect weaving. HotWave reconciles
                 compatibility with existing virtual machine and AOP
                 technologies. It provides support for runtime
                 adaptation of aspects and reweaving of previously
                 loaded code, as well as the ability to weave aspects
                 into all methods executing in a Java Virtual Machine,
                 including methods in the standard Java class library.
                 HotWave also features a new mechanism for efficiently
                 passing data between advices that are woven into the
                 same method. We demonstrate the benefits of HotWave's
                 distinguishing features with two case studies in the
                 area of profiling.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "AspectJ; bytecode instrumentation; code hotswapping;
                 dynamic aspect-oriented programming; Java Virtual
                 Machine; profiling; runtime weaving",
}

@Article{Wehr:2010:JBP,
  author =       "Stefan Wehr and Peter Thiemann",
  title =        "{JavaGI} in the battlefield: practical experience with
                 generalized interfaces",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "2",
  pages =        "65--74",
  month =        feb,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1621607.1621619",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Aug 31 22:37:56 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Generalized interfaces are an extension of the
                 interface concept found in object-oriented languages
                 such as Java or C\#. The extension is inspired by
                 Haskell's type classes. It supports retroactive and
                 type-conditional interface implementations, binary
                 methods, symmetric multimethods, interfaces over
                 families of types, and static interface
                 methods.\par

                 This article reports practical experience with
                 generalized interfaces as implemented in the JavaGI
                 language. Several real-world case studies demonstrate
                 how generalized interfaces provide solutions to
                 extension and integration problems with components in
                 binary form, how they make certain design patterns
                 redundant, and how they eliminate various run-time
                 errors. In each case study, the use of JavaGI results
                 in elegant and highly readable code.\par

                 Furthermore, the article discusses the implementation
                 of a compiler and a run-time system for JavaGI.
                 Benchmarks show that our implementation offers
                 acceptable performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "case studies; external methods; JavaGI; multimethods;
                 retroactive interface implementation",
}

@Article{Welch:2010:ABS,
  author =       "Peter Welch and Neil Brown and James Moores and Kevin
                 Chalmers and Bernhard Sputh",
  title =        "Alting barriers: synchronisation with choice in {Java}
                 using {JCSP}",
  journal =      j-CCPE,
  volume =       "22",
  number =       "8",
  pages =        "1049--1062",
  day =          "10",
  month =        jun,
  year =         "2010",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1471",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:44 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Prac\-tice and
                 Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "1 Mar 2010",
}

@Article{Wendykier:2010:PCH,
  author =       "Piotr Wendykier and James G. Nagy",
  title =        "{Parallel Colt}: a High-Performance {Java} Library for
                 Scientific Computing and Image Processing",
  journal =      j-TOMS,
  volume =       "37",
  number =       "3",
  pages =        "31:1--31:22",
  month =        sep,
  year =         "2010",
  CODEN =        "ACMSCU",
  DOI =          "https://doi.org/10.1145/1824801.1824809",
  ISSN =         "0098-3500 (print), 1557-7295 (electronic)",
  ISSN-L =       "0098-3500",
  bibdate =      "Mon Sep 27 10:15:50 MDT 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Major breakthroughs in chip and software design have
                 been observed for the last nine years. In October 2001,
                 IBM released the world's first multicore processor:
                 POWER4. Six years later, in February 2007, NVIDIA made
                 a public release of CUDA SDK, a set of development
                 tools to write algorithms for execution on Graphic
                 Processing Units (GPUs). Although software vendors have
                 started working on parallelizing their products, the
                 vast majority of existing code is still sequential and
                 does not effectively utilize modern multicore CPUs and
                 manycore GPUs.\par

                 This article describes Parallel Colt, a multithreaded
                 Java library for scientific computing and image
                 processing. In addition to describing the design and
                 functionality of Parallel Colt, a comparison to MATLAB
                 is presented. Two ImageJ plugins for iterative image
                 deblurring and motion correction of PET brain images
                 are described as typical applications of this library.
                 Performance comparisons with MATLAB, including GPU
                 computations via AccelerEyes' Jacket toolbox are also
                 given.",
  acknowledgement = ack-nhfb,
  articleno =    "31",
  fjournal =     "ACM Transactions on Mathematical Software",
  journal-URL =  "http://portal.acm.org/toc.cfm?idx=J782",
  keywords =     "Deconvolution; FFT; inverse problems; iterative
                 methods; motion correction; multithreading; PET;
                 regularization",
}

@Article{Westbrook:2010:MJM,
  author =       "Edwin Westbrook and Mathias Ricken and Jun Inoue and
                 Yilong Yao and Tamer Abdelatif and Walid Taha",
  title =        "{Mint}: {Java} multi-stage programming using weak
                 separability",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "400--411",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1809028.1806642",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Multi-stage programming (MSP) provides a disciplined
                 approach to run-time code generation. In the purely
                 functional setting, it has been shown how MSP can be
                 used to reduce the overhead of abstractions, allowing
                 clean, maintainable code without paying performance
                 penalties. Unfortunately, MSP is difficult to combine
                 with imperative features, which are prevalent in
                 mainstream languages. The central difficulty is scope
                 extrusion, wherein free variables can inadvertently be
                 moved outside the scopes of their binders. This paper
                 proposes a new approach to combining MSP with
                 imperative features that occupies a 'sweet spot' in the
                 design space in terms of how well useful MSP
                 applications can be expressed and how easy it is for
                 programmers to understand. The key insight is that
                 escapes (or 'anti-quotes') must be weakly separable
                 from the rest of the code, i.e. the computational
                 effects occurring inside an escape that are visible
                 outside the escape are guaranteed to not contain code.
                 To demonstrate the feasibility of this approach, we
                 formalize a type system based on Lightweight Java which
                 we prove sound, and we also provide an implementation,
                 called Mint, to validate both the expressivity of the
                 type system and the effect of staging on the
                 performance of Java programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "java; multi-stage programming; multi-staged languages;
                 type systems",
}

@Article{Wimmer:2010:AFD,
  author =       "Christian Wimmer and Hanspeter M{\"o}ssenb{\"o}sck",
  title =        "Automatic feedback-directed object fusing",
  journal =      j-TACO,
  volume =       "7",
  number =       "2",
  pages =        "7:1--7:??",
  month =        sep,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1839667.1839669",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Sat Oct 2 18:05:46 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Object fusing is an optimization that embeds certain
                 referenced objects into their referencing object. The
                 order of objects on the heap is changed in such a way
                 that objects that are accessed together are placed next
                 to each other in memory. Their offset is then fixed,
                 that is, the objects are colocated, allowing field
                 loads to be replaced by address arithmetic. Array
                 fusing specifically optimizes arrays, which are
                 frequently used for the implementation of dynamic data
                 structures. Therefore, the length of arrays often
                 varies, and fields referencing such arrays have to be
                 changed. An efficient code pattern detects these
                 changes and allows the optimized access of such
                 fields.\par

                 We integrated these optimizations into Sun
                 Microsystems' Java HotSpot\TM{} VM. The analysis is
                 performed automatically at runtime, requires no actions
                 on the part of the programmer, and supports dynamic
                 class loading. To safely eliminate a field load, the
                 colocation of the object that holds the field and the
                 object that is referenced by the field must be
                 guaranteed. Two preconditions must be satisfied: The
                 objects must be allocated at the same time, and the
                 field must not be overwritten later. These
                 preconditions are checked by the just-in-time compiler
                 to avoid an interprocedural data flow analysis. The
                 garbage collector ensures that groups of colocated
                 objects are not split by copying groups as a whole. The
                 evaluation shows that the dynamic approach successfully
                 identifies and optimizes frequently accessed fields for
                 several benchmarks with a low compilation and analysis
                 overhead. It leads to a speedup of up to 76\% for
                 simple benchmarks and up to 6\% for complex
                 workloads.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
  keywords =     "cache performance; garbage collection; Java;
                 just-in-time compilation; object colocation; object
                 fusing; object inlining; optimization",
}

@Article{Witman:2010:TBR,
  author =       "Paul D. Witman and Terry Ryan",
  title =        "Think big for reuse",
  journal =      j-CACM,
  volume =       "53",
  number =       "1",
  pages =        "142--147",
  month =        jan,
  year =         "2010",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/1629175.1629209",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Thu Feb 4 17:12:32 MST 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Many organizations are successful with software reuse
                 at fine to medium granularities -- ranging from
                 objects, subroutines, and components through software
                 product lines. However, relatively little has been
                 published on very large-grained reuse. One example of
                 this type of large-grained reuse might be that of an
                 entire Internet banking system (applications and
                 infrastructure) reused in business units all over the
                 world. In contrast, 'large scale' software reuse in
                 current research generally refers to systems that reuse
                 a large number of smaller components, or that perhaps
                 reuse subsystems. In this article, we explore a case of
                 an organization with an internal development group that
                 has been very successful with large-grained software
                 reuse.\par

                 BigFinancial, and the BigFinancial Technology Center
                 (BTC) in particular, have created a number of software
                 systems that have been reused in multiple businesses
                 and in multiple countries. BigFinancial and BTC thus
                 provided a rich source of data for case studies to look
                 at the characteristics of those projects and why they
                 have been successful, as well as to look at projects
                 that have been less successful and to understand what
                 has caused those results and what might be done
                 differently to prevent issues in the future. The
                 research is focused on technology, process, and
                 organizational elements of the development process,
                 rather than on specific product features and
                 functions.\par

                 Supporting reuse at a large-grained level may help to
                 alleviate some of the issues that occur in more
                 traditional reuse programs, which tend to be
                 finer-grained. In particular, because BigFinancial was
                 trying to gain commonality in business processes and
                 operating models, reuse of large-grained components was
                 more closely aligned with its business goals. This same
                 effect may well not have happened with finer-grained
                 reuse, due to the continued ability of business units
                 to more readily pick and choose components for
                 reuse.\par

                 BTC is a technology development unit of BigFinancial,
                 with operations in both the eastern and western US.
                 Approximately 500 people are employed by BTC, reporting
                 ultimately through a single line manager responsible to
                 the Global Retail Business unit head of BigFinancial.
                 BTC is organized to deliver both products and
                 infrastructure components to BigFinancial, and its
                 product line has through the years included consumer
                 Internet banking services, teller systems, ATM
                 software, and network management tools. BigFinancial
                 has its U.S. operations headquartered in the eastern
                 U.S., and employs more than 8,000 technologists
                 worldwide.\par

                 In cooperation with BTC, we selected three cases for
                 further study from a pool of about 25. These cases were
                 the Java Banking Toolkit (JBT) and its related
                 application systems, the Worldwide Single Signon (WSSO)
                 subsystem, and the BigFinancial Message Switch (BMS).",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Xu:2010:DIU,
  author =       "Guoqing Xu and Atanas Rountev",
  title =        "Detecting inefficiently-used containers to avoid
                 bloat",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "160--173",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806616",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Runtime bloat degrades significantly the performance
                 and scalability of software systems. An important
                 source of bloat is the inefficient use of containers.
                 It is expensive to create inefficiently-used containers
                 and to invoke their associated methods, as this may
                 ultimately execute large volumes of code, with call
                 stacks dozens deep, and allocate many temporary
                 objects.\par

                 This paper presents practical static and dynamic tools
                 that can find inappropriate use of containers in Java
                 programs. At the core of these tools is a base static
                 analysis that identifies, for each container, the
                 objects that are added to this container and the key
                 statements (i.e., heap loads and stores) that achieve
                 the semantics of common container operations such as
                 {\em ADD\/} and {\em GET}. The static tool finds
                 problematic uses of containers by considering the
                 nesting relationships among the loops where these {\em
                 semantics-achieving statements\/} are located, while
                 the dynamic tool can instrument these statements and
                 find inefficiencies by profiling their execution
                 frequencies.\par

                 The high precision of the base analysis is achieved by
                 taking advantage of a context-free language
                 (CFL)-reachability formulation of points-to analysis
                 and by accounting for container-specific properties. It
                 is demand-driven and client-driven, facilitating
                 refinement specific to each queried container object
                 and increasing scalability. The tools built with the
                 help of this analysis can be used both to avoid the
                 creation of container-related performance problems
                 early during development, and to help with diagnosis
                 when problems are observed during tuning. Our
                 experimental results show that the static tool has a
                 low false positive rate and produces more relevant
                 information than its dynamic counterpart. Further case
                 studies suggest that significant optimization
                 opportunities can be found by focusing on
                 statically-identified containers for which high
                 allocation frequency is observed at run time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "cfl reachability; container bloat; points-to
                 analysis",
}

@Article{Xu:2010:FLU,
  author =       "Guoqing Xu and Nick Mitchell and Matthew Arnold and
                 Atanas Rountev and Edith Schonberg and Gary Sevitsky",
  title =        "Finding low-utility data structures",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "6",
  pages =        "174--186",
  month =        jun,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1806596.1806617",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Oct 8 17:53:18 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Many opportunities for easy, big-win, program
                 optimizations are missed by compilers. This is
                 especially true in highly layered Java applications.
                 Often at the heart of these missed optimization
                 opportunities lie computations that, with great
                 expense, produce data values that have little impact on
                 the program's final output. Constructing a new date
                 formatter to format every date, or populating a large
                 set full of expensively constructed structures only to
                 check its size: these involve costs that are out of
                 line with the benefits gained. This disparity between
                 the formation costs and accrued benefits of data
                 structures is at the heart of much runtime
                 bloat.\par

                 We introduce a run-time analysis to discover these {\em
                 low-utility\/} data structures. The analysis employs
                 dynamic thin slicing, which naturally associates costs
                 with value flows rather than raw data flows. It
                 constructs a model of the incremental, hop-to-hop,
                 costs and benefits of each data structure. The analysis
                 then identifies suspicious structures based on
                 imbalances of its incremental costs and benefits. To
                 decrease the memory requirements of slicing, we
                 introduce {\em abstract dynamic thin slicing}, which
                 performs thin slicing over bounded abstract domains. We
                 have modified the IBM J9 commercial JVM to implement
                 this approach.\par

                 We demonstrate two client analyses: one that finds
                 objects that are expensive to construct but are not
                 necessary for the forward execution, and second that
                 pinpoints ultimately-dead values. We have successfully
                 applied them to large-scale and long-running Java
                 applications. We show that these analyses are effective
                 at detecting operations that have unbalanced costs and
                 benefits.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  keywords =     "abstract dynamic thin slicing; cost benefit analysis;
                 memory bloat",
}

@Article{Yahav:2010:VSP,
  author =       "Eran Yahav and Mooly Sagiv",
  title =        "Verifying safety properties of concurrent
                 heap-manipulating programs",
  journal =      j-TOPLAS,
  volume =       "32",
  number =       "5",
  pages =        "18:1--18:50",
  month =        may,
  year =         "2010",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1745312.1745315",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri May 21 12:28:30 MDT 2010",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "We provide a parametric framework for verifying safety
                 properties of concurrent heap-manipulating programs.
                 The framework combines thread-scheduling information
                 with information about the shape of the heap. This
                 leads to verification algorithms that are more precise
                 than existing techniques. The framework also provides a
                 precise shape-analysis algorithm for concurrent
                 programs. In contrast to most existing verification
                 techniques, we do not put a bound on the number of
                 allocated objects. The framework produces interesting
                 results even when analyzing programs with an unbounded
                 number of threads. The framework is applied to
                 successfully verify the following properties of a
                 concurrent program:\par

                 --- Concurrent manipulation of linked-list based ADT
                 preserves the ADT datatype invariant.\par

                 --- The program does not perform inconsistent updates
                 due to interference.\par

                 --- The program does not reach a deadlock.\par

                 --- The program does not produce runtime errors due to
                 illegal thread interactions.\par

                 We also found bugs in erroneous programs violating such
                 properties. A prototype of our framework has been
                 implemented and applied to small, but interesting,
                 example programs.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
  keywords =     "Abstract interpretation; concurrency; Java; safety
                 properties; shape-analysis; verification",
}

@Article{Yang:2010:JIP,
  author =       "L. Yang and M. R. Poppleton",
  title =        "{Java} implementation platform for the integrated
                 state- and event-based specification in {PROB}",
  journal =      j-CCPE,
  volume =       "22",
  number =       "8",
  pages =        "1007--1022",
  day =          "10",
  month =        jun,
  year =         "2010",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1425",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:44 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Prac\-tice and
                 Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "29 Oct 2009",
}

@Book{Zakas:2010:HPJ,
  author =       "Nicholas C. Zakas",
  title =        "High performance {JavaScript}",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "xviii + 209",
  year =         "2010",
  ISBN =         "0-596-80279-x, 1-4493-8230-4",
  ISBN-13 =      "978-0-596-80279-0, 978-1-4493-8230-8",
  LCCN =         "????",
  bibdate =      "Wed Apr 27 11:14:30 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.bibsys.no:2100/BIBSYS",
  acknowledgement = ack-nhfb,
  subject =      "Web servers; World Wide Web; JavaScript (Computer
                 program language); Document Object Model (Web site
                 development technology)",
}

@Article{Zerzelidis:2010:FFS,
  author =       "Alexandros Zerzelidis and Andy Wellings",
  title =        "A framework for flexible scheduling in the {RTSJ}",
  journal =      j-TECS,
  volume =       "10",
  number =       "1",
  pages =        "3:1--3:??",
  month =        aug,
  year =         "2010",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/1814539.1814542",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 30 15:29:45 MDT 2010",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "This article presents a viable solution to introducing
                 flexible scheduling in the Real-Time specification for
                 Java (RTSJ), in the form of a flexible scheduling
                 framework. The framework allows the concurrent use of
                 multiple application-defined scheduling policies, each
                 scheduling a subset of the total set of threads.
                 Moreover, all threads, regardless of the policy under
                 which they are scheduled, are permitted to share common
                 resources. Thus, the framework can accommodate a
                 variety of interworking applications (soft, firm, and
                 hard) running under the RTSJ. The proposed approach is
                 a two-level scheduling framework, where the first level
                 is the RTSJ priority scheduler and the second level is
                 under application control. This article describes the
                 framework's protocol, examines the different types of
                 scheduling policies that can be supported, and
                 evaluates the proposed framework by measuring its
                 execution cost. A description of an application-defined
                 Earliest-Deadline-First (EDF) scheduler illustrates how
                 the interface can be used. Minimum backward-compatible
                 changes to the RTSJ specification are discussed to
                 motivate the required interface. The only assumptions
                 made about the underlying real-time operating system is
                 that it supports preemptive priority-based dispatching
                 of threads and that changes to priorities have
                 immediate effect.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
  keywords =     "flexible scheduling; RTSJ; Scheduling framework",
}

@Article{Zibin:2010:OIG,
  author =       "Yoav Zibin and Alex Potanin and Paley Li and Mahmood
                 Ali and Michael D. Ernst",
  title =        "Ownership and immutability in generic {Java}",
  journal =      j-SIGPLAN,
  volume =       "45",
  number =       "10",
  pages =        "598--617",
  month =        oct,
  year =         "2010",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1932682.1869509",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Jan 26 15:13:46 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Aiello:2011:JBA,
  author =       "Francesco Aiello and Giancarlo Fortino and Raffaele
                 Gravina and Antonio Guerrieri",
  title =        "A {Java}-Based Agent Platform for Programming Wireless
                 Sensor Networks",
  journal =      j-COMP-J,
  volume =       "54",
  number =       "3",
  pages =        "439--454",
  month =        mar,
  year =         "2011",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxq019",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Fri Feb 25 15:49:03 MST 2011",
  bibsource =    "http://comjnl.oxfordjournals.org/content/54/3.toc;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/54/3/439.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "February 22, 2010",
}

@Article{Aigner:2011:STM,
  author =       "Martin Aigner and Andreas Haas and Christoph M. Kirsch
                 and Michael Lippautz and Ana Sokolova and Stephanie
                 Stroka and Andreas Unterweger",
  title =        "Short-term memory for self-collecting mutators",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "11",
  pages =        "99--108",
  month =        nov,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076022.1993493",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:57 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '11 conference proceedings.",
  abstract =     "We propose a new memory model called short-term memory
                 for managing objects on the heap. In contrast to the
                 traditional persistent memory model for heap
                 management, objects in short-term memory expire after a
                 finite amount of time, which makes deallocation
                 unnecessary. Instead, expiration of objects may be
                 extended, if necessary, by refreshing. We have
                 developed a concurrent, incremental, and non-moving
                 implementation of short-term memory for explicit
                 refreshing called self-collecting mutators that is
                 based on programmer-controlled time and integrated into
                 state-of-the-art runtimes of three programming
                 languages: C, Java, and Go. All memory management
                 operations run in constant time without acquiring any
                 locks modulo the underlying allocators.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Arnold:2011:AOJ,
  author =       "Matthew Arnold and Stephen Fink and David Grove and
                 Michael Hind and Peter F. Sweeney",
  title =        "Adaptive optimization in the {Jalapeno JVM}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "4",
  pages =        "65--83",
  month =        apr,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1988042.1988048",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 24 10:55:07 MDT 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Future high-performance virtual machines will improve
                 performance through sophisticated online
                 feedback-directed optimizations. This paper presents
                 the architecture of the Jalapeno Adaptive Optimization
                 System, a system to support leading-edge virtual
                 machine technology and enable ongoing research on
                 online feedback-directed optimizations. We describe the
                 extensible system architecture, based on a federation
                 of threads with asynchronous communication. We present
                 an implementation of the general architecture that
                 supports adaptive multi-level optimization based purely
                 on statistical sampling. We empirically demonstrate
                 that this profiling technique has low overhead and can
                 improve startup and steady-state performance, even
                 without the presence of online feedback-directed
                 optimizations. The paper also describes and evaluates
                 an online feedback-directed inlining optimization based
                 on statistical edge sampling.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Arslan:2011:JPM,
  author =       "G{\"u}ven{\c{c}} Arslan and Ilknur {\"O}zmen",
  title =        "A {JAVA} program for the multivariate {$ Z_p $} and {$
                 C_p $} tests and its application",
  journal =      j-J-COMPUT-APPL-MATH,
  volume =       "235",
  number =       "16",
  pages =        "4729--4735",
  day =          "15",
  month =        jun,
  year =         "2011",
  CODEN =        "JCAMDI",
  DOI =          "https://doi.org/10.1016/j.cam.2010.08.035",
  ISSN =         "0377-0427 (print), 1879-1778 (electronic)",
  ISSN-L =       "0377-0427",
  bibdate =      "Sat Feb 25 13:24:29 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jcomputapplmath2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S037704271000484X",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Computational and Applied Mathematics",
  journal-URL =  "http://www.sciencedirect.com/science/journal/03770427",
}

@Article{Bala:2011:DTD,
  author =       "Vasanth Bala and Evelyn Duesterwald and Sanjeev
                 Banerjia",
  title =        "{Dynamo}: a transparent dynamic optimization system",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "4",
  pages =        "41--52",
  month =        apr,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1988042.1988044",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 24 10:55:07 MDT 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "We describe the design and implementation of Dynamo, a
                 software dynamic optimization system that is capable of
                 transparently improving the performance of a native
                 instruction stream as it executes on the processor. The
                 input native instruction stream to Dynamo can be
                 dynamically generated (by a JIT for example), or it can
                 come from the execution of a statically compiled native
                 binary. This paper evaluates the Dynamo system in the
                 latter, more challenging situation, in order to
                 emphasize the limits, rather than the potential, of the
                 system. Our experiments demonstrate that even
                 statically optimized native binaries can be accelerated
                 Dynamo, and often by a significant degree.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Basanta-Val:2011:ECM,
  author =       "P. Basanta-Val and M. Garc{\'\i}a-Valls and I.
                 Est{\'e}vez-Ayres",
  title =        "Extending the concurrency model of the real-time
                 specification for {Java}",
  journal =      j-CCPE,
  volume =       "23",
  number =       "14",
  pages =        "1623--1645",
  day =          "25",
  month =        sep,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1675",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:59 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "4 Nov 2010",
}

@Article{Basanta-Val:2011:FTM,
  author =       "Pablo Basanta-Val and Marisol Garc{\'\i}a-Valls and
                 Iria Est{\'e}vez-Ayres and Jorge
                 Fern{\'a}ndez-Gonz{\'a}lez",
  title =        "Fine tuning of the multiplexing facilities of {Java}'s
                 {Remote Method Invocation}",
  journal =      j-CCPE,
  volume =       "23",
  number =       "11",
  pages =        "1236--1260",
  day =          "10",
  month =        aug,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1701",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:56 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "18 Jan 2011",
}

@Article{Basanta-Val:2011:NFI,
  author =       "P. Basanta-Val and M. Garcia-Valls and I.
                 Estevez-Ayres",
  title =        "Non-functional information transmission patterns for
                 distributed real-time {Java}",
  journal =      j-SPE,
  volume =       "41",
  number =       "12",
  pages =        "1409--1435",
  month =        "????",
  year =         "2011",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.1084",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Fri Dec 2 07:49:37 MST 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "23 May 2011",
}

@Article{Bellia:2011:PJS,
  author =       "Marco Bellia and M. Eugenia Occhiuto",
  title =        "Properties of {Java} Simple Closures",
  journal =      j-FUND-INFO,
  volume =       "109",
  number =       "3",
  pages =        "237--253",
  month =        aug,
  year =         "2011",
  CODEN =        "FUMAAJ",
  DOI =          "https://doi.org/10.3233/FI-2011-508",
  ISSN =         "0169-2968 (print), 1875-8681 (electronic)",
  ISSN-L =       "0169-2968",
  bibdate =      "Sat Mar 5 17:13:24 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fundinfo2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Fundamenta Informaticae",
  journal-URL =  "http://content.iospress.com/journals/fundamenta-informaticae",
}

@Article{Bergenti:2011:PPS,
  author =       "F. Bergenti and L. Chiarabini and G. Rossi",
  title =        "Programming with partially specified aggregates in
                 {Java}",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "37",
  number =       "4",
  pages =        "178--192",
  month =        oct,
  year =         "2011",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.cl.2011.07.002",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Wed Apr 11 16:28:11 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/14778424",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842411000169",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems {\&} Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424",
}

@Article{Borstler:2011:QEI,
  author =       "J{\"u}rgen B{\"o}rstler and Marie Nordstr{\"o}m and
                 James H. Paterson",
  title =        "On the Quality of Examples in Introductory {Java}
                 Textbooks",
  journal =      j-TOCE,
  volume =       "11",
  number =       "1",
  pages =        "3:1--3:??",
  month =        feb,
  year =         "2011",
  CODEN =        "????",
  ISSN =         "1946-6226",
  bibdate =      "Mon Feb 28 16:08:34 MST 2011",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Example programs play an important role in the
                 teaching and learning of programming. Students as well
                 as teachers rank examples as the most important
                 resources for learning to program. Example programs
                 work as role models and must therefore always be
                 consistent with the principles and rules we are
                 teaching. However, it is difficult to find or develop
                 examples that are fully faithful to all principles and
                 guidelines of the object-oriented paradigm and also
                 follow general pedagogical principles and practices.
                 Unless students are able to engage with good examples,
                 they will not be able to tell desirable from
                 undesirable properties in their own and others'
                 programs.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Computing Education",
}

@Article{Carlisle:2011:WCB,
  author =       "Martin C. Carlisle",
  title =        "Why {I} came back to {Ada}",
  journal =      j-SIGADA-LETTERS,
  volume =       "31",
  number =       "3",
  pages =        "37--38",
  month =        dec,
  year =         "2011",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2070336.2070354",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Fri Apr 6 11:01:24 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  abstract =     "After the Air Force Academy switched its curriculum to
                 Java, I extracted myself from the Ada community and
                 moved on to other research interests, particularly
                 computer security. In this talk, I'll explain the new
                 developments that brought me back to Ada and how Ada
                 and SPARK may be a secret weapon in the 21st century.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
}

@Book{Cecco:2011:SJG,
  author =       "Raffaele Cecco",
  title =        "Supercharged {JavaScript} Graphics",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "400 (est.)",
  year =         "2011",
  ISBN =         "1-4493-9363-2",
  ISBN-13 =      "978-1-4493-9363-2",
  LCCN =         "????",
  bibdate =      "Wed Apr 27 10:01:59 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
}

@Article{Chen:2011:MJP,
  author =       "Kuo-Yi Chen and J. Morris Chang and Ting-Wei Hou",
  title =        "Multithreading in {Java}: Performance and Scalability
                 on Multicore Systems",
  journal =      j-IEEE-TRANS-COMPUT,
  volume =       "60",
  number =       "11",
  pages =        "1521--1534",
  month =        nov,
  year =         "2011",
  CODEN =        "ITCOB4",
  DOI =          "https://doi.org/10.1109/TC.2010.232",
  ISSN =         "0018-9340 (print), 1557-9956 (electronic)",
  ISSN-L =       "0018-9340",
  bibdate =      "Tue Sep 27 07:57:50 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranscomput.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5661769",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Computers",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=12",
}

@Article{Deitcher:2011:SPJ,
  author =       "Avi Deitcher",
  title =        "Simplicity and performance: {JavaScript} on the
                 server",
  journal =      j-LINUX-J,
  volume =       "2011",
  number =       "204",
  pages =        "3:1--3:??",
  month =        apr,
  year =         "2011",
  CODEN =        "LIJOFX",
  ISSN =         "1075-3583 (print), 1938-3827 (electronic)",
  ISSN-L =       "1075-3583",
  bibdate =      "Fri May 13 12:05:08 MDT 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "Linux Journal",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J508",
}

@Article{Dietl:2011:SOT,
  author =       "Werner Dietl and Sophia Drossopoulou and Peter
                 M{\"u}ller",
  title =        "Separating ownership topology and encapsulation with
                 generic universe types",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "6",
  pages =        "20:1--20:??",
  month =        dec,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2049706.2049709",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Dec 29 16:28:40 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Ownership is a powerful concept to structure the
                 object store and to control aliasing and modifications
                 of objects. This article presents an ownership type
                 system for a Java-like programming language with
                 generic types. Like our earlier Universe type system,
                 Generic Universe Types structure the heap
                 hierarchically. In contrast to earlier work, we
                 separate the enforcement of an ownership topology from
                 an encapsulation system. The topological system uses an
                 existential modifier to express that no ownership
                 information is available statically. On top of the
                 topological system, we build an encapsulation system
                 that enforces the owner-as-modifier discipline. This
                 discipline does not restrict aliasing, but requires
                 modifications of an object to be initiated by its
                 owner.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Duarte:2011:ICS,
  author =       "Rafael Duarte and Alexandre Mota and Augusto Sampaio",
  title =        "Introducing concurrency in sequential {Java} via
                 laws",
  journal =      j-INFO-PROC-LETT,
  volume =       "111",
  number =       "3",
  pages =        "129--134",
  day =          "1",
  month =        jan,
  year =         "2011",
  CODEN =        "IFPLAT",
  ISSN =         "0020-0190 (print), 1872-6119 (electronic)",
  ISSN-L =       "0020-0190",
  bibdate =      "Thu Mar 31 12:46:53 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/00200190",
  acknowledgement = ack-nhfb,
  fjournal =     "Information Processing Letters",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00200190",
}

@Article{elBoustani:2011:ITE,
  author =       "Nabil el Boustani and Jurriaan Hage",
  title =        "Improving type error messages for generic {Java}",
  journal =      j-HIGHER-ORDER-SYMB-COMPUT,
  volume =       "24",
  number =       "1--2",
  pages =        "3--39",
  month =        jun,
  year =         "2011",
  CODEN =        "LSCOEX",
  ISSN =         "1388-3690 (print), 2212-0793 (electronic)",
  ISSN-L =       "1388-3690",
  bibdate =      "Fri Oct 26 09:07:29 MDT 2012",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=1388-3690&volume=24&issue=1;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=1388-3690&volume=24&issue=1&spage=3",
  acknowledgement = ack-nhfb,
  fjournal =     "Higher-Order and Symbolic Computation",
}

@Article{Esquembre:2011:TPL,
  author =       "Francisco Esquembre",
  title =        "There Is Parallel Life for {Java} Scientific
                 Programmers!",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "13",
  number =       "4",
  pages =        "6--10",
  month =        jul # "\slash " # aug,
  year =         "2011",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2011.72",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Fri Jul 22 06:47:06 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computing in Science and Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Feldthaus:2011:TSR,
  author =       "Asger Feldthaus and Todd Millstein and Anders
                 M{\o}ller and Max Sch{\"a}fer and Frank Tip",
  title =        "Tool-supported refactoring for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "119--138",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048078",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Fernandes:2011:LFS,
  author =       "S{\'e}rgio Miguel Fernandes and Jo{\~a}o Cachopo",
  title =        "Lock-free and scalable multi-version software
                 transactional memory",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "8",
  pages =        "179--188",
  month =        aug,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2038037.1941579",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 14:04:45 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPoPP '11 Conference proceedings.",
  abstract =     "Software Transactional Memory (STM) was initially
                 proposed as a lock-free mechanism for concurrency
                 control. Early implementations had efficiency
                 limitations, and soon obstruction-free proposals
                 appeared, to tackle this problem, often simplifying STM
                 implementation. Today, most of the modern and
                 top-performing STMs use blocking designs, relying on
                 locks to ensure an atomic commit operation. This
                 approach has revealed better in practice, in part due
                 to its simplicity. Yet, it may have scalability
                 problems when we move into many-core computers,
                 requiring fine-tuning and careful programming to avoid
                 contention. In this paper we present and discuss the
                 modifications we made to a lock-based multi-version STM
                 in Java, to turn it into a lock-free implementation
                 that we have tested to scale at least up to 192 cores,
                 and which provides results that compete with, and
                 sometimes exceed, some of today's top-performing
                 lock-based implementations. The new lock-free commit
                 algorithm allows write transactions to proceed in
                 parallel, by allowing them to run their validation
                 phase independently of each other, and by resorting to
                 helping from threads that would otherwise be waiting to
                 commit, during the write-back phase. We also present a
                 new garbage collection algorithm to dispose of old
                 unused object versions that allows for asynchronous
                 identification of unnecessary versions, which minimizes
                 its interference with the rest of the transactional
                 system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Fogus:2011:JC,
  author =       "Michael Fogus and Chris Houser",
  title =        "The joy of {Clojure}",
  publisher =    pub-MANNING,
  address =      pub-MANNING:adr,
  pages =        "xxxi + 328",
  year =         "2011",
  ISBN =         "1-935182-64-1 (paperback)",
  ISBN-13 =      "978-1-935182-64-1 (paperback)",
  LCCN =         "QA76.62 .F64 2011",
  bibdate =      "Fri Nov 23 10:33:38 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/common-lisp.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  abstract =     "Provides information on the features and functions of
                 Clojure and describes how to create applications.",
  acknowledgement = ack-nhfb,
  subject =      "Clojure (Computer program language); Java (Computer
                 program language); Functional programming (Computer
                 science); Programming languages (Electronic computers);
                 Computer programming",
}

@Article{Frantzeskou:2011:SUD,
  author =       "Georgia Frantzeskou and Stephen G. MacDonell and
                 Efstathios Stamatatos and Stelios Georgiou and Stefanos
                 Gritzalis",
  title =        "The significance of user-defined identifiers in {Java}
                 source code authorship identification",
  journal =      j-INT-J-COMPUT-SYST-SCI-ENG,
  volume =       "26",
  number =       "2",
  pages =        "??--??",
  month =        mar,
  year =         "2011",
  CODEN =        "CSSEEI",
  ISSN =         "0267-6192",
  ISSN-L =       "0267-6192",
  bibdate =      "Tue Dec 3 12:04:33 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsystscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal of Computer Systems Science and
                 Engineering",
}

@Article{Gampe:2011:SMB,
  author =       "Andreas Gampe and Jeffery von Ronne and David
                 Niedzielski and Jonathan Vasek and Kleanthis Psarris",
  title =        "Safe, multiphase bounds check elimination in {Java}",
  journal =      j-SPE,
  volume =       "41",
  number =       "7",
  pages =        "753--788",
  month =        jun,
  year =         "2011",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.1028",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Jun 21 17:09:57 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "25 Nov 2010",
}

@Article{Garbervetsky:2011:QDM,
  author =       "Diego Garbervetsky and Sergio Yovine and V{\'\i}ctor
                 Braberman and Mart{\'\i}n Rouaux and Alejandro
                 Taboada",
  title =        "Quantitative dynamic-memory analysis for {Java}",
  journal =      j-CCPE,
  volume =       "23",
  number =       "14",
  pages =        "1665--1678",
  day =          "25",
  month =        sep,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1656",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:59 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "4 Nov 2010",
}

@Article{Giacaman:2011:OOP,
  author =       "Nasser Giacaman and Oliver Sinnen",
  title =        "Object-Oriented Parallelisation of {Java} Desktop
                 Programs",
  journal =      j-IEEE-SOFTWARE,
  volume =       "28",
  number =       "1",
  pages =        "32--38",
  month =        jan # "\slash " # feb,
  year =         "2011",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2010.135",
  ISSN =         "0740-7459 (print), 0740-7459 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Thu Dec 23 16:29:15 2010",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Gidra:2011:ASG,
  author =       "Lokesh Gidra and Ga{\"e}l Thomas and Julien Sopena and
                 Marc Shapiro",
  title =        "Assessing the scalability of garbage collectors on
                 many cores",
  journal =      j-OPER-SYS-REV,
  volume =       "5",
  number =       "3",
  pages =        "15--19",
  month =        dec,
  year =         "2011",
  CODEN =        "OSRED8",
  DOI =          "https://doi.org/10.1145/2094091.2094096",
  ISSN =         "0163-5980 (print), 1943-586X (electronic)",
  ISSN-L =       "0163-5980",
  bibdate =      "Mon Jan 16 19:01:36 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/opersysrev.bib",
  abstract =     "Managed Runtime Environments (MRE) are increasingly
                 used for application servers that use large multi-core
                 hardware. We find that the garbage collector is
                 critical for overall performance in this setting. We
                 explore the costs and scalability of the garbage
                 collectors on a contemporary 48-core multiprocessor
                 machine. We present experimental evaluation of the
                 parallel and concurrent garbage collectors present in
                 OpenJDK, a widely-used Java virtual machine. We show
                 that garbage collection represents a substantial amount
                 of an application's execution time, and does not scale
                 well as the number of cores increases. We attempt to
                 identify some critical scalability bottlenecks for
                 garbage collectors.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGOPS Operating Systems Review",
}

@Article{Gong:2011:JSA,
  author =       "Li Gong",
  title =        "{Java} security architecture revisited",
  journal =      j-CACM,
  volume =       "54",
  number =       "11",
  pages =        "48--52",
  month =        nov,
  year =         "2011",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/2018396.2018411",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Sun Nov 6 06:54:03 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Grech:2011:JGE,
  author =       "Neville Grech and Julian Rathke and Bernd Fischer",
  title =        "{JEqualityGen}: generating equality and hashing
                 methods",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "2",
  pages =        "177--186",
  month =        feb,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1942788.1868320",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Feb 14 16:37:34 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Manually implementing equals (for object comparisons)
                 and hashCode (for object hashing) methods in large
                 software projects is tedious and error-prone. This is
                 due to many special cases, such as field shadowing,
                 comparison between different types, or cyclic object
                 graphs. Here, we present JEqualityGen, a source code
                 generator that automatically derives implementations of
                 these methods. JEqualityGen proceeds in two states: it
                 first uses source code reflection in MetaAspectJ to
                 generate aspects that contain the method
                 implementations, before it uses weaving on the bytecode
                 level to insert these into the target application.
                 JEqualityGen generates not only correct, but efficient
                 source code that on a typical large-scale Java
                 application exhibits a performance improvement of more
                 than two orders of magnitude in the equality operations
                 generated, compared to an existing system based on
                 runtime reflection.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Haubl:2011:ECE,
  author =       "Christian H{\"a}ubl and Christian Wimmer and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Erratum to {``Compact and Efficient Strings for Java''
                 [Science of Computer Programming {\bf 75} (2010)
                 1077--1094]}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "1073--1073",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Book{Haverbeke:2011:EJM,
  author =       "Marijn Haverbeke",
  title =        "Eloquent {JavaScript}: a modern introduction to
                 programming",
  publisher =    pub-NO-STARCH,
  address =      pub-NO-STARCH:adr,
  pages =        "xiv + 205",
  year =         "2011",
  ISBN =         "1-59327-282-0",
  ISBN-13 =      "978-1-59327-282-1",
  LCCN =         "QA76.73.J39 HAV 2011; QA76.73.J39 H38 2009",
  bibdate =      "Wed Apr 27 11:18:12 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 library.ox.ac.uk:210/ADVANCE",
  URL =          "http://www.loc.gov/catdir/enhancements/fy1012/2010032246-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1012/2010032246-d.html;
                 http://www.loc.gov/catdir/enhancements/fy1107/2010032246-t.html",
  acknowledgement = ack-nhfb,
  subject =      "JavaScript (Computer program language)",
}

@Article{Hofmann:2011:EOS,
  author =       "Owen S. Hofmann and Alan M. Dunn and Sangman Kim and
                 Indrajit Roy and Emmett Witchel",
  title =        "Ensuring operating system kernel integrity with
                 {OSck}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "3",
  pages =        "279--290",
  month =        mar,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1961296.1950398",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 24 10:55:08 MDT 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '11 conference proceedings",
}

@Article{Horspool:2011:PPP,
  author =       "R. Nigel Horspool and Ralf Gitzel and Giacomo Cabri
                 and Markus Aleksy",
  title =        "Principles and Practice of Programming in {Java
                 2008}---Special issue",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "969--969",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Book{Horstmann:2011:CJA,
  author =       "Cay S. Horstmann",
  title =        "Core {Java}: Advanced Topics",
  volume =       "2",
  publisher =    pub-PH,
  address =      pub-PH:adr,
  edition =      "Nineth",
  pages =        "1088 (est.)",
  year =         "2011",
  ISBN =         "0-13-708160-X",
  ISBN-13 =      "978-0-13-708160-8",
  LCCN =         "????",
  bibdate =      "Mon Jan 28 14:57:29 MST 2013",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  xxaddress =    pub-PEARSON-EDUCATION:adr,
  xxpublisher =  pub-PEARSON-EDUCATION,
}

@Article{Huang:2011:SBA,
  author =       "Gang Huang and Weihu Wang and Tiancheng Liu and Hong
                 Mei",
  title =        "Simulation-based analysis of middleware service impact
                 on system reliability: {Experiment} on {Java}
                 application server",
  journal =      j-J-SYST-SOFTW,
  volume =       "84",
  number =       "7",
  pages =        "1160--1170",
  month =        jul,
  year =         "2011",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Tue Jun 21 10:22:31 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01641212",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Book{Hughes-Croucher:2011:NRS,
  author =       "Tom Hughes-Croucher",
  title =        "Node: Up and Running: Scalable Server-Side Code with
                 {JavaScript}",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "????",
  year =         "2011",
  ISBN =         "1-4493-9858-8",
  ISBN-13 =      "978-1-4493-9858-3",
  LCCN =         "????",
  bibdate =      "Wed Apr 27 10:01:59 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
}

@Article{Jenista:2011:OSO,
  author =       "James Christopher Jenista and Yong hun Eom and Brian
                 Charles Demsky",
  title =        "{OoOJava}: software out-of-order execution",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "8",
  pages =        "57--68",
  month =        aug,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2038037.1941563",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 14:04:45 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPoPP '11 Conference proceedings.",
  abstract =     "Developing parallel software using current tools can
                 be challenging. Even experts find it difficult to
                 reason about the use of locks and often accidentally
                 introduce race conditions and deadlocks into parallel
                 software. OoOJava is a compiler-assisted approach that
                 leverages developer annotations along with static
                 analysis to provide an easy-to-use deterministic
                 parallel programming model. OoOJava extends Java with a
                 task annotation that instructs the compiler to consider
                 a code block for out-of-order execution. OoOJava
                 executes tasks as soon as their data dependences are
                 resolved and guarantees that the execution of an
                 annotated program preserves the exact semantics of the
                 original sequential program. We have implemented
                 OoOJava and achieved an average speedup of 16.6x on our
                 ten benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Johari:2011:ESE,
  author =       "Kalpana Johari and Arvinder Kaur",
  title =        "Effect of software evolution on software metrics: an
                 open source case study",
  journal =      j-SIGSOFT,
  volume =       "36",
  number =       "5",
  pages =        "1--8",
  month =        sep,
  year =         "2011",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2020976.2020987",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:04 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Software needs to evolve in order to be used for a
                 longer period. The changes corresponding to corrective,
                 preventive, adaptive and perfective maintenance leads
                 to software evolution. In this paper we are presenting
                 the results of study conducted on 13 versions of JHot
                 Draw and 16 versions of Rhino released over the period
                 of 10 years. We measured Object Oriented Metrics and
                 studied the changes in the measured values over
                 different releases of two medium sized software
                 developed using Java. We also investigated the
                 applicability of Lehman's Law of Software Evolution on
                 Object Oriented Software Systems using different
                 measures. We found that Lehman's laws related with
                 increasing complexity and continuous growth are
                 supported by the data and computed metrics measure.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Jovic:2011:LLP,
  author =       "Milan Jovic and Matthias Hauswirth",
  title =        "Listener latency profiling: {Measuring} the
                 perceptible performance of interactive {Java}
                 applications",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "1054--1072",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Kabanov:2011:DSF,
  author =       "Jevgeni Kabanov and Michael Hunger and Rein
                 Raudj{\"a}rv",
  title =        "On designing safe and flexible embedded {DSLs} with
                 {Java 5}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "970--991",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Kalibera:2011:FRT,
  author =       "Tomas Kalibera and Jeff Hagelberg and Petr Maj and
                 Filip Pizlo and Ben Titzer and Jan Vitek",
  title =        "A family of real-time {Java} benchmarks",
  journal =      j-CCPE,
  volume =       "23",
  number =       "14",
  pages =        "1679--1700",
  day =          "25",
  month =        sep,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1677",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:59 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "4 Nov 2010",
}

@Article{Kalibera:2011:SRT,
  author =       "Tomas Kalibera and Filip Pizlo and Antony L. Hosking
                 and Jan Vitek",
  title =        "Scheduling real-time garbage collection on
                 uniprocessors",
  journal =      j-TOCS,
  volume =       "29",
  number =       "3",
  pages =        "8:1--8:??",
  month =        aug,
  year =         "2011",
  CODEN =        "ACSYEC",
  DOI =          "https://doi.org/10.1145/2003690.2003692",
  ISSN =         "0734-2071 (print), 1557-7333 (electronic)",
  ISSN-L =       "0734-2071",
  bibdate =      "Wed Aug 24 18:08:12 MDT 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tocs/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Managed languages such as Java and C\# are
                 increasingly being considered for hard real-time
                 applications because of their productivity and software
                 engineering advantages. Automatic memory management, or
                 garbage collection, is a key enabler for robust,
                 reusable libraries, yet remains a challenge for
                 analysis and implementation of real-time execution
                 environments. This article comprehensively compares
                 leading approaches to hard real-time garbage
                 collection. There are many design decisions involved in
                 selecting a real-time garbage collection algorithm. For
                 time-based garbage collectors on uniprocessors one must
                 choose whether to use periodic, slack-based or hybrid
                 scheduling. A significant impediment to valid
                 experimental comparison of such choices is that
                 commercial implementations use completely different
                 proprietary infrastructures.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Computer Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J774",
}

@Article{Kim:2011:MAE,
  author =       "Minseong Kim and Andy Wellings",
  title =        "Multiprocessors and Asynchronous Event Handling in the
                 Real-Time Specification for {Java}",
  journal =      j-COMP-J,
  volume =       "54",
  number =       "8",
  pages =        "1308--1324",
  month =        aug,
  year =         "2011",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxr030",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Wed Aug 17 16:34:11 MDT 2011",
  bibsource =    "http://comjnl.oxfordjournals.org/content/54/8.toc;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/54/8/1308.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "March 26, 2011",
}

@Article{Krieger:2011:AES,
  author =       "Matthias P. Krieger and Alexander Knapp and Burkhart
                 Wolff",
  title =        "Automatic and efficient simulation of operation
                 contracts",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "2",
  pages =        "53--62",
  month =        feb,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1942788.1868303",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Feb 14 16:37:34 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Operation contracts consisting of pre- and
                 postconditions are a well-known means of specifying
                 operations. In this paper we deal with the problem of
                 operation contract simulation, i.e., determining
                 operation results satisfying the postconditions based
                 on input data supplied by the user; simulating
                 operation contracts is an important technique for
                 requirements validation and prototyping. Current
                 approaches to operation contract simulation exhibit
                 poor performance for large sets of input data or
                 require additional guidance from the user. We show how
                 these problems can be alleviated and describe an
                 efficient as well as fully automatic approach. It is
                 implemented in our tool OCLexec that generates from
                 UML/OCL operation contracts corresponding Java
                 implementations which call a constraint solver at
                 runtime.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Kuehnhausen:2011:AJM,
  author =       "Martin Kuehnhausen and Victor S. Frost",
  title =        "Application of the {Java Message Service} in mobile
                 monitoring environments",
  journal =      j-J-NETW-COMPUT-APPL,
  volume =       "34",
  number =       "5",
  pages =        "1707--1716",
  month =        sep,
  year =         "2011",
  CODEN =        "JNCAF3",
  ISSN =         "1084-8045 (print), 1095-8592 (electronic)",
  ISSN-L =       "1084-8045",
  bibdate =      "Wed Jan 28 15:44:03 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jnetwcomputappl.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1084804511001159",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Netw. Comput. Appl.",
  fjournal =     "Journal of Network and Computer Applications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/10848045",
}

@Article{Kumari:2011:AOO,
  author =       "Usha Kumari and Sucheta Bhasin",
  title =        "Application of Object-Oriented Metrics To {C++} and
                 {Java}: a Comparative Study",
  journal =      j-SIGSOFT,
  volume =       "36",
  number =       "2",
  pages =        "1--10",
  month =        mar,
  year =         "2011",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/1943371.1943386",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:00 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The increasing importance of software measurement has
                 led to design and development of new software measures.
                 As the development of object-oriented software is
                 rising, more and more metrics are being defined for
                 object-oriented programming languages. But there is a
                 little understanding of comparative application of many
                 of these measures to different programming languages.
                 As a consequence, it is very difficult for software
                 managers and developers to select suitable measures and
                 programming languages for object-oriented systems. In
                 this paper, we investigate 23 object-oriented metrics
                 proposed by various researchers. The metrics are
                 applied to same set of 15 programs coded in C++ and
                 Java in an attempt to make comparative study of these
                 two prominent object-oriented programming languages.
                 The work done here reveals that these object-oriented
                 metrics can be applied successfully to both Java and
                 C++. But, Java proves to be more object-oriented than
                 C++ as per intuition. However, counting rules defined
                 for computation of these metrics should be framed more
                 carefully.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Li:2011:JEC,
  author =       "Siliang Li and Gang Tan",
  title =        "{JET}: exception checking in the {Java Native
                 Interface}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "345--358",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048095",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Lux:2011:TSD,
  author =       "Alexander Lux and Artem Starostin",
  title =        "A tool for static detection of timing channels in
                 {Java}",
  journal =      j-J-CRYPTO-ENG,
  volume =       "1",
  number =       "4",
  pages =        "303--313",
  month =        dec,
  year =         "2011",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s13389-011-0021-z",
  ISSN =         "2190-8508 (print), 2190-8516 (electronic)",
  ISSN-L =       "2190-8508",
  bibdate =      "Wed Aug 20 18:51:32 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jcryptoeng.bib",
  URL =          "http://link.springer.com/article/10.1007/s13389-011-0021-z",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Cryptographic Engineering",
  journal-URL =  "http://link.springer.com/journal/13389",
}

@Article{Martinez-Llario:2011:DJS,
  author =       "J. Martinez-Llario and M. Gonzalez-Alcaide",
  title =        "Design of a {Java} spatial extension for relational
                 databases",
  journal =      j-J-SYST-SOFTW,
  volume =       "84",
  number =       "12",
  pages =        "2314--2323",
  month =        dec,
  year =         "2011",
  CODEN =        "JSSODM",
  DOI =          "https://doi.org/10.1016/j.jss.2011.06.072",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Feb 6 15:39:27 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib;
                 http://www.sciencedirect.com/science/journal/01641212",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121211001695",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{McMillan:2011:SVM,
  author =       "William W. McMillan",
  title =        "The soul of the virtual machine",
  journal =      j-IEEE-SPECTRUM,
  volume =       "48",
  number =       "7",
  pages =        "44--59",
  month =        jul,
  year =         "2011",
  CODEN =        "IEESAM",
  DOI =          "https://doi.org/10.1109/MSPEC.2011.5910448",
  ISSN =         "0018-9235 (print), 1939-9340 (electronic)",
  ISSN-L =       "0018-9235",
  bibdate =      "Fri Jan 17 18:54:05 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeespectrum2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Spectrum",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=6",
  keywords =     "Ersatz machine code; Java; Java compiler; Java virtual
                 machines; Operating systems; program compilers; Program
                 processors; Programming; virtual machines; Virtual
                 machining; Virtual prototyping",
}

@Article{Palmer:2011:BJM,
  author =       "Zachary Palmer and Scott F. Smith",
  title =        "Backstage {Java}: making a difference in
                 metaprogramming",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "939--958",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048137",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Papadimitriou:2011:SES,
  author =       "Stergios Papadimitriou and Konstantinos Terzidis and
                 Seferina Mavroudi and Spiridon Likothanassis",
  title =        "{ScalaLab}: An Effective {Scala}-Based Scientific
                 Programming Environment for {Java}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "13",
  number =       "5",
  pages =        "43--55",
  month =        sep # "\slash " # oct,
  year =         "2011",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2010.77",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Wed Aug 31 18:09:32 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computing in Science and Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Park:2011:DCM,
  author =       "Heewan Park and Hyun-il Lim and Seokwoo Choi and
                 Taisook Han",
  title =        "Detecting Common Modules in {Java} Packages Based on
                 Static Object Trace Birthmark",
  journal =      j-COMP-J,
  volume =       "54",
  number =       "1",
  pages =        "108--124",
  month =        jan,
  year =         "2011",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxp095",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Tue Dec 21 19:26:47 MST 2010",
  bibsource =    "http://comjnl.oxfordjournals.org/content/54/1.toc;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/54/1/108.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "November 5, 2009",
}

@Article{Parker:2011:DPG,
  author =       "Jon Parker and Joshua M. Epstein",
  title =        "A Distributed Platform for Global-Scale Agent-Based
                 Models of Disease Transmission",
  journal =      j-TOMACS,
  volume =       "22",
  number =       "1",
  pages =        "2:1--2:??",
  month =        dec,
  year =         "2011",
  CODEN =        "ATMCEZ",
  DOI =          "https://doi.org/10.1145/2043635.2043637",
  ISSN =         "1049-3301 (print), 1558-1195 (electronic)",
  ISSN-L =       "1049-3301",
  bibdate =      "Tue Dec 20 17:48:00 MST 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tomacs/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tomacs.bib",
  abstract =     "The Global-Scale Agent Model (GSAM) is presented. The
                 GSAM is a high-performance distributed platform for
                 agent-based epidemic modeling capable of simulating a
                 disease outbreak in a population of several billion
                 agents. It is unprecedented in its scale, its speed,
                 and its use of Java. Solutions to multiple challenges
                 inherent in distributing massive agent-based models are
                 presented. Communication, synchronization, and memory
                 usage are among the topics covered in detail. The
                 memory usage discussion is Java specific. However, the
                 communication and synchronization discussions apply
                 broadly. We provide benchmarks illustrating the GSAM's
                 speed and scalability.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Modeling and Computer Simulation",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J781",
}

@Article{Pour:2011:MBD,
  author =       "Niusha Hakimi Pour and Paul Strooper and Andy
                 Wellings",
  title =        "A model-based development approach for the
                 verification of real-time {Java} code",
  journal =      j-CCPE,
  volume =       "23",
  number =       "13",
  pages =        "1583--1606",
  day =          "10",
  month =        sep,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1728",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:08:58 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "24 Apr 2011",
}

@Article{Ricci:2011:SAO,
  author =       "Alessandro Ricci and Mirko Viroli and Giulio
                 Piancastelli",
  title =        "{simpA}: an agent-oriented approach for programming
                 concurrent applications on top of {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "1",
  pages =        "37--62",
  day =          "1",
  month =        jan,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Apr 1 18:39:40 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Richards:2011:ACJ,
  author =       "Gregor Richards and Andreas Gal and Brendan Eich and
                 Jan Vitek",
  title =        "Automated construction of {JavaScript} benchmarks",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "677--694",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048119",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Schoeberl:2011:HAL,
  author =       "Martin Schoeberl and Stephan Korsholm and Tomas
                 Kalibera and Anders P. Ravn",
  title =        "A Hardware Abstraction Layer in {Java}",
  journal =      j-TECS,
  volume =       "10",
  number =       "4",
  pages =        "42:1--42:??",
  month =        nov,
  year =         "2011",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2043662.2043666",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Dec 19 15:49:06 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "Embedded systems use specialized hardware devices to
                 interact with their environment, and since they have to
                 be dependable, it is attractive to use a modern,
                 type-safe programming language like Java to develop
                 programs for them. Standard Java, as a
                 platform-independent language, delegates access to
                 devices, direct memory access, and interrupt handling
                 to some underlying operating system or kernel, but in
                 the embedded systems domain resources are scarce and a
                 Java Virtual Machine (JVM) without an underlying
                 middleware is an attractive architecture. The
                 contribution of this article is a proposal for Java
                 packages with hardware objects and interrupt handlers
                 that interface to such a JVM.",
  acknowledgement = ack-nhfb,
  articleno =    "42",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Sewe:2011:CCS,
  author =       "Andreas Sewe and Mira Mezini and Aibek Sarimbekov and
                 Walter Binder",
  title =        "Da capo con {Scala}: design and analysis of a {Scala}
                 benchmark suite for the {Java Virtual Machine}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "657--676",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048118",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Siegel:2011:AFV,
  author =       "Stephen F. Siegel and Timothy K. Zirkel",
  title =        "Automatic formal verification of {MPI}-based parallel
                 programs",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "8",
  pages =        "309--310",
  month =        aug,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2038037.1941603",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 14:04:45 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pvm.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPoPP '11 Conference proceedings.",
  abstract =     "The Toolkit for Accurate Scientific Software (TASS) is
                 a suite of tools for the formal verification of
                 MPI-based parallel programs used in computational
                 science. TASS can verify various safety properties as
                 well as compare two programs for functional
                 equivalence. The TASS front end takes an integer $ n
                 \geq 1 $ and a C/MPI program, and constructs an
                 abstract model of the program with $n$ processes.
                 Procedures, structs, (multi-dimensional) arrays,
                 heap-allocated data, pointers, and pointer arithmetic
                 are all representable in a TASS model. The model is
                 then explored using symbolic execution and explicit
                 state space enumeration. A number of techniques are
                 used to reduce the time and memory consumed. A variety
                 of realistic MPI programs have been verified with TASS,
                 including Jacobi iteration and manager-worker type
                 programs, and some subtle defects have been discovered.
                 TASS is written in Java and is available from
                 \path=http://vsl.cis.udel.edu/tass= under the Gnu
                 Public License.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Singer:2011:GCA,
  author =       "Jeremy Singer and George Kovoor and Gavin Brown and
                 Mikel Luj{\'a}n",
  title =        "Garbage collection auto-tuning for {Java MapReduce} on
                 multi-cores",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "11",
  pages =        "109--118",
  month =        nov,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076022.1993495",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:57 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Subramaniam:2011:PCJ,
  author =       "Venkat Subramaniam",
  title =        "Programming concurrency on the {JVM}: mastering
                 synchronization, {STM}, and actors",
  publisher =    "Pragmatic Bookshelf",
  address =      "Dallas, TX",
  pages =        "xvii + 270",
  year =         "2011",
  ISBN =         "1-934356-76-X",
  ISBN-13 =      "978-1-934356-76-0",
  LCCN =         "QA76.73.J38 S8467 2011",
  bibdate =      "Thu Dec 4 08:35:54 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "The pragmatic programmers",
  abstract =     "Stop dreading concurrency and start reaping the pure
                 power of modern multicore hardware. Learn how to avoid
                 shared mutable state and how to write safe, elegant,
                 explicit synchronization-free programs in Java or other
                 JVM languages, including Clojure, JRuby, Groovy, or
                 Scala. This book is the first to show you the three
                 prominent concurrency styles: the synchronization model
                 of the JDK, Software Transactional Memory (STM), and
                 actor-based concurrency. You'll learn the benefits of
                 each of these models, when and how to use them, and
                 what their limitations are so you can compare and
                 choose what works best for your applications. Learning
                 to program using concurrency is critical to creating
                 faster, more responsive applications, and now you can
                 leverage the Java platform to bring these applications
                 to high-octane life.",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language); Java virtual
                 machine; Parallel processing (Electronic computers);
                 Computer multitasking; Computer programming; Systems
                 programming (Computer science)",
  tableofcontents = "The power and perils of concurrency \\
                 Strategies for concurrency \\
                 Modern Java/JDK concurrency \\
                 Software transactional memory \\
                 Actor-based concurrency",
}

@Article{Taboada:2011:DEJ,
  author =       "Guillermo L. Taboada and Sabela Ramos and Juan
                 Touri{\~n}o and Ram{\'o}n Doallo",
  title =        "Design of efficient {Java} message-passing collectives
                 on multi-core clusters",
  journal =      j-J-SUPERCOMPUTING,
  volume =       "55",
  number =       "2",
  pages =        "126--154",
  month =        feb,
  year =         "2011",
  CODEN =        "JOSUED",
  ISSN =         "0920-8542 (print), 1573-0484 (electronic)",
  ISSN-L =       "0920-8542",
  bibdate =      "Tue Sep 6 21:50:38 MDT 2011",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=0920-8542&volume=55&issue=2;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=0920-8542&volume=55&issue=2&spage=126",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of Supercomputing",
  journal-URL =  "http://link.springer.com/journal/11227",
}

@Article{Taboada:2011:DLC,
  author =       "Guillermo L. Taboada and Juan Touri{\~n}o and
                 Ram{\'o}n Doallo and Aamir Shafi and Mark Baker and
                 Bryan Carpenter",
  title =        "Device level communication libraries for
                 high-performance computing in {Java}",
  journal =      j-CCPE,
  volume =       "23",
  number =       "18",
  pages =        "2382--2403",
  day =          "25",
  month =        dec,
  year =         "2011",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1777",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Dec 5 10:09:01 MST 2011",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "14 Jun 2011",
}

@Article{Tarau:2011:IST,
  author =       "Paul Tarau",
  title =        "Integrated symbol table, engine and heap memory
                 management in multi-engine {Prolog}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "11",
  pages =        "129--138",
  month =        nov,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076022.1993497",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:57 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '11 conference proceedings.",
  abstract =     "We describe an integrated solution to symbol, heap and
                 logic engine memory management in a context where
                 exchanges of arbitrary Prolog terms occur between
                 multiple dynamically created engines, implemented in a
                 new Java-based experimental Prolog system. As our
                 symbols represent not just Prolog atoms, but also
                 handles to Java objects (including arbitrary size
                 integers and decimals), everything is centered around a
                 symbol garbage collection algorithm ensuring that
                 external objects are shared and exchanged between logic
                 engines efficiently. Taking advantage of a tag-on-data
                 heap representation of Prolog terms, our algorithm
                 performs in-place updates of live symbol references
                 directly on heap cells.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Tate:2011:TWJ,
  author =       "Ross Tate and Alan Leung and Sorin Lerner",
  title =        "Taming wildcards in {Java}'s type system",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "6",
  pages =        "614--627",
  month =        jun,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1993316.1993570",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 10:23:33 MDT 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Toledo:2011:ACJ,
  author =       "Rodolfo Toledo and Eric Tanter",
  title =        "Access Control in {JavaScript}",
  journal =      j-IEEE-SOFTWARE,
  volume =       "28",
  number =       "5",
  pages =        "76--84",
  month =        sep # "\slash " # oct,
  year =         "2011",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2010.154",
  ISSN =         "0740-7459 (print), 0740-7459 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Wed Aug 31 17:16:45 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Book{Topley:2011:JDG,
  author =       "Kim Topley",
  title =        "{JavaFX} developer's guide",
  publisher =    pub-AW,
  address =      pub-AW,
  pages =        "xxxix + 1110",
  year =         "2011",
  ISBN =         "0-321-60165-3",
  ISBN-13 =      "978-0-321-60165-0",
  LCCN =         "????",
  bibdate =      "Thu Dec 1 07:51:47 MST 2011",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "Updated for JavaFX 1.3.",
  series =       "Developer's library",
}

@Article{V:2011:BBI,
  author =       "Sharath Chandra V. and S. Selvakumar",
  title =        "{BIXSAN}: browser independent {XSS} sanitizer for
                 prevention of {XSS} attacks",
  journal =      j-SIGSOFT,
  volume =       "36",
  number =       "5",
  pages =        "1--7",
  month =        sep,
  year =         "2011",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2020976.2020996",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:04 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Proliferation of social networking sites, and web
                 applications which deliver dynamic content to the
                 clients have increased the user created HTML content in
                 the World Wide Web. This user-created HTML content can
                 be a notorious vector for Cross-Site Scripting,(XSS)
                 attacks. XSS attacks have the ability to target
                 websites, steal confidential information of the users,
                 and hijack their accounts, etc. XSS attacks are
                 launched to exploit the vulnerabilities of the poorly
                 developed application code and data processing systems.
                 In particular, improper validation of user created
                 content and un-sanitized custom error messages
                 introduce vulnerability for XSS attacks. It is a
                 challenging task for any security mechanism to filter
                 out only the harmful HTML content and retain safe
                 content with high fidelity and robustness. This has
                 motivated us to develop a mechanism that filters out
                 the harmful HTML content, and allows safe HTML. The
                 existing solutions to XSS attack include use of regular
                 expressions to detect the presence of dynamic content
                 and client side filtering mechanisms such as Noscript
                 and Noxes tool. The drawbacks of these solutions are
                 low fidelity and disallowing of benign HTML. In order
                 to overcome these drawbacks BIXSAN, a Browser
                 Independent XSS SANitizer for prevention of XSS attacks
                 is proposed in this paper. BIXSAN includes the
                 proposition of three pronged strategy. These strategies
                 are as follows: Firstly the use of complete HTML parser
                 is proposed rather than approximating the behavior of
                 parser. The advantage of using complete HTML parser is
                 that it offers high fidelity. Secondly the use of
                 modified browser, viz., JavaScript Tester is proposed
                 to detect the presence of JavaScript for filtering it
                 out. Thirdly, identification of static tags is proposed
                 for allowing the benign HTML. Further, BIXSAN includes
                 the proposition of a parse tree generator at client
                 side browser to reduce the anomalous behavior of
                 browsers. BIXSAN was experimented in various browsers
                 such as Opera, Netscape, Internet Explorer (IE), and
                 Firefox and found to work for all the browsers. From
                 the experiments conducted it has been found that the
                 proposed BIXSAN prevents the injection of XSS attack
                 code successfully. Further, it has been verified that
                 BIXSAN reduces the anomalous behavior of browse.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Villazon:2011:CAW,
  author =       "Alex Villaz{\'o}n and Walter Binder and Philippe Moret
                 and Danilo Ansaloni",
  title =        "Comprehensive aspect weaving for {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "1015--1036",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Wagner:2011:CMM,
  author =       "Gregor Wagner and Andreas Gal and Christian Wimmer and
                 Brendan Eich and Michael Franz",
  title =        "Compartmental memory management in a modern web
                 browser",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "11",
  pages =        "119--128",
  month =        nov,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076022.1993496",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:57 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '11 conference proceedings.",
  abstract =     "Since their inception, the usage pattern of web
                 browsers has changed substantially. Rather than
                 sequentially navigating static web sites, modern web
                 browsers often manage a large number of simultaneous
                 tabs displaying dynamic web content, each of which
                 might be running a substantial amount of client-side
                 JavaScript code. This environment introduced a new
                 degree of parallelism that was not fully embraced by
                 the underlying JavaScript virtual machine architecture.
                 We propose a novel abstraction for multiple disjoint
                 JavaScript heaps, which we call compartments. We use
                 the notion of document origin to cluster objects into
                 separate compartments. Objects within a compartment can
                 reference each other directly.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Wagner:2011:SJV,
  author =       "Gregor Wagner and Andreas Gal and Michael Franz",
  title =        "``Slimming'' a {Java} virtual machine by way of cold
                 code removal and optimistic partial program loading",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "76",
  number =       "11",
  pages =        "1037--1053",
  day =          "1",
  month =        nov,
  year =         "2011",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Jun 21 10:31:56 MDT 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Book{Wampler:2011:FPJ,
  author =       "Dean Wampler",
  title =        "Functional programming for {Java} developers",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "xi + 72",
  year =         "2011",
  ISBN =         "1-4493-1265-9, 1-4493-1103-2",
  ISBN-13 =      "978-1-4493-1265-7, 978-1-4493-1103-2",
  LCCN =         "QA76.62 .W36 2011",
  bibdate =      "Wed Jul 12 16:13:28 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jfunctprogram.bib;
                 library.mit.edu:9909/mit01",
  URL =          "http://proquest.safaribooksonline.com/9781449312657",
  acknowledgement = ack-nhfb,
  remark =       "``Tools for better concurrency, abstraction, and
                 agility''--Cover.",
  subject =      "Functional programming (Computer science); Java
                 (Computer program language)",
}

@Article{Wang:2011:EEU,
  author =       "Alf Inge Wang",
  title =        "Extensive Evaluation of Using a Game Project in a
                 Software Architecture Course",
  journal =      j-TOCE,
  volume =       "11",
  number =       "1",
  pages =        "5:1--5:??",
  month =        feb,
  year =         "2011",
  CODEN =        "????",
  ISSN =         "1946-6226",
  bibdate =      "Mon Feb 28 16:08:34 MST 2011",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "This article describes an extensive evaluation of
                 introducing a game project to a software architecture
                 course. In this project, university students have to
                 construct and design a type of software architecture,
                 evaluate the architecture, implement an application
                 based on the architecture, and test this
                 implementation. In previous years, the domain of the
                 software architecture project has been a robot
                 controller for navigating a maze. In 2008, the students
                 on the software architecture course chose between the
                 two domains: Khepera robot simulation in Java and XNA
                 game development in C#. Independent of the domain
                 chosen, the students had to go through the same phases,
                 produce the same documents based on the same templates,
                 and follow exactly the same process.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Computing Education",
}

@Article{Wehr:2011:JIT,
  author =       "Stefan Wehr and Peter Thiemann",
  title =        "{JavaGI}: The Interaction of Type Classes with
                 Interfaces and Inheritance",
  journal =      j-TOPLAS,
  volume =       "33",
  number =       "4",
  pages =        "12:1--12:83",
  month =        jul,
  year =         "2011",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/1985342.1985343",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jul 18 12:33:22 MDT 2011",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The language JavaGI extends Java 1.5 conservatively by
                 a generalized interface mechanism. The generalization
                 subsumes retroactive and type-conditional interface
                 implementations, binary methods, symmetric multiple
                 dispatch, interfaces over families of types, and static
                 interface methods. These features make certain coding
                 patterns redundant, increase the expressiveness of the
                 type system, and permit solutions to extension and
                 integration problems with components in binary form,
                 for which previously several unrelated extensions had
                 been suggested. This article explains JavaGI and
                 motivates its design. Moreover, it formalizes a core
                 calculus for JavaGI and proves type soundness,
                 decidability of typechecking, and determinacy of
                 evaluation. The article also presents the
                 implementation of a JavaGI compiler and an accompanying
                 run-time system.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Wu:2011:RTS,
  author =       "Peng Wu and Hiroshige Hayashizaki and Hiroshi Inoue
                 and Toshio Nakatani",
  title =        "Reducing trace selection footprint for large-scale
                 {Java} applications without performance loss",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "789--804",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048127",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Wurthinger:2011:AED,
  author =       "Thomas W{\"u}rthinger and Walter Binder and Danilo
                 Ansaloni and Philippe Moret and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Applications of enhanced dynamic code evolution for
                 {Java} in {GUI} development and dynamic aspect-oriented
                 programming",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "2",
  pages =        "123--126",
  month =        feb,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/1942788.1868312",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Feb 14 16:37:34 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "While dynamic code evolution in object-oriented
                 systems is an important feature supported by dynamic
                 languages, there is currently only limited support for
                 dynamic code evolution in high-performance,
                 state-of-the-art runtime systems for statically typed
                 languages, such as the Java Virtual Machine. In this
                 tool demonstration, we present the Dynamic Code
                 Evolution VM, which is based on a recent version of
                 Oracle's state-of-the-art Java HotSpot(TM) VM and
                 allows unlimited changes to loaded classes at runtime.
                 Based on the Dynamic Code Evolution VM, we developed an
                 enhanced version of the Mantisse GUI builder (which is
                 part of the NetBeans IDE) that allows adding GUI
                 components without restarting the application under
                 development.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Wurthinger:2011:SAR,
  author =       "Thomas W{\"u}rthinger and Danilo Ansaloni and Walter
                 Binder and Christian Wimmer and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Safe and atomic run-time code evolution for {Java} and
                 its application to dynamic {AOP}",
  journal =      j-SIGPLAN,
  volume =       "46",
  number =       "10",
  pages =        "825--844",
  month =        oct,
  year =         "2011",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2076021.2048129",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Dec 15 07:46:53 MST 2011",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '11 conference proceedings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Afek:2012:ISJ,
  author =       "Yehuda Afek and Nir Shavit and Moran Tzafrir",
  title =        "Interrupting snapshots and the {Java} size method",
  journal =      j-J-PAR-DIST-COMP,
  volume =       "72",
  number =       "7",
  pages =        "880--888",
  month =        jul,
  year =         "2012",
  CODEN =        "JPDCER",
  DOI =          "https://doi.org/10.1016/j.jpdc.2012.03.007",
  ISSN =         "0743-7315 (print), 1096-0848 (electronic)",
  ISSN-L =       "0743-7315",
  bibdate =      "Thu May 17 13:55:41 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jpardistcomp.bib;
                 http://www.sciencedirect.com/science/journal/07437315",
  URL =          "http://www.sciencedirect.com/science/article/pii/S074373151200072X",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Parallel and Distributed Computing",
  journal-URL =  "http://www.sciencedirect.com/science/journal/07437315",
}

@Book{Altman:2012:USM,
  author =       "Yair M. Altman",
  title =        "Undocumented secrets of {MATLAB--Java} programming",
  publisher =    pub-CRC,
  address =      pub-CRC:adr,
  pages =        "xxi + 663 + 16",
  year =         "2012",
  ISBN =         "1-4398-6904-9 (e-book), 1-4398-6903-0 (hardback),
                 1-4398-6903-0",
  ISBN-13 =      "978-1-4398-6904-8 (e-book), 978-1-4398-6903-1
                 (hardback), 978-1-4398-6903-1",
  LCCN =         "QA297 .A544 2012",
  bibdate =      "Fri Nov 16 08:10:20 MST 2012",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/matlab.bib;
                 http://www.math.utah.edu/pub/tex/bib/numana2010.bib",
  acknowledgement = ack-nhfb,
  subject =      "MATLAB; Numerical analysis; Data processing; Java
                 (Computer program language); COMPUTERS / Programming /
                 Algorithms; COMPUTERS / Computer Engineering;
                 MATHEMATICS / Number Systems. MATHEMATICS / Numerical
                 Analysis",
  tableofcontents = "1.: Introduction to Java in MATLAB \\
                 2.: Using non-GUI Java libraries in MATLAB \\
                 3.: Rich GUI using Java Swing \\
                 4.: Uitools \\
                 5.: Built-in MATLAB widgets and Java classes \\
                 6.: Customizing MATLAB controls \\
                 7.: The Java frame \\
                 8.: The MATLAB desktop \\
                 9.: Using MATLAB from within Java \\
                 10.: Putting it all together \\
                 Appendix A.: What Is Java? \\
                 Appendix B.: UDD \\
                 Appendix C.: Open questions",
}

@Article{Anonymous:2012:AMJ,
  author =       "Anonymous",
  title =        "Another major {Java} panic",
  journal =      j-NETWORK-SECURITY,
  volume =       "2012",
  number =       "9",
  pages =        "19--20",
  month =        sep,
  year =         "2012",
  CODEN =        "NTSCF5",
  DOI =          "https://doi.org/10.1016/S1353-4858(12)70084-3",
  ISSN =         "1353-4858 (print), 1872-9371 (electronic)",
  ISSN-L =       "1353-4858",
  bibdate =      "Mon Dec 4 17:00:46 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/network-security.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1353485812700843",
  acknowledgement = ack-nhfb,
  fjournal =     "Network Security",
  journal-URL =  "https://www.sciencedirect.com/journal/network-security",
}

@Article{Ansaloni:2012:DAO,
  author =       "Danilo Ansaloni and Walter Binder and Philippe Moret
                 and Alex Villaz{\'o}n",
  title =        "Dynamic Aspect-Oriented Programming in {Java}: The
                 {HotWave} Experience",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7271",
  pages =        "92--122",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-35551-6_3",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:18:55 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012d.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-35551-6_3/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-35551-6",
  book-URL =     "http://www.springerlink.com/content/978-3-642-35551-6",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Arcaini:2012:CCM,
  author =       "Paolo Arcaini and Angelo Gargantini and Elvinia
                 Riccobene",
  title =        "{CoMA}: Conformance Monitoring of {Java} Programs by
                 Abstract State Machines",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7186",
  pages =        "223--238",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-29860-8_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:25:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-29860-8_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-29860-8",
  book-URL =     "http://www.springerlink.com/content/978-3-642-29860-8",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Austin:2012:MFD,
  author =       "Thomas H. Austin and Cormac Flanagan",
  title =        "Multiple facets for dynamic information flow",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "1",
  pages =        "165--178",
  month =        jan,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2103621.2103677",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Mar 15 18:16:55 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "JavaScript has become a central technology of the web,
                 but it is also the source of many security problems,
                 including cross-site scripting attacks and malicious
                 advertising code. Central to these problems is the fact
                 that code from untrusted sources runs with full
                 privileges. We implement information flow controls in
                 Firefox to help prevent violations of data
                 confidentiality and integrity. Most previous
                 information flow techniques have primarily relied on
                 either static type systems, which are a poor fit for
                 JavaScript, or on dynamic analyses that sometimes get
                 stuck due to problematic implicit flows, even in
                 situations where the target web application correctly
                 satisfies the desired security policy. We introduce
                 faceted values, a new mechanism for providing
                 information flow security in a dynamic manner that
                 overcomes these limitations. Taking inspiration from
                 secure multi-execution, we use faceted values to
                 simultaneously and efficiently simulate multiple
                 executions for different security levels, thus
                 providing non-interference with minimal overhead, and
                 without the reliance on the stuck executions of prior
                 dynamic approaches.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '12 conference proceedings.",
}

@Article{Avvenuti:2012:JTC,
  author =       "Marco Avvenuti and Cinzia Bernardeschi and Nicoletta
                 De Francesco and Paolo Masci",
  title =        "{JCSI}: a tool for checking secure information flow in
                 {Java Card} applications",
  journal =      j-J-SYST-SOFTW,
  volume =       "85",
  number =       "11",
  pages =        "2479--2493",
  month =        nov,
  year =         "2012",
  CODEN =        "JSSODM",
  DOI =          "https://doi.org/10.1016/j.jss.2012.05.061",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Aug 20 17:08:56 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib;
                 http://www.sciencedirect.com/science/journal/01641212",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121212001513",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Baar:2012:DEP,
  author =       "Thomas Baar and Philipp Kumar",
  title =        "Detecting Entry Points in {Java} Libraries",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7162",
  pages =        "42--54",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-29709-0_6",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:25:23 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-29709-0_6/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-29709-0",
  book-URL =     "http://www.springerlink.com/content/978-3-642-29709-0",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Barbu:2012:ARA,
  author =       "Guillaume Barbu and Philippe Hoogvorst",
  title =        "Application-Replay Attack on {Java} Cards: When the
                 Garbage Collector Gets Confused",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7159",
  pages =        "1--13",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28166-2_1",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:25:19 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28166-2_1/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28166-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28166-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Bedla:2012:SSJ,
  author =       "Mariusz Bedla and Krzysztof Sapiecha",
  title =        "Scalable Store of {Java} Objects Using Range
                 Partitioning",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7054",
  pages =        "84--93",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28038-2_7",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:23:17 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012a.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28038-2_7/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28038-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28038-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Bellia:2012:ERT,
  author =       "Marco Bellia and M. Eugenia Occhiuto",
  title =        "The Equivalence of Reduction and Translation Semantics
                 of {Java} Simple Closures",
  journal =      j-FUND-INFO,
  volume =       "119",
  number =       "3--4",
  pages =        "249--264",
  month =        aug,
  year =         "2012",
  CODEN =        "FUMAAJ",
  DOI =          "https://doi.org/10.3233/FI-2012-736",
  ISSN =         "0169-2968 (print), 1875-8681 (electronic)",
  ISSN-L =       "0169-2968",
  bibdate =      "Sat Mar 5 17:15:33 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fundinfo2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Fundamenta Informaticae",
  journal-URL =  "http://content.iospress.com/journals/fundamenta-informaticae",
}

@Article{Bhattacharya:2012:DLI,
  author =       "Suparna Bhattacharya and Karthick Rajamani and K.
                 Gopinath and Manish Gupta",
  title =        "Does lean imply green?: a study of the power
                 performance implications of {Java} runtime bloat",
  journal =      j-SIGMETRICS,
  volume =       "40",
  number =       "1",
  pages =        "259--270",
  month =        jun,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2318857.2254789",
  ISSN =         "0163-5999 (print), 1557-9484 (electronic)",
  ISSN-L =       "0163-5999",
  bibdate =      "Fri Nov 9 11:06:39 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigmetrics.bib",
  abstract =     "The presence of software bloat in large flexible
                 software systems can hurt energy efficiency. However,
                 identifying and mitigating bloat is fairly effort
                 intensive. To enable such efforts to be directed where
                 there is a substantial potential for energy savings, we
                 investigate the impact of bloat on power consumption
                 under different situations. We conduct the first
                 systematic experimental study of the joint
                 power-performance implications of bloat across a range
                 of hardware and software configurations on modern
                 server platforms. The study employs controlled
                 experiments to expose different effects of a common
                 type of Java runtime bloat, excess temporary objects,
                 in the context of the SPECPower_ssj2008 workload. We
                 introduce the notion of equi-performance power
                 reduction to characterize the impact, in addition to
                 peak power comparisons. The results show a wide
                 variation in energy savings from bloat reduction across
                 these configurations. Energy efficiency benefits at
                 peak performance tend to be most pronounced when bloat
                 affects a performance bottleneck and non-bloated
                 resources have low energy-proportionality.
                 Equi-performance power savings are highest when bloated
                 resources have a high degree of energy proportionality.
                 We develop an analytical model that establishes a
                 general relation between resource pressure caused by
                 bloat and its energy efficiency impact under different
                 conditions of resource bottlenecks and energy
                 proportionality. Applying the model to different
                 ``what-if'' scenarios, we predict the impact of bloat
                 reduction and corroborate these predictions with
                 empirical observations. Our work shows that the
                 prevalent software-only view of bloat is inadequate for
                 assessing its power-performance impact and instead
                 provides a full systems approach for reasoning about
                 its implications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGMETRICS Performance Evaluation Review",
  journal-URL =  "http://portal.acm.org/toc.cfm?id=J618",
}

@Article{Bluemke:2012:DTJ,
  author =       "Ilona Bluemke and Artur Rembiszewski",
  title =        "Dataflow Testing of {Java} Programs with {DFC}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7054",
  pages =        "215--228",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28038-2_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:23:17 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012a.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28038-2_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28038-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28038-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Bodden:2012:PEF,
  author =       "Eric Bodden and Patrick Lam and Laurie Hendren",
  title =        "Partially Evaluating Finite-State Runtime Monitors
                 Ahead of Time",
  journal =      j-TOPLAS,
  volume =       "34",
  number =       "2",
  pages =        "7:1--7:??",
  month =        jun,
  year =         "2012",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2220365.2220366",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Fri Jun 29 17:33:40 MDT 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Finite-state properties account for an important class
                 of program properties, typically related to the order
                 of operations invoked on objects. Many library
                 implementations therefore include manually written
                 finite-state monitors to detect violations of
                 finite-state properties at runtime. Researchers have
                 recently proposed the explicit specification of
                 finite-state properties and automatic generation of
                 monitors from the specification. However, runtime
                 monitoring only shows the presence of violations, and
                 typically cannot prove their absence. Moreover,
                 inserting a runtime monitor into a program under test
                 can slow down the program by several orders of
                 magnitude. In this work, we therefore present a set of
                 four static whole-program analyses that partially
                 evaluate runtime monitors at compile time, with
                 increasing cost and precision. As we show,
                 ahead-of-time evaluation can often evaluate the monitor
                 completely statically. This may prove that the program
                 cannot violate the property on any execution or may
                 prove that violations do exist. In the remaining cases,
                 the partial evaluation converts the runtime monitor
                 into a residual monitor. This monitor only receives
                 events from program locations that the analyses failed
                 to prove irrelevant. This makes the residual monitor
                 much more efficient than a full monitor, while still
                 capturing all property violations at runtime. We
                 implemented the analyses in Clara, a novel framework
                 for the partial evaluation of AspectJ-based runtime
                 monitors, and validated our approach by applying Clara
                 to finite-state properties over several large-scale
                 Java programs. Clara proved that most of the programs
                 never violate our example properties. Some programs
                 required monitoring, but in those cases Clara could
                 often reduce the monitoring overhead to below 10\%. We
                 observed that several programs did violate the stated
                 properties.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Boland:2012:JCC,
  author =       "Tim Boland and Paul E. Black",
  title =        "{Juliet 1.1 C/C++} and {Java Test Suite}",
  journal =      j-COMPUTER,
  volume =       "45",
  number =       "10",
  pages =        "88--90",
  month =        oct,
  year =         "2012",
  CODEN =        "CPTRB4",
  DOI =          "https://doi.org/10.1109/MC.2012.345",
  ISSN =         "0018-9162 (print), 1558-0814 (electronic)",
  ISSN-L =       "0018-9162",
  bibdate =      "Mon Oct 22 06:38:12 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computer2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2",
}

@Article{Bourdykine:2012:LAM,
  author =       "Pavel Bourdykine and Stephen M. Watt",
  title =        "Lightweight Abstraction for Mathematical Computation
                 in {Java}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7442",
  pages =        "47--59",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-32973-9_5",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:40 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-32973-9_5/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-32973-9",
  book-URL =     "http://www.springerlink.com/content/978-3-642-32973-9",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Bradel:2012:ITJ,
  author =       "Bory J. Bradel and Tarek S. Abdelrahman",
  title =        "Inlining with traces in {Java} programs",
  journal =      j-INT-J-COMPUT-SYST-SCI-ENG,
  volume =       "27",
  number =       "4",
  pages =        "??--??",
  month =        "????",
  year =         "2012",
  CODEN =        "CSSEEI",
  ISSN =         "0267-6192",
  ISSN-L =       "0267-6192",
  bibdate =      "Tue Dec 3 12:04:33 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsystscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal of Computer Systems Science and
                 Engineering",
}

@Article{Brockschmidt:2012:ADN,
  author =       "Marc Brockschmidt and Thomas Str{\"o}der and Carsten
                 Otto and J{\"u}rgen Giesl",
  title =        "Automated Detection of Non-termination and {{\tt
                 NullPointerException}}s for {Java} Bytecode",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7421",
  pages =        "123--141",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31762-0_9",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31762-0_9/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31762-0",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31762-0",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Brockschmidt:2012:ATP,
  author =       "Marc Brockschmidt and Richard Musiol and Carsten Otto
                 and J{\"u}rgen Giesl",
  title =        "Automated Termination Proofs for {Java} Programs with
                 Cyclic Data",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7358",
  pages =        "105--122",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31424-7_13",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:20:49 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012f.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31424-7_13/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31424-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31424-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Brown:2012:BRF,
  author =       "Neil Brown",
  title =        "Book Review: {{\booktitle{Functional Programming for
                 Java Developers --- Tools for Better Concurrency,
                 Abstraction, and Agility}}, By Dean Wampler, O'Reilly
                 Media, July 2011, ISBN-13: 978-1-4493-1103-2, 90 pp.}",
  journal =      j-J-FUNCT-PROGRAM,
  volume =       "22",
  number =       "6",
  pages =        "853--854",
  month =        nov,
  year =         "2012",
  CODEN =        "JFPRES",
  DOI =          "https://doi.org/10.1017/S0956796812000299",
  ISSN =         "0956-7968 (print), 1469-7653 (electronic)",
  ISSN-L =       "0956-7968",
  bibdate =      "Wed Jul 12 06:49:21 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jfunctprogram.bib",
  URL =          "https://www.cambridge.org/core/product/02755329E5B068C2D403EE6722FCBD06",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Funct. Program.",
  fjournal =     "Journal of Functional Programming",
  journal-URL =  "http://journals.cambridge.org/action/displayJournal?jid=JFP",
  onlinedate =   "01 August 2012",
}

@Article{Burdette:2012:ECJ,
  author =       "Philip F. Burdette and William F. Jones and Brian C.
                 Blose and Gregory M. Kapfhammer",
  title =        "An empirical comparison of {Java} remote communication
                 primitives for intra-node data transmission",
  journal =      j-SIGMETRICS,
  volume =       "39",
  number =       "4",
  pages =        "2--11",
  month =        apr,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2185395.2185397",
  ISSN =         "0163-5999 (print), 1557-9484 (electronic)",
  ISSN-L =       "0163-5999",
  bibdate =      "Fri Nov 9 11:06:38 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigmetrics.bib",
  abstract =     "This paper presents a benchmarking suite that measures
                 the performance of using sockets and eXtensible Markup
                 Language remote procedure calls (XML-RPC) to exchange
                 intra-node messages between Java virtual machines
                 (JVMs). The paper also reports on an empirical study
                 comparing sockets and XML-RPC with response time
                 measurements from timers that use both operating system
                 tools and Java language instrumentation. By leveraging
                 packet filters inside the GNU/Linux kernel, the
                 benchmark suite also calculates network resource
                 consumption. Moreover, the framework interprets the
                 response time results in light of memory subsystem
                 metrics characterizing the behavior of the JVM. The
                 empirical findings indicate that sockets perform better
                 when transmitting small to very large objects, while
                 XML-RPC exhibits lower response time than sockets with
                 extremely large bulk data transfers. The experiments
                 reveal trade-offs in performance and thus represent the
                 first step towards determining if Java remote
                 communication primitives can support the efficient
                 exchange of intra-node messages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGMETRICS Performance Evaluation Review",
  journal-URL =  "http://portal.acm.org/toc.cfm?id=J618",
}

@Article{Burnim:2012:NIN,
  author =       "Jacob Burnim and Tayfun Elmas and George Necula and
                 Koushik Sen",
  title =        "{NDetermin}: inferring nondeterministic sequential
                 specifications for parallelism correctness",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "8",
  pages =        "329--330",
  month =        aug,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2370036.2145879",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Sep 12 12:11:57 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPOPP '12 conference proceedings.",
  abstract =     "Nondeterministic Sequential (NDSeq) specifications
                 have been proposed as a means for separating the
                 testing, debugging, and verifying of a program's
                 parallelism correctness and its sequential functional
                 correctness. In this work, we present a technique that,
                 given a few representative executions of a parallel
                 program, combines dynamic data flow analysis and
                 Minimum-Cost Boolean Satisfiability (MinCostSAT)
                 solving for automatically inferring a likely NDSeq
                 specification for the parallel program. For a number of
                 Java benchmarks, our tool NDetermin infers equivalent
                 or stronger NDSeq specifications than those previously
                 written manually.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Burnim:2012:SCS,
  author =       "Jacob Burnim and George Necula and Koushik Sen",
  title =        "Specifying and checking semantic atomicity for
                 multithreaded programs",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "4",
  pages =        "79--90",
  month =        apr,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2248487.1950377",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In practice, it is quite difficult to write correct
                 multithreaded programs due to the potential for
                 unintended and nondeterministic interference between
                 parallel threads. A fundamental correctness property
                 for such programs is atomicity---a block of code in a
                 program is atomic if, for any parallel execution of the
                 program, there is an execution with the same overall
                 program behavior in which the block is executed
                 serially. We propose semantic atomicity, a
                 generalization of atomicity with respect to a
                 programmer-defined notion of equivalent behavior. We
                 propose an assertion framework in which a programmer
                 can use bridge predicates to specify noninterference
                 properties at the level of abstraction of their
                 application. Further, we propose a novel algorithm for
                 systematically testing atomicity specifications on
                 parallel executions with a bounded number of
                 interruptions---i.e. atomic blocks whose execution is
                 interleaved with that of other threads. We further
                 propose a set of sound heuristics and optional user
                 annotations that increase the efficiency of checking
                 atomicity specifications in the common case where the
                 specifications hold. We have implemented our assertion
                 framework for specifying and checking semantic
                 atomicity for parallel Java programs, and we have
                 written semantic atomicity specifications for a number
                 of benchmarks. We found that using bridge predicates
                 allowed us to specify the natural and intended atomic
                 behavior of a wider range of programs than did previous
                 approaches. Further, in checking our specifications, we
                 found several previously unknown bugs, including in the
                 widely-used java.util.concurrent library.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '12 conference proceedings.",
}

@Article{Cao:2012:YYP,
  author =       "Ting Cao and Stephen M. Blackburn and Tiejun Gao and
                 Kathryn S. McKinley",
  title =        "The yin and yang of power and performance for
                 asymmetric hardware and managed software",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "40",
  number =       "3",
  pages =        "225--236",
  month =        jun,
  year =         "2012",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2366231.2337185",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Thu Sep 6 10:21:07 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  note =         "ISCA '12 conference proceedings.",
  abstract =     "On the hardware side, asymmetric multicore processors
                 present software with the challenge and opportunity of
                 optimizing in two dimensions: performance and power.
                 Asymmetric multicore processors (AMP) combine
                 general-purpose big (fast, high power) cores and small
                 (slow, low power) cores to meet power constraints.
                 Realizing their energy efficiency opportunity requires
                 workloads with differentiated performance and power
                 characteristics. On the software side, managed
                 workloads written in languages such as C\#, Java,
                 JavaScript, and PHP are ubiquitous. Managed languages
                 abstract over hardware using Virtual Machine (VM)
                 services (garbage collection, interpretation, and/or
                 just-in-time compilation) that together impose
                 substantial energy and performance costs, ranging from
                 10\% to over 80\%. We show that these services manifest
                 a differentiated performance and power workload. To
                 differing degrees, they are parallel, asynchronous,
                 communicate infrequently, and are not on the
                 application?s critical path. We identify a synergy
                 between AMP and VM services that we exploit to attack
                 the 40\% average energy overhead due to VM services.
                 Using measurements and very conservative models, we
                 show that adding small cores tailored for VM services
                 should deliver, at least, improvements in performance
                 of 13\%, energy of 7\%, and performance per energy of
                 22\%. The yin of VM services is overhead, but it meets
                 the yang of small cores on an AMP. The yin of AMP is
                 exposed hardware complexity, but it meets the yang of
                 abstraction in managed languages. VM services fulfill
                 the AMP requirement for an asynchronous, non-critical,
                 differentiated, parallel, and ubiquitous workload to
                 deliver energy efficiency. Generalizing this approach
                 beyond system software to applications will require
                 substantially more software and hardware investment,
                 but these results show the potential energy efficiency
                 gains are significant.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
}

@Article{Ceccarello:2012:TGC,
  author =       "Matteo Ceccarello and Nastaran Shafiei",
  title =        "Tools to generate and check consistency of model
                 classes for {Java PathFinder}",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382796",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Java PathFinder (JPF) is a model checker for Java
                 applications. Like any other model checker, JPF has to
                 combat the notorious state space explosion problem.
                 Since JPF is a JVM, it can only model check Java
                 bytecode and needs to handle native calls differently.
                 JPF tackles the state space explosion problem and
                 handles native calls by means of so-called model
                 classes and native peers. In this paper we focus on
                 model classes. For a class that either causes a state
                 space explosion or that contains native calls, one can
                 introduce a model class that either abstracts away
                 particular details or implements the native call in
                 Java. Rather than model checking the original class,
                 JPF model checks the model class instead. Writing such
                 model classes is time consuming and error prone. In
                 this paper we propose two tools to assist with the
                 development of model classes. The one tool generates a
                 skeleton of a model class. The other tool checks
                 whether a model class is consistent with the original
                 class.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Chanda:2012:TBS,
  author =       "Jayeeta Chanda and Sabnam Sengupta and Ananya Kanjilal
                 and Swapan Bhattacharya",
  title =        "Traceability between service component and class: a
                 model based approach",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382761",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Service components are the key to the development of a
                 service-oriented solution as they provide the
                 implementation of the services. The implementation of
                 Service components provides the actual function of the
                 component and can be defined with one or more Java
                 classes. We propose a model named Service Component to
                 Class (SC2C) that maps the service components of an
                 application with that of the classes that implement the
                 service components. We also propose a visual model as a
                 part of SC2C that represents the classes and
                 relationship among classes. This model helps to
                 establish traceability among service components and
                 classes. We also introduce some traceability metrics to
                 measure traceability between the artifacts of Service
                 Oriented Architecture (SOA) and Object Oriented (OO)
                 paradigms. This work, along with our earlier work, help
                 in Software Configuration Management of a SOA
                 application. We provide an insurance system case study
                 to illustrate our approach.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Chang:2012:IOT,
  author =       "Mason Chang and Bernd Mathiske and Edwin Smith and
                 Avik Chaudhuri and Andreas Gal and Michael Bebenita and
                 Christian Wimmer and Michael Franz",
  title =        "The impact of optional type information on {JIT}
                 compilation of dynamically typed languages",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "2",
  pages =        "13--24",
  month =        feb,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2168696.2047853",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Apr 20 17:34:09 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Optionally typed languages enable direct performance
                 comparisons between untyped and type annotated source
                 code. We present a comprehensive performance evaluation
                 of two different JIT compilers in the context of
                 ActionScript, a production-quality optionally typed
                 language. One JIT compiler is optimized for quick
                 compilation rather than JIT compiled code performance.
                 The second JIT compiler is a more aggressively
                 optimizing compiler, performing both high-level and
                 low-level optimizations. We evaluate both JIT compilers
                 directly on the same benchmark suite, measuring their
                 performance changes across fully typed, partially
                 typed, and untyped code. Such evaluations are
                 especially relevant to dynamically typed languages such
                 as JavaScript, which are currently evaluating the idea
                 of adding optional type annotations. We demonstrate
                 that low-level optimizations rarely accelerate the
                 program enough to pay back the investment into
                 performing them in an optionally typed language. Our
                 experiments and data demonstrate that high-level
                 optimizations are required to improve performance by
                 any significant amount.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DSL '11 conference proceedings.",
}

@Article{Chevalier-Boisvert:2012:BSH,
  author =       "Maxime Chevalier-Boisvert and Erick Lavoie and Marc
                 Feeley and Bruno Dufour",
  title =        "Bootstrapping a self-hosted research virtual machine
                 for {JavaScript}: an experience report",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "2",
  pages =        "61--72",
  month =        feb,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2168696.2047858",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Apr 20 17:34:09 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript is one of the most widely used dynamic
                 languages. The performance of existing JavaScript VMs,
                 however, is lower than that of VMs for static
                 languages. There is a need for a research VM to easily
                 explore new implementation approaches. This paper
                 presents the Tachyon JavaScript VM which was designed
                 to be flexible and to allow experimenting with new
                 approaches for the execution of JavaScript. The Tachyon
                 VM is itself implemented in JavaScript and currently
                 supports a subset of the full language that is
                 sufficient to bootstrap itself. The paper discusses the
                 architecture of the system and in particular the
                 bootstrapping of a self-hosted VM. Preliminary
                 performance results indicate that our VM, with few
                 optimizations, can already execute code faster than a
                 commercial JavaScript interpreter on some benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DSL '11 conference proceedings.",
}

@Article{Chugh:2012:DTJ,
  author =       "Ravi Chugh and David Herman and Ranjit Jhala",
  title =        "Dependent types for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "587--606",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384659",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present Dependent JavaScript (DJS), a statically
                 typed dialect of the imperative, object-oriented,
                 dynamic language. DJS supports the particularly
                 challenging features such as run-time type-tests,
                 higher-order functions, extensible objects, prototype
                 inheritance, and arrays through a combination of nested
                 refinement types, strong updates to the heap, and heap
                 unrolling to precisely track prototype hierarchies.
                 With our implementation of DJS, we demonstrate that the
                 type system is expressive enough to reason about a
                 variety of tricky idioms found in small examples drawn
                 from several sources, including the popular book
                 JavaScript: The Good Parts and the SunSpider benchmark
                 suite.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Cosentino:2012:MDR,
  author =       "Valerio Cosentino and Jordi Cabot and Patrick Albert
                 and Philippe Bauquel and Jacques Perronnet",
  title =        "A Model Driven Reverse Engineering Framework for
                 Extracting Business Rules Out of a {Java} Application",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7438",
  pages =        "17--31",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-32689-9_3",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:34 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-32689-9_3/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-32689-9",
  book-URL =     "http://www.springerlink.com/content/978-3-642-32689-9",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Cote:2012:JPS,
  author =       "Marco Cote and German Riano and Raha
                 Akhavan-Tabatabaei and Juan Fernando Perez and Andres
                 Sarmiento and Julio Goez",
  title =        "{jMarkov} package: a stochastic modeling tool",
  journal =      j-SIGMETRICS,
  volume =       "39",
  number =       "4",
  pages =        "48--48",
  month =        apr,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2185395.2185439",
  ISSN =         "0163-5999 (print), 1557-9484 (electronic)",
  ISSN-L =       "0163-5999",
  bibdate =      "Fri Nov 9 11:06:38 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigmetrics.bib",
  abstract =     "When analyzing real life stochastic systems in most
                 cases is easier, cheaper and more effective to use
                 analytical models rather than studying the physical
                 system or a simulation model of it. The stochastic
                 modeling is a powerful tool that helps the analysis and
                 optimization of stochastic systems. However the use of
                 stochastic modeling is not widely spread in today's
                 industries and among practitioners. This lack of
                 acceptance is caused by two main reasons the first
                 being the curse of dimensionality, which is defined by
                 the number of states required to describe a system.
                 This number grows exponentially as the size of the
                 system increases. The second reason is the lack of
                 user-friendly and efficient software packages that
                 allow the modeling of the problem without involving the
                 user with the implementation of the solution algorithms
                 to solve it. The curse of dimensionality is a constant
                 problem that has been addressed by different approaches
                 through time, but it is not intended within the scope
                 of our work; our focus is on the latter issue. We
                 propose a generic solver that enables the user to focus
                 on modeling without getting involved in the complexity
                 required by the solution methods. We design an object
                 oriented framework for stochastic modeling with four
                 components namely, jMarkov which models Markov Chains,
                 jQBD which models Quasi Birth and Death Processes,
                 jPhase which models Phase Types Distributions and jMDP
                 which models Markov Decision Processes. We concentrate
                 all our effort on creating a software that allows the
                 user to model any kind of system like a Markov Chain,
                 QBD or MDP with fairly basic knowledge of programming.
                 To this end we separate the modeling part from the
                 solution algorithms; therefore the user only needs to
                 mathematically model the problem and the software will
                 do the rest. However, we leave the package with the
                 possibility that experienced users can code their own
                 solution algorithms; this is done since the package
                 only contains the most common algorithms found in the
                 literature. The software does not use external plain
                 files like '.txt' or '.dat' written with specific
                 commands, but rather it is based on OOP (Object
                 Oriented Programming). The main advantages of it
                 include implementation in Java framework, which allows
                 the computational representation of the model to be
                 very similar to its mathematical representation such
                 that it would become natural to pass from one to
                 another. Also the program possesses the usual
                 characteristics of Java such as the use of inheritance
                 and abstraction. Finally, Java is a high level
                 computational language so the user doesn't need to be
                 concerned about technical problems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGMETRICS Performance Evaluation Review",
  journal-URL =  "http://portal.acm.org/toc.cfm?id=J618",
}

@Article{daCosta:2012:JSL,
  author =       "Umberto Souza da Costa and Anamaria Martins Moreira
                 and Martin A. Musicante and Pl{\'a}cido A. Souza Neto",
  title =        "{JCML}: a specification language for the runtime
                 verification of {Java Card} programs",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "77",
  number =       "4",
  pages =        "533--550",
  day =          "1",
  month =        apr,
  year =         "2012",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2010.03.003",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Feb 10 11:46:13 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642310000596",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{deMol:2012:GTJ,
  author =       "Maarten de Mol and Arend Rensink and James J. Hunt",
  title =        "Graph Transforming {Java} Data",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7212",
  pages =        "209--223",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28872-2_15",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:26:25 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012c.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28872-2_15/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28872-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28872-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Devietti:2012:RRC,
  author =       "Joseph Devietti and Jacob Nelson and Tom Bergan and
                 Luis Ceze and Dan Grossman",
  title =        "{RCDC}: a relaxed consistency deterministic computer",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "4",
  pages =        "67--78",
  month =        apr,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2248487.1950376",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Providing deterministic execution significantly
                 simplifies the debugging, testing, replication, and
                 deployment of multithreaded programs. Recent work has
                 developed deterministic multiprocessor architectures as
                 well as compiler and runtime systems that enforce
                 determinism in current hardware. Such work has
                 incidentally imposed strong memory-ordering properties.
                 Historically, memory ordering has been relaxed in favor
                 of higher performance in shared memory multiprocessors
                 and, interestingly, determinism exacerbates the cost of
                 strong memory ordering. Consequently, we argue that
                 relaxed memory ordering is vital to achieving faster
                 deterministic execution. This paper introduces RCDC, a
                 deterministic multiprocessor architecture that takes
                 advantage of relaxed memory orderings to provide
                 high-performance deterministic execution with low
                 hardware complexity. RCDC has two key innovations: a
                 hybrid HW/SW approach to enforcing determinism; and a
                 new deterministic execution strategy that leverages
                 data-race-free-based memory models (e.g., the models
                 for Java and C++) to improve performance and
                 scalability without sacrificing determinism, even in
                 the presence of races. In our hybrid HW/SW approach,
                 the only hardware mechanisms required are
                 software-controlled store buffering and support for
                 precise instruction counting; we do not require
                 speculation. A runtime system uses these mechanisms to
                 enforce determinism for arbitrary programs. We evaluate
                 RCDC using PARSEC benchmarks and show that relaxing
                 memory ordering leads to performance and scalability
                 close to nondeterministic execution without requiring
                 any form of speculation. We also compare our new
                 execution strategy to one based on TSO
                 (total-store-ordering) and show that some applications
                 benefit significantly from the extra relaxation. We
                 also evaluate a software-only implementation of our new
                 deterministic execution strategy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '12 conference proceedings.",
}

@Article{Dhawan:2012:EJT,
  author =       "Mohan Dhawan and Chung-chieh Shan and Vinod
                 Ganapathy",
  title =        "Enhancing {JavaScript} with Transactions",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7313",
  pages =        "383--408",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31057-7_18",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31057-7_18/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31057-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31057-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{DHondt:2012:ISS,
  author =       "Theo D'Hondt",
  title =        "An interpreter for server-side {HOP}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "2",
  pages =        "1--12",
  month =        feb,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2168696.2047851",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Apr 20 17:34:09 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "HOP is a Scheme-based multi-tier programming language
                 for the Web. The client-side of a program is compiled
                 to JavaScript, while the server-side is executed by a
                 mix of natively compiled code and interpreted code. At
                 the time where HOP programs were basic scripts, the
                 performance of the server-side interpreter was not a
                 concern; an inefficient interpreter was acceptable. As
                 HOP expanded, HOP programs got larger and more complex.
                 A more efficient interpreter was necessary. This new
                 interpreter is described in this paper. It is compact,
                 its whole implementation counting no more than 2.5
                 KLOC. It is more than twice faster than the old
                 interpreter and consumes less than a third of its
                 memory. Although it cannot compete with static or JIT
                 native compilers, our experimental results show that it
                 is amongst the fastest interpreters for dynamic
                 languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DSL '11 conference proceedings.",
}

@Article{Dolby:2012:DCA,
  author =       "Julian Dolby and Christian Hammer and Daniel Marino
                 and Frank Tip and Mandana Vaziri and Jan Vitek",
  title =        "A data-centric approach to synchronization",
  journal =      j-TOPLAS,
  volume =       "34",
  number =       "1",
  pages =        "4:1--4:48",
  month =        apr,
  year =         "2012",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2160910.2160913",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Apr 30 17:20:50 MDT 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Concurrency-related errors, such as data races, are
                 frustratingly difficult to track down and eliminate in
                 large object-oriented programs. Traditional approaches
                 to preventing data races rely on protecting instruction
                 sequences with synchronization operations. Such
                 control-centric approaches are inherently brittle, as
                 the burden is on the programmer to ensure that all
                 concurrently accessed memory locations are consistently
                 protected. Data-centric synchronization is an
                 alternative approach that offloads some of the work on
                 the language implementation. Data-centric
                 synchronization groups fields of objects into atomic
                 sets to indicate that these fields must always be
                 updated atomically. Each atomic set has associated
                 units of work, that is, code fragments that preserve
                 the consistency of that atomic set. Synchronization
                 operations are added automatically by the compiler. We
                 present an extension to the Java programming language
                 that integrates annotations for data-centric
                 concurrency control. The resulting language, called AJ,
                 relies on a type system that enables separate
                 compilation and supports atomic sets that span multiple
                 objects and that also supports full encapsulation for
                 more efficient code generation. We evaluate our
                 proposal by refactoring classes from standard
                 libraries, as well as a number of multithreaded
                 benchmarks, to use atomic sets. Our results suggest
                 that data-centric synchronization is easy to use and
                 enjoys low annotation overhead, while successfully
                 preventing data races. Moreover, experiments on the
                 SPECjbb benchmark suggest that acceptable performance
                 can be achieved with a modest amount of tuning.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Book{Emerick:2012:CP,
  author =       "Chas Emerick and Brian Carper and Christophe Grand",
  title =        "{Clojure} programming",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "xviii + 607",
  year =         "2012",
  ISBN =         "1-4493-9470-1",
  ISBN-13 =      "978-1-4493-9470-7",
  LCCN =         "QA76.73.C565 E538 2012",
  bibdate =      "Wed Nov 21 14:51:23 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/common-lisp.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/ora.bib;
                 z3950.loc.gov:7090/Voyager",
  URL =          "http://www.loc.gov/catdir/enhancements/fy1211/2012405367-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1211/2012405367-d.html;
                 http://www.loc.gov/catdir/enhancements/fy1211/2012405367-t.html",
  abstract =     "This functional programming language not only lets you
                 take advantage of Java libraries, services, and other
                 JVM resources, it rivals other dynamic languages such
                 as Ruby and Python. With this comprehensive guide,
                 you'll learn Clojure fundamentals with examples that
                 relate it to languages you already know.",
  acknowledgement = ack-nhfb,
  remark =       "Practical Lisp for the Java world [from cover].",
  subject =      "Java virtual machine; Clojure (Computer program
                 language); Java (Computer program language); Functional
                 programming (Computer science)",
  tableofcontents = "Down the rabbit hole \\
                 Functional programming \\
                 Collections and data structures \\
                 Concurrency and parallelism \\
                 Macros \\
                 Datatypes and protocols \\
                 Multimethods \\
                 Organizing and building Clojure projects \\
                 Java and JVM interoperability \\
                 REPL-oriented programming \\
                 Numerics and mathematics \\
                 Design patterns \\
                 Testing \\
                 Using relational databases \\
                 Using nonrelational databases \\
                 Clojure and the Web \\
                 Deploying Clojure web applications \\
                 Choosing Clojure type definition forms wisely \\
                 Introducing Clojure into your workplace \\
                 What's next?",
}

@Article{Endrullis:2012:WEM,
  author =       "Stefan Endrullis and Andreas Thor and Erhard Rahm",
  title =        "{WETSUIT}: an efficient mashup tool for searching and
                 fusing web entities",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "5",
  number =       "12",
  pages =        "1970--1973",
  month =        aug,
  year =         "2012",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Tue Nov 6 16:43:21 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "We demonstrate a new powerful mashup tool called
                 WETSUIT (Web EnTity Search and fUsIon Tool) to search
                 and integrate web data from diverse sources and
                 domain-specific entity search engines. WETSUIT supports
                 adaptive search strategies to query sets of relevant
                 entities with a minimum of communication overhead.
                 Mashups can be composed using a set of high-level
                 operators based on the Java-compatible language Scala.
                 The operator implementation supports a high degree of
                 parallel processing, in particular a streaming of
                 entities between all data transformation operations
                 facilitating a fast presentation of intermediate
                 results. WETSUIT has already been applied to solve
                 challenging integration tasks from different domains.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
}

@Article{Erdweg:2012:GLE,
  author =       "Sebastian Erdweg and Lennart C. L. Kats and Tillmann
                 Rendel and Christian K{\"a}stner and Klaus Ostermann
                 and Eelco Visser",
  title =        "Growing a language environment with editor libraries",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "3",
  pages =        "167--176",
  month =        mar,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2189751.2047891",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:00 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Large software projects consist of code written in a
                 multitude of different (possibly domain-specific)
                 languages, which are often deeply interspersed even in
                 single files. While many proposals exist on how to
                 integrate languages semantically and syntactically, the
                 question of how to support this scenario in integrated
                 development environments (IDEs) remains open: How can
                 standard IDE services, such as syntax highlighting,
                 outlining, or reference resolving, be provided in an
                 extensible and compositional way, such that an open mix
                 of languages is supported in a single file? Based on
                 our library-based syntactic extension language for
                 Java, SugarJ, we propose to make IDEs extensible by
                 organizing editor services in editor libraries. Editor
                 libraries are libraries written in the object language,
                 SugarJ, and hence activated and composed through
                 regular import statements on a file-by-file basis. We
                 have implemented an IDE for editor libraries on top of
                 SugarJ and the Eclipse-based Spoofax language
                 workbench. We have validated editor libraries by
                 evolving this IDE into a fully-fledged and schema-aware
                 XML editor as well as an extensible Latex editor, which
                 we used for writing this paper.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GCPE '11 conference proceedings.",
}

@Article{Exposito:2012:DSJ,
  author =       "Roberto R. Exp{\'o}sito and Guillermo L. Taboada and
                 Juan Touri{\~n}o and Ram{\'o}n Doallo",
  title =        "Design of scalable {Java} message-passing
                 communications over {InfiniBand}",
  journal =      j-J-SUPERCOMPUTING,
  volume =       "61",
  number =       "1",
  pages =        "141--165",
  month =        jul,
  year =         "2012",
  CODEN =        "JOSUED",
  ISSN =         "0920-8542 (print), 1573-0484 (electronic)",
  ISSN-L =       "0920-8542",
  bibdate =      "Fri Oct 26 07:41:32 MDT 2012",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=0920-8542&volume=61&issue=1;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsuper.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=0920-8542&volume=61&issue=1&spage=141",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of Supercomputing",
  journal-URL =  "http://link.springer.com/journal/11227",
}

@Article{Fdez-Riverola:2012:JAF,
  author =       "F. Fdez-Riverola and D. Glez-Pe{\~n}a and H.
                 L{\'o}pez-Fern{\'a}ndez and M. Reboiro-Jato and J. R.
                 M{\'e}ndez",
  title =        "A {Java} application framework for scientific software
                 development",
  journal =      j-SPE,
  volume =       "42",
  number =       "8",
  pages =        "1015--1036",
  month =        aug,
  year =         "2012",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.1108",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Nov 6 17:14:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "26 Aug 2011",
}

@Article{Femminella:2012:EJC,
  author =       "Mauro Femminella and Francesco Giacinti and Gianluca
                 Reali",
  title =        "An Extended {Java} Call Control for the {Session
                 Initiation Protocol}",
  journal =      j-IEEE-MULTIMEDIA,
  volume =       "19",
  number =       "4",
  pages =        "60--71",
  month =        oct # "\slash " # dec,
  year =         "2012",
  CODEN =        "IEMUE4",
  DOI =          "https://doi.org/10.1109/MMUL.2011.58",
  ISSN =         "1070-986X (print), 1941-0166 (electronic)",
  ISSN-L =       "1070-986X",
  bibdate =      "Thu Nov 15 06:53:49 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeemultimedia.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE MultiMedia",
}

@Article{Fontaine:2012:VCF,
  author =       "Arnaud Fontaine and Samuel Hym and Isabelle
                 Simplot-Ryl",
  title =        "Verifiable Control Flow Policies for {Java} Bytecode",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7140",
  pages =        "115--130",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-29420-4_8",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:55 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-29420-4_8/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-29420-4",
  book-URL =     "http://www.springerlink.com/content/978-3-642-29420-4",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Funes:2012:RMC,
  author =       "Diego Funes and Junaid Haroon Siddiqui and Sarfraz
                 Khurshid",
  title =        "Ranged Model Checking",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382799",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "We introduce ranged model checking, a novel technique
                 for more effective checking of Java programs using the
                 Java PathFinder (JPF) model checker. Our key insight is
                 that the order in which JPF makes non-deterministic
                 choices denes a total ordering of execution paths it
                 explores in the program it checks. Thus, two in-order
                 paths define a range for restricting the model checking
                 run by defining a start point and an end point for
                 JPF's exploration. Moreover, a given set of paths can
                 be linearly ordered to define consecutive,
                 (essentially) non-overlapping ranges that partition the
                 exploration space and can be explored separately. While
                 restricting the run of a model checker is a well-known
                 technique in model checking, the key novelty of our
                 work is conceptually to restrict the run using vertical
                 boundaries rather than the traditional approach of
                 using a horizontal boundary, i.e., the search depth
                 bound. Initial results using our prototype
                 implementation using the JPF libraries demonstrate the
                 promise ranged model checking holds.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Gadyatskaya:2012:JCA,
  author =       "Olga Gadyatskaya and Fabio Massacci and Federica Paci
                 and Sergey Stankevich",
  title =        "{Java} Card Architecture for Autonomous Yet Secure
                 Evolution of {Smart Cards} Applications",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7127",
  pages =        "187--192",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-27937-9_13",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:40 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-27937-9_13/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-27937-9",
  book-URL =     "http://www.springerlink.com/content/978-3-642-27937-9",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Gardner:2012:TPL,
  author =       "Philippa Anne Gardner and Sergio Maffeis and Gareth
                 David Smith",
  title =        "Towards a program logic for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "1",
  pages =        "31--44",
  month =        jan,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2103621.2103663",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Mar 15 18:16:55 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "JavaScript has become the most widely used language
                 for client-side web programming. The dynamic nature of
                 JavaScript makes understanding its code notoriously
                 difficult, leading to buggy programs and a lack of
                 adequate static-analysis tools. We believe that logical
                 reasoning has much to offer JavaScript: a simple
                 description of program behaviour, a clear understanding
                 of module boundaries, and the ability to verify
                 security contracts. We introduce a program logic for
                 reasoning about a broad subset of JavaScript, including
                 challenging features such as prototype inheritance and
                 `with'. We adapt ideas from separation logic to provide
                 tractable reasoning about JavaScript code: reasoning
                 about easy programs is easy; reasoning about hard
                 programs is possible. We prove a strong soundness
                 result. All libraries written in our subset and proved
                 correct with respect to their specifications will be
                 well-behaved, even when called by arbitrary JavaScript
                 code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '12 conference proceedings.",
}

@Article{Gejibo:2012:CIE,
  author =       "Samson Gejibo and Federico Mancini",
  title =        "Challenges in Implementing an End-to-End Secure
                 Protocol for {Java ME}-Based Mobile Data Collection in
                 Low-Budget Settings",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7159",
  pages =        "38--45",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28166-2_5",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:25:19 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28166-2_5/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28166-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28166-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{German:2012:MOS,
  author =       "Daniel German and Massimiliano {Di Penta}",
  title =        "A Method for Open Source License Compliance of {Java}
                 Applications",
  journal =      j-IEEE-SOFTWARE,
  volume =       "29",
  number =       "3",
  pages =        "58--63",
  month =        may # "\slash " # jun,
  year =         "2012",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2012.50",
  ISSN =         "0740-7459 (print), 0740-7459 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Thu Apr 26 17:15:53 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Gherardi:2012:JVC,
  author =       "Luca Gherardi and Davide Brugali and Daniele Comotti",
  title =        "A {Java} vs. {C++} Performance Evaluation: a {$3$D}
                 Modeling Benchmark",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7628",
  pages =        "161--172",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-34327-8_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:26:09 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012k.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-34327-8_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-34327-8",
  book-URL =     "http://www.springerlink.com/content/978-3-642-34327-8",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Gil:2012:SFJ,
  author =       "Joseph Gil and Yuval Shimron",
  title =        "Smaller Footprint for {Java} Collections",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7313",
  pages =        "356--382",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31057-7_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31057-7_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31057-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31057-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Grossschadl:2012:EJI,
  author =       "Johann Gro{\ss}sch{\"a}dl and Dan Page and Stefan
                 Tillich",
  title =        "Efficient {Java} Implementation of Elliptic Curve
                 Cryptography for {J2ME}-Enabled Mobile Devices",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7322",
  pages =        "189--207",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-30955-7_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:20:02 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-30955-7_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-30955-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-30955-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Hackett:2012:FPH,
  author =       "Brian Hackett and Shu-yu Guo",
  title =        "Fast and precise hybrid type inference for
                 {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "6",
  pages =        "239--250",
  month =        jun,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2345156.2254094",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 6 16:31:49 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "PLDI '12 proceedings.",
  abstract =     "JavaScript performance is often bound by its
                 dynamically typed nature. Compilers do not have access
                 to static type information, making generation of
                 efficient, type-specialized machine code difficult. We
                 seek to solve this problem by inferring types. In this
                 paper we present a hybrid type inference algorithm for
                 JavaScript based on points-to analysis. Our algorithm
                 is fast, in that it pays for itself in the
                 optimizations it enables. Our algorithm is also
                 precise, generating information that closely reflects
                 the program's actual behavior even when analyzing
                 polymorphic code, by augmenting static analysis with
                 run-time type barriers. We showcase an implementation
                 for Mozilla Firefox's JavaScript engine, demonstrating
                 both performance gains and viability. Through
                 integration with the just-in-time (JIT) compiler in
                 Firefox, we have improved performance on major
                 benchmarks and JavaScript-heavy websites by up to 50\%.
                 Inference-enabled compilation is the default
                 compilation mode as of Firefox 9.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Hasbun:2012:UTP,
  author =       "Javier E. Hasbun",
  title =        "Unifying Two Popular-but-Seemingly-Dissimilar
                 Platforms: {Matlab} and {Java}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "14",
  number =       "3",
  pages =        "6--7",
  month =        may # "\slash " # jun,
  year =         "2012",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2012.58",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Apr 26 17:01:57 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computing in Science and Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Hashmi:2012:CNI,
  author =       "Atif Hashmi and Andrew Nere and James Jamal Thomas and
                 Mikko Lipasti",
  title =        "A case for neuromorphic {ISAs}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "4",
  pages =        "145--158",
  month =        apr,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2248487.1950385",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The desire to create novel computing systems, paired
                 with recent advances in neuroscientific understanding
                 of the brain, has led researchers to develop
                 neuromorphic architectures that emulate the brain. To
                 date, such models are developed, trained, and deployed
                 on the same substrate. However, excessive co-dependence
                 between the substrate and the algorithm prevents
                 portability, or at the very least requires
                 reconstructing and retraining the model whenever the
                 substrate changes. This paper proposes a well-defined
                 abstraction layer --- the Neuromorphic instruction set
                 architecture, or NISA --- that separates a neural
                 application's algorithmic specification from the
                 underlying execution substrate, and describes the Aivo
                 framework, which demonstrates the concrete advantages
                 of such an abstraction layer. Aivo consists of a NISA
                 implementation for a rate-encoded neuromorphic system
                 based on the cortical column abstraction, a
                 state-of-the-art integrated development and runtime
                 environment (IDE), and various profile-based
                 optimization tools. Aivo's IDE generates code for
                 emulating cortical networks on the host CPU, multiple
                 GPGPUs, or as boolean functions. Its runtime system can
                 deploy and adaptively optimize cortical networks in a
                 manner similar to conventional just-in-time compilers
                 in managed runtime systems (e.g. Java, C\#). We
                 demonstrate the abilities of the NISA abstraction by
                 constructing a cortical network model of the mammalian
                 visual cortex, deploying on multiple execution
                 substrates, and utilizing the various optimization
                 tools we have created. For this hierarchical
                 configuration, Aivo's profiling based network
                 optimization tools reduce the memory footprint by 50\%
                 and improve the execution time by a factor of 3x on the
                 host CPU. Deploying the same network on a single GPGPU
                 results in a 30x speedup. We further demonstrate that a
                 speedup of 480x can be achieved by deploying a
                 massively scaled cortical network across three GPGPUs.
                 Finally, converting a trained hierarchical network to
                 C/C++ boolean constructs on the host CPU results in 44x
                 speedup.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '12 conference proceedings.",
}

@Article{Hayashizaki:2012:IPT,
  author =       "Hiroshige Hayashizaki and Peng Wu and Hiroshi Inoue
                 and Mauricio J. Serrano and Toshio Nakatani",
  title =        "Improving the performance of trace-based systems by
                 false loop filtering",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "4",
  pages =        "405--418",
  month =        apr,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2248487.1950412",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Trace-based compilation is a promising technique for
                 language compilers and binary translators. It offers
                 the potential to expand the compilation scopes that
                 have traditionally been limited by method boundaries.
                 Detecting repeating cyclic execution paths and
                 capturing the detected repetitions into traces is a key
                 requirement for trace selection algorithms to achieve
                 good optimization and performance with small amounts of
                 code. One important class of repetition detection is
                 cyclic-path-based repetition detection, where a cyclic
                 execution path (a path that starts and ends at the same
                 instruction address) is detected as a repeating cyclic
                 execution path. However, we found many cyclic paths
                 that are not repeating cyclic execution paths, which we
                 call false loops. A common class of false loops occurs
                 when a method is invoked from multiple call-sites. A
                 cycle is formed between two invocations of the method
                 from different call-sites, but which does not represent
                 loops or recursion. False loops can result in shorter
                 traces and smaller compilation scopes, and degrade the
                 performance. We propose false loop filtering, an
                 approach to reject false loops in the repetition
                 detection step of trace selection, and a technique
                 called false loop filtering by call-stack-comparison,
                 which rejects a cyclic path as a false loop if the call
                 stacks at the beginning and the end of the cycle are
                 different. We applied false loop filtering to our
                 trace-based Java\TM{} JIT compiler that is based on
                 IBM's J9 JVM. We found that false loop filtering
                 achieved an average improvement of 16\% and 10\% for
                 the DaCapo benchmark when applied to two baseline trace
                 selection algorithms, respectively, with up to 37\%
                 improvement for individual benchmarks. In the end, with
                 false loop filtering, our trace-based JIT achieves a
                 performance comparable to that of the method-based J9
                 JVM/JIT using the corresponding optimization level.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '12 conference proceedings.",
}

@Article{Heidegger:2012:APC,
  author =       "Phillip Heidegger and Annette Bieniusa and Peter
                 Thiemann",
  title =        "Access permission contracts for scripting languages",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "1",
  pages =        "111--122",
  month =        jan,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2103621.2103671",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Mar 15 18:16:55 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The ideal software contract fully specifies the
                 behavior of an operation. Often, in particular in the
                 context of scripting languages, a full specification
                 may be cumbersome to state and may not even be desired.
                 In such cases, a partial specification, which describes
                 selected aspects of the behavior, may be used to raise
                 the confidence in an implementation of the operation to
                 a reasonable level. We propose a novel kind of contract
                 for object-based languages that specifies the side
                 effects of an operation with access permissions. An
                 access permission contract uses sets of access paths to
                 express read and write permissions for the properties
                 of the objects accessible from the operation. We
                 specify a monitoring semantics for access permission
                 contracts and implement this semantics in a contract
                 system for JavaScript. We prove soundness and stability
                 of violation under increasing aliasing for our
                 semantics. Applications of access permission contracts
                 include enforcing modularity, test-driven development,
                 program understanding, and regression testing. With
                 respect to testing and understanding, we find that
                 adding access permissions to contracts increases the
                 effectiveness of error detection through contract
                 monitoring by 6-13\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '12 conference proceedings.",
}

@Article{Herranz:2012:VIP,
  author =       "{\'A}ngel Herranz and Julio Mari{\~n}o",
  title =        "A Verified Implementation of Priority Monitors in
                 {Java}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7421",
  pages =        "160--177",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31762-0_11",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31762-0_11/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31762-0",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31762-0",
  fjournal =     "Lecture Notes in Computer Science",
}

@Book{Horstmann:2012:JEC,
  author =       "Cay S. Horstmann",
  title =        "{Java} for everyone: compatible with {Java} 5, 6, and
                 7",
  publisher =    pub-WILEY,
  address =      pub-WILEY:adr,
  edition =      "Second",
  pages =        "xxxiii + 589",
  year =         "2012",
  ISBN =         "1-118-06331-7 (paperback)",
  ISBN-13 =      "978-1-118-06331-6 (paperback)",
  LCCN =         "QA76.73.J38 H675445 2012",
  bibdate =      "Tue May 12 16:11:39 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/prng.bib;
                 http://www.math.utah.edu/pub/tex/bib/unicode.bib;
                 z3950.loc.gov:7090/Voyager",
  abstract =     "Authoritative but accessible information on Java
                 programming fundamentals. As one of the most popular
                 programming languages in the world, Java is widely used
                 in everything from application software to web
                 applications. This helpful book escorts you through the
                 fundamentals and concepts of Java programming using a
                 first/late objects approach. Packed with extensive
                 opportunities for programming practice, Java For
                 Everyone is an ideal resource for learning all there is
                 to know about Java programming. Serves as an
                 authoritative guide on the fundamentals of Java
                 programming. Features accessible coverage compatible
                 with Java 5, 6, 7. Uses first/late objects approach and
                 provides a variety of opportunities for programming
                 practice If you're interested in learning the basics of
                 Java programming, then this is the book you need.",
  acknowledgement = ack-nhfb,
  author-dates = "1959--",
  subject =      "Java (Computer program language); COMPUTERS /
                 Programming Languages / Java.",
  tableofcontents = "1: Introduction \\
                 1.1 Computer Programs \\
                 1.2 The Anatomy of a Computer \\
                 1.3 The Java Programming Language \\
                 1.4 Becoming Familiar with Your Programming Environment
                 \\
                 1.5 Analyzing Your First Program \\
                 1.6 Errors \\
                 1.7 Problem Solving: Algorithm Design \\
                 2: Fundamental Data Types \\
                 2.1 Variables \\
                 2.2 Arithmetic \\
                 2.3 Input and Output \\
                 2.4 Problem Solving: First Do it By Hand \\
                 2.6 Strings \\
                 3: Decisions \\
                 3.1 The if Statement \\
                 3.2 Comparing Numbers and Strings \\
                 3.3 Multiple Alternatives \\
                 3.4 Nested Branches \\
                 3.5 Problem Solving: Flowcharts \\
                 3.6 Problem Solving: Test Cases \\
                 3.7 Boolean Variables and Operators \\
                 3.8 Application: Input Validation \\
                 4: Loops \\
                 4.1 The while Loop \\
                 4.2 Problem Solving: Hand-Tracing \\
                 4.3 The for Loop \\
                 4.4 The do Loop \\
                 4.5 Application: Processing Sentinel Values \\
                 4.6 Problem Solving: Storyboards \\
                 4.7 Common Loop Algorithms \\
                 4.8 Nested Loops \\
                 4.9 Application: Random Numbers and Simulations \\
                 5: Methods \\
                 5.1 Methods as Black Boxes \\
                 5.2 Implementing Methods \\
                 5.3 Parameter Passing \\
                 5.4 Return Values \\
                 5.5 Methods Without Return Values \\
                 5.6 Problem Solving: Reusable Functions \\
                 5.7 Problem Solving: Stepwise Refinement \\
                 5.8 Variable Scope \\
                 5.9 Recursive Methods (Optional) \\
                 6: Arrays and Array Lists \\
                 6.1 Arrays \\
                 6.2 The Enhanced for Loop \\
                 6.3 Common Array Algorithms \\
                 6.4 Using Arrays with Methods \\
                 6.5 Problem Solving: Adapting Algorithms \\
                 6.6 Problem Solving: Discovering Algorithms by
                 Manipulating Physical Objects \\
                 6.7 Two-Dimensional Arrays \\
                 6.8 Array Lists \\
                 7: Input/Output and Exception Handling \\
                 7.1 Reading and Writing Text Files \\
                 7.2 Processing Text Input \\
                 7.3 Command Line Arguments \\
                 7.4 Checked and Unchecked Exceptions \\
                 7.5 Catching Exceptions \\
                 7.6 The finally Clause \\
                 7.7 Application: Handling Input Errors \\
                 8: Object and Classes \\
                 8.1 Object-Oriented Programming \\
                 8.2 Implementing a Simple Class \\
                 8.3 Specifying the Public Interface of a Class \\
                 8.4 Designing the Data Representation \\
                 8.5 Problem Solving: Patterns for Representing Behavior
                 \\
                 8.6 Implementing Instance Methods \\
                 8.7 Constructors \\
                 8.8 Problem Solving: Tracing Objects \\
                 8.9 Testing a Class \\
                 8.10 Object References \\
                 8.11 Static Variables and Methods \\
                 9: Inheritance \\
                 9.1 Inheritance Hierarchies \\
                 9.2 Implementing Subclasses \\
                 9.3 Overriding Methods \\
                 9.4 Polymorphism \\
                 9.5 Object: The Cosmic Superclass \\
                 9.6 Interface Types \\
                 10: Graphical User Interfaces \\
                 10.1 Frame Windows \\
                 10.2 Events and Event Handling \\
                 10.3 Using Inheritance to Customize Frames \\
                 10.4 Building Applications with Buttons \\
                 10.5 Using Inner Classes for Listeners \\
                 10.6 Processing Text Input \\
                 10.7 Text Areas Web chapters \\
                 11: Advanced Graphical User Interfaces \\
                 11.1 Layout Management \\
                 11.2 Choices \\
                 11.3 Menus \\
                 11.4 Exploring the Swing Documentation \\
                 11.5 Drawing on a Component \\
                 11.6 Using Timer Events for Animations \\
                 11.7 Mouse Events \\
                 12: Object-Oriented Design \\
                 12.1 The Software Life Cycle \\
                 12.2 Discovering Classes \\
                 12.3 Relationships Between Classes \\
                 12.4 Cohesion and Coupling \\
                 12.5 Side Effects \\
                 12.5 Abstract Classes \\
                 12.6 Packages \\
                 12.7 Application: Printing an Invoice \\
                 12.8 Application: An Automatic Teller Machine \\
                 13: Recursion \\
                 13.1 Triangle Numbers \\
                 13.2. Thinking Recursively \\
                 13.3 Recursive Helper Methods \\
                 13.4 The Efficiency of Recursion \\
                 13.5 Permutations \\
                 13.6 Mutual Recursions \\
                 13.7 Backtracking \\
                 14: Sorting and Searching \\
                 14.1 Selection Sort \\
                 14.2 Profiling the Selection Sort Algorithm \\
                 14.3 Analyzing the Performance of the Selection Sort
                 Algorithm \\
                 14.4 Merge Sort \\
                 14.5 Analyzing the Merge Sort Algorithm \\
                 14.6 Searching \\
                 14.7 Binary Search \\
                 14.8 Sorting Real Data \\
                 15: The Java Collections Framework \\
                 15.1. An Overview of the Collections Framework \\
                 15.2. Linked Lists \\
                 15.3. Stacks, Queues, and Priority Queues \\
                 15.4. Sets \\
                 15.5. Maps \\
                 Appendices \\
                 Appendix A: The Basic Latin and Latin-1 Subsets of
                 Unicode \\
                 Appendix B: Java Operator Summary \\
                 Appendix C: Java Reserved Word Summary \\
                 Appendix D: The Java Library \\
                 Appendix E: Java Syntax Summary (Online only) \\
                 Appendix F: HTML Summary (Online only) \\
                 Appendix G: Tool Summary (Online only) \\
                 Appendix H: Javadoc Summary (Online only)",
}

@Article{Hosking:2012:CHL,
  author =       "Tony Hosking",
  title =        "Compiling a high-level language for {GPUs}: (via
                 language support for architectures and compilers)",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "6",
  pages =        "1--12",
  month =        jun,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2345156.2254066",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 6 16:31:49 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "PLDI '12 proceedings.",
  abstract =     "Languages such as OpenCL and CUDA offer a standard
                 interface for general-purpose programming of GPUs.
                 However, with these languages, programmers must
                 explicitly manage numerous low-level details involving
                 communication and synchronization. This burden makes
                 programming GPUs difficult and error-prone, rendering
                 these powerful devices inaccessible to most
                 programmers. We desire a higher-level programming model
                 that makes GPUs more accessible while also effectively
                 exploiting their computational power. This paper
                 presents features of Lime, a new Java-compatible
                 language targeting heterogeneous systems, that allow an
                 optimizing compiler to generate high quality GPU code.
                 The key insight is that the language type system
                 enforces isolation and immutability invariants that
                 allow the compiler to optimize for a GPU without heroic
                 compiler analysis. Our compiler attains GPU speedups
                 between 75\% and 140\% of the performance of native
                 OpenCL code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Huang:2012:RRC,
  author =       "Wei Huang and Ana Milanova and Werner Dietl and
                 Michael D. Ernst",
  title =        "{Reim \& ReImInfer}: checking and inference of
                 reference immutability and method purity",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "879--896",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384680",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Reference immutability ensures that a reference is not
                 used to modify the referenced object, and enables the
                 safe sharing of object structures. A pure method does
                 not cause side-effects on the objects that existed in
                 the pre-state of the method execution. Checking and
                 inference of reference immutability and method purity
                 enables a variety of program analyses and
                 optimizations. We present ReIm, a type system for
                 reference immutability, and ReImInfer, a corresponding
                 type inference analysis. The type system is concise and
                 context-sensitive. The type inference analysis is
                 precise and scalable, and requires no manual
                 annotations. In addition, we present a novel
                 application of the reference immutability type system:
                 method purity inference. To support our theoretical
                 results, we implemented the type system and the type
                 inference analysis for Java. We include a type checker
                 to verify the correctness of the inference result.
                 Empirical results on Java applications and libraries of
                 up to 348kLOC show that our approach achieves both
                 scalability and precision.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{hunEom:2012:DDP,
  author =       "Yong hun Eom and Stephen Yang and James C. Jenista and
                 Brian Demsky",
  title =        "{DOJ}: dynamically parallelizing object-oriented
                 programs",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "8",
  pages =        "85--96",
  month =        aug,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2370036.2145828",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Sep 12 12:11:57 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPOPP '12 conference proceedings.",
  abstract =     "We present Dynamic Out-of-Order Java (DOJ), a dynamic
                 parallelization approach. In DOJ, a developer annotates
                 code blocks as tasks to decouple these blocks from the
                 parent execution thread. The DOJ compiler then analyzes
                 the code to generate heap examiners that ensure the
                 parallel execution preserves the behavior of the
                 original sequential program. Heap examiners dynamically
                 extract heap dependences between code blocks and
                 determine when it is safe to execute a code block. We
                 have implemented DOJ and evaluated it on twelve
                 benchmarks. We achieved an average compilation speedup
                 of 31.15 times over OoOJava and an average execution
                 speedup of 12.73 times over sequential versions of the
                 benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{hunEom:2012:SSJ,
  author =       "Yong hun Eom and Brian Demsky",
  title =        "Self-stabilizing {Java}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "6",
  pages =        "287--298",
  month =        jun,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2345156.2254099",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 6 16:31:49 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "PLDI '12 proceedings.",
  abstract =     "Self-stabilizing programs automatically recover from
                 state corruption caused by software bugs and other
                 sources to reach the correct state. A number of
                 applications are inherently self-stabilizing---such
                 programs typically overwrite all non-constant data with
                 new input data. We present a type system and static
                 analyses that together check whether a program is
                 self-stabilizing. We combine this with a code
                 generation strategy that ensures that a program
                 continues executing long enough to self-stabilize. Our
                 experience using SJava indicates that (1) SJava
                 annotations are easy to write once one understands a
                 program and (2) SJava successfully checked that several
                 benchmarks were self-stabilizing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Hunt:2012:JP,
  author =       "Charlie Hunt and Binu John",
  title =        "{Java} Performance",
  publisher =    pub-AW,
  address =      pub-AW,
  pages =        "xxi + 693",
  year =         "2012",
  ISBN =         "0-13-714252-8 (paperback)",
  ISBN-13 =      "978-0-13-714252-1 (paperback)",
  LCCN =         "QA76.73.J38 H845 2012",
  bibdate =      "Thu Dec 4 13:30:51 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "The Java series",
  acknowledgement = ack-nhfb,
  author-dates = "1962--",
  subject =      "Java (Computer program language); Computer
                 programming",
  tableofcontents = "Strategies, approaches, and methodologies \\
                 Operating system performance monitoring \\
                 JVM overview \\
                 JVM performance monitoring \\
                 Java application profiling \\
                 Java application profiling tips and tricks \\
                 Tuning the JVM, step by step \\
                 Benchmarking Java applications \\
                 Benchmarking multi-tiered applications \\
                 Web application performance \\
                 Web services performance \\
                 Java persistence and enterprise Java Beans
                 performance",
}

@Article{Inoue:2012:AML,
  author =       "Hiroshi Inoue and Hiroshige Hayashizaki and Peng Wu
                 and Toshio Nakatani",
  title =        "Adaptive multi-level compilation in a trace-based
                 {Java JIT} compiler",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "179--194",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384630",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper describes our multi-level compilation
                 techniques implemented in a trace-based Java JIT
                 compiler (trace-JIT). Like existing multi-level
                 compilation for method-based compilers, we start JIT
                 compilation with a small compilation scope and a low
                 optimization level so the program can start running
                 quickly. Then we identify hot paths with a timer-based
                 sampling profiler, generate long traces that capture
                 the hot paths, and recompile them with a high
                 optimization level to improve the peak performance. A
                 key to high performance is selecting long traces that
                 effectively capture the entire hot paths for upgrade
                 recompilations. To do this, we introduce a new
                 technique to generate a directed graph representing the
                 control flow, a TTgraph, and use the TTgraph in the
                 trace selection engine to efficiently select long
                 traces. We show that our multi-level compilation
                 improves the peak performance of programs by up to
                 58.5\% and 22.2\% on average compared to compiling all
                 of the traces only at a low optimization level.
                 Comparing the performance with our multi-level
                 compilation to the performance when compiling all of
                 the traces at a high optimization level, our technique
                 can reduce the startup times of programs by up to
                 61.1\% and 31.3\% on average without significant
                 reduction in the peak performance. Our results show
                 that our adaptive multi-level compilation can balance
                 the peak performance and startup time by taking
                 advantage of different optimization levels.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Inoue:2012:ISC,
  author =       "Hiroshi Inoue and Toshio Nakatani",
  title =        "Identifying the sources of cache misses in {Java}
                 programs without relying on hardware counters",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "11",
  pages =        "133--142",
  month =        nov,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2426642.2259014",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jan 10 08:55:30 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "ISMM '12 conference proceedings.",
  abstract =     "Cache miss stalls are one of the major sources of
                 performance bottlenecks for multicore processors. A
                 Hardware Performance Monitor (HPM) in the processor is
                 useful for locating the cache misses, but is rarely
                 used in the real world for various reasons. It would be
                 better to find a simple approach to locate the sources
                 of cache misses and apply runtime optimizations without
                 relying on an HPM. This paper shows that pointer
                 dereferencing in hot loops is a major source of cache
                 misses in Java programs. Based on this observation, we
                 devised a new approach to identify the instructions and
                 objects that cause frequent cache misses. Our heuristic
                 technique effectively identifies the majority of the
                 cache misses in typical Java programs by matching the
                 hot loops to simple idiomatic code patterns. On
                 average, our technique selected only 2.8\% of the load
                 and store instructions generated by the JIT compiler
                 and these instructions accounted for 47\% of the L1D
                 cache misses and 49\% of the L2 cache misses caused by
                 the JIT-compiled code. To prove the effectiveness of
                 our technique in compiler optimizations, we prototyped
                 object placement optimizations, which align objects in
                 cache lines or collocate paired objects in the same
                 cache line to reduce cache misses. For comparison, we
                 also implemented the same optimizations based on the
                 accurate information obtained from the HPM. Our results
                 showed that our heuristic approach was as effective as
                 the HPM-based approach and achieved comparable
                 performance improvements in the {\tt SPECjbb2005} and
                 {\tt SPECpower\_ssj2008} benchmark programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@InProceedings{Islam:2012:HPR,
  author =       "N. S. Islam and M. W. Rahman and J. Jose and R.
                 Rajachandrasekar and H. Wang and H. Subramoni and C.
                 Murthy and D. K. Panda",
  title =        "High performance {RDMA}-based design of {HDFS} over
                 {InfiniBand}",
  crossref =     "Hollingsworth:2012:SPI",
  pages =        "35:1--35:12",
  year =         "2012",
  bibdate =      "Thu Nov 15 07:38:35 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/supercomputing2012.bib",
  URL =          "http://conferences.computer.org/sc/2012/papers/1000a058.pdf",
  abstract =     "Hadoop Distributed File System (HDFS) acts as the
                 primary storage of Hadoop and has been adopted by
                 reputed organizations (Facebook, Yahoo! etc.) due to
                 its portability and fault-tolerance. The existing
                 implementation of HDFS uses Java-socket interface for
                 communication which delivers suboptimal performance in
                 terms of latency and throughput. For data-intensive
                 applications, network performance becomes key component
                 as the amount of data being stored and replicated to
                 HDFS increases. In this paper, we present a novel
                 design of HDFS using Remote Direct Memory Access (RDMA)
                 over InfiniBand via JNI interfaces. Experimental
                 results show that, for 5GB HDFS file writes, the new
                 design reduces the communication time by 87\% and 30\%
                 over 1Gigabit Ethernet (1GigE) and IP-over-InfiniBand
                 (IPoIB), respectively, on QDR platform (32Gbps). For
                 HBase, the Put operation performance is improved by
                 26\% with our design. To the best of our knowledge,
                 this is the first design of HDFS over InfiniBand
                 networks.",
  acknowledgement = ack-nhfb,
  articleno =    "35",
}

@Article{Jara:2012:NVJ,
  author =       "Carlos A. Jara and Francisco Esquembre and Wolfgang
                 Christian and Francisco A. Candelas and Fernando Torres
                 and Sebasti{\'a}n Dormido",
  title =        "A new {$3$D} visualization {Java} framework based on
                 physics principles",
  journal =      j-COMP-PHYS-COMM,
  volume =       "183",
  number =       "2",
  pages =        "231--244",
  month =        feb,
  year =         "2012",
  CODEN =        "CPHCBZ",
  DOI =          "https://doi.org/10.1016/j.cpc.2011.08.007",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Sat Feb 11 10:11:01 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465511002797",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Book{Jendrock:2012:JET,
  author =       "Eric Jendrock",
  title =        "The {Java EE 6} Tutorial: advanced topics",
  volume =       "II",
  publisher =    pub-AW,
  address =      pub-AW,
  edition =      "Fourth",
  pages =        "????",
  year =         "2012",
  ISBN =         "0-13-708186-3 (paperback)",
  ISBN-13 =      "978-0-13-708186-8 (paperback)",
  LCCN =         "????",
  bibdate =      "Mon Jan 28 12:24:06 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  acknowledgement = ack-nhfb,
}

@Article{Ji:2012:PKP,
  author =       "Ran Ji and Richard Bubel",
  title =        "{PE-KeY}: a Partial Evaluator for {Java} Programs",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7321",
  pages =        "283--295",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-30729-4_20",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:20:00 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-30729-4_20/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-30729-4",
  book-URL =     "http://www.springerlink.com/content/978-3-642-30729-4",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Jin:2012:JMM,
  author =       "Huafeng Jin and Tuba Yavuz-Kahveci and Beverly A.
                 Sanders",
  title =        "{Java} Memory Model-Aware Model Checking",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7214",
  pages =        "220--236",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28756-5_16",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:26:28 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012c.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28756-5_16/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28756-5",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28756-5",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Johnsen:2012:SLM,
  author =       "Einar Broch Johnsen and Thi Mai Thuong Tran and Olaf
                 Owe",
  title =        "Safe Locking for Multi-threaded {Java}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7141",
  pages =        "158--173",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-29320-7_11",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:56 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-29320-7_11/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-29320-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-29320-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Book{Juneau:2012:JRP,
  author =       "Josh Juneau and others",
  title =        "{Java 7} recipes: a problem-solution approach",
  publisher =    pub-APRESS,
  address =      pub-APRESS:adr,
  pages =        "xxii + 848",
  year =         "2012",
  ISBN =         "1-4302-4056-3 (paperback)",
  ISBN-13 =      "978-1-4302-4056-3 (paperback)",
  LCCN =         "QA76.73.J38 J35946 2012",
  bibdate =      "Tue May 12 16:05:50 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/unicode.bib;
                 z3950.loc.gov:7090/Voyager",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language); Application
                 software; Development",
  tableofcontents = "Getting started with Java 7 \\
                 Strings \\
                 Numbers and dates \\
                 Data structures, conditionals, and iteration \\
                 Input and output \\
                 Exceptions and logging \\
                 Object-oriented Java \\
                 Concurrency \\
                 Debugging and unit testing \\
                 Unicode, internationalization, and currency codes \\
                 Working with databases \\
                 Java 2D graphics \\
                 Java 3D \\
                 Swing API \\
                 JavaFX fundamentals \\
                 Graphics with JavaFX \\
                 Media with JavaFX \\
                 Working with servlets and applets \\
                 Intro to Android \\
                 JavaFX on the web \\
                 E-mail \\
                 XML processing \\
                 Networking",
}

@Article{Jung:2012:EJA,
  author =       "Dong-Heon Jung and Soo-Mook Moon and Sung-Hwan Bae",
  title =        "Evaluation of a {Java} Ahead-of-Time Compiler for
                 Embedded Systems",
  journal =      j-COMP-J,
  volume =       "55",
  number =       "2",
  pages =        "232--252",
  month =        feb,
  year =         "2012",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxr100",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Thu Feb 2 09:12:17 MST 2012",
  bibsource =    "http://comjnl.oxfordjournals.org/content/55/2.toc;
                 http://www.math.utah.edu/pub/tex/bib/compj2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/55/2/232.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "October 5, 2011",
}

@Article{Kang:2012:FSJ,
  author =       "Seonghoon Kang and Sukyoung Ryu",
  title =        "Formal specification of a {JavaScript} module system",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "621--638",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384661",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The JavaScript programming language, originally
                 developed as a simple scripting language, is now the
                 language of choice for web applications. All the top
                 100 sites on the web use JavaScript and its use outside
                 web pages is rapidly growing. However, JavaScript is
                 not yet ready for programming in the large: it does not
                 support a module system. Lack of namespaces introduces
                 module patterns, and makes it difficult to use multiple
                 JavaScript frameworks together. In this paper, we
                 propose a formal specification of a JavaScript module
                 system. A module system for JavaScript will allow safe
                 and incremental development of JavaScript web
                 applications. While the next version of the JavaScript
                 standard proposes a module system, it informally
                 describes its design in prose. We formally specify a
                 module system as an extension to the existing
                 JavaScript language, and rigorously describe its
                 semantics via desugaring to LambdaJS, a prior core
                 calculus for JavaScript. We implement the desugaring
                 process and show its faithfulness using real-world test
                 suites. Finally, we define a set of properties for
                 valid JavaScript programs using modules and formally
                 prove that the proposed module system satisfies the
                 validity properties.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Kastner:2012:TCA,
  author =       "Christian K{\"a}stner and Sven Apel and Thomas
                 Th{\"u}m and Gunter Saake",
  title =        "Type checking annotation-based product lines",
  journal =      j-TOSEM,
  volume =       "21",
  number =       "3",
  pages =        "14:1--14:??",
  month =        jun,
  year =         "2012",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2211616.2211617",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Fri Jun 29 18:08:30 MDT 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Software product line engineering is an efficient
                 means of generating a family of program variants for a
                 domain from a single code base. However, because of the
                 potentially high number of possible program variants,
                 it is difficult to test them all and ensure properties
                 like type safety for the entire product line. We
                 present a product-line-aware type system that can type
                 check an entire software product line without
                 generating each variant in isolation. Specifically, we
                 extend the Featherweight Java calculus with feature
                 annotations for product-line development and prove
                 formally that all program variants generated from a
                 well typed product line are well typed. Furthermore, we
                 present a solution to the problem of typing mutually
                 exclusive features. We discuss how results from our
                 formalization helped implement our own product-line
                 tool CIDE for full Java and report of our experience
                 with detecting type errors in four existing software
                 product line implementations.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Khyzha:2012:AP,
  author =       "Artem Khyzha and Pavel Par{\'\i}zek and Corina S.
                 P{\u{a}}s{\u{a}}reanu",
  title =        "Abstract pathfinder",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382794",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "We present Abstract Pathfinder, an extension to the
                 Java Pathfinder (JPF) verification tool-set that
                 supports data abstraction to reduce the large data
                 domains of a Java program to small, finite abstract
                 domains, making the program more amenable to
                 verification. We use data abstraction to compute an
                 over-approximation of the original program in such a
                 way that if a (safety) property is true in the
                 abstracted program the property is also true in the
                 original program. Our approach enhances JPF with an
                 abstract interpreter and abstract state-matching
                 mechanisms, together with a library of abstractions
                 from which the user can pick which abstractions to use
                 for a particular application. We discuss the details of
                 our implementation together with some preliminary
                 experiments with analyzing multi-threaded Java
                 programs, where Abstract Pathfinder achieves
                 significant time and memory savings as compared with
                 plain JPF.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Kossakowski:2012:JED,
  author =       "Grzegorz Kossakowski and Nada Amin and Tiark Rompf and
                 Martin Odersky",
  title =        "{JavaScript} as an Embedded {DSL}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7313",
  pages =        "409--434",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31057-7_19",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31057-7_19/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31057-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31057-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Kouneli:2012:MKD,
  author =       "Aggeliki Kouneli and Georgia Solomou and Christos
                 Pierrakeas and Achilles Kameas",
  title =        "Modeling the Knowledge Domain of the {Java}
                 Programming Language as an Ontology",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7558",
  pages =        "152--159",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-33642-3_16",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:55 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012j.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-33642-3_16/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-33642-3",
  book-URL =     "http://www.springerlink.com/content/978-3-642-33642-3",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Krishnamurthi:2012:SAJ,
  author =       "Shriram Krishnamurthi",
  title =        "Semantics and Analyses for {JavaScript} and the
                 {Web}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7460",
  pages =        "4--4",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-33125-1_3",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:23:03 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012h.bib",
  URL =          "http://link.springer.com/accesspage/chapter/10.1007/978-3-642-33125-1_3",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-33125-1",
  book-URL =     "http://www.springerlink.com/content/978-3-642-33125-1",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Krishnaveni:2012:HOJ,
  author =       "R. Krishnaveni and C. Chellappan and R. Dhanalakshmi",
  title =        "Hybrid Obfuscated {Javascript} Strength Analysis
                 System for Detection of Malicious Websites",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7513",
  pages =        "129--137",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-35606-3_15",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:06 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012i.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-35606-3_15/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-35606-3",
  book-URL =     "http://www.springerlink.com/content/978-3-642-35606-3",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Kulkarni:2012:MCO,
  author =       "Sameer Kulkarni and John Cavazos",
  title =        "Mitigating the compiler optimization phase-ordering
                 problem using machine learning",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "147--162",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384628",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Today's compilers have a plethora of optimizations to
                 choose from, and the correct choice of optimizations
                 can have a significant impact on the performance of the
                 code being optimized. Furthermore, choosing the correct
                 order in which to apply those optimizations has been a
                 long standing problem in compilation research. Each of
                 these optimizations interacts with the code and in turn
                 with all other optimizations in complicated ways.
                 Traditional compilers typically apply the same set of
                 optimization in a fixed order to all functions in a
                 program, without regard the code being optimized.
                 Understanding the interactions of optimizations is very
                 important in determining a good solution to the
                 phase-ordering problem. This paper develops a new
                 approach that automatically selects good optimization
                 orderings on a per method basis within a dynamic
                 compiler. Our approach formulates the phase-ordering
                 problem as a Markov process and uses a characterization
                 of the current state of the code being optimized to
                 creating a better solution to the phase ordering
                 problem. Our technique uses neuro-evolution to
                 construct an artificial neural network that is capable
                 of predicting beneficial optimization ordering for a
                 piece of code that is being optimized. We implemented
                 our technique in Jikes RVM and achieved significant
                 improvements on a set of standard Java benchmarks over
                 a well-engineered fixed order.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Kumar:2012:WSB,
  author =       "Vivek Kumar and Daniel Frampton and Stephen M.
                 Blackburn and David Grove and Olivier Tardieu",
  title =        "Work-stealing without the baggage",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "297--314",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384639",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Work-stealing is a promising approach for effectively
                 exploiting software parallelism on parallel hardware. A
                 programmer who uses work-stealing explicitly identifies
                 potential parallelism and the runtime then schedules
                 work, keeping otherwise idle hardware busy while
                 relieving overloaded hardware of its burden. Prior work
                 has demonstrated that work-stealing is very effective
                 in practice. However, work-stealing comes with a
                 substantial overhead: as much as 2x to 12x slowdown
                 over orthodox sequential code. In this paper we
                 identify the key sources of overhead in work-stealing
                 schedulers and present two significant refinements to
                 their implementation. We evaluate our work-stealing
                 designs using a range of benchmarks, four different
                 work-stealing implementations, including the popular
                 fork-join framework, and a range of architectures. On
                 these benchmarks, compared to orthodox sequential Java,
                 our fastest design has an overhead of just 15\%. By
                 contrast, fork-join has a 2.3x overhead and the
                 previous implementation of the system we use has an
                 overhead of 4.1x. These results and our insight into
                 the sources of overhead for work-stealing
                 implementations give further hope to an already
                 promising technique for exploiting increasingly
                 available hardware parallelism.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Laskowski:2012:DJP,
  author =       "Eryk Laskowski and Marek Tudruj and Ivanoe {De Falco}
                 and Umberto Scafuri and Ernesto Tarantino",
  title =        "Distributed {Java} Programs Initial Mapping Based on
                 Extremal Optimization",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7133",
  pages =        "75--85",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-28151-8_8",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:46 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-28151-8_8/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-28151-8",
  book-URL =     "http://www.springerlink.com/content/978-3-642-28151-8",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Lin:2012:UKT,
  author =       "Yi Lin and Stephen M. Blackburn and Daniel Frampton",
  title =        "Unpicking the knot: teasing apart {VM}\slash
                 application interdependencies",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "7",
  pages =        "181--190",
  month =        jul,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2365864.2151048",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Sep 6 10:01:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "VEE '12 conference proceedings.",
  abstract =     "Flexible and efficient runtime design requires an
                 understanding of the dependencies among the components
                 internal to the runtime and those between the
                 application and the runtime. These dependencies are
                 frequently unclear. This problem exists in all runtime
                 design, and is most vivid in a metacircular runtime ---
                 one that is implemented in terms of itself.
                 Metacircularity blurs boundaries between application
                 and runtime implementation, making it harder to
                 understand and make guarantees about overall system
                 behavior, affecting isolation, security, and resource
                 management, as well as reducing opportunities for
                 optimization. Our goal is to shed new light on VM
                 interdependencies, helping all VM designers understand
                 these dependencies and thereby engineer better
                 runtimes. We explore these issues in the context of a
                 high-performance Java-in-Java virtual machine. Our
                 approach is to identify and instrument transition
                 points into and within the runtime, which allows us to
                 establish a dynamic execution context. Our
                 contributions are: (1) implementing and measuring a
                 system that dynamically maintains execution context
                 with very low overhead, (2) demonstrating that such a
                 framework can be used to improve the software
                 engineering of an existing runtime, and (3) analyzing
                 the behavior and runtime characteristics of our runtime
                 across a wide range of benchmarks. Our solution
                 provides clarity about execution state and allowable
                 transitions, making it easier to develop, debug, and
                 understand managed runtimes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Liu:2012:PAA,
  author =       "P. Liu and C. Zhang",
  title =        "{Pert}: The Application-Aware Tailoring of {Java}
                 Object Persistence",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "38",
  number =       "4",
  pages =        "909--922",
  month =        jul # "\slash " # aug,
  year =         "2012",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2011.66",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5963692",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Book{Long:2012:COS,
  author =       "F. W. (Frederick W.) Long and Dhruv Mohindra and
                 Robert Seacord and Dean Sutherland and David Svoboda",
  title =        "The {CERT} {Oracle} secure coding standard for
                 {Java}",
  publisher =    pub-AW,
  address =      pub-AW,
  pages =        "xxxiv + 699",
  year =         "2012",
  ISBN =         "0-321-80395-7 (paperback)",
  ISBN-13 =      "978-0-321-80395-5 (paperback)",
  LCCN =         "QA76.73.J38 C44 2012",
  bibdate =      "Thu Dec 1 05:58:24 MST 2011",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "The SEI series in software engineering",
  URL =          "http://ptgmedia.pearsoncmg.com/images/9780321803955/samplepages/0321803957.pdf",
  abstract =     "``In the Java world, security is not viewed as an
                 add-on a feature. It is a pervasive way of thinking.
                 Those who forget to think in a secure mindset end up in
                 trouble. But just because the facilities are there
                 doesn't mean that security is assured automatically. A
                 set of standard practices has evolved over the years.
                 The Secure{\'y} Coding{\'y} Standard for Java is a
                 compendium of these practices. These are not
                 theoretical research papers or product marketing
                 blurbs. This is all serious, mission-critical,
                 battle-tested, enterprise-scale stuff.''-- James A.
                 Gosling, Father of the Java Programming Language An
                 essential element of secure coding in the Java
                 programming language is a well-documented and
                 enforceable coding standard. Coding standards encourage
                 programmers to follow a uniform set of rules determined
                 by the requirements of the project and organization,
                 rather than by the programmer's familiarity or
                 preference. Once established, these standards can be
                 used as a metric to evaluate source code (using manual
                 or automated processes). The CERT{\'y} Oracle{\'y}
                 Secure Coding Standard for Java provides rules designed
                 to eliminate insecure coding practices that can lead to
                 exploitable vulnerabilities. Application of the
                 standard's guidelines will lead to higher-quality
                 systems - robust systems that are more resistant to
                 attack. Such guidelines are required for the wide range
                 of products coded in Java - for devices such as PCs,
                 game players, mobile phones, home appliances, and
                 automotive electronics. After a high-level introduction
                 to Java application security, seventeen consistently
                 organized chapters detail specific rules for key areas
                 of Java development. For each area, the authors present
                 noncompliant examples and corresponding compliant
                 solutions, show how to assess risk, and offer
                 references for further information. Each rule is
                 prioritized based on the severity of consequences,
                 likelihood of introducing exploitable vulnerabilities,
                 and cost of remediation. The standard provides secure
                 coding rules for the Java SE 6 Platform including the
                 Java programming language and libraries, and also
                 addresses new features of the Java SE 7 Platform. It
                 describes language behaviors left to the discretion of
                 JVM and compiler implementers, guides developers in the
                 proper use of Java's APIs and security architecture,
                 and considers security concerns pertaining to standard
                 extension APIs (from the javax package hierarchy).",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language); Computer security;
                 Oracle (Computer file); Computer programming;
                 Standards",
  tableofcontents = "1: Introduction \\
                 Misplaced Trust \\
                 Injection Attacks \\
                 Leaking Sensitive Data \\
                 Leaking Capabilities \\
                 Denial of Service \\
                 Serialization \\
                 Concurrency, Visibility, and Memory \\
                 Principle of Least Privilege \\
                 Security Managers \\
                 Class Loaders \\
                 Summary \\
                 2: Input Validation and Data Sanitization (IDS) \\
                 Rules \\
                 Risk Assessment Summary \\
                 IDS00-J: Sanitize untrusted data passed across a trust
                 boundary \\
                 IDS01-J: Normalize strings before validating them \\
                 IDS02-J: Canonicalize path names before validating them
                 \\
                 IDS03-J: Do not log unsanitized user input \\
                 IDS04-J: Limit the size of files passed to
                 ZipInputStream \\
                 IDS05-J: Use a subset of ASCII for file and path names
                 \\
                 IDS06-J: Exclude user input from format strings \\
                 IDS07-J: Do not pass untrusted, unsanitized data to the
                 Runtime.exec() method \\
                 IDS08-J: Sanitize untrusted data passed to a regex \\
                 IDS09-J: Do not use locale-dependent methods on
                 locale-dependent data without specifying the
                 appropriate locale \\
                 IDS10-J: Do not split characters between two data
                 structures \\
                 IDS11-J: Eliminate noncharacter code points before
                 validation \\
                 IDS12-J: Perform lossless conversion of String data
                 between differing character encodings \\
                 IDS13-J: Use compatible encodings on both sides of file
                 or network I/O \\
                 3: Declarations and Initialization (DCL) \\
                 Rules \\
                 Risk Assessment Summary \\
                 DCL00-J: Prevent class initialization cycles \\
                 DCL01-J: Do not reuse public identifiers from the Java
                 Standard Library \\
                 DCL02-J: Declare all enhanced for statement loop
                 variables final \\
                 4: Expressions (EXP) \\
                 Rules \\
                 Risk Assessment Summary \\
                 EXP00-J: Do not ignore values returned by methods \\
                 EXP01-J: Never dereference null pointers \\
                 EXP02-J: Use the two-argument Arrays.equals() method to
                 compare the contents of arrays \\
                 EXP03-J: Do not use the equality operators when
                 comparing values of boxed primitives \\
                 EXP04-J: Ensure that autoboxed values have the intended
                 type \\
                 EXP05-J: Do not write more than once to the same
                 variable within an expression \\
                 EXP06-J: Do not use side-effecting expressions in
                 assertions \\
                 5: Numeric Types and Operations (NUM) \\
                 Rules \\
                 Risk Assessment Summary \\
                 NUM00-J: Detect or prevent integer overflow \\
                 NUM01-J: Do not perform bitwise and arithmetic
                 operations on the same data \\
                 NUM02-J: Ensure that division and modulo operations do
                 not result in divide-by-zero errors \\
                 NUM03-J: Use integer types that can fully represent the
                 possible range of unsigned data \\
                 NUM04-J: Do not use floating-point numbers if precise
                 computation is required \\
                 NUM05-J: Do not use denormalized numbers \\
                 NUM06-J: Use the strictfp modifier for floating-point
                 calculation consistency across platforms \\
                 NUM07-J: Do not attempt comparisons with NaN \\
                 NUM08-J: Check floating-point inputs for exceptional
                 values \\
                 NUM09-J: Do not use floating-point variables as loop
                 counters \\
                 NUM10-J: Do not construct BigDecimal objects from
                 floating-point literals \\
                 NUM11-J: Do not compare or inspect the string
                 representation of floating-point values \\
                 NUM12-J: Ensure conversions of numeric types to
                 narrower types do not result in lost or misinterpreted
                 data \\
                 NUM13-J: Avoid loss of precision when converting
                 primitive integers to floating-point \\
                 6: Object Orientation (OBJ) \\
                 Rules \\
                 Risk Assessment Summary \\
                 OBJ00-J: Limit extensibility of classes and methods
                 with invariants to trusted subclasses only \\
                 OBJ01-J: Declare data members as private and provide
                 accessible wrapper methods \\
                 OBJ02-J: Preserve dependencies in subclasses when
                 changing superclasses \\
                 OBJ03-J: Do not mix generic with nongeneric raw types
                 in new code \\
                 OBJ04-J: Provide mutable classes with copy
                 functionality to safely allow passing instances to
                 untrusted code \\
                 OBJ05-J: Defensively copy private mutable class members
                 before returning their references \\
                 OBJ06-J: Defensively copy mutable inputs and mutable
                 internal components \\
                 OBJ07-J: Sensitive classes must not let themselves be
                 copied \\
                 OBJ08-J: Do not expose private members of an outer
                 class from within a nested class \\
                 OBJ09-J: Compare classes and not class names \\
                 OBJ10-J: Do not use public static nonfinal variables
                 \\
                 OBJ11-J: Be wary of letting constructors throw
                 exceptions \\
                 7: Methods (MET) \\
                 Rules \\
                 Risk Assessment Summary \\
                 MET00-J: Validate method arguments \\
                 MET01-J: Never use assertions to validate method
                 arguments \\
                 MET02-J: Do not use deprecated or obsolete classes or
                 methods \\
                 MET03-J: Methods that perform a security check must be
                 declared private or final \\
                 MET04-J: Do not increase the accessibility of
                 overridden or hidden methods \\
                 MET05-J: Ensure that constructors do not call
                 overridable methods \\
                 MET06-J: Do not invoke overridable methods in clone()
                 \\
                 MET07-J: Never declare a class method that hides a
                 method declared in a superclass or superinterface \\
                 MET08-J: Ensure objects that are equated are equatable
                 \\
                 MET09-J: Classes that define an equals() method must
                 also define a hashCode() method \\
                 MET10-J: Follow the general contract when implementing
                 the compareTo() method \\
                 MET11-J: Ensure that keys used in comparison operations
                 are immutable \\
                 MET12-J: Do not use finalizers \\
                 8: Exceptional Behavior (ERR) \\
                 Rules \\
                 Risk Assessment Summary \\
                 ERR00-J: Do not suppress or ignore checked exceptions
                 \\
                 ERR01-J: Do not allow exceptions to expose sensitive
                 information \\
                 ERR02-J: Prevent exceptions while logging data \\
                 ERR03-J: Restore prior object state on method failure
                 \\
                 ERR04-J: Do not exit abruptly from a finally block \\
                 ERR05-J: Do not let checked exceptions escape from a
                 finally block \\
                 ERR06-J: Do not throw undeclared checked exceptions \\
                 ERR07-J: Do not throw RuntimeException, Exception, or
                 Throwable \\
                 ERR08-J: Do not catch NullPerinterException or any of
                 its ancestors \\
                 ERR09-J: Do not allow untrusted code to terminate the
                 JVM \\
                 9: Visibility and Atomicity (VNA) \\
                 Rules \\
                 Risk Assessment Summary \\
                 VNA00-J: Ensure visibility when accessing shared
                 primitive variables \\
                 VNA01-J: Ensure visibility of shared references to
                 immutable objects \\
                 VNA02-J: Ensure that compound operations on shared
                 variables are atomic \\
                 VNA03-J: Do not assume that a group of calls to
                 independently atomic methods is atomic \\
                 VNA04-J: Ensure that calls to chained methods are
                 atomic \\
                 VNA05-J: Ensure atomicity when reading and writing
                 64-bit values \\
                 10: Locking (LCK) \\
                 Rules \\
                 Risk Assessment Summary \\
                 LCK00-J: Use private final lock objects to synchronize
                 classes that may interact with untrusted code \\
                 LCK01-J: Do not synchronize on objects that may be
                 reused \\
                 LCK02-J: Do not synchronize on the class object
                 returned by getClass() \\
                 LCK03-J: Do not synchronize on the intrinsic locks of
                 high-level concurrency objects \\
                 LCK04-J: Do not synchronize on a collection view if the
                 backing collection is accessible \\
                 LCK05-J: Synchronize access to static fields that can
                 be modified by untrusted code \\
                 LCK06-J: Do not use an instance lock to protect shared
                 static data \\
                 LCK07-J: Avoid deadlock by requesting and releasing
                 locks in the same order \\
                 LCK08-J: Ensure actively held locks are released on
                 exceptional conditions \\
                 LCK09-J: Do not perform operations that can block while
                 holding a lock \\
                 LCK10-J: Do not use incorrect forms of the
                 double-checked locking idiom \\
                 LCK11-J: Avoid client-side locking when using classes
                 that do not commit to their locking strategy \\
                 11: Thread APIs (THI) \\
                 Rules \\
                 Risk Assessment Summary \\
                 THI00-J: Do not invoke Thread.run() \\
                 THI01-J: Do not invoke ThreadGroup methods \\
                 THI02-J: Notify all waiting threads rather than a
                 single thread \\
                 THI03-J: Always invoke wait() and await() methods
                 inside a loop \\
                 THI04-J: Ensure that threads performing blocking
                 operations can be terminated \\
                 THI05-J: Do not use Thread.stop() to terminate threads
                 \\
                 12: Thread Pools (TPS) \\
                 Rules \\
                 Risk Assessment Summary \\
                 TPS00-J: Use thread pools to enable graceful
                 degradation of service during traffic bursts \\
                 TPS01-J: Do not execute interdependent tasks in a
                 bounded thread pool \\
                 TPS02-J: Ensure that tasks submitted to a thread pool
                 are interruptible \\
                 TPS03-J: Ensure that tasks executing in a thread pool
                 do not fail silently \\
                 TPS04-J: Ensure ThreadLocal variables are reinitialized
                 when using thread pools \\
                 13: Thread-Safety Miscellaneous (TSM) \\
                 Rules \\
                 Risk Assessment Summary \\
                 TSM00-J: Do not override thread-safe methods with
                 methods that are not thread-safe \\
                 TSM01-J: Do not let the this reference escape during
                 object construction \\
                 TSM02-J: Do not use background threads during class
                 initialization \\
                 TSM03-J: Do not publish partially initialized objects
                 \\
                 14: Input Output (FIO) \\
                 Rules \\
                 Risk Assessment Summary \\
                 FIO00-J: Do not operate on files in shared directories
                 \\
                 FIO01-J: Create files with appropriate access
                 permissions \\
                 FIO02-J: Detect and handle file-related errors \\
                 FIO03-J: Remove temporary files before termination \\
                 FIO04-J: Close resources when they are no longer needed
                 \\
                 FIO05-J: Do not expose buffers created using the wrap()
                 or duplicate() methods to untrusted code \\
                 FIO06-J: Do not create multiple buffered wrappers on a
                 single InputStream \\
                 FIO07-J: Do not let external processes block on input
                 and output streams \\
                 FIO08-J: Use an int to capture the return value of
                 methods that read a character or byteNote continued:
                 FIO09-J: Do not rely on the write() method to output
                 integers outside the range 0 to 255 \\
                 FIO10-J: Ensure the array is filled when using read()
                 to fill an array \\
                 FIO11-J: Do not attempt to read raw binary data as
                 character data \\
                 FIO12-J: Provide methods to read and write
                 little-endian data \\
                 FI013-J: Do not log sensitive information outside a
                 trust boundary \\
                 FI014-J: Perform proper cleanup at program termination
                 \\
                 15: Serialization (SER) \\
                 Rules \\
                 Risk Assessment Summary \\
                 SER00-J: Maintain serialization compatibility during
                 class evolution \\
                 SER01-J: Do not deviate from the proper signatures of
                 serialization methods \\
                 SER02-J: Sign then seal sensitive objects before
                 sending them across a trust boundary \\
                 SER03-J: Do not serialize unencrypted, sensitive data
                 \\
                 SER04-J: Do not allow serialization and deserialization
                 to bypass the security manager \\
                 SER05-J: Do not serialize instances of inner classes
                 \\
                 SER06-J: Make defensive copies of private mutable
                 components during deserialization \\
                 SER07-J: Do not use the default serialized form for
                 implementation-defined invariants \\
                 SER08-J: Minimize privileges before deserializing from
                 a privileged context \\
                 SER09-J: Do not invoke overridable methods from the
                 readObject() method \\
                 SER10-J: Avoid memory and resource leaks during
                 serialization \\
                 SER11-J: Prevent overwriting of externalizable objects
                 \\
                 16: Platform Security (SEC) \\
                 Rules \\
                 Risk Assessment Summary \\
                 SEC00-J: Do not allow privileged blocks to leak
                 sensitive information across a trust boundary \\
                 SEC01-J: Do not allow tainted variables in privileged
                 blocks \\
                 SEC02-J: Do not base security checks on untrusted
                 sources \\
                 SEC03-J: Do not load trusted classes after allowing
                 untrusted code to load arbitrary classes \\
                 SEC04-J: Protect sensitive operations with security
                 manager checks \\
                 SEC05-J: Do not use reflection to increase
                 accessibility of classes, methods, or fields \\
                 SEC06-J: Do not rely on the default automatic signature
                 verification provided by URLClassLoader and
                 java.util.jar \\
                 SEC07-J: Call the superclass's getPermissions() method
                 when writing a custom class loader \\
                 SEC08-J: Define wrappers around native methods \\
                 17: Runtime Environment (ENV) \\
                 Rules \\
                 Risk Assessment Summary \\
                 ENV00-J: Do not sign code that performs only
                 unprivileged operations \\
                 ENV01-J: Place all security-sensitive code in a single
                 jar and sign and seal it \\
                 ENV02-J: Do not trust the values of environment
                 variables \\
                 ENV03-J: Do not grant dangerous combinations of
                 permissions \\
                 ENV04-J: Do not disable bytecode verification \\
                 ENV05-J: Do not deploy an application that can be
                 remotely monitored \\
                 18: Miscellaneous (MSC) \\
                 Rules \\
                 Risk Assessment Summary \\
                 MSC00-J: Use SSLSocket rather than Socket for secure
                 data exchange \\
                 MSC01-J: Do not use an empty infinite loop \\
                 MSC02-J: Generate strong random numbers \\
                 MSC03-J: Never hard code sensitive information \\
                 MSC04-J: Do not leak memory \\
                 MSC05-J: Do not exhaust heap space \\
                 MSC06-J: Do not modify the underlying collection when
                 an iteration is in progress \\
                 MSC07-J: Prevent multiple instantiations of singleton
                 objects",
}

@Article{Lyon:2012:JTW,
  author =       "Doug Lyon",
  title =        "The {Java} Tree Withers",
  journal =      j-COMPUTER,
  volume =       "45",
  number =       "1",
  pages =        "83--85",
  month =        jan,
  year =         "2012",
  CODEN =        "CPTRB4",
  DOI =          "https://doi.org/10.1109/MC.2012.30",
  ISSN =         "0018-9162 (print), 1558-0814 (electronic)",
  ISSN-L =       "0018-9162",
  bibdate =      "Tue Jan 24 17:27:23 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computer2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The Java report card: infrastructure gets a D, code
                 reuse gets an F.",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2",
}

@Article{Magazinius:2012:SWS,
  author =       "Jonas Magazinius and Phu H. Phung and David Sands",
  title =        "Safe Wrappers and Sane Policies for Self Protecting
                 {JavaScript}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7127",
  pages =        "239--255",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-27937-9_17",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:40 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-27937-9_17/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-27937-9",
  book-URL =     "http://www.springerlink.com/content/978-3-642-27937-9",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Mayer:2012:ESI,
  author =       "Clemens Mayer and Stefan Hanenberg and Romain Robbes
                 and {\'E}ric Tanter and Andreas Stefik",
  title =        "An empirical study of the influence of static type
                 systems on the usability of undocumented software",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "683--702",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384666",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Abstract Although the study of static and dynamic type
                 systems plays a major role in research, relatively
                 little is known about the impact of type systems on
                 software development. Perhaps one of the more common
                 arguments for static type systems in languages such as
                 Java or C++ is that they require developers to annotate
                 their code with type names, which is thus claimed to
                 improve the documentation of software. In contrast, one
                 common argument against static type systems is that
                 they decrease flexibility, which may make them harder
                 to use. While these arguments are found in the
                 literature, rigorous empirical evidence is lacking. We
                 report on a controlled experiment where 27 subjects
                 performed programming tasks on an undocumented API with
                 a static type system (requiring type annotations) as
                 well as a dynamic type system (which does not). Our
                 results show that for some tasks, programmers had
                 faster completion times using a static type system,
                 while for others, the opposite held. We conduct an
                 exploratory study to try and theorize why.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{McIntosh:2012:EJB,
  author =       "Shane McIntosh and Bram Adams and Ahmed E. Hassan",
  title =        "The evolution of {Java} build systems",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "17",
  number =       "4--5",
  pages =        "578--608",
  month =        aug,
  year =         "2012",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-011-9169-5",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Dec 2 09:14:25 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-011-9169-5",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{McIntyre:2012:FJB,
  author =       "Timothy J. McIntyre and Alexis I. Bishop",
  title =        "{Fringe} --- a {Java}-based finite fringe analysis
                 package",
  journal =      j-COMP-PHYS-COMM,
  volume =       "183",
  number =       "9",
  pages =        "2014--2018",
  month =        sep,
  year =         "2012",
  CODEN =        "CPHCBZ",
  DOI =          "https://doi.org/10.1016/j.cpc.2012.04.011",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Thu Jun 7 13:25:14 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465512001506",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Meawad:2012:EBS,
  author =       "Fadi Meawad and Gregor Richards and Flor{\'e}al
                 Morandat and Jan Vitek",
  title =        "{Eval} begone!: semi-automated removal of {\tt eval}
                 from {JavaScript} programs",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "607--620",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384660",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Eval endows JavaScript developers with great power. It
                 allows developers and end-users, by turning text into
                 executable code, to seamlessly extend and customize the
                 behavior of deployed applications as they are running.
                 With great power comes great responsibility, though not
                 in our experience. In previous work we demonstrated
                 through a large corpus study that programmers wield
                 that power in rather irresponsible and arbitrary ways.
                 We showed that most calls to eval fall into a small
                 number of very predictable patterns. We argued that
                 those patterns could easily be recognized by an
                 automated algorithm and that they could almost always
                 be replaced with safer JavaScript idioms. In this paper
                 we set out to validate our claim by designing and
                 implementing a tool, which we call Evalorizer, that can
                 assist programmers in getting rid of their unneeded
                 evals. We use the tool to remove eval from a real-world
                 website and validated our approach over logs taken from
                 the top 100 websites with a success rate over 97\%
                 under an open world assumption.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Mercer:2012:CVI,
  author =       "Eric Mercer and Suzette Person and Neha Rungta",
  title =        "Computing and visualizing the impact of change with
                 {Java PathFinder} extensions",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382801",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Change impact analysis techniques estimate the
                 potential effects of changes made to software. Directed
                 Incremental Symbolic Execution (DiSE) is a Java
                 PathFinder extension that computes the impact of
                 changes on program execution behaviors. The results of
                 DiSE are a set of impacted path conditions that can be
                 efficiently processed by a subsequent client analysis.
                 Path conditions, however, may not be intuitive for
                 software developers without the context of the source
                 code. In this paper we present a framework for
                 visualizing the results of DiSE. The visualization
                 includes annotated source code and control ow graphs
                 indicating program statements that are changed and
                 statements that may be impacted by the changes. A
                 simulation mode enables users to also observe the
                 impact of changes on symbolic execution of the program,
                 by showing the changes to the path conditions as the
                 user steps through the sequences of statements
                 executed.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Mesbah:2012:CAB,
  author =       "Ali Mesbah and Arie van Deursen and Stefan Lenselink",
  title =        "Crawling {Ajax}-Based {Web} Applications through
                 Dynamic Analysis of User Interface State Changes",
  journal =      j-TWEB,
  volume =       "6",
  number =       "1",
  pages =        "3:1--3:??",
  month =        mar,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2109205.2109208",
  ISSN =         "1559-1131 (print), 1559-114X (electronic)",
  ISSN-L =       "1559-1131",
  bibdate =      "Fri Mar 16 12:37:41 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tweb.bib",
  abstract =     "Using JavaScript and dynamic DOM manipulation on the
                 client side of Web applications is becoming a
                 widespread approach for achieving rich interactivity
                 and responsiveness in modern Web applications. At the
                 same time, such techniques---collectively known as
                 Ajax---shatter the concept of webpages with unique
                 URLs, on which traditional Web crawlers are based. This
                 article describes a novel technique for crawling
                 Ajax-based applications through automatic dynamic
                 analysis of user-interface-state changes in Web
                 browsers. Our algorithm scans the DOM tree, spots
                 candidate elements that are capable of changing the
                 state, fires events on those candidate elements, and
                 incrementally infers a state machine that models the
                 various navigational paths and states within an Ajax
                 application. This inferred model can be used in program
                 comprehension and in analysis and testing of dynamic
                 Web states, for instance, or for generating a static
                 version of the application. In this article, we discuss
                 our sequential and concurrent Ajax crawling algorithms.
                 We present our open source tool called Crawljax, which
                 implements the concepts and algorithms discussed in
                 this article. Additionally, we report a number of
                 empirical studies in which we apply our approach to a
                 number of open-source and industrial Web applications
                 and elaborate on the obtained results.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on the Web (TWEB)",
}

@Article{Mirshokraie:2012:JJA,
  author =       "Shabnam Mirshokraie and Ali Mesbah",
  title =        "{JSART}: {JavaScript} Assertion-Based Regression
                 Testing",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7387",
  pages =        "238--252",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31753-8_18",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:21:29 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012f.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31753-8_18/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31753-8",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31753-8",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Mirzaei:2012:TAA,
  author =       "Nariman Mirzaei and Sam Malek and Corina S.
                 P{\u{a}}s{\u{a}}reanu and Naeem Esfahani and Riyadh
                 Mahmood",
  title =        "Testing {Android} apps through symbolic execution",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382798",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "There is a growing need for automated testing
                 techniques aimed at Android apps. A critical challenge
                 is the systematic generation of test cases. One method
                 of systematically generating test cases for Java
                 programs is symbolic execution. But applying symbolic
                 execution tools, such as Symbolic Pathfinder (SPF), to
                 generate test cases for Android apps is challenged by
                 the fact that Android apps run on the Dalvik Virtual
                 Machine (DVM) instead of JVM. In addition, Android apps
                 are event driven and susceptible to path-divergence due
                 to their reliance on an application development
                 framework. This paper provides an overview of a
                 two-pronged approach to alleviate these issues. First,
                 we have developed a model of Android libraries in Java
                 Pathfinder (JPF) to enable execution of Android apps in
                 a way that addresses the issues of incompatibility with
                 JVM and path-divergence. Second, we have leveraged
                 program analysis techniques to correlate events with
                 their handlers for automatically generating
                 Android-specific drivers that simulate all valid
                 events.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Misra:2012:JSC,
  author =       "Janardan Misra and Annervaz KM and Vikrant Kaulgud and
                 Shubhashis Sengupta and Gary Titus",
  title =        "{Java} source-code clustering: Unifying syntactic and
                 semantic features",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--8",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382766",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "This is a report from an international workshop on
                 ``Social and Algorithmic Issues in Business Support''
                 (SAIBS), which was organized in conjunction with the
                 16th ADBIS Conference in Poznan, Poland, on September
                 17, 2012. The main focus of this workshop was to
                 provide a venue for the discussion whether social
                 stands in opposition to algorithmic or systematic. We
                 analyzed social contribution to business processes
                 taking into account possible benefits and risk factors.
                 Questions raised in collected research and discussion
                 related to how far business could relay on social input
                 and what were the limits or what were the areas where
                 introducing crowdsourced components might increase
                 overall risk value to unacceptable level? Algorithmic
                 approach to observe and collect social behaviour was
                 discussed in the context of internet auctions
                 participants and car drivers equipped in mobile
                 application for instant route planning and collecting
                 feedback cartracking data. Having in mind Andrew Keen's
                 critique of social contribution in Web 2.0-related
                 phenomena we looked for the Wisdom of Crowds [1].
                 Collected conclusions and further dissemination of
                 research results should lead to an improvement in
                 utilizing social impact on software development and
                 business processes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Naik:2012:AT,
  author =       "Mayur Naik and Hongseok Yang and Ghila Castelnuovo and
                 Mooly Sagiv",
  title =        "Abstractions from tests",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "1",
  pages =        "373--386",
  month =        jan,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2103621.2103701",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Mar 15 18:16:55 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "We present a framework for leveraging dynamic analysis
                 to find good abstractions for static analysis. A static
                 analysis in our framework is parametrised. Our main
                 insight is to directly and efficiently compute from a
                 concrete trace, a necessary condition on the parameter
                 configurations to prove a given query, and thereby
                 prune the space of parameter configurations that the
                 static analysis must consider. We provide constructive
                 algorithms for two instance analyses in our framework:
                 a flow- and context-sensitive thread-escape analysis
                 and a flow- and context-insensitive points-to analysis.
                 We show the efficacy of these analyses, and our
                 approach, on six Java programs comprising two million
                 bytecodes: the thread-escape analysis resolves 80\% of
                 queries on average, disproving 28\% and proving 52\%;
                 the points-to analysis resolves 99\% of queries on
                 average, disproving 29\% and proving 70\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '12 conference proceedings.",
}

@Article{Ngo:2012:BRE,
  author =       "Terry Ngo",
  title =        "Book Review: {{\booktitle{Essential app engine:
                 building high-performance Java apps with Google app
                 engine}} by Adriaan de Jonge}",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "2",
  pages =        "37--37",
  month =        mar,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2108144.2108173",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:11 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Nikolic:2012:DEA,
  author =       "{\Dbar}urica Nikoli{\'c} and Fausto Spoto",
  title =        "Definite Expression Aliasing Analysis for {Java}
                 Bytecode",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7521",
  pages =        "74--89",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-32943-2_6",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:15 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012i.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-32943-2_6/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-32943-2",
  book-URL =     "http://www.springerlink.com/content/978-3-642-32943-2",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Nilsen:2012:RTJ,
  author =       "Kelvin Nilsen",
  title =        "Real-time {Java} in modernization of the {Aegis Weapon
                 System}",
  journal =      j-SIGADA-LETTERS,
  volume =       "32",
  number =       "3",
  pages =        "63--70",
  month =        dec,
  year =         "2012",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2402709.2402699",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Sun May 5 10:05:12 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  note =         "HILT '12 conference proceedings.",
  abstract =     "The U.S. Navy's Aegis system, considered to be the
                 ``shield of the fleet'', provides area air defense for
                 a carrier battle group in addition to providing
                 long-range ballistic missile defense. A typical Aegis
                 deployment consists of about 100 computers, many of
                 which have multiple cores. The application is
                 distributed, with typical real-time threads spanning 4
                 or 5 different computers. End-to-end distributed thread
                 timing constraints measured from stimulus to response
                 are typically under 100 ms. The target jitter
                 constraints on the individual contributions of
                 processors to the end-to-end deadline constraint are
                 well below 1 ms. The system is fully redundant to
                 support fault tolerance. The software is considered to
                 be safety critical because it aims and fires weapons.
                 The Aegis Weapons System software was recently
                 rewritten into real-time Java as part of the Aegis
                 Modernization activity. This project involved
                 replacement of about 200,000 lines of CMS-2 and Ada
                 code with roughly 500,000 lines of Java. The effort
                 began in 2003 and the new Java implementation of Aegis
                 Weapons System is now being deployed on warships. This
                 paper describes the motivation for the modernization
                 effort and provides a summary of Lockheed Martin's
                 experiences with this project.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
}

@Article{Nilsen:2012:TOU,
  author =       "Kelvin Nilsen",
  title =        "Tutorial overview: understanding dynamic memory
                 management in safety critical {Java}",
  journal =      j-SIGADA-LETTERS,
  volume =       "32",
  number =       "3",
  pages =        "15--22",
  month =        dec,
  year =         "2012",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2402709.2402685",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Sun May 5 10:05:12 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  note =         "HILT '12 conference proceedings.",
  abstract =     "In spite of the high-level abstraction benefits of
                 automatic tracing garbage collection, current
                 prevailing sentiment within the safety certification
                 community is that a simpler memory model is required
                 for the most rigorous levels of software safety
                 certification. Thus, the draft JSR-302 specification
                 for safety critical Java relies on scope-based memory
                 allocation rather than tracing garbage collection. The
                 scoped memory model for JSR-302 is a simplification of
                 the RTSJ model. JSR-302 enforces a strict hierarchy of
                 scopes and distinguishes private scopes, which can be
                 seen only by one thread, from mission scopes, which can
                 be accessed by all the threads that comprise a mission,
                 including threads running within inner-nested
                 sub-missions. The hierarchical memory structure allows
                 implementations to guarantee the absence of memory
                 fragmentation for scope management, unlike the
                 Real-Time Specification for Java from which the JSR-302
                 specification was derived. In the absence of block
                 structure, it is more difficult in Java to safely
                 manage references to stack-allocated objects than in
                 Ada. While the simplified hierarchical management of
                 scoped memory that is part of JSR-302 addresses memory
                 fragmentation concerns, it does not guarantee the
                 absence of dangling pointers. As with the Real-Time
                 Specification for Java, JSR-302 requires a run-time
                 check to enforce that no reference assignment creates a
                 relationship whereby an outer-nested object is allowed
                 to point to an inner-nested object. This rule assures
                 the absence of dangling pointers, but it introduces a
                 different problem: every assignment to a reference
                 field must be accompanied by a run-time check to
                 validate the appropriate scope nesting relationship.
                 This run-time check will throw a run-time exception if
                 the assignment is deemed inappropriate. The safety
                 certification evidence for a given safety-critical Java
                 program must therefore include an argument for every
                 reference assignment that it will not cause the program
                 to abort with a run-time exception. Furthermore, the
                 certification evidence must prove that sufficient
                 memory is available to reliably execute each
                 safety-critical task in the system. This tutorial
                 provides an overview of dynamic memory management in
                 Safety Critical Java and describes two annotation
                 systems that have been designed to support static
                 (compile-time) enforcement of memory safety properties.
                 The first annotation system is described in an appendix
                 to the draft JSR-302 standard. This relatively simple
                 annotation system, which is not considered normative,
                 serves to demonstrate that memory safety can be
                 statically proven without requiring extensive
                 annotations throughout existing library code. The
                 second annotation system is the system implemented in
                 Perc Pico. This annotation system, which is much richer
                 than the draft JSR-302 annotation, has been in
                 experimental use for over five years. During that time,
                 tens of thousands of lines of experimental application
                 code have been developed, with the experience
                 motivating a variety of refinements to the original
                 design.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
}

@Article{Noll:2012:IDO,
  author =       "Albert Noll and Thomas R. Gross",
  title =        "An infrastructure for dynamic optimization of parallel
                 programs",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "8",
  pages =        "325--326",
  month =        aug,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2370036.2145877",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Sep 12 12:11:57 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPOPP '12 conference proceedings.",
  abstract =     "Object-oriented programming languages like Java
                 provide only low-level constructs (e.g., starting a
                 thread) to describe concurrency. High-level
                 abstractions (e.g., thread pools) are merely provided
                 as a library. As a result, a compiler is not aware of
                 the high-level semantics of a parallel library and
                 therefore misses important optimization opportunities.
                 This paper presents a simple source language extension
                 based on which a compiler is provided with the
                 opportunity to perform new optimizations that are
                 particularly effective for parallel code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Olszak:2012:RJP,
  author =       "Andrzej Olszak and Bo N{\o}rregaard J{\o}rgensen",
  title =        "Remodularizing {Java} programs for improved locality
                 of feature implementations in source code",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "77",
  number =       "3",
  pages =        "131--151",
  day =          "1",
  month =        mar,
  year =         "2012",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2010.10.007",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Feb 4 14:59:10 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642310001917",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Panizo:2012:EJP,
  author =       "Laura Panizo and Mar{\'\i}a del Mar Gallardo",
  title =        "An extension of {Java PathFinder} for hybrid systems",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382793",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Hybrid systems are characterized by combining discrete
                 and continuous behaviors. Verification of hybrid
                 systems is, in general, a difficult task due to the
                 potential complexity of the continuous dynamics.
                 Currently, there are different formalisms and tools
                 which are able to analyze specific types of hybrid
                 systems, model checking being one of the most used
                 approaches. In this paper, we describe an extension of
                 Java PathFinder in order to analyze hybrid systems. We
                 apply a general methodology which has been successfully
                 used to extend Spin. This methodology is non-intrusive,
                 and uses external libraries, such as the Parma
                 Polyhedra Library, to abstract the continuous behavior
                 of the hybrid system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Parizek:2012:PAJ,
  author =       "Pavel Par{\'\i}zek and OndYej Lhot{\'a}k",
  title =        "Predicate abstraction of {Java} programs with
                 collections",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "75--94",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384623",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Our goal is to develop precise and scalable
                 verification techniques for Java programs that use
                 collections and properties that depend on their
                 content. We apply the popular approach of predicate
                 abstraction to Java programs and collections. The main
                 challenge in this context is precise and compact
                 modeling of collections that enables practical
                 verification. We define a predicate language for
                 modeling the observable state of Java collections at
                 the interface level. Changes of the state by API
                 methods are captured by weakest preconditions. We adapt
                 existing techniques for construction of abstract
                 programs. Most notably, we designed optimizations based
                 on specific features of the predicate language. We
                 evaluated our approach on Java programs that use
                 collections in advanced ways. Our results show that
                 interesting properties, such as consistency between
                 multiple collections, can be verified using our
                 approach. The properties are specified using logic
                 formulas that involve predicates introduced by our
                 language.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Park:2012:CB,
  author =       "Chang-Seo Park and Koushik Sen",
  title =        "Concurrent breakpoints",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "8",
  pages =        "331--332",
  month =        aug,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2370036.2145880",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Sep 12 12:11:57 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPOPP '12 conference proceedings.",
  abstract =     "In program debugging, reproducibility of bugs is a key
                 requirement. Unfortunately, bugs in concurrent programs
                 are notoriously difficult to reproduce because bugs due
                 to concurrency happen under very specific thread
                 schedules and the likelihood of taking such corner-case
                 schedules during regular testing is very low. We
                 propose concurrent breakpoints, a light-weight and
                 programmatic way to make a concurrency bug
                 reproducible. We describe a mechanism that helps to hit
                 a concurrent breakpoint in a concurrent execution with
                 high probability. We have implemented concurrent
                 breakpoints as a light-weight library for Java and
                 C/C++ programs. We have used the implementation to
                 deterministically reproduce several known
                 non-deterministic bugs in real-world concurrent Java
                 and C/C++ programs with almost 100\% probability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@InProceedings{Pham-Quang:2012:JAD,
  author =       "Phuong Pham-Quang and Benoit Delinchant",
  title =        "{Java} Automatic Differentiation Tool Using Virtual
                 Operator Overloading",
  crossref =     "Forth:2012:RAA",
  volume =       "87",
  pages =        "241--250",
  year =         "2012",
  DOI =          "https://doi.org/10.1007/978-3-642-30023-3_22",
  bibdate =      "Sat Dec 22 08:35:46 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncse.bib",
  URL =          "http://link.springer.com/content/pdf/10.1007/978-3-642-30023-3_22",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-30023-3",
  book-URL =     "http://www.springerlink.com/content/978-3-642-30023-3",
}

@Article{Phan:2012:SQI,
  author =       "Quoc-Sang Phan and Pasquale Malacaria and Oksana
                 Tkachuk and Corina S. P{\u{a}}s{\u{a}}reanu",
  title =        "Symbolic quantitative information flow",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382791",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Quantitative Information Flow (QIF) is a powerful
                 approach to quantify leaks of confidential information
                 in a software system. Here we present a novel method
                 that precisely quantifies information leaks. In order
                 to mitigate the state-space explosion problem, we
                 propose a symbolic representation of data, and a
                 general SMT-based framework to explore systematically
                 the state space. Symbolic Execution fits well with our
                 framework, so we implement a method of QIF analysis
                 employing Symbolic Execution. We develop our method as
                 a prototype tool that can perform QIF analysis for a
                 software system developed in Java. The tool is built on
                 top of Java Pathfinder, an open source model checking
                 platform, and it is the first tool in the field to
                 support information-theoretic QIF analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Pradel:2012:FAP,
  author =       "Michael Pradel and Thomas R. Gross",
  title =        "Fully automatic and precise detection of thread safety
                 violations",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "6",
  pages =        "521--530",
  month =        jun,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2345156.2254126",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 6 16:31:49 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "PLDI '12 proceedings.",
  abstract =     "Concurrent, object-oriented programs often use
                 thread-safe library classes. Existing techniques for
                 testing a thread-safe class either rely on tests using
                 the class, on formal specifications, or on both.
                 Unfortunately, these techniques often are not fully
                 automatic as they involve the user in analyzing the
                 output. This paper presents an automatic testing
                 technique that reveals concurrency bugs in supposedly
                 thread-safe classes. The analysis requires as input
                 only the class under test and reports only true
                 positives. The key idea is to generate tests in which
                 multiple threads call methods on a shared instance of
                 the tested class. If a concurrent test exhibits an
                 exception or a deadlock that cannot be triggered in any
                 linearized execution of the test, the analysis reports
                 a thread safety violation. The approach is easily
                 applicable, because it is independent of hand-written
                 tests and explicit specifications. The analysis finds
                 15 concurrency bugs in popular Java libraries,
                 including two previously unknown bugs in the Java
                 standard library.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Ramirez-Deantes:2012:MTA,
  author =       "D. Ram{\'\i}rez-Deantes and J. Correas and G. Puebla",
  title =        "Modular Termination Analysis of {Java} Bytecode and
                 Its Application to {phoneME} Core Libraries",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "6921",
  pages =        "218--236",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-27269-1_13",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:20:22 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012a.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-27269-1_13/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-27269-1",
  book-URL =     "http://www.springerlink.com/content/978-3-642-27269-1",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Ravn:2012:SCJ,
  author =       "Anders P. Ravn and Martin Schoeberl",
  title =        "Safety-critical {Java} with cyclic executives on
                 chip-multiprocessors",
  journal =      j-CCPE,
  volume =       "24",
  number =       "8",
  pages =        "772--788",
  month =        "????",
  year =         "2012",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1754",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat May 26 08:11:47 MDT 2012",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Prac\-tice and
                 Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "10 May 2011",
}

@Article{Razafindralambo:2012:FFH,
  author =       "Tiana Razafindralambo and Guillaume Bouffard and
                 Jean-Louis Lanet",
  title =        "A Friendly Framework for Hidding fault enabled virus
                 for {Java} Based {Smartcard}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7371",
  pages =        "122--128",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31540-4_10",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:21:06 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012f.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31540-4_10/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31540-4",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31540-4",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Reichenbach:2012:PPD,
  author =       "Christoph Reichenbach and Yannis Smaragdakis and Neil
                 Immerman",
  title =        "{PQL}: a Purely-Declarative {Java} Extension for
                 Parallel Programming",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7313",
  pages =        "53--78",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31057-7_4",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31057-7_4/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31057-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31057-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Reza:2012:JS,
  author =       "Juan Rolando Reza",
  title =        "{Java} supervenience",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "38",
  number =       "1",
  pages =        "73--97",
  month =        apr,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.cl.2011.08.002",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Wed Apr 11 16:28:12 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.sciencedirect.com/science/journal/14778424",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842411000182",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems {\&} Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424",
}

@Article{Rimlinger:2012:TGS,
  author =       "Frank Rimlinger",
  title =        "Test generation via symbolic simulation",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382795",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The Mango extension project of JPF is an Eclipse
                 Workbench plugin which creates a functional
                 specification of Java source code. The specification is
                 presented as a series of navigable pages within Eclipse
                 views. Representative code examples containing faults
                 are processed by Mango. The output specification views
                 are then navigated for the purpose of discovering
                 robust fault recognition rules for automated testing.
                 This paper describes how the analyst and tool work
                 together to generate a test for a selected
                 vulnerability described in an Oracle publication, the
                 exposition of confidential data by the exception
                 handler mechanism.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Rompf:2012:LMS,
  author =       "Tiark Rompf and Martin Odersky",
  title =        "Lightweight modular staging: a pragmatic approach to
                 runtime code generation and compiled {DSLs}",
  journal =      j-CACM,
  volume =       "55",
  number =       "6",
  pages =        "121--130",
  month =        jun,
  year =         "2012",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/2184319.2184345",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Wed Jun 6 15:21:16 MDT 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Good software engineering practice demands
                 generalization and abstraction, whereas high
                 performance demands specialization and concretization.
                 These goals are at odds, and compilers can only rarely
                 translate expressive high-level programs to modern
                 hardware platforms in a way that makes best use of the
                 available resources. Generative programming is a
                 promising alternative to fully automatic translation.
                 Instead of writing down the target program directly,
                 developers write a program generator, which produces
                 the target program as its output. The generator can be
                 written in a high-level, generic style and can still
                 produce efficient, specialized target programs. In
                 practice, however, developing high-quality program
                 generators requires a very large effort that is often
                 hard to amortize. We present lightweight modular
                 staging (LMS), a generative programming approach that
                 lowers this effort significantly. LMS seamlessly
                 combines program generator logic with the generated
                 code in a single program, using only types to
                 distinguish the two stages of execution. Through
                 extensive use of component technology, LMS makes a
                 reusable and extensible compiler framework available at
                 the library level, allowing programmers to tightly
                 integrate domain-specific abstractions and
                 optimizations into the generation process, with common
                 generic optimizations provided by the framework. LMS is
                 well suited to develop embedded domain-specific
                 languages (DSLs) and has been used to develop powerful
                 performance-oriented DSLs for demanding domains such as
                 machine learning, with code generation for
                 heterogeneous platforms including GPUs. LMS has also
                 been used to generate SQL for embedded database queries
                 and JavaScript for web applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Samuelson:2012:LSO,
  author =       "Pamela Samuelson",
  title =        "Legally speaking: {Oracle} v. {Google}: are {APIs}
                 copyrightable?",
  journal =      j-CACM,
  volume =       "55",
  number =       "11",
  pages =        "25--27",
  month =        nov,
  year =         "2012",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/2366316.2366325",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Thu Oct 25 09:59:18 MDT 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Assessing the first phase of the trial based on claims
                 that Google's Android platform infringes Oracle's
                 Java-related copyrights and patents.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Sartor:2012:EMT,
  author =       "Jennfer B. Sartor and Lieven Eeckhout",
  title =        "Exploring multi-threaded {Java} application
                 performance on multicore hardware",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "281--296",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384638",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "While there have been many studies of how to schedule
                 applications to take advantage of increasing numbers of
                 cores in modern-day multicore processors, few have
                 focused on multi-threaded managed language applications
                 which are prevalent from the embedded to the server
                 domain. Managed languages complicate performance
                 studies because they have additional virtual machine
                 threads that collect garbage and dynamically compile,
                 closely interacting with application threads. Further
                 complexity is introduced as modern multicore machines
                 have multiple sockets and dynamic frequency scaling
                 options, broadening opportunities to reduce both power
                 and running time. In this paper, we explore the
                 performance of Java applications, studying how best to
                 map application and virtual machine (JVM) threads to a
                 multicore, multi-socket environment. We explore both
                 the cost of separating JVM threads from application
                 threads, and the opportunity to speed up or slow down
                 the clock frequency of isolated threads. We perform
                 experiments with the multi-threaded DaCapo benchmarks
                 and pseudojbb2005 running on the Jikes Research Virtual
                 Machine, on a dual-socket, 8-core Intel Nehalem machine
                 to reveal several novel, and sometimes
                 counter-intuitive, findings. We believe these insights
                 are a first but important step towards understanding
                 and optimizing managed language performance on modern
                 hardware.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Schafer:2012:CAN,
  author =       "M. Sch{\"a}fer and A. Thies and F. Steimann and F.
                 Tip",
  title =        "A Comprehensive Approach to Naming and Accessibility
                 in Refactoring {Java} Programs",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "38",
  number =       "6",
  pages =        "1233--1257",
  month =        nov # "\slash " # dec,
  year =         "2012",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2012.13",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6152131",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Scheben:2012:VIF,
  author =       "Christoph Scheben and Peter H. Schmitt",
  title =        "Verification of Information Flow Properties of {Java}
                 Programs without Approximations",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7421",
  pages =        "232--249",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31762-0_15",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31762-0_15/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31762-0",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31762-0",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Severance:2012:DJO,
  author =       "Charles Severance",
  title =        "Discovering {JavaScript} Object Notation",
  journal =      j-COMPUTER,
  volume =       "45",
  number =       "4",
  pages =        "6--8",
  month =        apr,
  year =         "2012",
  CODEN =        "CPTRB4",
  DOI =          "https://doi.org/10.1109/MC.2012.132",
  ISSN =         "0018-9162 (print), 1558-0814 (electronic)",
  ISSN-L =       "0018-9162",
  bibdate =      "Thu Apr 26 16:52:47 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computer2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2",
}

@Article{Severance:2012:JDL,
  author =       "Charles Severance",
  title =        "{JavaScript}: Designing a Language in 10 Days",
  journal =      j-COMPUTER,
  volume =       "45",
  number =       "2",
  pages =        "7--8",
  month =        feb,
  year =         "2012",
  CODEN =        "CPTRB4",
  DOI =          "https://doi.org/10.1109/MC.2012.57",
  ISSN =         "0018-9162 (print), 1558-0814 (electronic)",
  ISSN-L =       "0018-9162",
  bibdate =      "Thu Mar 15 16:00:49 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computer2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2",
}

@Article{Sewe:2012:NSI,
  author =       "Andreas Sewe and Mira Mezini and Aibek Sarimbekov and
                 Danilo Ansaloni and Walter Binder and Nathan Ricci and
                 Samuel Z. Guyer",
  title =        "{{\tt New Scala() instanceof}} {Java}: a comparison of
                 the memory behaviour of {Java} and {Scala} programs",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "11",
  pages =        "97--108",
  month =        nov,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2426642.2259010",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jan 10 08:55:30 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "ISMM '12 conference proceedings.",
  abstract =     "While often designed with a single language in mind,
                 managed runtimes like the Java virtual machine (JVM)
                 have become the target of not one but many languages,
                 all of which benefit from the runtime's services. One
                 of these services is automatic memory management. In
                 this paper, we compare and contrast the memory
                 behaviour of programs written in Java and Scala,
                 respectively, two languages which both target the same
                 platform: the JVM. We both analyze core object
                 demographics like object lifetimes as well as secondary
                 properties of objects like their associated monitors
                 and identity hash-codes. We find that objects in Scala
                 programs have lower survival rates and higher rates of
                 immutability, which is only partly explained by the
                 memory behaviour of objects representing closures or
                 boxed primitives. Other metrics vary more by benchmark
                 than language.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Sewell:2012:TJ,
  author =       "Peter Sewell",
  title =        "Tales from the jungle",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "9",
  pages =        "271--272",
  month =        sep,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398856.2364566",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:19 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We rely on a computational infrastructure that is a
                 densely interwined mass of software and hardware:
                 programming languages, network protocols, operating
                 systems, and processors. It has accumulated great
                 complexity, from a combination of engineering design
                 decisions, contingent historical choices, and sheer
                 scale, yet it is defined at best by prose
                 specifications, or, all too often, just by the common
                 implementations. Can we do better? More specifically,
                 can we apply rigorous methods to this mainstream
                 infrastructure, taking the accumulated complexity
                 seriously, and if we do, does it help? My colleagues
                 and I have looked at these questions in several
                 contexts: the TCP/IP network protocols with their
                 Sockets API; programming language design, including the
                 Java module system and the C11/C++11 concurrency model;
                 the hardware concurrency behaviour of x86, IBM POWER,
                 and ARM multiprocessors; and compilation of concurrent
                 code. In this talk I will draw some lessons from what
                 did and did not succeed, looking especially at the
                 empirical nature of some of the work, at the social
                 process of engagement with the various different
                 communities, and at the mathematical and software tools
                 we used. Domain-specific modelling languages (based on
                 functional programming ideas) and proof assistants were
                 invaluable for working with the large and loose
                 specifications involved: idioms within HOL4 for TCP,
                 our Ott tool for programming language specification,
                 and Owens's Lem tool for portable semantic definitions,
                 with HOL4, Isabelle, and Coq, for the relaxed-memory
                 concurrency semantics work. Our experience with these
                 suggests something of what is needed to make full-scale
                 rigorous semantics a commonplace reality.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ICFP '12 conference proceedings.",
}

@Article{Shafiei:2012:MCL,
  author =       "Nastaran Shafiei and Peter Mehlitz",
  title =        "Modeling class loaders in {Java PathFinder} version
                 7",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382800",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "The class loading mechanism is one of the essential
                 components of the Java runtime environment. Java class
                 loading is performed on-demand, allows multiple, user
                 extensible class loaders, and can associate a separate
                 type namespace with each class loader. Previous
                 versions of the Java Pathfinder (JPF) model checker
                 only provided a single, hardcoded class loading
                 mechanism. As one of the cornerstones of the upcoming
                 JPF version 7 (JPF v7), we have implemented a standard
                 Java conforming class loader infrastructure. Our
                 implementation does not only support different class
                 loaders and type namespaces, but also allows explicit
                 instantiation of multiple bootstrap class loaders which
                 is essential for model checking of distributed
                 applications --- the primary motivation for our work.
                 With the new class loading mechanism, such applications
                 can be mapped to threads using different bootstrap
                 class loaders, thus effectively separating all static
                 fields between application threads. In addition, the
                 JPF v7 class loading is considered to be the basis for
                 future verification of Java security properties.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Shah:2012:AMJ,
  author =       "Syed Muhammad Ali Shah and Jens Dietrich and Catherine
                 McCartin",
  title =        "On the Automated Modularisation of {Java} Programs
                 Using Service Locators",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7306",
  pages =        "132--147",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-30564-1_9",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:42 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-30564-1_9/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-30564-1",
  book-URL =     "http://www.springerlink.com/content/978-3-642-30564-1",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Shan:2012:OAC,
  author =       "Zhe Shan and Akhil Kumar",
  title =        "Optimal Adapter Creation for Process Composition in
                 Synchronous vs. Asynchronous Communication",
  journal =      j-TMIS,
  volume =       "3",
  number =       "2",
  pages =        "8:1--8:??",
  month =        jul,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2229156.2229160",
  ISSN =         "2158-656X (print), 2158-6578 (electronic)",
  ISSN-L =       "2158-656X",
  bibdate =      "Tue Nov 6 19:02:09 MST 2012",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tmis/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tmis.bib",
  abstract =     "A key issue in process-aware e-commerce collaboration
                 is to orchestrate business processes of multiple
                 business partners throughout a supply chain network in
                 an automated and seamless way. Since each partner has
                 its own internal processes with different control flow
                 structures and message interfaces, the real challenge
                 lies in verifying the correctness of process
                 collaboration, and reconciling conflicts in an
                 automated manner to make collaboration successful. The
                 purpose of business process adaptation is to mediate
                 the communication between independent processes to
                 overcome their mismatches and incompatibilities. The
                 goal of this article is to develop and compare
                 efficient approaches of optimal adapter (i.e. one that
                 minimizes the number of messages to be adapted)
                 creation for multiple interacting processes under both
                 synchronous and asynchronous communication. We start
                 with an analysis of interactions of each message pair,
                 and show how to identify incompatible cases and their
                 adaptation elements for both types of communication.
                 Then, we show how to extend this analysis into more
                 general cases involving M messages and N processes ( M,
                 N {$>$} 2). Further, we present optimal adapter
                 creation algorithms for both scenarios based on our
                 analysis technique. The algorithms were implemented in
                 a Java-based prototype system, and results of two
                 experiments are reported. We compare and discuss the
                 insights gained about adapter creation in these two
                 scenarios.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Management Information Systems
                 (TMIS)",
}

@Article{Siek:2012:FDT,
  author =       "Konrad Siek and Pawe{\l} T. Wojciechowski",
  title =        "A Formal Design of a Tool for Static Analysis of Upper
                 Bounds on Object Calls in {Java}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7437",
  pages =        "192--206",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-32469-7_13",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:22:33 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012g.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-32469-7_13/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-32469-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-32469-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Simao:2012:CER,
  author =       "Jos{\'e} Sim{\~a}o and Tiago Garrochinho and Lu{\'\i}s
                 Veiga",
  title =        "A checkpointing-enabled and resource-aware {Java
                 Virtual Machine} for efficient and robust {e-Science}
                 applications in grid environments",
  journal =      j-CCPE,
  volume =       "24",
  number =       "13",
  pages =        "1421--1442",
  day =          "10",
  month =        sep,
  year =         "2012",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1879",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Nov 5 07:44:52 MST 2012",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "21 Dec 2011",
}

@Article{Singh:2012:EPS,
  author =       "Abhayendra Singh and Daniel Marino and Satish
                 Narayanasamy and Todd Millstein and Madan Musuvathi",
  title =        "Efficient processor support for {DRFx}, a memory model
                 with exceptions",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "4",
  pages =        "53--66",
  month =        apr,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2248487.1950375",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 7 08:15:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "A longstanding challenge of shared-memory concurrency
                 is to provide a memory model that allows for efficient
                 implementation while providing strong and simple
                 guarantees to programmers. The C++0x and Java memory
                 models admit a wide variety of compiler and hardware
                 optimizations and provide sequentially consistent (SC)
                 semantics for data-race-free programs. However, they
                 either do not provide any semantics (C++0x) or provide
                 a hard-to-understand semantics (Java) for racy
                 programs, compromising the safety and debuggability of
                 such programs. In earlier work we proposed the DRFx
                 memory model, which addresses this problem by
                 dynamically detecting potential violations of SC due to
                 the interaction of compiler or hardware optimizations
                 with data races and halting execution upon detection.
                 In this paper, we present a detailed micro-architecture
                 design for supporting the DRFx memory model, formalize
                 the design and prove its correctness, and evaluate the
                 design using a hardware simulator. We describe a set of
                 DRFx-compliant complexity-effective optimizations which
                 allow us to attain performance close to that of TSO
                 (Total Store Model) and DRF0 while providing strong
                 guarantees for all programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '12 conference proceedings.",
}

@Article{Snellenburg:2012:GJB,
  author =       "Joris J. Snellenburg and Sergey Laptenok and Ralf
                 Seger and Katharine M. Mullen and Ivo H. M. van
                 Stokkum",
  title =        "{Glotaran}: a {Java}-Based Graphical User Interface
                 for the {R} Package {TIMP}",
  journal =      j-J-STAT-SOFT,
  volume =       "49",
  number =       "3",
  pages =        "??--??",
  month =        jun,
  year =         "2012",
  CODEN =        "JSSOBK",
  ISSN =         "1548-7660",
  bibdate =      "Mon Oct 29 18:54:10 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib",
  URL =          "http://www.jstatsoft.org/v49/i03",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Statistical Software",
  journal-URL =  "http://www.jstatsoft.org/",
  pubdates =     "Submitted 2011-01-20; Accepted 2011-09-16",
}

@Article{Sridharan:2012:CTP,
  author =       "Manu Sridharan and Julian Dolby and Satish Chandra and
                 Max Sch{\"a}fer and Frank Tip",
  title =        "Correlation Tracking for Points-To Analysis of
                 {JavaScript}",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7313",
  pages =        "435--458",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-31057-7_20",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:19:51 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012e.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-31057-7_20/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-31057-7",
  book-URL =     "http://www.springerlink.com/content/978-3-642-31057-7",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Stuchlik:2012:SVD,
  author =       "Andreas Stuchlik and Stefan Hanenberg",
  title =        "Static vs. dynamic type systems: an empirical study
                 about the relationship between type casts and
                 development time",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "2",
  pages =        "97--106",
  month =        feb,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2168696.2047861",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Apr 20 17:34:09 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Static type systems are essential in computer science.
                 However, there is hardly any knowledge about the impact
                 of type systems on the resulting piece of software.
                 While there are authors that state that static types
                 increase the development speed, other authors argue the
                 other way around. A previous experiment suggests that
                 there are multiple factors that play a role for a
                 comparison of statically and dynamically typed
                 language. As a follow-up, this paper presents an
                 empirical study with 21 subjects that compares
                 programming tasks performed in Java and Groovy ---
                 programming tasks where the number of expected type
                 casts vary in the statically typed language. The result
                 of the study is, that the dynamically typed group
                 solved the complete programming tasks significantly
                 faster for most tasks --- but that for larger tasks
                 with a higher number of type casts no significant
                 difference could be found.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DSL '11 conference proceedings.",
}

@Article{Szweda:2012:ANB,
  author =       "{\L}ukasz Szweda and Daniel Wilusz and Jakub
                 Floty{\'n}ski",
  title =        "Application of {NXT} Based Robots for Teaching
                 {Java}-Based Concurrency",
  journal =      j-LECT-NOTES-COMP-SCI,
  volume =       "7516",
  pages =        "54--64",
  year =         "2012",
  CODEN =        "LNCSD9",
  DOI =          "https://doi.org/10.1007/978-3-642-33466-5_6",
  ISSN =         "0302-9743 (print), 1611-3349 (electronic)",
  ISSN-L =       "0302-9743",
  bibdate =      "Wed Dec 19 15:24:08 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs2012i.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-642-33466-5_6/",
  acknowledgement = ack-nhfb,
  book-DOI =     "https://doi.org/10.1007/978-3-642-33466-5",
  book-URL =     "http://www.springerlink.com/content/978-3-642-33466-5",
  fjournal =     "Lecture Notes in Computer Science",
}

@Article{Taboada:2012:FMS,
  author =       "Guillermo L. Taboada and Juan Touri{\~n}o and
                 Ram{\'o}n Doallo",
  title =        "{F-MPJ}: scalable {Java} message-passing
                 communications on parallel systems",
  journal =      j-J-SUPERCOMPUTING,
  volume =       "60",
  number =       "1",
  pages =        "117--140",
  month =        apr,
  year =         "2012",
  CODEN =        "JOSUED",
  ISSN =         "0920-8542 (print), 1573-0484 (electronic)",
  ISSN-L =       "0920-8542",
  bibdate =      "Fri Apr 6 17:45:24 MDT 2012",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=0920-8542&volume=60&issue=1;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsuper.bib",
  URL =          "http://www.springerlink.com/openurl.asp?genre=article&issn=0920-8542&volume=60&issue=1&spage=117",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of Supercomputing",
  journal-URL =  "http://link.springer.com/journal/11227",
}

@Article{Takikawa:2012:GTF,
  author =       "Asumu Takikawa and T. Stephen Strickland and Christos
                 Dimoulas and Sam Tobin-Hochstadt and Matthias
                 Felleisen",
  title =        "Gradual typing for first-class classes",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "793--810",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384674",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic type-checking and object-oriented programming
                 often go hand-in-hand; scripting languages such as
                 Python, Ruby, and JavaScript all embrace
                 object-oriented (OO) programming. When scripts written
                 in such languages grow and evolve into large programs,
                 the lack of a static type discipline reduces
                 maintainability. A programmer may thus wish to migrate
                 parts of such scripts to a sister language with a
                 static type system. Unfortunately, existing type
                 systems neither support the flexible OO composition
                 mechanisms found in scripting languages nor accommodate
                 sound interoperation with untyped code. In this paper,
                 we present the design of a gradual typing system that
                 supports sound interaction between statically- and
                 dynamically-typed units of class-based code. The type
                 system uses row polymorphism for classes and thus
                 supports mixin-based OO composition. To protect
                 migration of mixins from typed to untyped components,
                 the system employs a novel form of contracts that
                 partially seal classes. The design comes with a theorem
                 that guarantees the soundness of the type system even
                 in the presence of untyped components.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Tamayo:2012:UBD,
  author =       "Juan M. Tamayo and Alex Aiken and Nathan Bronson and
                 Mooly Sagiv",
  title =        "Understanding the behavior of database operations
                 under program control",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "983--996",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384688",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Applications that combine general program logic with
                 persistent databases (e.g., three-tier applications)
                 often suffer large performance penalties from poor use
                 of the database. We introduce a program analysis
                 technique that combines information flow in the program
                 with commutativity analysis of its database operations
                 to produce a unified dependency graph for database
                 statements, which provides programmers with a
                 high-level view of how costly database operations are
                 and how they are connected in the program. As an
                 example application of our analysis we describe three
                 optimizations that can be discovered by examining the
                 structure of the dependency graph; each helps remove
                 communication latency from the critical path of a
                 multi-tier system. We implement our technique in a tool
                 for Java applications using JDBC and experimentally
                 validate it using the multi-tier component of the
                 Dacapo benchmark.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Tardieu:2012:WSS,
  author =       "Olivier Tardieu and Haichuan Wang and Haibo Lin",
  title =        "A work-stealing scheduler for {X10}'s task parallelism
                 with suspension",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "8",
  pages =        "267--276",
  month =        aug,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2370036.2145850",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Sep 12 12:11:57 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPOPP '12 conference proceedings.",
  abstract =     "The X10 programming language is intended to ease the
                 programming of scalable concurrent and distributed
                 applications. X10 augments a familiar imperative
                 object-oriented programming model with constructs to
                 support light-weight asynchronous tasks as well as
                 execution across multiple address spaces. A crucial
                 aspect of X10's runtime system is the scheduling of
                 concurrent tasks. Work-stealing schedulers have been
                 shown to efficiently load balance fine-grain
                 divide-and-conquer task-parallel program on SMPs and
                 multicores. But X10 is not limited to shared-memory
                 fork-join parallelism. X10 permits tasks to suspend and
                 synchronize by means of conditional atomic blocks and
                 remote task invocations. In this paper, we demonstrate
                 that work-stealing scheduling principles are applicable
                 to a rich programming language such as X10, achieving
                 performance at scale without compromising expressivity,
                 ease of use, or portability. We design and implement a
                 portable work-stealing execution engine for X10. While
                 this engine is biased toward the efficient execution of
                 fork-join parallelism in shared memory, it handles the
                 full X10 language, especially conditional atomic blocks
                 and distribution. We show that this engine improves the
                 run time of a series of benchmark programs by several
                 orders of magnitude when used in combination with the
                 C++ backend compiler and runtime for X10. It achieves
                 scaling comparable to state-of-the art work-stealing
                 scheduler implementations---the Cilk++ compiler and the
                 Java fork/join framework---despite the dramatic
                 increase in generality.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Teodorovici:2012:BRC,
  author =       "Vasile G. Teodorovici",
  title =        "Book Review: {{\booktitle{Continuous testing with
                 Ruby, Rails and JavaScript}} by Ben Rady and Rod
                 Coffin}",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "1",
  pages =        "36--36",
  month =        jan,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2088883.2088906",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:09 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Toegl:2012:SSJ,
  author =       "Ronald Toegl and Thomas Winkler and Mohammad Nauman
                 and Theodore W. Hong",
  title =        "Specification and Standardization of a {Java Trusted
                 Computing API}",
  journal =      j-SPE,
  volume =       "42",
  number =       "8",
  pages =        "945--965",
  month =        aug,
  year =         "2012",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.1095",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Nov 6 17:14:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "13 Jul 2011",
}

@Article{Toledo:2012:AJA,
  author =       "R. Toledo and A. Nunez and E. Tanter and J. Noye",
  title =        "Aspectizing {Java} Access Control",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "38",
  number =       "1",
  pages =        "101--117",
  month =        jan # "\slash " # feb,
  year =         "2012",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2011.6",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5680915",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{vanderMerwe:2012:VAA,
  author =       "Heila van der Merwe and Brink van der Merwe and Willem
                 Visser",
  title =        "Verifying {Android} applications using {Java
                 PathFinder}",
  journal =      j-SIGSOFT,
  volume =       "37",
  number =       "6",
  pages =        "1--5",
  month =        nov,
  year =         "2012",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2382756.2382797",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:18 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Mobile application testing is a specialised and
                 complex field. Due to mobile applications' event driven
                 design and mobile runtime environment, there currently
                 exist only a small number of tools to verify these
                 applications. This paper describes the development of
                 JPF-ANDROID, an Android application verification tool.
                 JPF-ANDROID is built on Java Pathfinder, a Java model
                 checking engine. JPF-ANDROID provides a simplified
                 model of the Android framework on which an Android
                 application can run. It then allows the user to script
                 input events to drive the application flow. JPF-ANDROID
                 provides a way to detect common property violations
                 such as deadlocks and runtime exceptions in Android
                 applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Vitek:2012:ISI,
  author =       "Jan Vitek and Tomas Kalibera",
  title =        "Introduction to the {Special Issue on Java
                 Technologies for Real-Time and Embedded Systems}",
  journal =      j-CCPE,
  volume =       "24",
  number =       "8",
  pages =        "751--752",
  month =        "????",
  year =         "2012",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1769",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat May 26 08:11:47 MDT 2012",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Prac\-tice and
                 Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "23 Jun 2011",
}

@Article{Walker:2012:SNJ,
  author =       "Henry M. Walker",
  title =        "{SIGCSE} by the numbers: {JavaScript}",
  journal =      j-SIGCSE,
  volume =       "44",
  number =       "1",
  pages =        "8--8",
  month =        jan,
  year =         "2012",
  CODEN =        "SIGSD3",
  DOI =          "https://doi.org/10.1145/2132499.2132502",
  ISSN =         "0097-8418 (print), 2331-3927 (electronic)",
  ISSN-L =       "0097-8418",
  bibdate =      "Sat Nov 17 15:44:30 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigcse2010.bib",
  abstract =     "As you may know, SIGCSE 2000 was the first SIGCSE
                 conference that utilized an online system for the
                 submission and reviewing of papers. Naively, for that
                 first conference, I relied upon JavaScript for error
                 checking, so I assumed error checking was not needed at
                 the server --- after all, checking had already been
                 done by the browser, right?",
  acknowledgement = ack-nhfb,
  fjournal =     "SIGCSE Bulletin (ACM Special Interest Group on
                 Computer Science Education)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J688",
}

@Article{Wellings:2012:AEH,
  author =       "Andy Wellings and MinSeong Kim",
  title =        "Asynchronous event handling and {Safety Critical
                 Java}",
  journal =      j-CCPE,
  volume =       "24",
  number =       "8",
  pages =        "813--832",
  month =        "????",
  year =         "2012",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1756",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat May 26 08:11:47 MDT 2012",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Prac\-tice and
                 Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "1 May 2011",
}

@Article{Xi:2012:MDA,
  author =       "Kai Xi and Jiankun Hu and Fengling Han",
  title =        "Mobile device access control: an improved correlation
                 based face authentication scheme and its {Java ME}
                 application",
  journal =      j-CCPE,
  volume =       "24",
  number =       "10",
  pages =        "1066--1085",
  month =        jul,
  year =         "2012",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.1797",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Nov 5 07:44:49 MST 2012",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "28 Jul 2011",
}

@Article{Xue:2012:RJC,
  author =       "Jingling Xue",
  title =        "Rethinking {Java} call stack design for tiny embedded
                 devices",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "5",
  pages =        "1--10",
  month =        may,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2345141.2248420",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 6 16:31:46 MDT 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "LCTES '12 proceedings.",
  abstract =     "The ability of tiny embedded devices to run large
                 feature-rich programs is typically constrained by the
                 amount of memory installed on such devices.
                 Furthermore, the useful operation of these devices in
                 wireless sensor applications is limited by their
                 battery life. This paper presents a call stack redesign
                 targeted at an efficient use of RAM storage and CPU
                 cycles by a Java program running on a wireless sensor
                 mote. Without compromising the application programs,
                 our call stack redesign saves 30\% of RAM, on average,
                 evaluated over a large number of benchmarks. On the
                 same set of bench-marks, our design also avoids
                 frequent RAM allocations and deallocations, resulting
                 in average 80\% fewer memory operations and 23\% faster
                 program execution. These may be critical improvements
                 for tiny embedded devices that are equipped with small
                 amount of RAM and limited battery life. However, our
                 call stack redesign is equally effective for any
                 complex multi-threaded object oriented program
                 developed for desktop computers. We describe the
                 redesign, measure its performance and report the
                 resulting savings in RAM and execution time for a wide
                 variety of programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Yang:2012:MPD,
  author =       "Cheng-Hong Yang and Yu-Huei Cheng and Cheng-Huei Yang
                 and Li-Yeh Chuang",
  title =        "Mutagenic Primer Design for Mismatch {PCR-RFLP} {SNP}
                 Genotyping Using a Genetic Algorithm",
  journal =      j-TCBB,
  volume =       "9",
  number =       "3",
  pages =        "837--845",
  month =        may,
  year =         "2012",
  CODEN =        "ITCBCY",
  DOI =          "https://doi.org/10.1109/TCBB.2012.25",
  ISSN =         "1545-5963 (print), 1557-9964 (electronic)",
  ISSN-L =       "1545-5963",
  bibdate =      "Thu Apr 19 17:58:10 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tcbb.bib",
  abstract =     "Polymerase chain reaction-restriction fragment length
                 polymorphism (PCR-RFLP) is useful in small-scale basic
                 research studies of complex genetic diseases that are
                 associated with single nucleotide polymorphism (SNP).
                 Designing a feasible primer pair is an important work
                 before performing PCR-RFLP for SNP genotyping. However,
                 in many cases, restriction enzymes to discriminate the
                 target SNP resulting in the primer design is not
                 applicable. A mutagenic primer is introduced to solve
                 this problem. GA-based Mismatch PCR-RFLP Primers Design
                 (GAMPD) provides a method that uses a genetic algorithm
                 to search for optimal mutagenic primers and available
                 restriction enzymes from REBASE. In order to improve
                 the efficiency of the proposed method, a mutagenic
                 matrix is employed to judge whether a hypothetical
                 mutagenic primer can discriminate the target SNP by
                 digestion with available restriction enzymes. The
                 available restriction enzymes for the target SNP are
                 mined by the updated core of SNP-RFLPing. GAMPD has
                 been used to simulate the SNPs in the human SLC6A4 gene
                 under different parameter settings and compared with
                 SNP Cutter for mismatch PCR-RFLP primer design. The in
                 silico simulation of the proposed GAMPD program showed
                 that it designs mismatch PCR-RFLP primers. The GAMPD
                 program is implemented in JAVA and is freely available
                 at http://bio.kuas.edu.tw/gampd/",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE/ACM Transactions on Computational Biology and
                 Bioinformatics",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J954",
}

@Article{Yerima:2012:AMB,
  author =       "Suleiman Y. Yerima and Gerard P. Parr and Sally I.
                 McClean and Philip J. Morrow",
  title =        "Adaptive Measurement-Based Policy-Driven {QoS}
                 Management with Fuzzy-Rule-based Resource Allocation",
  journal =      j-FUTURE-INTERNET,
  volume =       "4",
  number =       "3",
  pages =        "646--671",
  day =          "04",
  month =        jul,
  year =         "2012",
  CODEN =        "????",
  DOI =          "https://doi.org/10.3390/fi4030646",
  ISSN =         "1999-5903",
  bibdate =      "Thu Nov 21 16:50:48 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/future-internet.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.mdpi.com/1999-5903/4/3/646",
  abstract =     "Fixed and wireless networks are increasingly
                 converging towards common connectivity with IP-based
                 core networks. Providing effective end-to-end resource
                 and QoS management in such complex heterogeneous
                 converged network scenarios requires unified, adaptive
                 and scalable solutions to integrate and co-ordinate
                 diverse QoS mechanisms of different access technologies
                 with IP-based QoS. Policy-Based Network Management
                 (PBNM) is one approach that could be employed to
                 address this challenge. Hence, a policy-based framework
                 for end-to-end QoS management in converged networks,
                 CNQF (Converged Networks QoS Management Framework) has
                 been proposed within our project. In this paper, the
                 CNQF architecture, a Java implementation of its
                 prototype and experimental validation of key elements
                 are discussed. We then present a fuzzy-based CNQF
                 resource management approach and study the performance
                 of our implementation with real traffic flows on an
                 experimental testbed. The results demonstrate the
                 efficacy of our resource-adaptive approach for
                 practical PBNM systems.",
  acknowledgement = ack-nhfb,
  remark =       "Special Issue Selected Papers from ITA 11.",
}

@Book{Zakhour:2012:JTS,
  author =       "Sharon Zakhour",
  title =        "The {Java} tutorial: a short course on the basics",
  publisher =    pub-PH,
  address =      pub-PH:adr,
  edition =      "Fifth",
  pages =        "????",
  year =         "2012",
  ISBN =         "0-13-276169-6 (paperback)",
  ISBN-13 =      "978-0-13-276169-7 (paperback)",
  LCCN =         "????",
  bibdate =      "Mon Jan 28 14:57:26 MST 2013",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language); Object-oriented
                 programming (Computer science)",
}

@Article{Zhang:2012:RAJ,
  author =       "Ying Zhang and Gang Huang and Xuanzhe Liu and Wei
                 Zhang and Hong Mei and Shunxiang Yang",
  title =        "Refactoring {Android Java} code for on-demand
                 computation offloading",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "10",
  pages =        "233--248",
  month =        oct,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2398857.2384634",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Nov 15 16:40:23 MST 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Computation offloading is a promising way to improve
                 the performance as well as reducing the battery power
                 consumption of a smartphone application by executing
                 some parts of the application on a remote server.
                 Supporting such capability is not easy for smartphone
                 application developers due to (1) correctness: some
                 code, e.g., that for GPS, gravity, and other sensors,
                 can run only on the smartphone so that developers have
                 to identify which parts of the application cannot be
                 offloaded; (2) effectiveness: the reduced execution
                 time must be greater than the network delay caused by
                 computation offloading so that developers need to
                 calculate which parts are worth offloading; (3)
                 adaptability: smartphone applications often face
                 changes of user requirements and runtime environments
                 so that developers need to implement the adaptation on
                 offloading. More importantly, considering the large
                 number of today's smartphone applications, solutions
                 applicable for legacy applications will be much more
                 valuable. In this paper, we present a tool, named
                 DPartner, that automatically refactors Android
                 applications to be the ones with computation offloading
                 capability. For a given Android application, DPartner
                 first analyzes its bytecode for discovering the parts
                 worth offloading, then rewrites the bytecode to
                 implement a special program structure supporting
                 on-demand offloading, and finally generates two
                 artifacts to be deployed onto an Android phone and the
                 server, respectively. We evaluated DPartner on three
                 real-world Android applications, demonstrating the
                 reduction of execution time by 46\%-97\% and battery
                 power consumption by 27\%-83\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '12 conference proceedings.",
}

@Article{Zhang:2012:SRB,
  author =       "Yuan Zhang and Min Yang and Bo Zhou and Zhemin Yang
                 and Weihua Zhang and Binyu Zang",
  title =        "{Swift}: a register-based {JIT} compiler for embedded
                 {JVMs}",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "7",
  pages =        "63--74",
  month =        jul,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2365864.2151035",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Sep 6 10:01:03 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "VEE '12 conference proceedings.",
  abstract =     "Code quality and compilation speed are two challenges
                 to JIT compilers, while selective compilation is
                 commonly used to trade-off these two issues. Meanwhile,
                 with more and more Java applications running in mobile
                 devices, selective compilation meets many problems.
                 Since these applications always have flat execution
                 profile and short live time, a lightweight JIT
                 technique without losing code quality is extremely
                 needed. However, the overhead of compiling stack-based
                 Java bytecode to heterogeneous register-based machine
                 code is significant in embedded devices. This paper
                 presents a fast and effective JIT technique for mobile
                 devices, building on a register-based Java bytecode
                 format which is more similar to the underlying machine
                 architecture. Through a comprehensive study on the
                 characteristics of Java applications, we observe that
                 virtual registers used by more than 90\% Java methods
                 can be directly fulfilled by 11 physical registers.
                 Based on this observation, this paper proposes Swift, a
                 novel JIT compiler on register-based bytecode, which
                 generates native code for RISC machines. After mapping
                 virtual registers to physical registers, the code is
                 generated efficiently by looking up a translation
                 table. And the code quality is guaranteed by the static
                 compiler which is used to generate register-based
                 bytecode. Besides, we design two lightweight
                 optimizations and an efficient code unloader to make
                 Swift more suitable for embedded environment. As the
                 prevalence of Android, a prototype of Swift is
                 implemented upon DEX bytecode which is the official
                 distribution format of Android applications. Swift is
                 evaluated with three benchmarks (SPECjvm98,
                 EmbeddedCaffeineMark3 and JemBench2) on two different
                 ARM SOCs: S3C6410 (armv6) and OMAP3530 (armv7). The
                 results show that Swift achieves a speedup of 3.13 over
                 the best-performing interpreter on the selected
                 benchmarks. Compared with the state-of-the-art JIT
                 compiler in Android, JITC-Droid, Swift achieves a
                 speedup of 1.42.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Zhao:2012:PTI,
  author =       "Tian Zhao",
  title =        "Polymorphic type inference for scripting languages
                 with object extensions",
  journal =      j-SIGPLAN,
  volume =       "47",
  number =       "2",
  pages =        "37--50",
  month =        feb,
  year =         "2012",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2168696.2047855",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Apr 20 17:34:09 MDT 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2000.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper presents a polymorphic type inference
                 algorithm for a small subset of JavaScript. The goal is
                 to prevent accessing undefined members of objects. We
                 define a type system that allows explicit extension of
                 objects through add operation and implicit extension
                 through method calls. The type system also permits
                 strong updates and unrestricted extensions to new
                 objects. The type inference algorithm is modular so
                 that each function definition is only analyzed once and
                 larger programs can be checked incrementally.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DSL '11 conference proceedings.",
}

@Book{Ament:2013:ATG,
  author =       "John Ament",
  title =        "{Arquillian} Testing Guide: get familiarized with the
                 {Arquillian} framework and its capabilities to carry
                 out integration and functional testing on a {Java}
                 virtual machine",
  publisher =    "Packt Publishing",
  address =      "Birmingham, UK",
  pages =        "v + 224",
  year =         "2013",
  ISBN =         "1-78216-070-1",
  ISBN-13 =      "978-1-78216-070-0",
  LCCN =         "QA76.73.J3",
  bibdate =      "Thu Dec 4 08:31:46 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  URL =          "http://proquest.tech.safaribooksonline.de/9781782160700",
  acknowledgement = ack-nhfb,
}

@Article{Anonymous:2013:FAM,
  author =       "Anonymous",
  title =        "{Facebook}, {Apple} and {Microsoft} hit by {Java}
                 exploit at watering hole",
  journal =      j-NETWORK-SECURITY,
  volume =       "2013",
  number =       "3",
  pages =        "1--2",
  month =        mar,
  year =         "2013",
  CODEN =        "NTSCF5",
  DOI =          "https://doi.org/10.1016/S1353-4858(13)70035-7",
  ISSN =         "1353-4858 (print), 1872-9371 (electronic)",
  ISSN-L =       "1353-4858",
  bibdate =      "Mon Dec 4 17:00:52 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/network-security.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1353485813700357",
  acknowledgement = ack-nhfb,
  fjournal =     "Network Security",
  journal-URL =  "https://www.sciencedirect.com/journal/network-security",
}

@Article{Autili:2013:HAR,
  author =       "Marco Autili and Paolo {Di Benedetto} and Paola
                 Inverardi",
  title =        "A hybrid approach for resource-based comparison of
                 adaptable {Java} applications",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "8",
  pages =        "987--1009",
  day =          "1",
  month =        aug,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Sep 3 06:34:35 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312000147",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Axelsen:2013:PTD,
  author =       "Eyvind W. Axelsen and Stein Krogdahl",
  title =        "{Package Templates}: a definition by
                 semantics-preserving source-to-source transformations
                 to efficient {Java} code",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "3",
  pages =        "50--59",
  month =        mar,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2480361.2371409",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:18 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Package Templates (PT) is a mechanism designed for
                 writing reusable modules, called templates, each
                 consisting of a set of classes that can be adapted to
                 their use in a program through compile-time
                 specialization. A template must be instantiated in a
                 program before its classes can be used. The mechanism
                 supports type-safe renaming, merging, type
                 parameterization and refinement in the form of static
                 additions and overrides that are orthogonal to the
                 corresponding concepts of ordinary inheritance. In this
                 paper, we consider PT as an extension to Java, and a PT
                 program will then consist of a number of Java packages
                 and templates, where templates are instantiated in
                 packages or other templates. Our aim and main
                 contribution is to define the meaning of such a
                 program, and to show that this definition is
                 consistent. We first show this for a core subset of PT,
                 C-PT, and define a set of source-to-source
                 transformations for converting C-PT programs to plain
                 Java programs using semantics we have described
                 informally in previous papers. We can then define the
                 meaning of a C-PT program in terms of the resulting
                 Java program. Thus, we have to verify that the
                 transformations will always convert a legal C-PT
                 program to a legal Java program. Finally, we briefly
                 discuss how this approach can be extended to full PT. A
                 main challenge is to preserve externally visible names
                 (for classes, methods and fields), and at the same time
                 prevent unwanted subsequent rebindings caused e.g. by
                 over-load resolution in the Java compiler. Names that
                 are bound to declarations in a template should not be
                 rebound to different declarations by subsequent
                 compositions or adaptions. In addition to defining the
                 runtime semantics of PT constructs in terms of their
                 translation to Java, the transformation rules can also
                 be seen as a high-level approach to how a compiler for
                 this language might be implemented.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '12 conference proceedings.",
}

@Article{Bacon:2013:PRT,
  author =       "David F. Bacon and Perry Cheng and V. T. Rajan",
  title =        "{POPL 2003}: a real-time garbage collector with low
                 overhead and consistent utilization",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "4S",
  pages =        "58--71",
  month =        apr,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2502508.2502523",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 15 15:53:11 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Now that the use of garbage collection in languages
                 like Java is becoming widely accepted due to the safety
                 and software engineering benefits it provides, there is
                 significant interest in applying garbage collection to
                 hard real-time systems. Past approaches have generally
                 suffered from one of two major flaws: either they were
                 not provably real-time, or they imposed large space
                 overheads to meet the real-time bounds. We present a
                 mostly non-moving, dynamically defragmenting collector
                 that overcomes both of these limitations: by avoiding
                 copying in most cases, space requirements are kept low;
                 and by fully incrementalizing the collector we are able
                 to meet real-time bounds. We implemented our algorithm
                 in the Jikes RVM and show that at real-time resolution
                 we are able to obtain mutator utilization rates of 45\%
                 with only 1.6--2.5 times the actual space required by
                 the application, a factor of 4 improvement in
                 utilization over the best previously published results.
                 Defragmentation causes no more than 4\% of the traced
                 data to be copied.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bainomugisha:2013:SRP,
  author =       "Engineer Bainomugisha and Andoni Lombide Carreton and
                 Tom van Cutsem and Stijn Mostinckx and Wolfgang de
                 Meuter",
  title =        "A survey on reactive programming",
  journal =      j-COMP-SURV,
  volume =       "45",
  number =       "4",
  pages =        "52:1--52:??",
  month =        aug,
  year =         "2013",
  CODEN =        "CMSVAN",
  DOI =          "https://doi.org/10.1145/2501654.2501666",
  ISSN =         "0360-0300 (print), 1557-7341 (electronic)",
  ISSN-L =       "0360-0300",
  bibdate =      "Mon Aug 26 17:21:41 MDT 2013",
  bibsource =    "http://www.acm.org/pubs/contents/journals/surveys/;
                 http://www.math.utah.edu/pub/tex/bib/compsurv.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Reactive programming has recently gained popularity as
                 a paradigm that is well-suited for developing
                 event-driven and interactive applications. It
                 facilitates the development of such applications by
                 providing abstractions to express time-varying values
                 and automatically managing dependencies between such
                 values. A number of approaches have been recently
                 proposed embedded in various languages such as Haskell,
                 Scheme, JavaScript, Java, .NET, etc. This survey
                 describes and provides a taxonomy of existing reactive
                 programming approaches along six axes: representation
                 of time-varying values, evaluation model, lifting
                 operations, multidirectionality, glitch avoidance, and
                 support for distribution. From this taxonomy, we
                 observe that there are still open challenges in the
                 field of reactive programming. For instance,
                 multidirectionality is supported only by a small number
                 of languages, which do not automatically track
                 dependencies between time-varying values. Similarly,
                 glitch avoidance, which is subtle in reactive programs,
                 cannot be ensured in distributed reactive programs
                 using the current techniques.",
  acknowledgement = ack-nhfb,
  articleno =    "52",
  fjournal =     "ACM Computing Surveys",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J204",
}

@Article{Balatsouras:2013:CHC,
  author =       "George Balatsouras and Yannis Smaragdakis",
  title =        "Class hierarchy complementation: soundly completing a
                 partial type graph",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "515--532",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509530",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "We present the problem of class hierarchy
                 complementation: given a partially known hierarchy of
                 classes together with subtyping constraints (``A has to
                 be a transitive subtype of B'') complete the hierarchy
                 so that it satisfies all constraints. The problem has
                 immediate practical application to the analysis of
                 partial programs--e.g., it arises in the process of
                 providing a sound handling of ``phantom classes'' in
                 the Soot program analysis framework. We provide
                 algorithms to solve the hierarchy complementation
                 problem in the single inheritance and multiple
                 inheritance settings. We also show that the problem in
                 a language such as Java, with single inheritance but
                 multiple subtyping and distinguished class vs.
                 interface types, can be decomposed into separate
                 single- and multiple-subtyping instances. We implement
                 our algorithms in a tool, JPhantom, which complements
                 partial Java bytecode programs so that the result is
                 guaranteed to satisfy the Java verifier requirements.
                 JPhantom is highly scalable and runs in mere seconds
                 even for large input applications and complex
                 constraints (with a maximum of 14s for a 19MB
                 binary).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Basanta-Val:2013:JRA,
  author =       "P. Basanta-Val and M. Garc{\'\i}a-Valls and I.
                 Est{\'e}vez-Ayres",
  title =        "Enhancing {OSGi} with real-time {Java} support",
  journal =      j-SPE,
  volume =       "43",
  number =       "1",
  pages =        "33--65",
  month =        jan,
  year =         "2013",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2101",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Fri Dec 21 11:42:46 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "29 Jan 2012",
}

@Article{Bedi:2013:MMT,
  author =       "Punam Bedi and Vandana Gandotra and Archana Singhal
                 and Himanshi Narang and Sumit Sharma",
  title =        "Mitigating multi-threats optimally in proactive threat
                 management",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "1",
  pages =        "1--7",
  month =        jan,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2413038.2413041",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:22 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "In turbulent economic times, the cost effectiveness of
                 security measures is of the utmost importance when
                 designing safeguards or countermeasures. This paper
                 presents an optimal approach: MMT-O, Mitigating
                 Multi-Threats Optimally, to meet the above challenges.
                 The proposed approach is based on an optimum mitigation
                 path set generation algorithm that provides optimal
                 plans for threat/vulnerability management which can be
                 adopted at the design level of the software life cycle.
                 In MMT-O, a multi-threat attack graph is generated by
                 combining all of the individual threats responsible for
                 security compromise of the system. It identifies a
                 unique set of attacks needing mitigation by removing
                 redundant nodes, as an attack can be a part of multiple
                 threats. The proposed algorithm, implemented in Java,
                 provides the minimum mitigation paths required to be
                 blocked to avert the threat. Countermeasures using a
                 multi-agent system are inducted in these identified
                 mitigation paths to avert the threat optimally. The
                 proposed approach has been applied on different test
                 cases and the results validate its economic
                 justification over traditional security solutions as a
                 part of proactive threat management.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Bellia:2013:JST,
  author =       "Marco Bellia and M. Eugenia Occhiuto",
  title =        "{Java} {SAM} Typed Closures: A Sound and Complete Type
                 Inference System for Nominal Types",
  journal =      j-FUND-INFO,
  volume =       "128",
  number =       "1--2",
  pages =        "17--33",
  month =        jan,
  year =         "2013",
  CODEN =        "FUMAAJ",
  DOI =          "https://doi.org/10.3233/FI-2013-930",
  ISSN =         "0169-2968 (print), 1875-8681 (electronic)",
  ISSN-L =       "0169-2968",
  bibdate =      "Sat Mar 5 17:17:45 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fundinfo2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Fundamenta Informaticae",
  journal-URL =  "http://content.iospress.com/journals/fundamenta-informaticae",
}

@Article{Bettini:2013:CTB,
  author =       "Lorenzo Bettini and Ferruccio Damiani and Kathrin
                 Geilmann and Jan Sch{\"a}fer",
  title =        "Combining traits with boxes and ownership types in a
                 {Java}-like setting",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "2",
  pages =        "218--247",
  day =          "1",
  month =        feb,
  year =         "2013",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2011.10.006",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Nov 16 06:35:12 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311001833",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Bettini:2013:FDT,
  author =       "Lorenzo Bettini and Sara Capecchi and Ferruccio
                 Damiani",
  title =        "On flexible dynamic trait replacement for {Java}-like
                 languages",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "7",
  pages =        "907--932",
  day =          "1",
  month =        jul,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Mon May 13 13:51:09 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312002092",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Bodden:2013:SLS,
  author =       "Eric Bodden and T{\'a}rsis Tol{\^e}do and M{\'a}rcio
                 Ribeiro and Claus Brabrand and Paulo Borba and Mira
                 Mezini",
  title =        "{SPL LIFT}: statically analyzing software product
                 lines in minutes instead of years",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "6",
  pages =        "355--364",
  month =        jun,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2499370.2491976",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:38 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "A software product line (SPL) encodes a potentially
                 large variety of software products as variants of some
                 common code base. Up until now, re-using traditional
                 static analyses for SPLs was virtually intractable, as
                 it required programmers to generate and analyze all
                 products individually. In this work, however, we show
                 how an important class of existing inter-procedural
                 static analyses can be transparently lifted to SPLs.
                 Without requiring programmers to change a single line
                 of code, our approach SPLLIFT automatically converts
                 any analysis formulated for traditional programs within
                 the popular IFDS framework for inter-procedural,
                 finite, distributive, subset problems to an SPL-aware
                 analysis formulated in the IDE framework, a well-known
                 extension to IFDS. Using a full implementation based on
                 Heros, Soot, CIDE and JavaBDD, we show that with
                 SPLLIFT one can reuse IFDS-based analyses without
                 changing a single line of code. Through experiments
                 using three static analyses applied to four Java-based
                 product lines, we were able to show that our approach
                 produces correct results and outperforms the
                 traditional approach by several orders of magnitude.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '13 conference proceedings.",
}

@Article{Bois:2013:BGV,
  author =       "Kristof {Du Bois} and Jennifer B. Sartor and Stijn
                 Eyerman and Lieven Eeckhout",
  title =        "Bottle graphs: visualizing scalability bottlenecks in
                 multi-threaded applications",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "355--372",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509529",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Understanding and analyzing multi-threaded program
                 performance and scalability is far from trivial, which
                 severely complicates parallel software development and
                 optimization. In this paper, we present bottle graphs,
                 a powerful analysis tool that visualizes multi-threaded
                 program performance, in regards to both per-thread
                 parallelism and execution time. Each thread is
                 represented as a box, with its height equal to the
                 share of that thread in the total program execution
                 time, its width equal to its parallelism, and its area
                 equal to its total running time. The boxes of all
                 threads are stacked upon each other, leading to a stack
                 with height equal to the total program execution time.
                 Bottle graphs show exactly how scalable each thread is,
                 and thus guide optimization towards those threads that
                 have a smaller parallel component (narrower), and a
                 larger share of the total execution time (taller), i.e.
                 to the 'neck' of the bottle. Using light-weight OS
                 modules, we calculate bottle graphs for unmodified
                 multi-threaded programs running on real processors with
                 an average overhead of 0.68\%. To demonstrate their
                 utility, we do an extensive analysis of 12 Java
                 benchmarks running on top of the Jikes JVM, which
                 introduces many JVM service threads. We not only reveal
                 and explain scalability limitations of several
                 well-known Java benchmarks; we also analyze the reasons
                 why the garbage collector itself does not scale, and in
                 fact performs optimally with two collector threads for
                 all benchmarks, regardless of the number of application
                 threads. Finally, we compare the scalability of Jikes
                 versus the OpenJDK JVM. We demonstrate how useful and
                 intuitive bottle graphs are as a tool to analyze
                 scalability and help optimize multi-threaded
                 applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bond:2013:OCC,
  author =       "Michael D. Bond and Milind Kulkarni and Man Cao and
                 Minjia Zhang and Meisam Fathi Salmi and Swarnendu
                 Biswas and Aritra Sengupta and Jipeng Huang",
  title =        "{OCTET}: capturing and controlling cross-thread
                 dependences efficiently",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "693--712",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509519",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Parallel programming is essential for reaping the
                 benefits of parallel hardware, but it is notoriously
                 difficult to develop and debug reliable, scalable
                 software systems. One key challenge is that modern
                 languages and systems provide poor support for ensuring
                 concurrency correctness properties --- atomicity,
                 sequential consistency, and multithreaded determinism
                 --- because all existing approaches are impractical.
                 Dynamic, software-based approaches slow programs by up
                 to an order of magnitude because capturing and
                 controlling cross-thread dependences (i.e., conflicting
                 accesses to shared memory) requires synchronization at
                 virtually every access to potentially shared memory.
                 This paper introduces a new software-based concurrency
                 control mechanism called OCTET that soundly captures
                 cross-thread dependences and can be used to build
                 dynamic analyses for concurrency correctness. OCTET
                 achieves low overheads by tracking the locality state
                 of each potentially shared object. Non-conflicting
                 accesses conform to the locality state and require no
                 synchronization; only conflicting accesses require a
                 state change and heavyweight synchronization. This
                 optimistic tradeoff leads to significant efficiency
                 gains in capturing cross-thread dependences: a
                 prototype implementation of OCTET in a high-performance
                 Java virtual machine slows real-world concurrent
                 programs by only 26\% on average. A dependence
                 recorder, suitable for record {\&} replay, built on top
                 of OCTET adds an additional 5\% overhead on average.
                 These results suggest that OCTET can provide a
                 foundation for developing low-overhead analyses that
                 check and enforce concurrency correctness.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bonetta:2013:TPE,
  author =       "Daniele Bonetta and Walter Binder and Cesare
                 Pautasso",
  title =        "{TigerQuoll}: parallel event-based {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "8",
  pages =        "251--260",
  month =        aug,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2517327.2442541",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 13:48:51 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPoPP '13 Conference proceedings.",
  abstract =     "JavaScript, the most popular language on the Web, is
                 rapidly moving to the server-side, becoming even more
                 pervasive. Still, JavaScript lacks support for shared
                 memory parallelism, making it challenging for
                 developers to exploit multicores present in both
                 servers and clients. In this paper we present
                 TigerQuoll, a novel API and runtime for parallel
                 programming in JavaScript. TigerQuoll features an
                 event-based API and a parallel runtime allowing
                 applications to exploit a mutable shared memory space.
                 The programming model of TigerQuoll features automatic
                 consistency and concurrency management, such that
                 developers do not have to deal with shared-data
                 synchronization. TigerQuoll supports an innovative
                 transaction model that allows for eventual consistency
                 to speed up high-contention workloads. Experiments show
                 that TigerQuoll applications scale well, allowing one
                 to implement common parallelism patterns in
                 JavaScript.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bu:2013:BAD,
  author =       "Yingyi Bu and Vinayak Borkar and Guoqing Xu and
                 Michael J. Carey",
  title =        "A bloat-aware design for big data applications",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "11",
  pages =        "119--130",
  month =        nov,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2555670.2466485",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 08:04:34 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '13 conference proceedings.",
  abstract =     "Over the past decade, the increasing demands on
                 data-driven business intelligence have led to the
                 proliferation of large-scale, data-intensive
                 applications that often have huge amounts of data
                 (often at terabyte or petabyte scale) to process. An
                 object-oriented programming language such as Java is
                 often the developer's choice for implementing such
                 applications, primarily due to its quick development
                 cycle and rich community resource. While the use of
                 such languages makes programming easier, significant
                 performance problems can often be seen --- the
                 combination of the inefficiencies inherent in a managed
                 run-time system and the impact of the huge amount of
                 data to be processed in the limited memory space often
                 leads to memory bloat and performance degradation at a
                 surprisingly early stage. This paper proposes a
                 bloat-aware design paradigm towards the development of
                 efficient and scalable Big Data applications in
                 object-oriented GC enabled languages. To motivate this
                 work, we first perform a study on the impact of several
                 typical memory bloat patterns. These patterns are
                 summarized from the user complaints on the mailing
                 lists of two widely-used open-source Big Data
                 applications. Next, we discuss our design paradigm to
                 eliminate bloat. Using examples and real-world
                 experience, we demonstrate that programming under this
                 paradigm does not incur significant programming burden.
                 We have implemented a few common data processing tasks
                 both using this design and using the conventional
                 object-oriented design. Our experimental results show
                 that this new design paradigm is extremely effective in
                 improving performance --- even for the moderate-size
                 data sets processed, we have observed 2.5x+ performance
                 gains, and the improvement grows substantially with the
                 size of the data set.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Campbell:2013:ICC,
  author =       "Bill Campbell and Swami Iyer and Bahar Akbal-Delibas",
  title =        "Introduction to compiler construction in a {Java}
                 world",
  publisher =    pub-CRC,
  address =      pub-CRC:adr,
  pages =        "????",
  year =         "2013",
  ISBN =         "1-4398-6088-2 (hardcover)",
  ISBN-13 =      "978-1-4398-6088-5 (hardcover)",
  LCCN =         "QA76.73.J38 C363 2013",
  bibdate =      "Thu Nov 15 17:16:13 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  acknowledgement = ack-nhfb,
  subject =      "Compilers (Computer programs); Java (Computer program
                 language)",
}

@Article{Carro:2013:MDA,
  author =       "Manuel Carro and {\'A}ngel Herranz and Julio
                 Mari{\~n}o",
  title =        "A model-driven approach to teaching concurrency",
  journal =      j-TOCE,
  volume =       "13",
  number =       "1",
  pages =        "5:1--5:??",
  month =        jan,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2414446.2414451",
  ISSN =         "1946-6226",
  bibdate =      "Sat Feb 2 06:44:42 MST 2013",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toce.bib",
  abstract =     "We present an undergraduate course on concurrent
                 programming where formal models are used in different
                 stages of the learning process. The main practical
                 difference with other approaches lies in the fact that
                 the ability to develop correct concurrent software
                 relies on a systematic transformation of formal models
                 of inter-process interaction (so called shared
                 resources), rather than on the specific constructs of
                 some programming language. Using a resource-centric
                 rather than a language-centric approach has some
                 benefits for both teachers and students. Besides the
                 obvious advantage of being independent of the
                 programming language, the models help in the early
                 validation of concurrent software design, provide
                 students and teachers with a lingua franca that greatly
                 simplifies communication at the classroom and during
                 supervision, and help in the automatic generation of
                 tests for the practical assignments. This method has
                 been in use, with slight variations, for some 15 years,
                 surviving changes in the programming language and
                 course length. In this article, we describe the
                 components and structure of the current incarnation of
                 the course --- which uses Java as target language ---
                 and some tools used to support our method. We provide a
                 detailed description of the different outcomes that the
                 model-driven approach delivers (validation of the
                 initial design, automatic generation of tests, and
                 mechanical generation of code) from a teaching
                 perspective. A critical discussion on the perceived
                 advantages and risks of our approach follows, including
                 some proposals on how these risks can be minimized. We
                 include a statistical analysis to show that our method
                 has a positive impact in the student ability to
                 understand concurrency and to generate correct code.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Computing Education",
}

@Article{Carter:2013:SSA,
  author =       "Kyle Carter and Adam Foltzer and Joe Hendrix and Brian
                 Huffman and Aaron Tomb",
  title =        "{SAW}: the software analysis workbench",
  journal =      j-SIGADA-LETTERS,
  volume =       "33",
  number =       "3",
  pages =        "15--18",
  month =        dec,
  year =         "2013",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2658982.2527277",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Wed Sep 3 16:38:30 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  abstract =     "Galois has developed a suite of symbolic simulation
                 and formal analysis tools, collectively called the
                 Software Analysis Workbench (SAW). SAW provides
                 security analysts and engineers with the ability to
                 generate formal models from C and Java programs and
                 prove properties of those programs using several
                 automated verification tools. SAW is primarily used to
                 verify the correctness of cryptographic
                 implementations, and is able to import specifications
                 written in Cryptol, a language developed by Galois for
                 specifying cryptographic primitives. In this short
                 paper, we describe the main components of SAW. We then
                 given an overview of the cryptographic implementations
                 that have been verified.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J32",
  remark =       "HILT '13 conference proceedings.",
}

@Article{Cavalcanti:2013:SCJ,
  author =       "Ana Cavalcanti and Andy Wellings and Jim Woodcock",
  title =        "The {Safety-Critical Java} memory model formalised",
  journal =      j-FORM-ASP-COMPUT,
  volume =       "25",
  number =       "1",
  pages =        "37--57",
  month =        jan,
  year =         "2013",
  CODEN =        "FACME5",
  DOI =          "https://doi.org/10.1007/s00165-012-0253-4",
  ISSN =         "0934-5043 (print), 1433-299X (electronic)",
  ISSN-L =       "0934-5043",
  bibdate =      "Tue Mar 17 20:58:44 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/formaspcomput.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s00165-012-0253-4",
  acknowledgement = ack-nhfb,
  fjournal =     "Formal Aspects of Computing",
  journal-URL =  "http://link.springer.com/journal/165",
}

@Article{Choi:2013:GGT,
  author =       "Wontae Choi and George Necula and Koushik Sen",
  title =        "Guided {GUI} testing of {Android} apps with minimal
                 restart and approximate learning",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "623--640",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509552",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Smartphones and tablets with rich graphical user
                 interfaces (GUI) are becoming increasingly popular.
                 Hundreds of thousands of specialized applications,
                 called apps, are available for such mobile platforms.
                 Manual testing is the most popular technique for
                 testing graphical user interfaces of such apps. Manual
                 testing is often tedious and error-prone. In this
                 paper, we propose an automated technique, called
                 Swift-Hand, for generating sequences of test inputs for
                 Android apps. The technique uses machine learning to
                 learn a model of the app during testing, uses the
                 learned model to generate user inputs that visit
                 unexplored states of the app, and uses the execution of
                 the app on the generated inputs to refine the model. A
                 key feature of the testing algorithm is that it avoids
                 restarting the app, which is a significantly more
                 expensive operation than executing the app on a
                 sequence of inputs. An important insight behind our
                 testing algorithm is that we do not need to learn a
                 precise model of an app, which is often computationally
                 intensive, if our goal is to simply guide test
                 execution into unexplored parts of the state space. We
                 have implemented our testing algorithm in a publicly
                 available tool for Android apps written in Java. Our
                 experimental results show that we can achieve
                 significantly better coverage than traditional random
                 testing and L*-based testing in a given time budget.
                 Our algorithm also reaches peak coverage faster than
                 both random and L*-based testing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{DElia:2013:BLP,
  author =       "Daniele Cono D'Elia and Camil Demetrescu",
  title =        "{Ball--Larus} path profiling across multiple loop
                 iterations",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "373--390",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509521",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Identifying the hottest paths in the control flow
                 graph of a routine can direct optimizations to portions
                 of the code where most resources are consumed. This
                 powerful methodology, called path profiling, was
                 introduced by Ball and Larus in the mid 90's [4] and
                 has received considerable attention in the last 15
                 years for its practical relevance. A shortcoming of the
                 Ball-Larus technique was the inability to profile
                 cyclic paths, making it difficult to mine execution
                 patterns that span multiple loop iterations. Previous
                 results, based on rather complex algorithms, have
                 attempted to circumvent this limitation at the price of
                 significant performance losses even for a small number
                 of iterations. In this paper, we present a new approach
                 to multi-iteration path profiling, based on data
                 structures built on top of the original Ball-Larus
                 numbering technique. Our approach allows the profiling
                 of all executed paths obtained as a concatenation of up
                 to k Ball-Larus acyclic paths, where k is a
                 user-defined parameter. We provide examples showing
                 that this method can reveal optimization opportunities
                 that acyclic-path profiling would miss. An extensive
                 experimental investigation on a large variety of Java
                 benchmarks on the Jikes RVM shows that our approach can
                 be even faster than Ball-Larus due to fewer operations
                 on smaller hash tables, producing compact
                 representations of cyclic paths even for large values
                 of k.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{DelRa:2013:BRJ,
  author =       "William {Del Ra III}",
  title =        "Book Review: {{\booktitle{Java application
                 architecture: modularity patterns with examples using
                 OSGi}} by Kirk Knoernschild}",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "1",
  pages =        "55--55",
  month =        jan,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2413038.2413053",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:22 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Demange:2013:PBB,
  author =       "Delphine Demange and Vincent Laporte and Lei Zhao and
                 Suresh Jagannathan and David Pichardie and Jan Vitek",
  title =        "{Plan B}: a buffered memory model for {Java}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "1",
  pages =        "329--342",
  month =        jan,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2480359.2429110",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:03 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Recent advances in verification have made it possible
                 to envision trusted implementations of real-world
                 languages. Java with its type-safety and fully
                 specified semantics would appear to be an ideal
                 candidate; yet, the complexity of the translation steps
                 used in production virtual machines have made it a
                 challenging target for verifying compiler technology.
                 One of Java's key innovations, its memory model, poses
                 significant obstacles to such an endeavor. The Java
                 Memory Model is an ambitious attempt at specifying the
                 behavior of multithreaded programs in a portable,
                 hardware agnostic, way. While experts have an intuitive
                 grasp of the properties that the model should enjoy,
                 the specification is complex and not well-suited for
                 integration within a verifying compiler infrastructure.
                 Moreover, the specification is given in an axiomatic
                 style that is distant from the intuitive
                 reordering-based reasonings traditionally used to
                 justify or rule out behaviors, and ill suited to the
                 kind of operational reasoning one would expect to
                 employ in a compiler. This paper takes a step back, and
                 introduces a Buffered Memory Model (BMM) for Java. We
                 choose a pragmatic point in the design space
                 sacrificing generality in favor of a model that is
                 fully characterized in terms of the reorderings it
                 allows, amenable to formal reasoning, and which can be
                 efficiently applied to a specific hardware family,
                 namely x86 multiprocessors. Although the BMM restricts
                 the reorderings compilers are allowed to perform, it
                 serves as the key enabling device to achieving a
                 verification pathway from bytecode to machine
                 instructions. Despite its restrictions, we show that it
                 is backwards compatible with the Java Memory Model and
                 that it does not cripple performance on TSO
                 architectures.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '13 conference proceedings.",
}

@Article{Dey:2013:STA,
  author =       "Akon Dey and Alan Fekete and Uwe R{\"o}hm",
  title =        "Scalable transactions across heterogeneous {NoSQL}
                 key-value data stores",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "6",
  number =       "12",
  pages =        "1434--1439",
  month =        aug,
  year =         "2013",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Fri Dec 13 05:57:00 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Many cloud systems provide data stores with limited
                 features, especially they may not provide transactions,
                 or else restrict transactions to a single item. We
                 propose a approach that gives multi-item transactions
                 across heterogeneous data stores, using only a minimal
                 set of features from each store such as single item
                 consistency, conditional update, and the ability to
                 include extra metadata within a value. We offer a
                 client-coordinated transaction protocol that does not
                 need a central coordinating infrastructure. A prototype
                 implementation has been built as a Java library and
                 measured with an extension of YCSB benchmark to
                 exercise multi-item transactions.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
}

@Article{Dias:2013:SIP,
  author =       "Ricardo J. Dias and Tiago M. Vale and Jo{\~a}o M.
                 Louren{\c{c}}o",
  title =        "Special Issue Papers: Efficient support for in-place
                 metadata in {Java} software transactional memory",
  journal =      j-CCPE,
  volume =       "25",
  number =       "17",
  pages =        "2394--2411",
  day =          "10",
  month =        dec,
  year =         "2013",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3098",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Dec 3 10:37:48 MST 2013",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "19 Jul 2013",
}

@Article{Diaz:2013:LEU,
  author =       "Oscar D{\'\i}az and Crist{\'o}bal Arellano and Maider
                 Azanza",
  title =        "A language for end-user {Web} augmentation: Caring for
                 producers and consumers alike",
  journal =      j-TWEB,
  volume =       "7",
  number =       "2",
  pages =        "9:1--9:??",
  month =        may,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2460383.2460388",
  ISSN =         "1559-1131 (print), 1559-114X (electronic)",
  ISSN-L =       "1559-1131",
  bibdate =      "Thu Mar 13 08:28:18 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tweb.bib",
  abstract =     "Web augmentation is to the Web what augmented reality
                 is to the physical world: layering relevant
                 content/layout/navigation over the existing Web to
                 customize the user experience. This is achieved through
                 JavaScript (JS) using browser weavers (e.g.,
                 Greasemonkey). To date, over 43 million of downloads of
                 Greasemonkey scripts ground the vitality of this
                 movement. However, Web augmentation is hindered by
                 being programming intensive and prone to malware. This
                 prevents end-users from participating as both producers
                 and consumers of scripts: producers need to know JS,
                 consumers need to trust JS. This article aims at
                 promoting end-user participation in both roles. The
                 vision is for end-users to prosume (the act of
                 simultaneously caring for producing and consuming)
                 scripts as easily as they currently prosume their
                 pictures or videos. Encouraging production requires
                 more ``natural'' and abstract constructs. Promoting
                 consumption calls for augmentation scripts to be easier
                 to understand, share, and trust upon. To this end, we
                 explore the use of Domain-Specific Languages (DSLs) by
                 introducing Sticklet. Sticklet is an internal DSL on
                 JS, where JS generality is reduced for the sake of
                 learnability and reliability. Specifically, Web
                 augmentation is conceived as fixing in existing web
                 sites (i.e., the wall ) HTML fragments extracted from
                 either other sites or Web services (i.e., the stickers
                 ). Sticklet targets hobby programmers as producers, and
                 computer literates as consumers. From a producer
                 perspective, benefits are threefold. As a restricted
                 grammar on top of JS, Sticklet expressions are domain
                 oriented and more declarative than their JS
                 counterparts, hence speeding up development. As
                 syntactically correct JS expressions, Sticklet scripts
                 can be installed as traditional scripts and hence,
                 programmers can continue using existing JS tools. As
                 declarative expressions, they are easier to maintain,
                 and amenable for optimization. From a consumer
                 perspective, domain specificity brings
                 understandability (due to declarativeness), reliability
                 (due to built-in security), and ``consumability''
                 (i.e., installation/enactment/sharing of Sticklet
                 expressions are tuned to the shortage of time and
                 skills of the target audience). Preliminary evaluations
                 indicate that 77\% of the subjects were able to develop
                 new Sticklet scripts in less than thirty minutes while
                 84\% were able to consume these scripts in less than
                 ten minutes. Sticklet is available to download as a
                 Mozilla add-on.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on the Web (TWEB)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1062",
}

@Article{Efftinge:2013:XID,
  author =       "Sven Efftinge and Moritz Eysholdt and Jan K{\"o}hnlein
                 and Sebastian Zarnekow and Robert von Massow and
                 Wilhelm Hasselbring and Michael Hanus",
  title =        "{Xbase}: implementing domain-specific languages for
                 {Java}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "3",
  pages =        "112--121",
  month =        mar,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2480361.2371419",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:18 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Xtext is an open-source framework for implementing
                 external, textual domain-specific languages (DSLs). So
                 far, most DSLs implemented with Xtext and similar tools
                 focus on structural aspects such as service
                 specifications and entities. Because behavioral aspects
                 are significantly more complicated to implement, they
                 are often delegated to general-purpose programming
                 languages. This approach introduces complex integration
                 patterns and the DSL's high level of abstraction is
                 compromised. We present Xbase as part of Xtext, an
                 expression language that can be reused via language
                 inheritance in any DSL implementation based on Xtext.
                 Xbase expressions provide both control structures and
                 program expressions in a uniform way. Xbase is
                 statically typed and tightly integrated with the Java
                 type system. Languages extending Xbase inherit the
                 syntax of a Java-like expression language as well as
                 language infrastructure components, including a parser,
                 an unparser, a linker, a compiler and an interpreter.
                 Furthermore, the framework provides integration into
                 the Eclipse IDE including debug and refactoring
                 support. The application of Xbase is presented by means
                 of a domain model language which serves as a tutorial
                 example and by the implementation of the programming
                 language Xtend. Xtend is a functional and
                 object-oriented general purpose language for the Java
                 Virtual Machine (JVM). It is built on top of Xbase
                 which is the reusable expression language that is the
                 foundation of Xtend.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '12 conference proceedings.",
}

@Article{Eugster:2013:SUP,
  author =       "Patrick Eugster",
  title =        "Safe uniform proxies for {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "9",
  pages =        "1490--1520",
  day =          "1",
  month =        sep,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Sep 3 06:34:36 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312002043",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Book{Evans:2013:WGJ,
  author =       "Benjamin J. Evans and Martijn Verburg",
  title =        "The well-grounded {Java} developer: vital techniques
                 of {Java 7} and polyglot programming",
  publisher =    pub-MANNING,
  address =      pub-MANNING:adr,
  pages =        "xxx + 462",
  year =         "2013",
  ISBN =         "1-61729-006-8",
  ISBN-13 =      "978-1-61729-006-0",
  LCCN =         "QA76.73.J38 E93 2013",
  bibdate =      "Fri Dec 28 05:47:55 MST 2012",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  note =         "Foreword by Heinz Kabutz.",
  URL =          "http://www.loc.gov/catdir/enhancements/fy1304/2012288194-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1304/2012288194-d.html",
  acknowledgement = ack-nhfb,
  subject =      "Java virtual machine; Java (Computer program
                 language); Functional programming (Computer science);
                 Application software; Development",
  tableofcontents = "Developing with Java 7 \\
                 Vital techniques \\
                 Polyglot programming on the JVM \\
                 Crafting the polyglot project",
}

@Article{Feldthaus:2013:SAR,
  author =       "Asger Feldthaus and Anders M{\o}ller",
  title =        "Semi-automatic rename refactoring for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "323--338",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509520",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Modern IDEs support automated refactoring for many
                 programming languages, but support for JavaScript is
                 still primitive. To perform renaming, which is one of
                 the fundamental refactorings, there is often no
                 practical alternative to simple syntactic
                 search-and-replace. Although more sophisticated
                 alternatives have been developed, they are limited by
                 whole-program assumptions and poor scalability. We
                 propose a technique for semi-automatic refactoring for
                 JavaScript, with a focus on renaming. Unlike
                 traditional refactoring algorithms, semi-automatic
                 refactoring works by a combination of static analysis
                 and interaction with the programmer. With this
                 pragmatic approach, we can provide scalable and
                 effective refactoring support for real-world code,
                 including libraries and incomplete applications.
                 Through a series of experiments that estimate how much
                 manual effort our technique demands from the
                 programmer, we show that our approach is a useful
                 improvement compared to search-and-replace tools.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Ferrara:2013:GSA,
  author =       "P. Ferrara",
  title =        "A generic static analyzer for multithreaded {Java}
                 programs",
  journal =      j-SPE,
  volume =       "43",
  number =       "6",
  pages =        "663--684",
  month =        jun,
  year =         "2013",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2126",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Dec 3 10:30:05 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "9 May 2012",
}

@Article{Flanagan:2013:PES,
  author =       "Cormac Flanagan and K. Rustan M. Leino and Mark
                 Lillibridge and Greg Nelson and James B. Saxe and
                 Raymie Stata",
  title =        "{PLDI 2002}: Extended static checking for {Java}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "4S",
  pages =        "22--33",
  month =        apr,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2502508.2502520",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 15 15:53:11 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Software development and maintenance are costly
                 endeavors. The cost can be reduced if more software
                 defects are detected earlier in the development cycle.
                 This paper introduces the Extended Static Checker for
                 Java (ESC/Java), an experimental compile-time program
                 checker that finds common programming errors. The
                 checker is powered by verification-condition generation
                 and automatic theorem-proving techniques. It provides
                 programmers with a simple annotation language with
                 which programmer design decisions can be expressed
                 formally. ESC/Java examines the annotated software and
                 warns of inconsistencies between the design decisions
                 recorded in the annotations and the actual code, and
                 also warns of potential runtime errors in the code.
                 This paper gives an overview of the checker
                 architecture and annotation language and describes our
                 experience applying the checker to tens of thousands of
                 lines of Java programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Fournet:2013:FAC,
  author =       "Cedric Fournet and Nikhil Swamy and Juan Chen and
                 Pierre-Evariste Dagand and Pierre-Yves Strub and
                 Benjamin Livshits",
  title =        "Fully abstract compilation to {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "1",
  pages =        "371--384",
  month =        jan,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2480359.2429114",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:03 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Many tools allow programmers to develop applications
                 in high-level languages and deploy them in web browsers
                 via compilation to JavaScript. While practical and
                 widely used, these compilers are ad hoc: no guarantee
                 is provided on their correctness for whole programs,
                 nor their security for programs executed within
                 arbitrary JavaScript contexts. This paper presents a
                 compiler with such guarantees. We compile an ML-like
                 language with higher-order functions and references to
                 JavaScript, while preserving all source program
                 properties. Relying on type-based invariants and
                 applicative bisimilarity, we show full abstraction: two
                 programs are equivalent in all source contexts if and
                 only if their wrapped translations are equivalent in
                 all JavaScript contexts. We evaluate our compiler on
                 sample programs, including a series of secure
                 libraries.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '13 conference proceedings.",
}

@Article{Gadyatskaya:2013:LTC,
  author =       "Olga Gadyatskaya and Fabio Massacci and Quang-Huy
                 Nguyen and Boutheina Chetali",
  title =        "Load time code validation for mobile phone {Java}
                 Cards",
  journal =      j-J-INFO-SEC-APPL,
  volume =       "18",
  number =       "2--3",
  pages =        "108--129",
  month =        sep,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.jisa.2013.07.004",
  ISSN =         "2214-2126",
  ISSN-L =       "2214-2126",
  bibdate =      "Sun May 8 11:59:03 MDT 2022",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jinfosecappl.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S2214212613000318",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Info. Sec. Appl.",
  fjournal =     "Journal of Information Security and Applications
                 (JISA)",
  journal-URL =  "http://www.sciencedirect.com/science/journal/22142126",
}

@Article{Gerakios:2013:FIS,
  author =       "Prodromos Gerakios and Aggelos Biboudis and Yannis
                 Smaragdakis",
  title =        "Forsaking inheritance: supercharged delegation in
                 {DelphJ}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "233--252",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509535",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "We propose DelphJ: a Java-based OO language that
                 eschews inheritance completely, in favor of a
                 combination of class morphing and (deep) delegation.
                 Compared to past delegation approaches, the novel
                 aspect of our design is the ability to emulate the best
                 aspects of inheritance while retaining maximum
                 flexibility: using morphing, a class can select any of
                 the methods of its delegatee and export them (if
                 desired) or transform them (e.g., to add extra
                 arguments or modify type signatures), yet without
                 needing to name these methods explicitly and handle
                 them one-by-one. Compared to past work on morphing, our
                 approach adopts and adapts advanced delegation
                 mechanisms, in order to add late binding capabilities
                 and, thus, provide a full substitute of inheritance.
                 Additionally, we explore complex semantic issues in the
                 interaction of delegation with late binding. We present
                 our language design both informally, with numerous
                 examples, and formally in a core calculus.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Gonzalez:2013:HBP,
  author =       "Apolinar Gonzalez and Walter Mata and Alfons Crespo
                 and Miguel Masmano and Jos{\'e} F{\'e}lix and Alvaro
                 Aburto",
  title =        "A hypervisor based platform to support real-time
                 safety critical embedded {Java} applications",
  journal =      j-INT-J-COMPUT-SYST-SCI-ENG,
  volume =       "28",
  number =       "3",
  pages =        "??--??",
  month =        "????",
  year =         "2013",
  CODEN =        "CSSEEI",
  ISSN =         "0267-6192",
  ISSN-L =       "0267-6192",
  bibdate =      "Tue Dec 3 12:04:33 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsystscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal of Computer Systems Science and
                 Engineering",
}

@Book{Gosling:2013:JLS,
  author =       "James Gosling and Bill Joy and Guy L. {Steele Jr.} and
                 Gilad Bracha and Alex Buckley",
  title =        "The {Java} Language Specification",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  edition =      "{Java SE 7}",
  pages =        "xxvii + 644",
  year =         "2013",
  ISBN =         "0-13-326022-4 (paperback)",
  ISBN-13 =      "978-0-13-326022-9 (paperback)",
  LCCN =         "QA76.73.J38 G68 2013",
  bibdate =      "Mon Jan 28 14:57:19 MST 2013",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib",
  acknowledgement = ack-nhfb,
  remark =       "Previous ed.: Boston, Mass.; London: Addison-Wesley,
                 2005.",
  subject =      "Java (Computer program language)",
}

@Article{Gvero:2013:BRC,
  author =       "Igor Gvero",
  title =        "Book Review: {{\booktitle{Core Java volume I:
                 fundamentals}}, 9th edition by Cay S. Horstmann and
                 Gary Cornell}",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "3",
  pages =        "33--33",
  month =        may,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2464526.2464552",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:25 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Haddad:2013:SIP,
  author =       "Ghaith Haddad and Gary T. Leavens",
  title =        "Special Issue Papers: Specifying subtypes in {Safety
                 Critical Java} programs",
  journal =      j-CCPE,
  volume =       "25",
  number =       "16",
  pages =        "2290--2306",
  month =        nov,
  year =         "2013",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.2930",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Dec 3 10:37:44 MST 2013",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "4 Oct 2012",
}

@Article{Haubl:2013:CST,
  author =       "Christian H{\"a}ubl and Christian Wimmer and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Context-sensitive trace inlining for {Java}",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "39",
  number =       "4",
  pages =        "123--141",
  month =        dec,
  year =         "2013",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Thu Mar 6 07:28:19 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842413000146",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Hauswirth:2013:TJP,
  author =       "Matthias Hauswirth and Andrea Adamoli",
  title =        "Teaching {Java} programming with the {Informa} clicker
                 system",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "5",
  pages =        "499--520",
  day =          "1",
  month =        may,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed Mar 27 07:52:16 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311001468",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Herczeg:2013:TFF,
  author =       "Zolt{\'a}n Herczeg and G{\'a}bor L{\'o}ki and
                 Tam{\'a}s Szirbucz and {\'A}kos Kiss",
  title =        "Validating {JavaScript} Guidelines across Multiple
                 {Web} Browsers",
  journal =      j-NORDIC-J-COMPUT,
  volume =       "15",
  number =       "1",
  pages =        "18--31",
  month =        "Summer",
  year =         "2013",
  CODEN =        "NJCOFR",
  ISSN =         "1236-6064",
  bibdate =      "Sun May 5 11:09:02 MDT 2013",
  bibsource =    "http://www.cs.helsinki.fi/njc/njc15.html;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Nordic Journal of Computing",
}

@Article{Herhut:2013:RTP,
  author =       "Stephan Herhut and Richard L. Hudson and Tatiana
                 Shpeisman and Jaswanth Sreeram",
  title =        "{River Trail}: a path to parallelism in {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "729--744",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509516",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "JavaScript is the most popular language on the web and
                 is a crucial component of HTML5 applications and
                 services that run on consumer platforms ranging from
                 desktops to phones. However, despite ample amount of
                 hardware parallelism available to web applications on
                 such platforms, JavaScript web applications remain
                 predominantly sequential. Common parallel programming
                 solutions accepted by other programming languages
                 failed to transfer themselves to JavaScript due to
                 differences in programming models, the additional
                 requirements of the web and different developer
                 expectations. In this paper we present River Trail ---
                 a parallel programming model and API for JavaScript
                 that provides safe, portable, programmer-friendly,
                 deterministic parallelism to JavaScript applications.
                 River Trail allows web applications to effectively
                 utilize multiple cores, vector instructions, and GPUs
                 on client platforms while allowing the web developer to
                 remain within the environment of JavaScript. We
                 describe the implementation of the River Trail compiler
                 and runtime and present experimental results that show
                 the impact of River Trail on performance and
                 scalability for a variety of realistic HTML5
                 applications. Our experiments show that River Trail has
                 a dramatic positive impact on overall performance and
                 responsiveness of computationally intense JavaScript
                 based applications achieving up to 33.6 times speedup
                 for kernels and up to 11.8 times speedup for realistic
                 web applications compared to sequential JavaScript.
                 Moreover, River Trail enables new interactive web
                 usages that are simply not even possible with standard
                 sequential JavaScript.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Heumann:2013:TEM,
  author =       "Stephen T. Heumann and Vikram S. Adve and Shengjie
                 Wang",
  title =        "The tasks with effects model for safe concurrency",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "8",
  pages =        "239--250",
  month =        aug,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2517327.2442540",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 13:48:51 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "PPoPP '13 Conference proceedings.",
  abstract =     "Today's widely-used concurrent programming models
                 either provide weak safety guarantees, making it easy
                 to write code with subtle errors, or are limited in the
                 class of programs that they can express. We propose a
                 new concurrent programming model based on tasks with
                 effects that offers strong safety guarantees while
                 still providing the flexibility needed to support the
                 many ways that concurrency is used in complex
                 applications. The core unit of work in our model is a
                 dynamically-created task. The model's key feature is
                 that each task has programmer-specified effects, and a
                 run-time scheduler is used to ensure that two tasks are
                 run concurrently only if they have non-interfering
                 effects. Through the combination of statically
                 verifying the declared effects of tasks and using an
                 effect-aware run-time scheduler, our model is able to
                 guarantee strong safety properties, including data race
                 freedom and atomicity. It is also possible to use our
                 model to write programs and computations that can be
                 statically proven to behave deterministically. We
                 describe the tasks with effects programming model and
                 provide a formal dynamic semantics for it. We also
                 describe our implementation of this model in an
                 extended version of Java and evaluate its use in
                 several programs exhibiting various patterns of
                 concurrency.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Hinojosa:2013:TS,
  author =       "Daniel Hinojosa",
  title =        "Testing in {Scala}",
  publisher =    pub-ORA-MEDIA,
  address =      pub-ORA-MEDIA:adr,
  pages =        "xiv + 148",
  year =         "2013",
  ISBN =         "1-4493-1511-9, 1-4493-6034-3 (e-book), 1-4493-6033-5
                 (e-book)",
  ISBN-13 =      "978-1-4493-1511-5, 978-1-4493-6034-4 (e-book),
                 978-1-4493-6033-7 (e-book)",
  LCCN =         "QA76.7 .H555 2013",
  bibdate =      "Thu Dec 4 08:38:57 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/ora.bib;
                 z3950.loc.gov:7090/Voyager",
  URL =          "http://proquest.tech.safaribooksonline.de/9781449360313;
                 http://www.loc.gov/catdir/enhancements/fy1310/2012554271-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1310/2012554271-d.html",
  acknowledgement = ack-nhfb,
  subject =      "Programming languages (Electronic computers);
                 Multiparadigm programming (Computer science);
                 Object-oriented programming (Computer science);
                 Functional programming (Computer science); Java virtual
                 machine; Functional programming languages;
                 Object-oriented programming languages",
}

@Article{Hoppe:2013:DDB,
  author =       "Michael Hoppe and Stefan Hanenberg",
  title =        "Do developers benefit from generic types?: an
                 empirical comparison of generic and raw types in
                 {Java}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "457--474",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509528",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Type systems that permit developers to express
                 themselves more precisely are one of the primary topics
                 in programming language research, as well as in
                 industrial software development. While it seems
                 plausible that an expressive static type system
                 increases developer productivity, there is little
                 empirical evidence for or against this hypothesis.
                 Generic types in Java are an example: as an extension
                 of Java's original type system, some claim that Java
                 1.5 improves the type system's ``expressiveness.'' Even
                 if this claim is true, there exists little empirical
                 evidence that claimed expressiveness leads to a
                 measurable increase in developer productivity. This
                 paper introduces an experiment where generic types (in
                 comparison to raw types) have been evaluated in three
                 different directions: (1) the documentation impact on
                 undocumented APIs, (2) the time required for fixing
                 type errors, and (3) the extensibility of a generic
                 type hierarchy. The results of the experiment suggest
                 that generic types improve documentation and reduce
                 extensibility --- without revealing a difference in the
                 time required for fixing type errors.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Horstmann:2013:CJF,
  author =       "Cay S. Horstmann and Gary Cornell",
  title =        "Core {Java}: Fundamentals",
  volume =       "1",
  publisher =    pub-PH,
  address =      pub-PH:adr,
  edition =      "Ninth",
  pages =        "xxvi + 974",
  year =         "2013",
  ISBN =         "0-13-708189-8 (paperback)",
  ISBN-13 =      "978-0-13-708189-9 (paperback)",
  LCCN =         "QA76.73.J38 H6753 2013",
  bibdate =      "Mon Jan 28 14:54:07 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 library.ox.ac.uk:210/ADVANCE",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language)",
  tableofcontents = "Vol. 1. Fundamentals \\
                 vol. 2. Advance features",
  xxaddress =    "Redwood Shores, CA, USA",
}

@Article{Huang:2013:ECS,
  author =       "Jipeng Huang and Michael D. Bond",
  title =        "Efficient context sensitivity for dynamic analyses via
                 calling context uptrees and customized memory
                 management",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "53--72",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509510",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "State-of-the-art dynamic bug detectors such as data
                 race and memory leak detectors report program locations
                 that are likely causes of bugs. However, programmers
                 need more than static program locations to understand
                 the behavior of increasingly complex and concurrent
                 software. Dynamic calling context provides additional
                 information, but it is expensive to record calling
                 context frequently, e.g., at every read and write.
                 Context-sensitive dynamic analyses can build and
                 maintain a calling context tree (CCT) to track calling
                 context--but in order to reuse existing nodes,
                 CCT-based approaches require an expensive lookup. This
                 paper introduces a new approach for context sensitivity
                 that avoids this expensive lookup. The approach uses a
                 new data structure called the calling context uptree
                 (CCU) that adds low overhead by avoiding the lookup and
                 instead allocating a new node for each context. A key
                 contribution is that the approach can mitigate the
                 costs of allocating many nodes by extending tracing
                 garbage collection (GC): GC collects unused CCU nodes
                 naturally and efficiently, and we extend GC to merge
                 duplicate nodes lazily. We implement our CCU-based
                 approach in a high-performance Java virtual machine and
                 integrate it with a staleness-based memory leak
                 detector and happens-before data race detector, so they
                 can report context-sensitive program locations that
                 cause bugs. We show that the CCU-based approach, in
                 concert with an extended GC, provides a compelling
                 alternative to CCT-based approaches for adding context
                 sensitivity to dynamic analyses.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Jaffer:2013:EAR,
  author =       "Aubrey Jaffer",
  title =        "Easy Accurate Reading and Writing of Floating-Point
                 Numbers",
  journal =      "arXiv.org",
  volume =       "??",
  number =       "??",
  pages =        "1--7",
  day =          "28",
  month =        oct,
  year =         "2013",
  CODEN =        "????",
  ISSN =         "????",
  ISSN-L =       "????",
  MRclass =      "65G04",
  bibdate =      "Wed Sep 30 12:43:49 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fparith.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://arxiv.org/abs/1310.8121",
  abstract =     "Presented here are algorithms for converting between
                 (decimal) scientific-notation and (binary) IEEE-754
                 double-precision floating-point numbers. By employing a
                 rounding integer quotient operation these algorithms
                 are much simpler than those previously published. The
                 values are stable under repeated conversions between
                 the formats. Unlike Java-1.6, the scientific
                 representations generated use only the minimum number
                 of mantissa digits needed to convert back to the
                 original binary values. Implemented in Java these
                 algorithms execute as fast or faster than Java's native
                 conversions over nearly all of the IEEE-754
                 double-precision range.",
  acknowledgement = ack-nhfb,
  keywords =     "base conversion; input-output conversion; radix
                 conversion; round-trip base conversion",
  subject =      "Numerical Analysis (cs.NA)",
}

@Article{Jantz:2013:ESM,
  author =       "Michael R. Jantz and Prasad A. Kulkarni",
  title =        "Exploring single and multilevel {JIT} compilation
                 policy for modern machines 1",
  journal =      j-TACO,
  volume =       "10",
  number =       "4",
  pages =        "22:1--22:??",
  month =        dec,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2541228.2541229",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Mon Dec 23 10:31:41 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/csharp.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "Dynamic or Just-in-Time (JIT) compilation is essential
                 to achieve high-performance emulation for programs
                 written in managed languages, such as Java and C\#. It
                 has been observed that a conservative JIT compilation
                 policy is most effective to obtain good runtime
                 performance without impeding application progress on
                 single-core machines. At the same time, it is often
                 suggested that a more aggressive dynamic compilation
                 strategy may perform best on modern machines that
                 provide abundant computing resources, especially with
                 virtual machines (VMs) that are also capable of
                 spawning multiple concurrent compiler threads. However,
                 comprehensive research on the best JIT compilation
                 policy for such modern processors and VMs is currently
                 lacking. The goal of this work is to explore the
                 properties of single-tier and multitier JIT compilation
                 policies that can enable existing and future VMs to
                 realize the best program performance on modern
                 machines. In this work, we design novel experiments and
                 implement new VM configurations to effectively control
                 the compiler aggressiveness and optimization levels (
                 if and when methods are compiled) in the
                 industry-standard Oracle HotSpot Java VM to achieve
                 this goal. We find that the best JIT compilation policy
                 is determined by the nature of the application and the
                 speed and effectiveness of the dynamic compilers. We
                 extend earlier results showing the suitability of
                 conservative JIT compilation on single-core machines
                 for VMs with multiple concurrent compiler threads. We
                 show that employing the free compilation resources
                 (compiler threads and hardware cores) to aggressively
                 compile more program methods quickly reaches a point of
                 diminishing returns. At the same time, we also find
                 that using the free resources to reduce compiler queue
                 backup (compile selected hot methods early )
                 significantly benefits program performance, especially
                 for slower (highly optimizing) JIT compilers. For such
                 compilers, we observe that accurately prioritizing JIT
                 method compiles is crucial to realize the most
                 performance benefit with the smallest hardware budget.
                 Finally, we show that a tiered compilation policy,
                 although complex to implement, greatly alleviates the
                 impact of more and early JIT compilation of programs on
                 modern machines.",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Kaufmann:2013:SCO,
  author =       "Marco Kaufmann and Rainer G. Spallek",
  title =        "Superblock compilation and other optimization
                 techniques for a {Java}-based {DBT} machine emulator",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "7",
  pages =        "33--40",
  month =        jul,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2517326.2451521",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Aug 26 13:55:17 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "VEE '13 Conference proceedings.",
  abstract =     "Superblock compilation techniques such as control flow
                 graph (CFG) or trace compilation have become a widely
                 adopted approach to increase the performance of
                 dynamically compiling virtual machines even further.
                 While this was shown to be successful for many
                 conventional virtual machines, it did not result in a
                 higher performance for Java-based DBT machine emulators
                 so far. These emulators dynamically translate
                 application binaries of a target machine into Java
                 bytecode, which is then eventually compiled into the
                 native code of the emulating host by the Java Virtual
                 Machine (JVM). Successful superblock compilation
                 techniques for this class of emulators must consider
                 the special requirements that result from the two-stage
                 translation as well as the characteristics of the JVM,
                 such as the inability of most Java JIT compilers to
                 handle large bytecode methods efficiently. In this
                 paper, we present a superblock compilation approach for
                 a Java-based DBT machine emulator that generates a
                 performance increase of up to 90 percent and of 32
                 percent on average. The key idea of our design is to
                 provide a large scope over the control flow of target
                 applications across basic block boundaries for the JVM,
                 while still keeping small bytecode methods for the
                 execution units. In addition, we also present two
                 further optimizations --- interpreter context
                 elimination and program counter elimination --- which
                 increase the emulation performance by 16 percent again.
                 In total, the optimization techniques discussed in this
                 paper provide an average performance gain of 48 percent
                 for the surveyed emulator.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Kerschbaumer:2013:IFT,
  author =       "Christoph Kerschbaumer and Eric Hennigan and Per
                 Larsen and Stefan Brunthaler and Michael Franz",
  title =        "Information flow tracking meets just-in-time
                 compilation",
  journal =      j-TACO,
  volume =       "10",
  number =       "4",
  pages =        "38:1--38:??",
  month =        dec,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2541228.2555295",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Thu Jan 9 10:42:35 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "Web applications are vulnerable to cross-site
                 scripting attacks that enable data thefts. Information
                 flow tracking in web browsers can prevent communication
                 of sensitive data to unintended recipients and thereby
                 stop such data thefts. Unfortunately, existing
                 solutions have focused on incorporating information
                 flow into browsers' JavaScript interpreters, rather
                 than just-in-time compilers, rendering the resulting
                 performance noncompetitive. Few users will switch to a
                 safer browser if it comes at the cost of significantly
                 degrading web application performance. We present the
                 first information flow tracking JavaScript engine that
                 is based on a true just-in-time compiler, and that
                 thereby outperforms all previous interpreter-based
                 information flow tracking JavaScript engines by more
                 than a factor of two. Our JIT-based engine (i) has the
                 same coverage as previous interpreter- based solutions,
                 (ii) requires reasonable implementation effort, and
                 (iii) introduces new optimizations to achieve
                 acceptable performance. When evaluated against three
                 industry-standard JavaScript benchmark suites, there is
                 still an average slowdown of 73\% over engines that do
                 not support information flow, but this is now well
                 within the range that many users will find an
                 acceptable price for obtaining substantially increased
                 security.",
  acknowledgement = ack-nhfb,
  articleno =    "38",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Kienle:2013:BRE,
  author =       "Holger M. Kienle",
  title =        "Book Review: {{\booktitle{Effective JavaScript: 68
                 specific ways to harness the power of JavaScript}} by
                 David Herman}",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "6",
  pages =        "40--41",
  month =        nov,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2532780.2532791",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:31 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Leung:2013:PEJ,
  author =       "Alan Leung and Ondrej Lhot{\'a}k and Ghulam Lashari",
  title =        "Parallel execution of {Java} loops on {Graphics
                 Processing Units}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "5",
  pages =        "458--480",
  day =          "1",
  month =        may,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed Mar 27 07:52:16 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311001444",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Book{Lewis:2013:IAP,
  author =       "Mark C. Lewis",
  title =        "Introduction to the art of programming using {Scala}",
  publisher =    pub-CRC,
  address =      pub-CRC:adr,
  pages =        "????",
  year =         "2013",
  ISBN =         "1-4398-9666-6 (paperback)",
  ISBN-13 =      "978-1-4398-9666-2 (paperback)",
  LCCN =         "QA76.73.S28 L49 2013",
  bibdate =      "Fri Nov 16 06:30:37 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "Chapman and Hall/CRC textbooks in computing",
  acknowledgement = ack-nhfb,
  subject =      "Scala (Computer program language); Textbooks; Computer
                 programming; COMPUTERS / Programming Languages /
                 General.; MATHEMATICS / General.",
}

@Book{Lindholm:2013:JVMa,
  author =       "Tim Lindholm and Frank Yellin and Gilad Bracha and
                 Alex Buckley",
  title =        "The {Java Virtual Machine} Specification",
  publisher =    pub-PH,
  address =      pub-PH:adr,
  edition =      "Third",
  pages =        "????",
  year =         "2013",
  ISBN =         "0-13-326044-5 (paperback)",
  ISBN-13 =      "978-0-13-326044-1 (paperback)",
  LCCN =         "????",
  bibdate =      "Mon Jan 28 14:57:22 MST 2013",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  series =       "The Java series",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language)",
  xxaddress =    "Harlow",
}

@Book{Lindholm:2013:JVMb,
  author =       "Tim Lindholm and Frank Yellin and Gilad Bracha and
                 Alex Buckley",
  title =        "The {Java Virtual Machine} Specification",
  publisher =    pub-AW,
  address =      pub-AW,
  edition =      "{Java SE 7}",
  pages =        "xvii + 587 (est.)",
  year =         "2013",
  ISBN =         "0-13-326049-6, 0-13-326044-5",
  ISBN-13 =      "978-0-13-326049-6, 978-0-13-326044-1",
  LCCN =         "QA76.73.J38 L56 1999",
  bibdate =      "Thu Dec 4 07:52:39 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  URL =          "http://proquest.tech.safaribooksonline.de/9780133260496",
  acknowledgement = ack-nhfb,
  remark =       "Previous edition: 2nd, 1999.",
  subject =      "Java (Computer program language); Internet; Virtual
                 computer systems; Java (Computer program language);
                 Internet; Virtual computer systems",
}

@Article{Lochbihler:2013:MJM,
  author =       "Andreas Lochbihler",
  title =        "Making the {Java} memory model safe",
  journal =      j-TOPLAS,
  volume =       "35",
  number =       "4",
  pages =        "12:1--12:??",
  month =        dec,
  year =         "2013",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2518191",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 31 14:22:03 MST 2013",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "This work presents a machine-checked formalisation of
                 the Java memory model and connects it to an operational
                 semantics for Java and Java bytecode. For the whole
                 model, I prove the data race freedom guarantee and type
                 safety. The model extends previous formalisations by
                 dynamic memory allocation, thread spawns and joins,
                 infinite executions, the wait-notify mechanism, and
                 thread interruption, all of which interact in subtle
                 ways with the memory model. The formalisation resulted
                 in numerous clarifications of and fixes to the existing
                 JMM specification.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Book{Long:2013:JCG,
  author =       "Fred Long and Dhruv Mohindra and Robert Seacord and
                 Dean Sutherland and David Svoboda",
  title =        "{Java} coding guidelines: 75 recommendations for
                 reliable and secure programs",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  year =         "2013",
  ISBN =         "0-13-343952-6, 0-13-343954-2 (e-book), 0-321-93315-X
                 (paperback)",
  ISBN-13 =      "978-0-13-343952-6, 978-0-13-343954-0 (e-book),
                 978-0-321-93315-7 (paperback)",
  LCCN =         "QA76.73.J38 L664 2014",
  bibdate =      "Wed Apr 15 06:20:13 MDT 2020",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  series =       "The SEI series in software engineering",
  URL =          "http://0proquest.safaribooksonline.com/9780133439526",
  abstract =     "``A must-read for all Java developers. Every developer
                 has a responsibility to author code that is free of
                 significant security vulnerabilities. This book
                 provides realistic guidance to help Java developers
                 implement desired functionality with security,
                 reliability, and maintainability goals in mind.'' --
                 Mary Ann Davidson, Chief Security Officer, Oracle
                 Corporation Organizations worldwide rely on Java code
                 to perform mission-critical tasks, and therefore that
                 code must be reliable, robust, fast, maintainable, and
                 secure. \booktitle{Java Coding Guidelines} brings
                 together expert guidelines, recommendations, and code
                 examples to help you meet these demands. Written by the
                 same team that brought you \booktitle{The CERT Oracle
                 Secure Coding Standard for Java}, this guide extends
                 that previous work's expert security advice to address
                 many additional quality attributes. You'll find 75
                 guidelines, each presented consistently and
                 intuitively. For each guideline, conformance
                 requirements are specified; for most, noncompliant code
                 examples and compliant solutions are also offered. The
                 authors explain when to apply each guideline and
                 provide references to even more detailed information.
                 Reflecting pioneering research on Java security, Java
                 Coding Guidelines offers updated techniques for
                 protecting against both deliberate attacks and other
                 unexpected events. You'll find best practices for
                 improving code reliability and clarity, and a full
                 chapter exposing common misunderstandings that lead to
                 suboptimal code. With a Foreword by James A. Gosling,
                 Father of the Java Programming Language.",
  acknowledgement = ack-nhfb,
  tableofcontents = "Security \\
                 Defensive programming \\
                 Reliability \\
                 Program understandability \\
                 Programmer misconceptions",
}

@Article{Loureiro:2013:EDS,
  author =       "Andr{\'e} Loureiro and Jo{\~a}o Paulo Porto and Guido
                 Araujo",
  title =        "Extending decoupled software pipeline to parallelize
                 {Java} programs",
  journal =      j-SPE,
  volume =       "43",
  number =       "5",
  pages =        "525--541",
  month =        may,
  year =         "2013",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2120",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Apr 27 13:41:04 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "15 May 2012",
}

@Article{Malhotra:2013:DFT,
  author =       "Ruchika Malhotra and Divya Tiwari",
  title =        "Development of a framework for test case
                 prioritization using genetic algorithm",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "3",
  pages =        "1--6",
  month =        may,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2464526.2464536",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:25 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Software Testing is a time and effort consuming part
                 of the software development life cycle. Retesting a
                 software application during the maintenance phase, with
                 the entire test suite and additional test cases for the
                 modifications in the software, within budget and time,
                 is a challenge for software testers. Test Case
                 Prioritization is used to overcome this problem by
                 prioritizing the test cases in order to maximize
                 certain testing objectives like fault detection rate,
                 statement coverage, etc. In this paper, we propose a
                 framework for test case prioritization that emphasizes
                 a new metric, APBC$_m$ (modified Average Percentage of
                 Block Coverage). This metric evaluates the rate of code
                 coverage by incorporating knowledge about the
                 significance of blocks of code in the form of weights.
                 We have used this metric as fitness evaluation function
                 in a Genetic Algorithm in order to evaluate the
                 effectiveness of a test case sequence. We have also
                 developed a tool that implements the Genetic Algorithm
                 in the Java language in order to compute and validate
                 the results. Thereafter, we use the tool for test case
                 prioritization, and compare and assess the results with
                 those produced by the tool when APBC (Average
                 Percentage of Block Coverage) is used as fitness
                 function.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Marinescu:2013:FSJ,
  author =       "Maria-Cristina Marinescu and C{\'e}sar S{\'a}nchez",
  title =        "Fusing statecharts and {Java}",
  journal =      j-TECS,
  volume =       "12",
  number =       "1s",
  pages =        "45:1--45:??",
  month =        mar,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2435227.2435241",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Tue Mar 19 07:54:21 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "This article presents FUSE, an approach for modeling
                 and implementing embedded software components which
                 starts from a main-stream programming language and
                 brings some of the key concepts of Statecharts as
                 first-class elements within this language. Our approach
                 provides a unified programming environment which not
                 only preserves some of the advantages of Statecharts'
                 formal foundation but also directly supports features
                 of object-orientation and strong typing. By specifying
                 Statecharts directly in FUSE we eliminate the
                 out-of-synch between the model and the generated code
                 and we allow the tuning and debugging to be done within
                 the same programming model. This article describes the
                 main language constructs of FUSE and presents its
                 semantics by translation into the Java programming
                 language. We conclude by discussing extensions to the
                 base language which enable the efficient static
                 checking of program properties.",
  acknowledgement = ack-nhfb,
  articleno =    "45",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Miller:2013:IPG,
  author =       "Heather Miller and Philipp Haller and Eugene Burmako
                 and Martin Odersky",
  title =        "Instant pickles: generating object-oriented pickler
                 combinators for fast and extensible serialization",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "183--202",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509547",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "As more applications migrate to the cloud, and as
                 ``big data'' edges into even more production
                 environments, the performance and simplicity of
                 exchanging data between compute nodes/devices is
                 increasing in importance. An issue central to
                 distributed programming, yet often under-considered, is
                 serialization or pickling, i.e., persisting runtime
                 objects by converting them into a binary or text
                 representation. Pickler combinators are a popular
                 approach from functional programming; their
                 composability alleviates some of the tedium of writing
                 pickling code by hand, but they don't translate well to
                 object-oriented programming due to qualities like open
                 class hierarchies and subtyping polymorphism.
                 Furthermore, both functional pickler combinators and
                 popular, Java-based serialization frameworks tend to be
                 tied to a specific pickle format, leaving programmers
                 with no choice of how their data is persisted. In this
                 paper, we present object-oriented pickler combinators
                 and a framework for generating them at compile-time,
                 called scala/pickling, designed to be the default
                 serialization mechanism of the Scala programming
                 language. The static generation of OO picklers enables
                 significant performance improvements, outperforming
                 Java and Kryo in most of our benchmarks. In addition to
                 high performance and the need for little to no
                 boilerplate, our framework is extensible: using the
                 type class pattern, users can provide both (1) custom,
                 easily interchangeable pickle formats and (2) custom
                 picklers, to override the default behavior of the
                 pickling framework. In benchmarks, we compare
                 scala/pickling with other popular industrial
                 frameworks, and present results on time, memory usage,
                 and size when pickling/unpickling a number of data
                 types used in real-world, large-scale distributed
                 applications and frameworks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Miller:2013:TSG,
  author =       "Mark Miller",
  title =        "A tested semantics for getters, setters, and eval in
                 {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "2",
  pages =        "1--16",
  month =        feb,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2480360.2384579",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Jul 1 17:15:12 MDT 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present S5, a semantics for the strict mode of the
                 ECMAScript 5.1 (JavaScript) programming language. S5
                 shrinks the large source language into a manageable
                 core through an implemented transformation. The
                 resulting specification has been tested against
                 real-world conformance suites for the language. This
                 paper focuses on two aspects of S5: accessors (getters
                 and setters) and eval. Since these features are complex
                 and subtle in JavaScript, they warrant special study.
                 Variations on both features are found in several other
                 programming languages, so their study is likely to have
                 broad applicability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '12 conference proceedings.",
}

@Article{Misra:2013:JSC,
  author =       "Janardan Misra and Annervaz KM and Vikrant Kaulgud and
                 Shubhashis Sengupta and Gary Titus",
  title =        "{Java} source-code clustering: Unifying syntactic and
                 semantic features",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "1",
  pages =        "41--43",
  month =        jan,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2413038.2382766",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:22 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "This is a report from an international workshop on
                 ``Social and Algorithmic Issues in Business Support''
                 (SAIBS), which was organized in conjunction with the
                 16th ADBIS Conference in Poznan, Poland, on September
                 17, 2012. The main focus of this workshop was to
                 provide a venue for the discussion whether social
                 stands in opposition to algorithmic or systematic. We
                 analyzed social contribution to business processes
                 taking into account possible benefits and risk factors.
                 Questions raised in collected research and discussion
                 related to how far business could relay on social input
                 and what were the limits or what were the areas where
                 introducing crowdsourced components might increase
                 overall risk value to unacceptable level? Algorithmic
                 approach to observe and collect social behaviour was
                 discussed in the context of internet auctions
                 participants and car drivers equipped in mobile
                 application for instant route planning and collecting
                 feedback car-tracking data. Having in mind Andrew
                 Keen's critique of social contribution in Web
                 2.0-related phenomena we looked for the Wisdom of
                 Crowds [1]. Collected conclusions and further
                 dissemination of research results should lead to an
                 improvement in utilizing social impact on software
                 development and business processes.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Nikolic:2013:RAP,
  author =       "Durica Nikoli{\'c} and Fausto Spoto",
  title =        "Reachability analysis of program variables",
  journal =      j-TOPLAS,
  volume =       "35",
  number =       "4",
  pages =        "14:1--14:??",
  month =        dec,
  year =         "2013",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2529990",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Dec 31 14:22:03 MST 2013",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Reachability from a program variable $v$ to a program
                 variable $w$ states that from $v$, it is possible to
                 follow a path of memory locations that leads to the
                 object bound to $w$. We present a new abstract domain
                 for the static analysis of possible reachability
                 between program variables or, equivalently, definite
                 unreachability between them. This information is
                 important for improving the precision of other static
                 analyses, such as side-effects, field initialization,
                 cyclicity and path-length analysis, as well as more
                 complex analyses built upon them, such as nullness and
                 termination analysis. We define and prove correct our
                 reachability analysis for Java bytecode, defined as a
                 constraint-based analysis, where the constraint is a
                 graph whose nodes are the program points and whose arcs
                 propagate reachability information in accordance to the
                 abstract semantics of each bytecode instruction. For
                 each program point $p$, our reachability analysis
                 produces an overapproximation of the ordered pairs of
                 variables $ \langle v, w \rangle $ such that $v$ might
                 reach $w$ at $p$. Seen the other way around, if a pair
                 $ \langle v, w \rangle $ is not present in the
                 overapproximation at $p$, then $v$ definitely does not
                 reach $w$ at $p$. We have implemented the analysis
                 inside the Julia static analyzer. Our experiments of
                 analysis of nontrivial Java and Android programs show
                 the improvement of precision due to the presence of
                 reachability information. Moreover, reachability
                 analysis actually reduces the overall cost of nullness
                 and termination analysis.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Noll:2013:OFD,
  author =       "Albert Noll and Thomas Gross",
  title =        "Online feedback-directed optimizations for parallel
                 {Java} code",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "713--728",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509518",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "The performance of parallel code significantly depends
                 on the parallel task granularity (PTG). If the PTG is
                 too coarse, performance suffers due to load imbalance;
                 if the PTG is too fine, performance suffers from the
                 overhead that is induced by parallel task creation and
                 scheduling. This paper presents a software platform
                 that automatically determines the PTG at run-time.
                 Automatic PTG selection is enabled by concurrent calls,
                 which are special source language constructs that
                 provide a late decision (at run-time) of whether
                 concurrent calls are executed sequentially or
                 concurrently (as a parallel task). Furthermore, the
                 execution semantics of concurrent calls permits the
                 runtime system to merge two (or more) concurrent calls
                 thereby coarsening the PTG. We present an integration
                 of concurrent calls into the Java programming language,
                 the Java Memory Model, and show how the Java Virtual
                 Machine can adapt the PTG based on dynamic profiling.
                 The performance evaluation shows that our runtime
                 system performs competitively to Java programs for
                 which the PTG is tuned manually. Compared to an
                 unfortunate choice of the PTG, this approach performs
                 up to 3x faster than standard Java code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Nuzman:2013:JTC,
  author =       "Dorit Nuzman and Revital Eres and Sergei Dyshel and
                 Marcel Zalmanovici and Jose Castanos",
  title =        "{JIT} technology with {C\slash C++}: Feedback-directed
                 dynamic recompilation for statically compiled
                 languages",
  journal =      j-TACO,
  volume =       "10",
  number =       "4",
  pages =        "59:1--59:??",
  month =        dec,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2541228.2555315",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Thu Jan 9 10:42:35 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "The growing gap between the advanced capabilities of
                 static compilers as reflected in benchmarking results
                 and the actual performance that users experience in
                 real-life scenarios makes client-side dynamic
                 optimization technologies imperative to the domain of
                 static languages. Dynamic optimization of software
                 distributed in the form of a platform-agnostic
                 Intermediate-Representation (IR) has been very
                 successful in the domain of managed languages, greatly
                 improving upon interpreted code, especially when online
                 profiling is used. However, can such feedback-directed
                 IR-based dynamic code generation be viable in the
                 domain of statically compiled, rather than interpreted,
                 languages? We show that fat binaries, which combine the
                 IR together with the statically compiled executable,
                 can provide a practical solution for software vendors,
                 allowing their software to be dynamically optimized
                 without the limitation of binary-level approaches,
                 which lack the high-level IR of the program, and
                 without the warm-up costs associated with the IR-only
                 software distribution approach. We describe and
                 evaluate the fat-binary-based runtime compilation
                 approach using SPECint2006, demonstrating that the
                 overheads it incurs are low enough to be successfully
                 surmounted by dynamic optimization. Building on Java
                 JIT technologies, our results already improve upon
                 common real-world usage scenarios, including very small
                 workloads.",
  acknowledgement = ack-nhfb,
  articleno =    "59",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Ogawa:2013:RJA,
  author =       "Yuki Ogawa and Masahiro Iida and Motoki Amagasaki and
                 Morihiro Kuga and Toshinori Sueyoshi",
  title =        "A reconfigurable {Java} accelerator with software
                 compatibility for embedded systems",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "41",
  number =       "5",
  pages =        "71--76",
  month =        dec,
  year =         "2013",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2641361.2641373",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Aug 18 17:12:43 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
}

@Article{Ohkawa:2013:RHO,
  author =       "Takeshi Ohkawa and Daichi Uetake and Takashi Yokota
                 and Kanemitsu Ootsu and Takanobu Baba",
  title =        "Reconfigurable and hardwired {ORB} engine on {FPGA} by
                 {Java-to-HDL} synthesizer for realtime application",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "41",
  number =       "5",
  pages =        "77--82",
  month =        dec,
  year =         "2013",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2641361.2641374",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Aug 18 17:12:43 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "A platform for networked FPGA system design, which is
                 named ``ORB Engine'', is proposed to add more
                 controllability and design productivity on FPGA-based
                 systems composed of software and hardwired IPs. A
                 developer can define an object-oriented interface for
                 the circuit IP in FPGA, and implement the control
                 sequence part using Java. The circuit IP in FPGA can be
                 handled through object-oriented interface from variety
                 of programming languages like C++, Java, Python, Ruby
                 and so on. Application specific and high-efficiency
                 circuit for ORB (Object Request Broker) protocol
                 processing is synthesized from easy-handling Java code
                 using JavaRock Java-to-HDL synthesizer within the
                 de-facto standard CORBA (Common Object Request Broker
                 Architecture). The measurement result shows a very low
                 latency as low as 200us of UDP/IP packet in/out and
                 exhibits a fluctuation free delay performance, which is
                 desirable for real-time applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
}

@Article{Parnin:2013:AUJ,
  author =       "Chris Parnin and Christian Bird and Emerson
                 Murphy-Hill",
  title =        "Adoption and use of {Java} generics",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "18",
  number =       "6",
  pages =        "1047--1089",
  month =        dec,
  year =         "2013",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-012-9236-6",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Dec 2 09:14:30 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-012-9236-6",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Plumbridge:2013:BPR,
  author =       "Gary Plumbridge and Jack Whitham and Neil Audsley",
  title =        "{Blueshell}: a platform for rapid prototyping of
                 multiprocessor {NoCs} and accelerators",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "41",
  number =       "5",
  pages =        "107--117",
  month =        dec,
  year =         "2013",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2641361.2641379",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Aug 18 17:12:43 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "The rapid increase in FPGA logic capacity has enabled
                 the prototyping of multiprocessor Network-on-Chip (NoC)
                 architectures. However, the design space exploration of
                 these complex architectures is highly time consuming
                 with traditional methodologies for FPGA design. Our
                 paper addresses the challenges of multiprocessor
                 network design with the Blueshell framework for
                 generating multiprocessor networks on chip (NoC) and a
                 coupled Java software stack, Network-Chi. With
                 Blueshell hardware is constructed from high-level
                 components including processors and routers using
                 concise Bluespec System Verilog. The Network-Chi
                 software framework is also presented to enable
                 programming the on-chip processors in a familiar Java
                 style and without exposing the low-level systems
                 programming to the application designer. We demonstrate
                 that Blueshell systems with as many as 20 processors
                 can be implemented on a modestly sized FPGA.
                 Performance figures for a selection of distributed
                 applications are also provided.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
}

@Article{Puffitsch:2013:SIP,
  author =       "Wolfgang Puffitsch",
  title =        "Special Issue Papers: Design and analysis of a hard
                 real-time garbage collector for a {Java} chip
                 multi-processor",
  journal =      j-CCPE,
  volume =       "25",
  number =       "16",
  pages =        "2269--2289",
  month =        nov,
  year =         "2013",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.2921",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Dec 3 10:37:44 MST 2013",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "17 Sep 2012",
}

@Article{Pukall:2013:JFR,
  author =       "Mario Pukall and Christian K{\"a}stner and Walter
                 Cazzola and Sebastian G{\"o}tz and Alexander Grebhahn
                 and Reimar Schr{\"o}ter and Gunter Saake",
  title =        "{JavAdaptor} ---Flexible runtime updates of {Java}
                 applications",
  journal =      j-SPE,
  volume =       "43",
  number =       "2",
  pages =        "153--185",
  month =        feb,
  year =         "2013",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2107",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Thu Mar 7 08:19:39 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "17 Feb 2012",
}

@Article{Ramos:2013:DSJ,
  author =       "Sabela Ramos and Guillermo L. Taboada and Roberto R.
                 Exp{\'o}sito and Juan Touri{\~n}o and Ram{\'o}n
                 Doallo",
  title =        "Design of Scalable {Java} Communication Middleware for
                 Multi-Core Systems",
  journal =      j-COMP-J,
  volume =       "56",
  number =       "2",
  pages =        "214--228",
  month =        feb,
  year =         "2013",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxs122",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Sat Feb 2 06:33:23 MST 2013",
  bibsource =    "http://comjnl.oxfordjournals.org/content/56/2.toc;
                 http://www.math.utah.edu/pub/tex/bib/compj2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/56/2/214.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "September 5, 2012",
}

@Article{Ravn:2013:EIS,
  author =       "Anders P. Ravn and M. Teresa Higuera-Toledano",
  title =        "Editorials: Introduction to the special issue on
                 {Java} technologies for real-time and embedded systems:
                 {JTRES2011}",
  journal =      j-CCPE,
  volume =       "25",
  number =       "16",
  pages =        "2225--2226",
  month =        nov,
  year =         "2013",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3023",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Dec 3 10:37:44 MST 2013",
  bibsource =    "http://www.interscience.wiley.com/jpages/1532-0626;
                 http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "29 Apr 2013",
}

@Book{Rayns:2013:CJS,
  author =       "Chris Rayns and others",
  title =        "{CICS} and the {JVM} server developing and deploying
                 {Java} applications",
  publisher =    "IBM Corporation, International Technical Support
                 Organization",
  address =      "Poughkeepsie, NY, USA",
  pages =        "????",
  year =         "2013",
  ISBN =         "0-7384-3833-2",
  ISBN-13 =      "978-0-7384-3833-7",
  LCCN =         "????",
  bibdate =      "Thu Dec 4 08:14:09 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  series =       "IBM redbooks",
  URL =          "http://proquest.tech.safaribooksonline.de/0738438332",
  acknowledgement = ack-nhfb,
  subject =      "CICS (Syst{\`e}me informatique); Java (Langage de
                 programmation); Logiciels d'application;
                 D{\'e}veloppement; Syst{\`e}mes virtuels
                 (Informatique); CICS (Computer system); Java (Computer
                 program language); Application software; Development;
                 Virtual computer systems; Development.; CICS (Computer
                 system); Java (Computer program language); Virtual
                 computer systems.",
}

@Article{Reynolds:2013:MJB,
  author =       "Mark C. Reynolds",
  title =        "Modeling the {Java Bytecode Verifier}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "3",
  pages =        "327--342",
  day =          "1",
  month =        mar,
  year =         "2013",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2011.03.008",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Jan 5 18:54:31 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311000943",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Ricci:2013:ETP,
  author =       "Nathan P. Ricci and Samuel Z. Guyer and J. Eliot B.
                 Moss",
  title =        "{Elephant Tracks}: portable production of complete and
                 precise {GC} traces",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "11",
  pages =        "109--118",
  month =        nov,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2555670.2466484",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 08:04:34 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "ISMM '13 conference proceedings.",
  abstract =     "We present Elephant Tracks (ET), a dynamic program
                 analysis tool for Java that produces detailed traces of
                 garbage collection-related events, including object
                 allocations, object deaths, and pointer updates. Like
                 prior work, our tracing tool is based on the Merlin
                 algorithm [6,7], but offers several substantial new
                 capabilities. First, it is much more precise than
                 previous tools: it traces method entries and exits and
                 measures time in terms of them, allowing it to place
                 events precisely in the context of the program
                 structure. Second, it is implemented using a
                 combination of JVM Tool Interface (JVMTI)[13] callbacks
                 and bytecode rewriting, and works with any standard
                 JVM. Finally, it produces complete traces, including
                 weak references, events from the Java Native Interface
                 and sun.misc.Unsafe, and VM start up objects. In this
                 paper we also explore the general design space of
                 tracing tools, and carefully define the execution model
                 that the traces represent.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Richards:2013:FAC,
  author =       "Gregor Richards and Christian Hammer and Francesco
                 Zappa Nardelli and Suresh Jagannathan and Jan Vitek",
  title =        "Flexible access control for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "305--322",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509542",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Providing security guarantees for systems built out of
                 untrusted components requires the ability to define and
                 enforce access control policies over untrusted code. In
                 Web 2.0 applications, JavaScript code from different
                 origins is often combined on a single page, leading to
                 well-known vulnerabilities. We present a security
                 infrastructure which allows users and content providers
                 to specify access control policies over subsets of a
                 JavaScript program by leveraging the concept of
                 delimited histories with revocation. We implement our
                 proposal in WebKit and evaluate it with three policies
                 on 50 widely used websites with no changes to their
                 JavaScript code and report performance overheads and
                 violations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Salkeld:2013:IDO,
  author =       "Robin Salkeld and Gregor Kiczales",
  title =        "Interacting with dead objects",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "203--216",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509543",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Debugging and analyzing a snapshot of a crashed
                 program's memory is far more difficult than working
                 with a live program, because debuggers can no longer
                 execute code to help make sense of the program state.
                 We present an architecture that supports the restricted
                 execution of ordinary code starting from the snapshot,
                 as if the dead objects within it had been restored, but
                 without access to their original external environment.
                 We demonstrate the feasibility of this approach via an
                 implementation for Java that does not require a custom
                 virtual machine, show that it performs competitively
                 with live execution, and use it to diagnose an
                 unresolved memory leak in a mature mainstream
                 application.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Santos:2013:DDS,
  author =       "Ivo Santos and Marcel Tilly and Badrish Chandramouli
                 and Jonathan Goldstein",
  title =        "{DiAl}: distributed streaming analytics anywhere,
                 anytime",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "6",
  number =       "12",
  pages =        "1386--1389",
  month =        aug,
  year =         "2013",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Fri Dec 13 05:57:00 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Connected devices are expected to grow to 50 billion
                 in 2020. Through our industrial partners and their use
                 cases, we validated the importance of inflight data
                 processing to produce results with low latency, in
                 particular local and global data analytics
                 capabilities. In order to cope with the scalability
                 challenges posed by distributed streaming analytics
                 scenarios, we propose two new technologies: (1)
                 JStreams, a low footprint and efficient JavaScript
                 complex event processing engine supporting local
                 analytics on heterogeneous devices and (2) DiAlM, a
                 distributed analytics management service that leverages
                 cloud-edge evolving topologies. In the demonstration,
                 based on a real manufacturing use case, we walk through
                 a situation where operators supervise manufacturing
                 equipment through global analytics, and drill down into
                 alarm cases on the factory floor by locally inspecting
                 the data generated by the manufacturing equipment.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
}

@MastersThesis{Schmeisser:2013:MOE,
  author =       "Michael Schmei{\ss}er",
  title =        "{Metriken und optimale Einsatzszenarien f{\"u}r
                 Garbage Collectoren der Java HotSpot Virtual Machine}.
                 ({German}) [{Metrics} and best use scenarios for
                 garbage collectors of the {Java HotSpot Virtual
                 Machine}]",
  type =         "Masterarbeit",
  school =       "Hochschule f{\"u}r Technik, Wirtschaft und Kultur",
  address =      "Leipzig, Germany",
  pages =        "iii + 103",
  year =         "2013",
  bibdate =      "Thu Dec 04 08:18:41 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  acknowledgement = ack-nhfb,
  language =     "German",
}

@Book{Seth:2013:UJV,
  author =       "Sachin Seth",
  title =        "Understanding {Java Virtual Machine}",
  publisher =    "Alpha Science International",
  address =      "Oxford, UK",
  pages =        "318",
  year =         "2013",
  ISBN =         "1-84265-815-8",
  ISBN-13 =      "978-1-84265-815-4",
  LCCN =         "QA76.73.J38 S437 2013",
  bibdate =      "Thu Dec 4 13:23:14 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib",
  acknowledgement = ack-nhfb,
  shorttableofcontents = "Preface \\
                 Platform Dependency and Virtualization \\
                 Class File Format \\
                 Designing Platform Independent Language \\
                 JVM Internal Data Structure \\
                 JVM Instruction Set \\
                 General Algorithm of Java Virtual Machines \\
                 Understanding Java Native Interface \\
                 Implementing JNI Functions \\
                 Multithreading in Java \\
                 Garbage Collection",
  subject =      "Java virtual machine; Java virtual machine.; Virtual
                 computer systems; Virtual computer systems.",
  tableofcontents = "1. Platform Dependency and Virtualization \\
                 1.1. Introduction \\
                 1.2. How Programs Are Platform Dependent \\
                 1.2.1. Windows Segmented Executable File Format \\
                 1.2.2. {\tt a.out} (File Format) \\
                 1.2.3. Executable and Linking Format (ELF) \\
                 1.3. How Platform Independence is Achieved \\
                 1.3.1. Hardware Virtual Machines \\
                 1.3.2. Application Virtual Machines \\
                 1.3.3. Machine Aggregation \\
                 1.4. Java Virtual Machine \\
                 1.5. Why Byte Codes \\
                 2. Class File Format \\
                 2.1. Introduction \\
                 2.2. Signature or Magic Byte \\
                 2.3. Major and Minor Version Number \\
                 2.4. Constant Pool Count \\
                 2.5. Constant Pool Table \\
                 2.5.1. Constant\_Utf8 \\
                 2.5.2. Constant\_Integer and Constant\_Float \\
                 2.5.3. Constant\_Long and Constant\_Double \\
                 2.5.4. Constant\_Class \\
                 2.5.5. Constant\_String \\
                 2.5.6. Constant\_Fieldref, Constant\_Methodref,
                 Constant\_InterfaceMethodref \\
                 2.5.7. Constant\_NameAndType \\
                 2.6. Access Flags \\
                 2.7. This\_class \\
                 2.8. super\_class \\
                 2.9. Interface\_count \\
                 2.10. Interfaces table \\
                 2.11. Fields Count \\
                 2.12. Field table \\
                 2.12.1. Access\_Flags \\
                 2.12.2. Name\_Index \\
                 2.12.3. Descriptor\_Index \\
                 2.12.4. Attributes\_Count \\
                 2.12.5. Attributes\_Table \\
                 2.13. Methods count \\
                 2.14. Method table \\
                 2.15. Attributes\_Count \\
                 2.16. Attributes\_table \\
                 2.16.1. Attribute Information Structure \\
                 2.17. Code Attribute \\
                 2.18. Exceptions Attribute \\
                 2.19. C data structure to represent the class file \\
                 2.20. Internal Representation of descriptor \\
                 2.20.1. Field Descriptors \\
                 2.20.2. Method Descriptors \\
                 3. Designing Platform Independent Language \\
                 3.1. Designing Your Own Platform Independent Language
                 \\
                 4. JVM Internal Data Structure \\
                 4.1. Introduction \\
                 4.2. Java Virtual Machine Data Types \\
                 4.2.1. Integral Types \\
                 4.2.2. Floating Point Types \\
                 4.2.3. Return Address Type \\
                 4.2.4. Boolean Type \\
                 4.2.5. Reference Type \\
                 4.3. JVM Data Types Storage Area \\
                 4.4. JVM Internal Data Structures \\
                 4.4.1. The pc Register \\
                 4.4.2. Class Heap \\
                 4.4.3. Object Heap \\
                 4.4.4. Array Heap \\
                 4.4.5. Stack Frame \\
                 4.4.6. Method Area \\
                 4.4.7. Operand Stack \\
                 5. JVM Instruction Set \\
                 5.1. Introduction \\
                 5.2. Virtual Machine Error \\
                 5.3. Operations Involved in Executing Instructions \\
                 5.3.1. Push and Pop on Operand Stack \\
                 5.3.2. Push and Pop on Parameter Stack \\
                 5.3.3. Creating Function Stack Frame \\
                 5.3.4. Retrieving and Storing Values in Function Stack
                 Frame \\
                 5.3.5. Creating an Object of Class \\
                 5.3.6. Storing Field Value \\
                 5.3.7. Getting Field Value \\
                 5.3.8. Allocating Memory for Static Fields \\
                 5.3.9. Storing Static Field Values \\
                 5.3.10. Get Static Field Values \\
                 5.3.11. Creating Array \\
                 5.3.12. Creating the Muti-dimensional Array \\
                 5.3.13. Storing and Retrieving Value from Array \\
                 5.3.14. Executing a Method \\
                 5.3.15. Throw an Exception \\
                 5.3.16. Acquiring Monitor \\
                 5.3.17. Releasing Monitor \\
                 5.3.18. Constant\_utf8 to String \\
                 5.4. Instruction Set \\
                 6. General Algorithm Of Java Virtual Machines \\
                 6.1. What Happens Behind the Scene \\
                 6.1.1. Loading of Class \\
                 6.1.2. Verification of Class \\
                 6.1.3. Preparation of Class \\
                 6.1.4. Resolution of Symbols \\
                 6.1.5. Initialization \\
                 6.1.6. Initialize System Class Function \\
                 6.1.7. Load and Execute Test Class Class \\
                 6.2. Changes in JVM's Internal Data Structure \\
                 7. Understanding Java Native Interface \\
                 7.1. Why JNI \\
                 7.2. JNI Interface Functions \\
                 7.3. Loading and Linking Native Library \\
                 7.4. Referencing Java Objects \\
                 7.5. JNI Types and Data Structures \\
                 7.6. JNI by Example \\
                 7.7. JNI behind the Scene \\
                 7.7.1. Calling Native Function from Java \\
                 7.7.2. Calling Java Function from Native Language \\
                 8. Implementing JNI Functions \\
                 8.1. JNI Function Table \\
                 8.2. Initializing JNI Environment \\
                 8.3. JNI Helper Functions \\
                 8.3.1. Call Method \\
                 8.3.2. Call Method A0 \\
                 8.3.3. Call Static Method 0 \\
                 8.3.4. Call Static Method A0 \\
                 8.3.5. Release Array Elements 0 \\
                 8.3.6. Add to Local Ref List \\
                 8.4. JNI Functions \\
                 8.4.1. GetVersion \\
                 8.4.2. DefineClass \\
                 8.4.3. Find Class \\
                 8.4.4. GetSuperclass \\
                 8.4.5. Is Assignable From \\
                 8.4.6. Throw \\
                 8.4.7. ThrowNew \\
                 8.4.8. Throws \\
                 8.4.9. Exception Describe \\
                 8.4.10. Exception Clear \\
                 8.4.11. Fatal Error \\
                 8.4.12. New Local Ref \\
                 8.4.13. New Global Ref \\
                 8.4.14. New Weak Global Ref \\
                 8.4.15. Delete Global Ref \\
                 8.4.16. Delete Local Ref \\
                 8.4.17. Delete Weak Local Ref \\
                 8.4.18. AllocObject \\
                 8.4.19. New Object, New ObjectA and New ObjectV \\
                 8.4.20. Get Object Class \\
                 8.4.21. Is Instance Of \\
                 8.4.22. Is Same Object \\
                 8.4.23. Get Field ID \\
                 8.4.24. Get<type>Field \\
                 8.4.25. Set<type>Field \\
                 8.4.26. Get Method ID \\
                 8.4.27. Call<type>Method \\
                 8.4.28. Call Nonvirtual<type>Method \\
                 8.4.29. Get Static Field ID \\
                 8.4.30. Get Static<type>Field Routines \\
                 8.4.31. Set Static<type>Field Routines \\
                 8.4.32. Get Static Method ID \\
                 8.4.33. Call Static<type>Method \\
                 8.4.34. New String \\
                 8.4.35. Get String Length \\
                 8.4.36. Get String Region \\
                 8.4.37. Get String Chars \\
                 8.4.38. Get String Critical \\
                 8.4.39. Release String Chars \\
                 8.4.40. Release String Critical \\
                 8.4.41. New String UTF \\
                 8.4.42. Get String UTF Chars \\
                 8.4.43. Get String UTF Region \\
                 8.4.44. Get String UTF Length \\
                 8.4.45. Release String UTF Chars \\
                 8.4.46. Get Array Length \\
                 8.4.47. New Object Array \\
                 8.4.48. Get Object Array Element \\
                 8.4.49. Set Object Array Element \\
                 8.4.50. New<PrimitiveType>Array \\
                 8.4.51. Get<PrimitiveType>ArrayElements Routines \\
                 8.4.52. Release<PrimitiveType>ArrayElements Routines
                 \\
                 8.4.53. Get<PrimitiveType>ArrayRegion Routines \\
                 8.4.54. Set<PrimitiveType>ArrayRegion Routines \\
                 8.4.55. Register Natives \\
                 8.4.56. Unregister Natives \\
                 8.4.57. Push Local Frame \\
                 8.4.58. Pop Local Frame \\
                 8.4.59. Monitor Enter \\
                 8.4.60. Monitor Exit \\
                 8.4.61. Get Java VM \\
                 9. Multithreading In Java \\
                 9.1. Introduction \\
                 9.2. Multithreading in Java \\
                 9.3. Memory Model for Thread \\
                 9.4. Creating Thread in Java \\
                 9.5. Why Multithreading in Java is Platform Dependent?
                 \\
                 9.5.1. Sleep() \\
                 9.5.2. Stop() \\
                 9.5.3. Suspend() \\
                 9.5.4. Resume() \\
                 9.5.5. isAlive() \\
                 9.5.6. Interrupt() \\
                 9.5.7. Join() \\
                 9.5.8. Yield() \\
                 9.5.9. SetPriority() \\
                 9.6. Thread local storage \\
                 9.7. Volatile keyword \\
                 9.8. Thread Synchronization in Java \\
                 10. Garbage Collection \\
                 10.1. Introduction \\
                 10.2. Drawbacks of Legacy Languages \\
                 10.3. Solution to Memory Leak in Java \\
                 10.4. How JVM Recognizes that an Object is not Being
                 Referenced",
}

@Article{Singh:2013:TGC,
  author =       "Pavitdeep Singh and Satwinder Singh and Jatinder
                 Kaur",
  title =        "Tool for generating code metrics for {C\#} source code
                 using abstract syntax tree technique",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "5",
  pages =        "1--6",
  month =        sep,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2507288.2507312",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:29 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/csharp.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Software maintenance is one of the key activities in
                 any software engineering process in which source code
                 analysis plays a crucial role. Due to the high cost of
                 maintenance, it has become quite necessary to produce
                 high quality software. Over time, numerous analyses
                 have been performed on source code to determine
                 complexity and other metrics. Lots of papers have been
                 published for object oriented languages but mostly
                 concentrating on C++ and Java, very few has been
                 published for more modern languages like C\#. This
                 paper proposes a Software Quality Assurance Tool for
                 measuring the different code metrics for the object
                 oriented language C\# at the class and method levels.
                 The technique consists of generating the abstract
                 syntax tree of the source code using Nfactory
                 libraries. The Interface is built using the Win Form
                 application which provides an impressive GUI for the
                 tool.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Smaragdakis:2013:SBP,
  author =       "Yannis Smaragdakis and George Balatsouras and George
                 Kastrinis",
  title =        "Set-based pre-processing for points-to analysis",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "253--270",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509524",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "We present set-based pre-analysis: a virtually
                 universal optimization technique for flow-insensitive
                 points-to analysis. Points-to analysis computes a
                 static abstraction of how object values flow through a
                 program's variables. Set-based pre-analysis relies on
                 the observation that much of this reasoning can take
                 place at the set level rather than the value level.
                 Computing constraints at the set level results in
                 significant optimization opportunities: we can rewrite
                 the input program into a simplified form with the same
                 essential points-to properties. This rewrite results in
                 removing both local variables and instructions, thus
                 simplifying the subsequent value-based points-to
                 computation. Effectively, set-based pre-analysis puts
                 the program in a normal form optimized for points-to
                 analysis. Compared to other techniques for off-line
                 optimization of points-to analyses in the literature,
                 the new elements of our approach are the ability to
                 eliminate statements, and not just variables, as well
                 as its modularity: set-based pre-analysis can be
                 performed on the input just once, e.g., allowing the
                 pre-optimization of libraries that are subsequently
                 reused many times and for different analyses. In
                 experiments with Java programs, set-based pre-analysis
                 eliminates 30\% of the program's local variables and
                 30\% or more of computed context-sensitive points-to
                 facts, over a wide set of benchmarks and analyses,
                 resulting in a ~20\% average speedup (max: 110\%,
                 median: 18\%).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Stefik:2013:EIP,
  author =       "Andreas Stefik and Susanna Siebert",
  title =        "An Empirical Investigation into Programming Language
                 Syntax",
  journal =      j-TOCE,
  volume =       "13",
  number =       "4",
  pages =        "19:1--19:??",
  month =        nov,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2534973",
  ISSN =         "1946-6226",
  bibdate =      "Wed Nov 13 17:27:51 MST 2013",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/toce.bib",
  abstract =     "Recent studies in the literature have shown that
                 syntax remains a significant barrier to novice computer
                 science students in the field. While this syntax
                 barrier is known to exist, whether and how it varies
                 across programming languages has not been carefully
                 investigated. For this article, we conducted four
                 empirical studies on programming language syntax as
                 part of a larger analysis into the, so called,
                 programming language wars. We first present two surveys
                 conducted with students on the intuitiveness of syntax,
                 which we used to garner formative clues on what words
                 and symbols might be easy for novices to understand. We
                 followed up with two studies on the accuracy rates of
                 novices using a total of six programming languages:
                 Ruby, Java, Perl, Python, Randomo, and Quorum. Randomo
                 was designed by randomly choosing some keywords from
                 the ASCII table (a metaphorical placebo). To our
                 surprise, we found that languages using a more
                 traditional C-style syntax (both Perl and Java) did not
                 afford accuracy rates significantly higher than a
                 language with randomly generated keywords, but that
                 languages which deviate (Quorum, Python, and Ruby) did.
                 These results, including the specifics of syntax that
                 are particularly problematic for novices, may help
                 teachers of introductory programming courses in
                 choosing appropriate first languages and in helping
                 students to overcome the challenges they face with
                 syntax.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Computing Education",
}

@Article{Sun:2013:BJW,
  author =       "Mengtao Sun and Gang Tan and Joseph Siefers and Bin
                 Zeng and Greg Morrisett",
  title =        "Bringing {Java}'s wild native world under control",
  journal =      j-TISSEC,
  volume =       "16",
  number =       "3",
  pages =        "9:1--9:??",
  month =        nov,
  year =         "2013",
  CODEN =        "ATISBQ",
  DOI =          "https://doi.org/10.1145/2535505",
  ISSN =         "1094-9224 (print), 1557-7406 (electronic)",
  ISSN-L =       "1094-9224",
  bibdate =      "Mon Dec 9 11:22:22 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tissec.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "For performance and for incorporating legacy
                 libraries, many Java applications contain native-code
                 components written in unsafe languages such as C and
                 C++. Native-code components interoperate with Java
                 components through the Java Native Interface (JNI). As
                 native code is not regulated by Java's security model,
                 it poses serious security threats to the managed Java
                 world. We introduce a security framework that extends
                 Java's security model and brings native code under
                 control. Leveraging software-based fault isolation, the
                 framework puts native code in a separate sandbox and
                 allows the interaction between the native world and the
                 Java world only through a carefully designed pathway.
                 Two different implementations were built. In one
                 implementation, the security framework is integrated
                 into a Java Virtual Machine (JVM). In the second
                 implementation, the framework is built outside of the
                 JVM and takes advantage of JVM-independent interfaces.
                 The second implementation provides JVM portability, at
                 the expense of some performance degradation. Evaluation
                 of our framework demonstrates that it incurs modest
                 runtime overhead while significantly enhancing the
                 security of Java applications.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Information and System Security",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J789",
}

@Article{Taboada:2013:JHP,
  author =       "Guillermo L. Taboada and Sabela Ramos and Roberto R.
                 Exp{\'o}sito and Juan Touri{\~n}o and Ram{\'o}n
                 Doallo",
  title =        "{Java} in the {High Performance Computing} arena:
                 Research, practice and experience",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "5",
  pages =        "425--444",
  day =          "1",
  month =        may,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed Mar 27 07:52:16 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311001420",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Taft:2013:TPS,
  author =       "S. Tucker Taft",
  title =        "Tutorial: proving safety of parallel \slash
                 multi-threaded programs",
  journal =      j-SIGADA-LETTERS,
  volume =       "33",
  number =       "3",
  pages =        "1--2",
  month =        dec,
  year =         "2013",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2658982.2527285",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Wed Sep 3 16:38:30 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  abstract =     "This tutorial will introduce the attendees to analysis
                 and proof techniques for programs using parallelism and
                 multi-threading. There are no specific prerequisites,
                 but a familiarity with the notions of preconditions and
                 postconditions, aliasing, race conditions, and
                 deadlocks would be of value. The examples will be based
                 on the threading and parallelism models of Java, Ada,
                 and two new parallel languages, one called ParaSail [4]
                 and another, inspired by the verifiable SPARK[1][2]
                 subset of Ada, called Sparkel[3]. We will introduce the
                 distinction between safety and liveness properties, and
                 then focus primarily on techniques for the verification
                 of safety properties, including the absence of race
                 conditions and deadlocks. We will also discuss the
                 issue of determinism vs. non-determinism in parallel
                 and multi-threaded programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J32",
  remark =       "HILT '13 conference proceedings.",
}

@Article{Taibi:2013:ROS,
  author =       "Fathi Taibi",
  title =        "Reusability of open-source program code: a conceptual
                 model and empirical investigation",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "4",
  pages =        "1--5",
  month =        jul,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2492248.2492276",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:27 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Reusing program modules is one of the most direct and
                 useful ways to develop cost effective software,
                 especially with the availability of huge amounts of
                 open-source projects. Reuse saves cost, increases the
                 speed of development and improves software reliability.
                 The quality of popular open-source packages is good as
                 shown by various empirical studies. However, the
                 quality of less known packages and the large number of
                 projects developed by programming enthusiasts is
                 unknown. Reusing them may be the source of more
                 problems rather than being a solution to a problem. In
                 this paper, a conceptual model is proposed to measure
                 the reusability of program modules. A balanced set of
                 well-established metrics is used to compute the most
                 significant factors of reusability and an empirical
                 investigation is conducted to measure the reusability
                 of the modules of randomly selected open-source Java
                 projects. The results obtained are thoroughly analyzed
                 to discover the real reusability potential of
                 open-source program code together with suggestions on
                 how to improve this potential.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Teodorovici:2013:BRL,
  author =       "Vasile G. Teodorovici",
  title =        "Book Review: {{\booktitle{Learning JavaScript: a
                 hands-on guide to the fundamentals of modern
                 JavaScript}} by Tim Wright}",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "3",
  pages =        "35--36",
  month =        may,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2464526.2464554",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:25 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Terra:2013:QCC,
  author =       "Ricardo Terra and Luis Fernando Miranda and Marco
                 Tulio Valente and Roberto S. Bigonha",
  title =        "Qualitas.class corpus: a compiled version of the
                 qualitas corpus",
  journal =      j-SIGSOFT,
  volume =       "38",
  number =       "5",
  pages =        "1--4",
  month =        sep,
  year =         "2013",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2507288.2507314",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:29 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "This paper documents a compiled version of the
                 Qualitas Corpus named Qualitas.class Corpus. We provide
                 compiled Java projects for the 111 systems included in
                 the corpus. We also gathered a large amount of metrics
                 data (such as measurements from complexity, coupling,
                 and CK metrics) about the systems. By making
                 Qualitas.class Corpus public, our goal is to assist
                 researchers by removing the compilation effort when
                 conducting empirical studies.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Tetali:2013:MSA,
  author =       "Sai Deep Tetali and Mohsen Lesani and Rupak Majumdar
                 and Todd Millstein",
  title =        "{MrCrypt}: static analysis for secure cloud
                 computations",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "271--286",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509554",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "In a common use case for cloud computing, clients
                 upload data and computation to servers that are managed
                 by a third-party infrastructure provider. We describe
                 MrCrypt, a system that provides data confidentiality in
                 this setting by executing client computations on
                 encrypted data. MrCrypt statically analyzes a program
                 to identify the set of operations on each input data
                 column, in order to select an appropriate homomorphic
                 encryption scheme for that column, and then transforms
                 the program to operate over encrypted data. The
                 encrypted data and transformed program are uploaded to
                 the server and executed as usual, and the result of the
                 computation is decrypted on the client side. We have
                 implemented MrCrypt for Java and illustrate its
                 practicality on three standard benchmark suites for the
                 Hadoop MapReduce framework. We have also formalized the
                 approach and proven several soundness and security
                 guarantees.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Ureche:2013:MIS,
  author =       "Vlad Ureche and Cristian Talau and Martin Odersky",
  title =        "Miniboxing: improving the speed to code size tradeoff
                 in parametric polymorphism translations",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "73--92",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509537",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Parametric polymorphism enables code reuse and type
                 safety. Underneath the uniform interface exposed to
                 programmers, however, its low level implementation has
                 to cope with inherently non-uniform data: value types
                 of different sizes and semantics (bytes, integers,
                 floating point numbers) and reference types (pointers
                 to heap objects). On the Java Virtual Machine,
                 parametric polymorphism is currently translated to
                 bytecode using two competing approaches: homogeneous
                 and heterogeneous. Homogeneous translation requires
                 boxing, and thus introduces indirect access delays.
                 Heterogeneous translation duplicates and adapts code
                 for each value type individually, producing more
                 bytecode. Therefore bytecode speed and size are at odds
                 with each other. This paper proposes a novel
                 translation that significantly reduces the bytecode
                 size without affecting the execution speed. The key
                 insight is that larger value types (such as integers)
                 can hold smaller ones (such as bytes) thus reducing the
                 duplication necessary in heterogeneous translations. In
                 our implementation, on the Scala compiler, we encode
                 all primitive value types in long integers. The
                 resulting bytecode approaches the performance of
                 monomorphic code, matches the performance of the
                 heterogeneous translation and obtains speedups of up to
                 22x over the homogeneous translation, all with modest
                 increases in size.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Wimmer:2013:MAV,
  author =       "Christian Wimmer and Michael Haupt and Michael L. {Van
                 De Vanter} and Mick Jordan and Laurent Dayn{\`e}s and
                 Douglas Simon",
  title =        "{Maxine}: an approachable virtual machine for, and in,
                 {Java}",
  journal =      j-TACO,
  volume =       "9",
  number =       "4",
  pages =        "30:1--30:??",
  month =        jan,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2400682.2400689",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Fri Jan 18 10:57:16 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "A highly productive platform accelerates the
                 production of research results. The design of a Virtual
                 Machine (VM) written in the Java{\TM} programming
                 language can be simplified through exploitation of
                 interfaces, type and memory safety, automated memory
                 management (garbage collection), exception handling,
                 and reflection. Moreover, modern Java IDEs offer
                 time-saving features such as refactoring,
                 auto-completion, and code navigation. Finally, Java
                 annotations enable compiler extensions for low-level
                 ``systems programming'' while retaining IDE
                 compatibility. These techniques collectively make
                 complex system software more ``approachable'' than has
                 been typical in the past. The Maxine VM, a metacircular
                 Java VM implementation, has aggressively used these
                 features since its inception. A co-designed companion
                 tool, the Maxine Inspector, offers integrated debugging
                 and visualization of all aspects of the VM's runtime
                 state. The Inspector's implementation exploits advanced
                 Java language features, embodies intimate knowledge of
                 the VM's design, and even reuses a significant amount
                 of VM code directly. These characteristics make Maxine
                 a highly approachable VM research platform and a
                 productive basis for research and teaching.",
  acknowledgement = ack-nhfb,
  articleno =    "30",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Wurthinger:2013:USD,
  author =       "Thomas W{\"u}rthinger and Christian Wimmer and Lukas
                 Stadler",
  title =        "Unrestricted and safe dynamic code evolution for
                 {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "78",
  number =       "5",
  pages =        "481--498",
  day =          "1",
  month =        may,
  year =         "2013",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed Mar 27 07:52:16 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311001456",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Xie:2013:AAE,
  author =       "Xinwei Xie and Jingling Xue and Jie Zhang",
  title =        "{Acculock}: accurate and efficient detection of data
                 races",
  journal =      j-SPE,
  volume =       "43",
  number =       "5",
  pages =        "543--576",
  month =        may,
  year =         "2013",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2121",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Apr 27 13:41:04 MDT 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software---Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  keywords =     "FastTrack; Java; Java Virtual Machine; JIKES; Jikes
                 Research Virtual Machine; RoadRunner",
  onlinedate =   "16 Apr 2012",
}

@Article{Xu:2013:PML,
  author =       "Guoqing Xu and Atanas Rountev",
  title =        "Precise memory leak detection for {Java} software
                 using container profiling",
  journal =      j-TOSEM,
  volume =       "22",
  number =       "3",
  pages =        "17:1--17:??",
  month =        jul,
  year =         "2013",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2491509.2491511",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Sat Jul 27 08:26:00 MDT 2013",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "A memory leak in a Java program occurs when object
                 references that are no longer needed are unnecessarily
                 maintained. Such leaks are difficult to detect because
                 static analysis typically cannot precisely identify
                 these redundant references, and existing dynamic leak
                 detection tools track and report fine-grained
                 information about individual objects, producing results
                 that are usually hard to interpret and lack precision.
                 In this article we introduce a novel container-based
                 heap-tracking technique, based on the fact that many
                 memory leaks in Java programs occur due to incorrect
                 uses of containers, leading to containers that keep
                 references to unused data entries. The novelty of the
                 described work is twofold: (1) instead of tracking
                 arbitrary objects and finding leaks by analyzing
                 references to unused objects, the technique tracks only
                 containers and directly identifies the source of the
                 leak, and (2) the technique computes a confidence value
                 for each container based on a combination of its memory
                 consumption and its elements' staleness (time since
                 last retrieval), while previous approaches do not
                 consider such combined metrics. Our experimental
                 results show that the reports generated by the proposed
                 technique can be very precise: for two bugs reported by
                 Sun, a known bug in SPECjbb 2000, and an example bug
                 from IBM developerWorks, the top containers in the
                 reports include the containers that leak memory.",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Yang:2013:CPP,
  author =       "Chao Yang and Zengyou He and Weichuan Yu",
  title =        "A Combinatorial Perspective of the Protein Inference
                 Problem",
  journal =      j-TCBB,
  volume =       "10",
  number =       "6",
  pages =        "1542--1547",
  month =        nov,
  year =         "2013",
  CODEN =        "ITCBCY",
  DOI =          "https://doi.org/10.1109/TCBB.2013.110",
  ISSN =         "1545-5963 (print), 1557-9964 (electronic)",
  ISSN-L =       "1545-5963",
  bibdate =      "Fri Feb 28 05:26:07 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tcbb.bib",
  abstract =     "In a shotgun proteomics experiment, proteins are the
                 most biologically meaningful output. The success of
                 proteomics studies depends on the ability to accurately
                 and efficiently identify proteins. Many methods have
                 been proposed to facilitate the identification of
                 proteins from peptide identification results. However,
                 the relationship between protein identification and
                 peptide identification has not been thoroughly
                 explained before. In this paper, we devote ourselves to
                 a combinatorial perspective of the protein inference
                 problem. We employ combinatorial mathematics to
                 calculate the conditional protein probabilities
                 (protein probability means the probability that a
                 protein is correctly identified) under three
                 assumptions, which lead to a lower bound, an upper
                 bound, and an empirical estimation of protein
                 probabilities, respectively. The combinatorial
                 perspective enables us to obtain an analytical
                 expression for protein inference. Our method achieves
                 comparable results with ProteinProphet in a more
                 efficient manner in experiments on two data sets of
                 standard protein mixtures and two data sets of real
                 samples. Based on our model, we study the impact of
                 unique peptides and degenerate peptides (degenerate
                 peptides are peptides shared by at least two proteins)
                 on protein probabilities. Meanwhile, we also study the
                 relationship between our model and ProteinProphet. We
                 name our program ProteinInfer. Its Java source code,
                 our supplementary document and experimental results are
                 available at
                 http://bioinformatics.ust.hk/proteininfer.",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE/ACM Transactions on Computational Biology and
                 Bioinformatics",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J954",
}

@Article{Yiapanis:2013:OSR,
  author =       "Paraskevas Yiapanis and Demian Rosas-Ham and Gavin
                 Brown and Mikel Luj{\'a}n",
  title =        "Optimizing software runtime systems for speculative
                 parallelization",
  journal =      j-TACO,
  volume =       "9",
  number =       "4",
  pages =        "39:1--39:??",
  month =        jan,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2400682.2400698",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Fri Jan 18 10:57:16 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "Thread-Level Speculation (TLS) overcomes limitations
                 intrinsic with conservative compile-time
                 auto-parallelizing tools by extracting parallel threads
                 optimistically and only ensuring absence of data
                 dependence violations at runtime. A significant barrier
                 for adopting TLS (implemented in software) is the
                 overheads associated with maintaining speculative
                 state. Based on previous TLS limit studies, we observe
                 that on future multicore systems we will likely have
                 more cores idle than those which traditional TLS would
                 be able to harness. This implies that a TLS system
                 should focus on optimizing for small number of cores
                 and find efficient ways to take advantage of the idle
                 cores. Furthermore, research on optimistic systems has
                 covered two important implementation design points:
                 eager vs. lazy version management. With this knowledge,
                 we propose new simple and effective techniques to
                 reduce the execution time overheads for both of these
                 design points. This article describes a novel compact
                 version management data structure optimized for space
                 overhead when using a small number of TLS threads.
                 Furthermore, we describe two novel software runtime
                 parallelization systems that utilize this compact data
                 structure. The first software TLS system, MiniTLS,
                 relies on eager memory data management (in-place
                 updates) and, thus, when a misspeculation occurs a
                 rollback process is required. MiniTLS takes advantage
                 of the novel compact version management representation
                 to parallelize the rollback process and is able to
                 recover from misspeculation faster than existing
                 software eager TLS systems. The second one, Lector
                 (Lazy inspECTOR) is based on lazy version management.
                 Since we have idle cores, the question is whether we
                 can create ``helper'' tasks to determine whether
                 speculation is actually needed without stopping or
                 damaging the speculative execution. In Lector, for each
                 conventional TLS thread running speculatively with lazy
                 version management, there is associated with it a
                 lightweight inspector. The inspector threads execute
                 alongside to verify quickly whether data dependencies
                 will occur. Inspector threads are generated by standard
                 techniques for inspector/executor parallelization. We
                 have applied both TLS systems to seven Java sequential
                 benchmarks, including three benchmarks from
                 SPECjvm2008. Two out of the seven benchmarks exhibit
                 misspeculations. MiniTLS experiments report average
                 speedups of 1.8x for 4 threads increasing close to 7x
                 speedups with 32 threads. Facilitated by our novel
                 compact representation, MiniTLS reduces the space
                 overhead over state-of-the-art software TLS systems
                 between 96\% on 2 threads and 40\% on 32 threads. The
                 experiments for Lector, report average speedups of 1.7x
                 for 2 threads (that is 1 TLS + 1 Inspector threads)
                 increasing close to 8.2x speedups with 32 threads (16 +
                 16 threads). Compared to a well established software
                 TLS baseline, Lector performs on average 1.7x faster
                 for 32 threads and in no case ( x TLS + x Inspector
                 threads) Lector delivers worse performance than the
                 baseline TLS with the equivalent number of TLS threads
                 (i.e. x TLS threads) nor doubling the equivalent number
                 of TLS threads (i.e., x + x TLS threads).",
  acknowledgement = ack-nhfb,
  articleno =    "39",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Yue:2013:MSI,
  author =       "Chuan Yue and Haining Wang",
  title =        "A measurement study of insecure {JavaScript} practices
                 on the {Web}",
  journal =      j-TWEB,
  volume =       "7",
  number =       "2",
  pages =        "7:1--7:??",
  month =        may,
  year =         "2013",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2460383.2460386",
  ISSN =         "1559-1131 (print), 1559-114X (electronic)",
  ISSN-L =       "1559-1131",
  bibdate =      "Thu Mar 13 08:28:18 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tweb.bib",
  abstract =     "JavaScript is an interpreted programming language most
                 often used for enhancing webpage interactivity and
                 functionality. It has powerful capabilities to interact
                 with webpage documents and browser windows, however, it
                 has also opened the door for many browser-based
                 security attacks. Insecure engineering practices of
                 using JavaScript may not directly lead to security
                 breaches, but they can create new attack vectors and
                 greatly increase the risks of browser-based attacks. In
                 this article, we present the first measurement study on
                 insecure practices of using JavaScript on the Web. Our
                 focus is on the insecure practices of JavaScript
                 inclusion and dynamic generation, and we examine their
                 severity and nature on 6,805 unique websites. Our
                 measurement results reveal that insecure JavaScript
                 practices are common at various websites: (1) at least
                 66.4\% of the measured websites manifest the insecure
                 practices of including JavaScript files from external
                 domains into the top-level documents of their webpages;
                 (2) over 44.4\% of the measured websites use the
                 dangerous eval() function to dynamically generate and
                 execute JavaScript code on their webpages; and (3) in
                 JavaScript dynamic generation, using the
                 document.write() method and the innerHTML property is
                 much more popular than using the relatively secure
                 technique of creating script elements via DOM methods.
                 Our analysis indicates that safe alternatives to these
                 insecure practices exist in common cases and ought to
                 be adopted by website developers and administrators for
                 reducing potential security risks.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on the Web (TWEB)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1062",
}

@Article{Zhang:2013:IMF,
  author =       "Lingming Zhang and Lu Zhang and Sarfraz Khurshid",
  title =        "Injecting mechanical faults to localize developer
                 faults for evolving software",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "765--784",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509551",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "This paper presents a novel methodology for localizing
                 faults in code as it evolves. Our insight is that the
                 essence of failure-inducing edits made by the developer
                 can be captured using mechanical program
                 transformations (e.g., mutation changes). Based on the
                 insight, we present the FIFL framework, which uses both
                 the spectrum information of edits (obtained using the
                 existing FaultTracer approach) as well as the potential
                 impacts of edits (simulated by mutation changes) to
                 achieve more accurate fault localization. We evaluate
                 FIFL on real-world repositories of nine Java projects
                 ranging from 5.7KLoC to 88.8KLoC. The experimental
                 results show that FIFL is able to outperform the
                 state-of-the-art FaultTracer technique for localizing
                 failure-inducing program edits significantly. For
                 example, all 19 FIFL strategies that use both the
                 spectrum information and simulated impact information
                 for each edit outperform the existing FaultTracer
                 approach statistically at the significance level of
                 0.01. In addition, FIFL with its default settings
                 outperforms FaultTracer by 2.33\% to 86.26\% on 16 of
                 the 26 studied version pairs, and is only inferior than
                 FaultTracer on one version pair.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Zhao:2013:INT,
  author =       "Jisheng Zhao and Roberto Lublinerman and Zoran
                 Budimli{\'c} and Swarat Chaudhuri and Vivek Sarkar",
  title =        "Isolation for nested task parallelism",
  journal =      j-SIGPLAN,
  volume =       "48",
  number =       "10",
  pages =        "571--588",
  month =        oct,
  year =         "2013",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2544173.2509534",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Dec 9 09:19:33 MST 2013",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "OOPSLA '13 conference proceedings.",
  abstract =     "Isolation--the property that a task can access shared
                 data without interference from other tasks--is one of
                 the most basic concerns in parallel programming.
                 Whilethere is a large body of past work on isolated
                 task-parallelism, the integration of isolation,
                 task-parallelism, and nesting of tasks has been a
                 difficult and unresolved challenge. In this pa- per, we
                 present a programming and execution model called Otello
                 where isolation is extended to arbitrarily nested
                 parallel tasks with irregular accesses to heap data. At
                 the same time, no additional burden is imposed on the
                 programmer, who only exposes parallelism by creating
                 and synchronizing parallel tasks, leaving the job of
                 ensuring isolation to the underlying compiler and
                 runtime system. Otello extends our past work on Aida
                 execution model and the delegated isolation mechanism
                 [22] to the setting of nested parallelism. The basic
                 runtime construct in Aida and Otello is an assembly: a
                 task equipped with a region in the shared heap that it
                 owns. When an assembly A conflicts with an assembly B,
                 A transfers--or delegates--its code and owned region to
                 a carefully selected assembly C in a way that will
                 ensure isolation with B, leaving the responsibility of
                 re-executing task A to C. The choice of C depends on
                 the nesting relationship between A and B.We have
                 implemented Otello on top of the Habanero Java (HJ)
                 parallel programming language [8], and used this
                 implementation to evaluate Otello on collections of
                 nested task-parallel benchmarks and non-nested
                 transactional benchmarks from past work. On the nested
                 task-parallel benchmarks, Otello achieves scalability
                 comparable to HJ programs without built-in isolation,
                 and the relative overhead of Otello is lower than that
                 of many published data-race detection algorithms that
                 detect the isolation violations (but do not enforce
                 isolation). For the transactional benchmarks, Otello
                 incurs lower overhead than a state-of-the-art software
                 transactional memory system (Deuce STM).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Zhu:2013:EAZ,
  author =       "Daming Zhu and Lusheng Wang",
  title =        "An Exact Algorithm for the Zero Exemplar Breakpoint
                 Distance Problem",
  journal =      j-TCBB,
  volume =       "10",
  number =       "6",
  pages =        "1469--1477",
  month =        nov,
  year =         "2013",
  CODEN =        "ITCBCY",
  DOI =          "https://doi.org/10.1109/TCBB.2013.127",
  ISSN =         "1545-5963 (print), 1557-9964 (electronic)",
  ISSN-L =       "1545-5963",
  bibdate =      "Fri Feb 28 05:26:07 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tcbb.bib",
  abstract =     "The exemplar breakpoint distance problem is one of the
                 most important problems in genome comparison and has
                 been extensively studied in the literature. The
                 exemplar breakpoint distance problem cannot be
                 approximated within any factor even if each gene family
                 occurs at most twice in a genome. This is due to the
                 fact that its decision version, the zero exemplar
                 breakpoint distance problem where each gene family
                 occurs at most twice in a genome (ZEBD$ ((2, 2)) $ for
                 short) is NP-hard. Thus, the basic version ZEBD$ ((2,
                 2)) $ has attracted the attention of many scientists.
                 The best existing algorithm for ZEBD$ ((2, 2)) $ runs
                 in $ (O(n2^n)) $ time. In this paper, we propose a new
                 algorithm for ZEBD$ ((2, 2)) $ with running time $
                 (O(n^{21.86121^n})) $. We have implemented the
                 algorithm in Java. The software package is available
                 upon request.",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE/ACM Transactions on Computational Biology and
                 Bioinformatics",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J954",
}

@Article{Adalid:2014:USA,
  author =       "Dami{\'a}n Adalid and Alberto Salmer{\'o}n and
                 Mar{\'\i}a del Mar Gallardo and Pedro Merino",
  title =        "Using {SPIN} for automated debugging of infinite
                 executions of {Java} programs",
  journal =      j-J-SYST-SOFTW,
  volume =       "90",
  number =       "??",
  pages =        "61--75",
  month =        apr,
  year =         "2014",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Thu Mar 6 08:15:03 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121213002641",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Article{Ahn:2014:IJP,
  author =       "Wonsun Ahn and Jiho Choi and Thomas Shull and
                 Mar{\'\i}a J. Garzar{\'a}n and Josep Torrellas",
  title =        "Improving {JavaScript} performance by deconstructing
                 the type system",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "496--507",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594332",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Increased focus on JavaScript performance has resulted
                 in vast performance improvements for many benchmarks.
                 However, for actual code used in websites, the attained
                 improvements often lag far behind those for popular
                 benchmarks. This paper shows that the main reason
                 behind this short-fall is how the compiler understands
                 types. JavaScript has no concept of types, but the
                 compiler assigns types to objects anyway for ease of
                 code generation. We examine the way that the Chrome V8
                 compiler defines types, and identify two design
                 decisions that are the main reasons for the lack of
                 improvement: (1) the inherited prototype object is part
                 of the current object's type definition, and (2) method
                 bindings are also part of the type definition. These
                 requirements make types very unpredictable, which
                 hinders type specialization by the compiler. Hence, we
                 modify V8 to remove these requirements, and use it to
                 compile the JavaScript code assembled by JSBench from
                 real websites. On average, we reduce the execution time
                 of JSBench by 36\%, and the dynamic instruction count
                 by 49\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Altidor:2014:RJG,
  author =       "John Altidor and Yannis Smaragdakis",
  title =        "Refactoring {Java} generics by inferring wildcards, in
                 practice",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "271--290",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660203",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Wildcard annotations can improve the generality of
                 Java generic libraries, but require heavy manual
                 effort. We present an algorithm for refactoring and
                 inferring more general type instantiations of Java
                 generics using wildcards. Compared to past approaches,
                 our work is practical and immediately applicable: we
                 assume no changes to the Java type system, while taking
                 into account all its intricacies. Our system allows
                 users to select declarations (variables, method
                 parameters, return types, etc.) to generalize and
                 considers declarations not declared in available source
                 code. It then performs an inter-procedural flow
                 analysis and a method body analysis, in order to
                 generalize type signatures. We evaluate our technique
                 on six Java generic libraries. We find that 34\% of
                 available declarations of variant type signatures can
                 be generalized --- i.e., relaxed with more general
                 wildcard types. On average, 146 other declarations need
                 to be updated when a declaration is generalized,
                 showing that this refactoring would be too tedious and
                 error-prone to perform manually.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Andersen:2014:PLJ,
  author =       "J. S. Andersen",
  title =        "Privacy Leaks in {Java} Classes",
  journal =      j-ADA-USER-J,
  volume =       "35",
  number =       "3",
  pages =        "191--??",
  month =        sep,
  year =         "2014",
  CODEN =        "AUJOET",
  ISSN =         "1381-6551",
  ISSN-L =       "1381-6551",
  bibdate =      "Fri Feb 13 06:03:37 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/adauserj.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Ada User Journal",
  journal-URL =  "http://www.ada-europe.org/auj/archive",
}

@Article{Andreasen:2014:DSA,
  author =       "Esben Andreasen and Anders M{\o}ller",
  title =        "Determinacy in static analysis for {jQuery}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "17--31",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660214",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Static analysis for JavaScript can potentially help
                 programmers find errors early during development.
                 Although much progress has been made on analysis
                 techniques, a major obstacle is the prevalence of
                 libraries, in particular jQuery, which apply
                 programming patterns that have detrimental consequences
                 on the analysis precision and performance. Previous
                 work on dynamic determinacy analysis has demonstrated
                 how information about program expressions that always
                 resolve to a fixed value in some call context may lead
                 to significant scalability improvements of static
                 analysis for such code. We present a static dataflow
                 analysis for JavaScript that infers and exploits
                 determinacy information on-the-fly, to enable analysis
                 of some of the most complex parts of jQuery. The
                 analysis combines selective context and path
                 sensitivity, constant propagation, and branch pruning,
                 based on a systematic investigation of the main causes
                 of analysis imprecision when using a more basic
                 analysis. The techniques are implemented in the TAJS
                 analysis tool and evaluated on a collection of small
                 programs that use jQuery. Our results show that the
                 proposed analysis techniques boost both precision and
                 performance, specifically for inferring type
                 information and call graphs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Anonymous:2014:RKS,
  author =       "Anonymous",
  title =        "Release the Kraken: a Story of {{\tt Node.js}} in the
                 Enterprise {(PayPal)}",
  journal =      j-QUEUE,
  volume =       "12",
  number =       "2",
  pages =        "80",
  month =        feb,
  year =         "2014",
  CODEN =        "AQCUAE",
  DOI =          "https://doi.org/10.1145/2578508.2602531",
  ISSN =         "1542-7730 (print), 1542-7749 (electronic)",
  ISSN-L =       "1542-7730",
  bibdate =      "Wed May 21 11:03:43 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/queue.bib",
  abstract =     "A case study in how PayPal revitalized its tech stack
                 by moving from Java, JSP and proprietary solutions to a
                 Node.js web application stack with dust.js templating.
                 Developer agility was our primary motivation, but along
                 the way we had to tackle enterprise culture and teach
                 people that JavaScript is no longer a ''toy'', but a
                 powerful tool to wield.
                 https://vimeo.com/nodesummit/review/85785820/40c2a4811a",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Queue: Tomorrow's Computing Today",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J882",
}

@Article{Balland:2014:ESP,
  author =       "Emilie Balland and Pierre-Etienne Moreau and Antoine
                 Reilles",
  title =        "Effective strategic programming for {Java}
                 developers",
  journal =      j-SPE,
  volume =       "44",
  number =       "2",
  pages =        "129--162",
  month =        feb,
  year =         "2014",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2159",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Thu Jan 23 06:00:41 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib;
                 http://www3.interscience.wiley.com/journalfinder.html",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "4 Oct 2012",
}

@Article{Barr:2014:TAT,
  author =       "Earl T. Barr and Mark Marron",
  title =        "{Tardis}: affordable time-travel debugging in managed
                 runtimes",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "67--82",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660209",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Developers who set a breakpoint a few statements too
                 late or who are trying to diagnose a subtle bug from a
                 single core dump often wish for a time-traveling
                 debugger. The ability to rewind time to see the exact
                 sequence of statements and program values leading to an
                 error has great intuitive appeal but, due to large time
                 and space overheads, time traveling debuggers have seen
                 limited adoption. A managed runtime, such as the Java
                 JVM or a JavaScript engine, has already paid much of
                 the cost of providing core features --- type safety,
                 memory management, and virtual IO --- that can be
                 reused to implement a low overhead time-traveling
                 debugger. We leverage this insight to design and build
                 affordable time-traveling debuggers for managed
                 languages. Tardis realizes our design: it provides
                 affordable time-travel with an average overhead of only
                 7\% during normal execution, a rate of 0.6MB/s of
                 history logging, and a worst-case 0.68s time-travel
                 latency on our benchmark applications. Tardis can also
                 debug optimized code using time-travel to reconstruct
                 state. This capability, coupled with its low overhead,
                 makes Tardis suitable for use as the default debugger
                 for managed languages, promising to bring
                 time-traveling debugging into the mainstream and
                 transform the practice of debugging.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Basanta-Val:2014:RMP,
  author =       "Pablo Basanta-Val and Marisol Garc{\'\i}a-Valls",
  title =        "Resource management policies for real-time {Java}
                 remote invocations",
  journal =      j-J-PAR-DIST-COMP,
  volume =       "74",
  number =       "1",
  pages =        "1930--1944",
  month =        jan,
  year =         "2014",
  CODEN =        "JPDCER",
  ISSN =         "0743-7315 (print), 1096-0848 (electronic)",
  ISSN-L =       "0743-7315",
  bibdate =      "Wed Dec 11 14:13:24 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jpardistcomp.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0743731513001378",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Parallel and Distributed Computing",
  journal-URL =  "http://www.sciencedirect.com/science/journal/07437315/",
}

@Article{Basanta-Val:2014:SDG,
  author =       "Pablo Basanta-Val and Marisol Garc{\'\i}a-Valls",
  title =        "A simple distributed garbage collector for distributed
                 real-time {Java}",
  journal =      j-J-SUPERCOMPUTING,
  volume =       "70",
  number =       "3",
  pages =        "1588--1616",
  month =        dec,
  year =         "2014",
  CODEN =        "JOSUED",
  DOI =          "https://doi.org/10.1007/s11227-014-1259-x",
  ISSN =         "0920-8542 (print), 1573-0484 (electronic)",
  ISSN-L =       "0920-8542",
  bibdate =      "Fri Feb 13 12:13:22 MST 2015",
  bibsource =    "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=0920-8542&volume=70&issue=3;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsuper.bib",
  URL =          "http://link.springer.com/article/10.1007/s11227-014-1259-x",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of Supercomputing",
  journal-URL =  "http://link.springer.com/journal/11227",
}

@Article{Bell:2014:PID,
  author =       "Jonathan Bell and Gail Kaiser",
  title =        "{Phosphor}: illuminating dynamic data flow in
                 commodity {JVMs}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "83--101",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660212",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Dynamic taint analysis is a well-known information
                 flow analysis problem with many possible applications.
                 Taint tracking allows for analysis of application data
                 flow by assigning labels to data, and then propagating
                 those labels through data flow. Taint tracking systems
                 traditionally compromise among performance, precision,
                 soundness, and portability. Performance can be
                 critical, as these systems are often intended to be
                 deployed to production environments, and hence must
                 have low overhead. To be deployed in security-conscious
                 settings, taint tracking must also be sound and
                 precise. Dynamic taint tracking must be portable in
                 order to be easily deployed and adopted for real world
                 purposes, without requiring recompilation of the
                 operating system or language interpreter, and without
                 requiring access to application source code. We present
                 Phosphor, a dynamic taint tracking system for the Java
                 Virtual Machine (JVM) that simultaneously achieves our
                 goals of performance, soundness, precision, and
                 portability. Moreover, to our knowledge, it is the
                 first portable general purpose taint tracking system
                 for the JVM. We evaluated Phosphor 's performance on
                 two commonly used JVM languages (Java and Scala), on
                 two successive revisions of two commonly used JVMs
                 (Oracle's HotSpot and OpenJDK's IcedTea) and on
                 Android's Dalvik Virtual Machine, finding its
                 performance to be impressive: as low as 3\% (53\% on
                 average; 220\% at worst) using the DaCapo macro
                 benchmark suite. This paper describes our approach
                 toward achieving portable taint tracking in the JVM.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Biswas:2014:DES,
  author =       "Swarnendu Biswas and Jipeng Huang and Aritra Sengupta
                 and Michael D. Bond",
  title =        "{DoubleChecker}: efficient sound and precise atomicity
                 checking",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "28--39",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594323",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Atomicity is a key correctness property that allows
                 programmers to reason about code regions in isolation.
                 However, programs often fail to enforce atomicity
                 correctly, leading to atomicity violations that are
                 difficult to detect. Dynamic program analysis can
                 detect atomicity violations based on an atomicity
                 specification, but existing approaches slow programs
                 substantially. This paper presents DoubleChecker, a
                 novel sound and precise atomicity checker whose key
                 insight lies in its use of two new cooperating dynamic
                 analyses. Its imprecise analysis tracks cross-thread
                 dependences soundly but imprecisely with significantly
                 better performance than a fully precise analysis. Its
                 precise analysis is more expensive but only needs to
                 process a subset of the execution identified as
                 potentially involved in atomicity violations by the
                 imprecise analysis. If DoubleChecker operates in
                 single-run mode, the two analyses execute in the same
                 program run, which guarantees soundness and precision
                 but requires logging program accesses to pass from the
                 imprecise to the precise analysis. In multi-run mode,
                 the first program run executes only the imprecise
                 analysis, and a second run executes both analyses.
                 Multi-run mode trades accuracy for performance; each
                 run of multi-run mode outperforms single-run mode, but
                 can potentially miss violations. We have implemented
                 DoubleChecker and an existing state-of-the-art
                 atomicity checker called Velodrome in a
                 high-performance Java virtual machine. DoubleChecker's
                 single-run mode significantly outperforms Velodrome,
                 while still providing full soundness and precision.
                 DoubleChecker's multi-run mode improves performance
                 further, without significantly impacting soundness in
                 practice. These results suggest that DoubleChecker's
                 approach is a promising direction for improving the
                 performance of dynamic atomicity checking over prior
                 work.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Bodin:2014:TMJ,
  author =       "Martin Bodin and Arthur Chargueraud and Daniele
                 Filaretti and Philippa Gardner and Sergio Maffeis and
                 Daiva Naudziuniene and Alan Schmitt and Gareth Smith",
  title =        "A trusted mechanised {JavaScript} specification",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "1",
  pages =        "87--100",
  month =        jan,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578855.2535876",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:04:57 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "POPL '14 conference proceedings.",
  abstract =     "JavaScript is the most widely used web language for
                 client-side applications. Whilst the development of
                 JavaScript was initially just led by implementation,
                 there is now increasing momentum behind the ECMA
                 standardisation process. The time is ripe for a formal,
                 mechanised specification of JavaScript, to clarify
                 ambiguities in the ECMA standards, to serve as a
                 trusted reference for high-level language compilation
                 and JavaScript implementations, and to provide a
                 platform for high-assurance proofs of language
                 properties. We present JSCert, a formalisation of the
                 current ECMA standard in the Coq proof assistant, and
                 JSRef, a reference interpreter for JavaScript extracted
                 from Coq to OCaml. We give a Coq proof that JSRef is
                 correct with respect to JSCert and assess JSRef using
                 test262, the ECMA conformance test suite. Our
                 methodology ensures that JSCert is a comparatively
                 accurate formulation of the English standard, which
                 will only improve as time goes on. We have demonstrated
                 that modern techniques of mechanised specification can
                 handle the complexity of JavaScript.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Bosboom:2014:SCC,
  author =       "Jeffrey Bosboom and Sumanaruban Rajadurai and Weng-Fai
                 Wong and Saman Amarasinghe",
  title =        "{StreamJIT}: a commensal compiler for high-performance
                 stream programming",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "177--195",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660236",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "There are many domain libraries, but despite the
                 performance benefits of compilation, domain-specific
                 languages are comparatively rare due to the high cost
                 of implementing an optimizing compiler. We propose
                 commensal compilation, a new strategy for compiling
                 embedded domain-specific languages by reusing the
                 massive investment in modern language virtual machine
                 platforms. Commensal compilers use the host language's
                 front-end, use host platform APIs that enable back-end
                 optimizations by the host platform JIT, and use an
                 autotuner for optimization selection. The cost of
                 implementing a commensal compiler is only the cost of
                 implementing the domain-specific optimizations. We
                 demonstrate the concept by implementing a commensal
                 compiler for the stream programming language StreamJIT
                 atop the Java platform. Our compiler achieves
                 performance 2.8 times better than the StreamIt native
                 code (via GCC) compiler with considerably less
                 implementation effort.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Bouktif:2014:PSO,
  author =       "Salah Bouktif and Houari Sahraoui and Faheem Ahmed",
  title =        "Predicting Stability of Open-Source Software Systems
                 Using Combination of {Bayesian} Classifiers",
  journal =      j-TMIS,
  volume =       "5",
  number =       "1",
  pages =        "3:1--3:??",
  month =        apr,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2555596",
  ISSN =         "2158-656X (print), 2158-6578 (electronic)",
  ISSN-L =       "2158-656X",
  bibdate =      "Tue Apr 15 17:44:19 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tmis/;
                 http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tmis.bib",
  abstract =     "The use of free and Open-Source Software (OSS) systems
                 is gaining momentum. Organizations are also now
                 adopting OSS, despite some reservations, particularly
                 about the quality issues. Stability of software is one
                 of the main features in software quality management
                 that needs to be understood and accurately predicted.
                 It deals with the impact resulting from software
                 changes and argues that stable components lead to a
                 cost-effective software evolution. Changes are most
                 common phenomena present in OSS in comparison to
                 proprietary software. This makes OSS system evolution a
                 rich context to study and predict stability. Our
                 objective in this work is to build stability prediction
                 models that are not only accurate but also
                 interpretable, that is, able to explain the link
                 between the architectural aspects of a software
                 component and its stability behavior in the context of
                 OSS. Therefore, we propose a new approach based on
                 classifiers combination capable of preserving
                 prediction interpretability. Our approach is
                 classifier-structure dependent. Therefore, we propose a
                 particular solution for combining Bayesian classifiers
                 in order to derive a more accurate composite classifier
                 that preserves interpretability. This solution is
                 implemented using a genetic algorithm and applied in
                 the context of an OSS large-scale system, namely the
                 standard Java API. The empirical results show that our
                 approach outperforms state-of-the-art approaches from
                 both machine learning and software engineering.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Management Information Systems
                 (TMIS)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1320",
}

@Book{Brandt:2014:DAS,
  author =       "Siegmund Brandt",
  title =        "Data analysis: statistical and computational methods
                 for scientists and engineers",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  edition =      "Fourth",
  pages =        "????",
  year =         "2014",
  DOI =          "https://doi.org/10.1007/978-3-319-03762-2",
  ISBN =         "3-319-03762-5 (e-book)",
  ISBN-13 =      "978-3-319-03762-2 (e-book), 978-3-319-03761-5,
                 978-3-319-03761-5",
  LCCN =         "QA273; QA273",
  bibdate =      "Sun May 4 11:27:21 MDT 2014",
  bibsource =    "catalog.princeton.edu:7090/voyager;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/probstat2010.bib;
                 libraries.colorado.edu:210/INNOPAC",
  abstract =     "The fourth edition of this successful textbook
                 presents a comprehensive introduction to statistical
                 and numerical methods for the evaluation of empirical
                 and experimental data. Equal weight is given to
                 statistical theory and practical problems. The concise
                 mathematical treatment of the subject matter is
                 illustrated by many examples, and for the present
                 edition a library of Java programs has been developed.
                 It comprises methods of numerical data analysis and
                 graphical representation as well as many example
                 programs and solutions to programming problems. The
                 programs (source code, Java classes, and documentation)
                 and extensive appendices to the main text are available
                 for free download from the books page at
                 www.springer.com. Contents Probabilities. Random
                 variables. Random numbers and the Monte Carlo Method.
                 Statistical distributions (binomial, Gauss, Poisson).
                 Samples. Statistical tests. Maximum Likelihood. Least
                 Squares. Regression. Minimization. Analysis of
                 Variance. Time series analysis. Audience The book is
                 conceived both as an introduction and as a work of
                 reference. In particular it addresses itself to
                 students, scientists and practitioners in science and
                 engineering as a help in the analysis of their data in
                 laboratory courses, working for bachelor or master
                 degrees, in thesis work, and in research and
                 professional work. The book is concise, but gives a
                 sufficiently rigorous mathematical treatment of
                 practical statistical methods for data analysis; it can
                 be of great use to all who are involved with data
                 analysis. Physicalia. This lively and erudite treatise
                 covers the theory of the main statistical tools and
                 their practical applications. A first rate university
                 textbook, and good background material for the
                 practicing physicist. Physics Bulletin.",
  acknowledgement = ack-nhfb,
  subject =      "Probabilities; Mathematical statistics",
  tableofcontents = "Introduction \\
                 Probabilities \\
                 Random Variables: Distributions \\
                 Computer-Generated Random Numbers: The Monte Carlo
                 Method \\
                 Some Important Distributions and Theorems \\
                 Samples \\
                 The Method of Maximum Likelihood \\
                 Testing Statistical Hypotheses \\
                 The Method of Least Squares \\
                 Function Minimization \\
                 Analysis of Variance \\
                 Linear and Polynomial Regression \\
                 Time-Series Analysis \\
                 (A) Matrix Calculations \\
                 (B) Combinatorics \\
                 (C) Formulas and Methods for the Computation of
                 Statistical Functions \\
                 (D) The Gamma Function and Related Functions: Methods
                 and Programs for their Computation \\
                 (E) Utility Programs \\
                 (F) The Graphics Class DatanGraphics \\
                 (G) Problems, Hints and Solutions and Programming
                 Problems \\
                 (H) Collection of Formulas \\
                 (I) Statistical Formulas \\
                 List of Computer Programs",
}

@Article{Caserta:2014:JTJ,
  author =       "Pierre Caserta and Olivier Zendra",
  title =        "{JBInsTrace}: a tracer of {Java} and {JRE} classes at
                 basic-block granularity by dynamically instrumenting
                 bytecode",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "79",
  number =       "??",
  pages =        "116--125",
  day =          "1",
  month =        jan,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Nov 30 15:06:12 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312000299",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Cazzola:2014:JBR,
  author =       "Walter Cazzola and Edoardo Vacchi",
  title =        "{@Java}: Bringing a richer annotation model to
                 {Java}",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "40",
  number =       "1",
  pages =        "2--18",
  month =        apr,
  year =         "2014",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Wed Apr 9 06:43:48 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842414000037",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Chong:2014:CCT,
  author =       "Stephen Chong",
  title =        "Checking correctness of {TypeScript} interfaces for
                 {JavaScript} libraries",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "1--16",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660215",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The TypeScript programming language adds optional
                 types to JavaScript, with support for interaction with
                 existing JavaScript libraries via interface
                 declarations. Such declarations have been written for
                 hundreds of libraries, but they can be difficult to
                 write and often contain errors, which may affect the
                 type checking and misguide code completion for the
                 application code in IDEs. We present a pragmatic
                 approach to check correctness of TypeScript declaration
                 files with respect to JavaScript library
                 implementations. The key idea in our algorithm is that
                 many declaration errors can be detected by an analysis
                 of the library initialization state combined with a
                 light-weight static analysis of the library function
                 code. Our experimental results demonstrate the
                 effectiveness of the approach: it has found 142 errors
                 in the declaration files of 10 libraries, with an
                 analysis time of a few minutes per library and with a
                 low number of false positives. Our analysis of how
                 programmers use library interface declarations
                 furthermore reveals some practical limitations of the
                 TypeScript type system.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Clifford:2014:AFB,
  author =       "Daniel Clifford and Hannes Payer and Michael
                 Starzinger and Ben L. Titzer",
  title =        "Allocation folding based on dominance",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "11",
  pages =        "15--24",
  month =        nov,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775049.2602994",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Memory management system performance is of increasing
                 importance in today's managed languages. Two lingering
                 sources of overhead are the direct costs of memory
                 allocations and write barriers. This paper introduces
                 it allocation folding, an optimization technique where
                 the virtual machine automatically folds multiple memory
                 allocation operations in optimized code together into a
                 single, larger it allocation group. An allocation group
                 comprises multiple objects and requires just a single
                 bounds check in a bump-pointer style allocation, rather
                 than a check for each individual object. More
                 importantly, all objects allocated in a single
                 allocation group are guaranteed to be contiguous after
                 allocation and thus exist in the same generation, which
                 makes it possible to statically remove write barriers
                 for reference stores involving objects in the same
                 allocation group. Unlike object inlining, object
                 fusing, and object colocation, allocation folding
                 requires no special connectivity or ownership relation
                 between the objects in an allocation group. We present
                 our analysis algorithm to determine when it is safe to
                 fold allocations together and discuss our
                 implementation in V8, an open-source, production
                 JavaScript virtual machine. We present performance
                 results for the Octane and Kraken benchmark suites and
                 show that allocation folding is a strong performance
                 improvement, even in the presence of some heap
                 fragmentation. Additionally, we use four hand-selected
                 benchmarks JPEGEncoder, NBody, Soft3D, and Textwriter
                 where allocation folding has a large impact.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '14 conference proceedings.",
}

@Article{David:2014:CMC,
  author =       "Florian David and Gael Thomas and Julia Lawall and
                 Gilles Muller",
  title =        "Continuously measuring critical section pressure with
                 the free-lunch profiler",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "291--307",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660210",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Today, Java is regularly used to implement large
                 multi-threaded server-class applications that use locks
                 to protect access to shared data. However,
                 understanding the impact of locks on the performance of
                 a system is complex, and thus the use of locks can
                 impede the progress of threads on configurations that
                 were not anticipated by the developer, during specific
                 phases of the execution. In this paper, we propose Free
                 Lunch, a new lock profiler for Java application
                 servers, specifically designed to identify, in-vivo,
                 phases where the progress of the threads is impeded by
                 a lock. Free Lunch is designed around a new metric,
                 critical section pressure (CSP), which directly
                 correlates the progress of the threads to each of the
                 locks. Using Free Lunch, we have identified phases of
                 high CSP, which were hidden with other lock profilers,
                 in the distributed Cassandra NoSQL database and in
                 several applications from the DaCapo 9.12, the
                 SPECjvm2008 and the SPECjbb2005 benchmark suites. Our
                 evaluation of Free Lunch shows that its overhead is
                 never greater than 6\%, making it suitable for in-vivo
                 use.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{DeNicola:2014:FAA,
  author =       "Rocco {De Nicola} and Michele Loreti and Rosario
                 Pugliese and Francesco Tiezzi",
  title =        "A Formal Approach to Autonomic Systems Programming:
                 The {SCEL} Language",
  journal =      j-TAAS,
  volume =       "9",
  number =       "2",
  pages =        "7:1--7:??",
  month =        jul,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2619998",
  ISSN =         "1556-4665 (print), 1556-4703 (electronic)",
  ISSN-L =       "1556-4665",
  bibdate =      "Tue Jul 8 16:04:06 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taas.bib",
  abstract =     "The autonomic computing paradigm has been proposed to
                 cope with size, complexity, and dynamism of
                 contemporary software-intensive systems. The challenge
                 for language designers is to devise appropriate
                 abstractions and linguistic primitives to deal with the
                 large dimension of systems and with their need to adapt
                 to the changes of the working environment and to the
                 evolving requirements. We propose a set of programming
                 abstractions that permit us to represent behaviors,
                 knowledge, and aggregations according to specific
                 policies and to support programming context-awareness,
                 self-awareness, and adaptation. Based on these
                 abstractions, we define SCEL (Software Component
                 Ensemble Language), a kernel language whose solid
                 semantic foundations lay also the basis for formal
                 reasoning on autonomic systems behavior. To show
                 expressiveness and effectiveness of SCEL;'s design, we
                 present a Java implementation of the proposed
                 abstractions and show how it can be exploited for
                 programming a robotics scenario that is used as a
                 running example for describing the features and
                 potential of our approach.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Autonomous and Adaptive Systems
                 (TAAS)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1010",
}

@Article{Dissegna:2014:TCA,
  author =       "Stefano Dissegna and Francesco Logozzo and Francesco
                 Ranzato",
  title =        "Tracing compilation by abstract interpretation",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "1",
  pages =        "47--59",
  month =        jan,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578855.2535866",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:04:57 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "POPL '14 conference proceedings.",
  abstract =     "Tracing just-in-time compilation is a popular
                 compilation schema for the efficient implementation of
                 dynamic languages, which is commonly used for
                 JavaScript, Python, and PHP. It relies on two key
                 ideas. First, it monitors the execution of the program
                 to detect so-called hot paths, i.e., the most
                 frequently executed paths. Then, it uses some store
                 information available at runtime to optimize hot paths.
                 The result is a residual program where the optimized
                 hot paths are guarded by sufficient conditions ensuring
                 the equivalence of the optimized path and the original
                 program. The residual program is persistently mutated
                 during its execution, e.g., to add new optimized paths
                 or to merge existing paths. Tracing compilation is thus
                 fundamentally different than traditional static
                 compilation. Nevertheless, despite the remarkable
                 practical success of tracing compilation, very little
                 is known about its theoretical foundations. We
                 formalize tracing compilation of programs using
                 abstract interpretation. The monitoring (viz., hot path
                 detection) phase corresponds to an abstraction of the
                 trace semantics that captures the most frequent
                 occurrences of sequences of program points together
                 with an abstraction of their corresponding stores,
                 e.g., a type environment. The optimization (viz.,
                 residual program generation) phase corresponds to a
                 transform of the original program that preserves its
                 trace semantics up to a given observation as modeled by
                 some abstraction. We provide a generic framework to
                 express dynamic optimizations and to prove them
                 correct. We instantiate it to prove the correctness of
                 dynamic type specialization. We show that our framework
                 is more general than a recent model of tracing
                 compilation introduced in POPL~2011 by Guo and Palsberg
                 (based on operational bisimulations). In our model we
                 can naturally express hot path reentrance and common
                 optimizations like dead-store elimination, which are
                 either excluded or unsound in Guo and Palsberg's
                 framework.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Dyer:2014:DVE,
  author =       "Robert Dyer and Hridesh Rajan and Tien N. Nguyen",
  title =        "Declarative visitors to ease fine-grained source code
                 mining with full history on billions of {AST} nodes",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "23--32",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517226",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Software repositories contain a vast wealth of
                 information about software development. Mining these
                 repositories has proven useful for detecting patterns
                 in software development, testing hypotheses for new
                 software engineering approaches, etc. Specifically,
                 mining source code has yielded significant insights
                 into software development artifacts and processes.
                 Unfortunately, mining source code at a large-scale
                 remains a difficult task. Previous approaches had to
                 either limit the scope of the projects studied, limit
                 the scope of the mining task to be more coarse-grained,
                 or sacrifice studying the history of the code due to
                 both human and computational scalability issues. In
                 this paper we address the substantial challenges of
                 mining source code: (a) at a very large scale; (b) at a
                 fine-grained level of detail; and (c) with full history
                 information. To address these challenges, we present
                 domain-specific language features for source code
                 mining. Our language features are inspired by
                 object-oriented visitors and provide a default
                 depth-first traversal strategy along with two
                 expressions for defining custom traversals. We provide
                 an implementation of these features in the Boa
                 infrastructure for software repository mining and
                 describe a code generation strategy into Java code. To
                 show the usability of our domain-specific language
                 features, we reproduced over 40 source code mining
                 tasks from two large-scale previous studies in just 2
                 person-weeks. The resulting code for these tasks show
                 between $ 2.0 \times $--$ 4.8 \times $ reduction in
                 code size. Finally we perform a small controlled
                 experiment to gain insights into how easily mining
                 tasks written using our language features can be
                 understood, with no prior training. We show a
                 substantial number of tasks (77\%) were understood by
                 study participants, in about 3 minutes per task.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Eichelberger:2014:FRM,
  author =       "Holger Eichelberger and Klaus Schmid",
  title =        "Flexible resource monitoring of {Java} programs",
  journal =      j-J-SYST-SOFTW,
  volume =       "93",
  number =       "??",
  pages =        "163--186",
  month =        jul,
  year =         "2014",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Wed May 21 07:51:51 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121214000533",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Article{Erdweg:2014:FEL,
  author =       "Sebastian Erdweg and Felix Rieger",
  title =        "A framework for extensible languages",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "3--12",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517210",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Extensible programming languages such as SugarJ or
                 Racket enable programmers to introduce customary
                 language features as extensions of the base language.
                 Traditionally, systems that support language extensions
                 are either (i) agnostic to the base language or (ii)
                 only support a single base language. In this paper, we
                 present a framework for language extensibility that
                 turns a non-extensible language into an extensible
                 language featuring library-based extensible syntax,
                 extensible static analyses, and extensible editor
                 support. To make a language extensible, our framework
                 only requires knowledge of the base language's grammar,
                 the syntax for import statements (which activate
                 extensions), and how to compile base-language programs.
                 We have evaluated the generality of our framework by
                 instantiating it for Java, Haskell, Prolog, JavaScript,
                 and System F$_{ \omega }$, and by studying existing
                 module-system features and their support in our
                 framework.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Eslamimehr:2014:RDS,
  author =       "Mahdi Eslamimehr and Jens Palsberg",
  title =        "Race directed scheduling of concurrent programs",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "8",
  pages =        "301--314",
  month =        aug,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2692916.2555263",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Nov 26 16:26:30 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Detection of data races in Java programs remains a
                 difficult problem. The best static techniques produce
                 many false positives, and also the best dynamic
                 techniques leave room for improvement. We present a new
                 technique called race directed scheduling that for a
                 given race candidate searches for an input and a
                 schedule that lead to the race. The search iterates a
                 combination of concolic execution and schedule
                 improvement, and turns out to find useful inputs and
                 schedules efficiently. We use an existing technique to
                 produce a manageable number of race candidates. Our
                 experiments on 23 Java programs found 72 real races
                 that were missed by the best existing dynamic
                 techniques. Among those 72 races, 31 races were found
                 with schedules that have between 1 million and 108
                 million events, which suggests that they are rare and
                 hard-to-find races.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '14 conference proceedings.",
}

@Article{Estevez-Ayres:2014:CSS,
  author =       "Iria Est{\'e}vez-Ayres and Pablo Basanta-Val and
                 Marisol Garc{\'\i}a-Valls",
  title =        "Composing and scheduling service-oriented applications
                 in time-triggered distributed real-time {Java}
                 environments",
  journal =      j-CCPE,
  volume =       "26",
  number =       "1",
  pages =        "152--193",
  month =        jan,
  year =         "2014",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.2958",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Feb 8 15:45:08 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "11 Dec 2012",
}

@Article{Fu:2014:FDC,
  author =       "Yupeng Fu and Kian Win Ong and Yannis Papakonstantinou
                 and Erick Zamora",
  title =        "Forward: data-centric {ULS} using declarative
                 templates that efficiently wrap third-party
                 {JavaScript} components",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "7",
  number =       "13",
  pages =        "1649--1652",
  month =        aug,
  year =         "2014",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Wed Feb 4 17:20:31 MST 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "While Ajax programming and the plethora of JavaScript
                 component libraries enable high-quality Uls in web
                 applications, integrating them with page data is
                 laborious and error-prone as a developer has to
                 handcode incremental modifications with trigger-based
                 programming and manual coordination of data
                 dependencies. The FORWARD web framework simplifies the
                 development of Ajax applications through declarative,
                 state-based templates. This declarative, data-centric
                 approach is characterized by the principle of
                 logical/physical independence, which the database
                 community has often deployed successfully. It enables
                 FORWARD to leverage database techniques, such as
                 incremental view maintenance, updatable views,
                 capability-based component wrappers and cost-based
                 optimization to automate efficient live visualizations.
                 We demonstrate an end-to-end system implementation,
                 including a web-based IDE (itself built in FORWARD),
                 academic and commercial applications built in FORWARD
                 and a wide variety of JavaScript components supported
                 by the declarative templates.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Gerakios:2014:RTP,
  author =       "Prodromos Gerakios and Aggelos Biboudis and Yannis
                 Smaragdakis",
  title =        "Reified type parameters using {Java} annotations",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "61--64",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517223",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Java generics are compiled by-erasure: all clients
                 reuse the same bytecode, with uses of the unknown type
                 erased. C++ templates are compiled by-expansion: each
                 type-instantiation of a template produces a different
                 code definition. The two approaches offer trade-offs on
                 multiple axes. We propose an extension of Java generics
                 that allows by-expansion translation relative to
                 selected type parameters only. This language design
                 allows sophisticated users to get the best of both
                 worlds at a fine granularity. Furthermore, our proposal
                 is based on Java 8 Type Annotations (JSR 308) and the
                 Checker Framework as an abstraction layer for
                 controlling compilation without changes to the
                 internals of a Java compiler.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Golan-Gueta:2014:ASL,
  author =       "Guy Golan-Gueta and G. Ramalingam and Mooly Sagiv and
                 Eran Yahav",
  title =        "Automatic semantic locking",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "8",
  pages =        "385--386",
  month =        aug,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2692916.2555281",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Nov 26 16:26:30 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In this paper, we consider concurrent programs in
                 which the shared state consists of instances of
                 linearizable ADTs (abstract data types). We develop a
                 novel automated approach to concurrency control that
                 addresses a common need: the need to atomically execute
                 a code fragment, which may contain multiple ADT
                 operations on multiple ADT instances. In our approach,
                 each ADT implements ADT-specific semantic locking
                 operations that serve to exploit the semantics of ADT
                 operations. We develop a synthesis algorithm that
                 automatically inserts calls to these locking operations
                 in a set of given code fragments (in a client program)
                 to ensure that these code fragments execute atomically
                 without deadlocks, and without rollbacks. We have
                 implemented the synthesis algorithm and several
                 general-purpose ADTs with semantic locking. We have
                 applied the synthesis algorithm to several Java
                 programs that use these ADTs. Our results show that our
                 approach enables efficient and scalable
                 synchronization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '14 conference proceedings.",
}

@Book{Gosling:2014:JLS,
  author =       "James Gosling and Bill Joy and Guy L. {Steele Jr.} and
                 Gilad Bracha and Alex Buckley",
  title =        "The {Java} Language Specification",
  publisher =    pub-AW,
  address =      pub-AW,
  edition =      "{Java SE 8}",
  pages =        "xxii + 758",
  year =         "2014",
  ISBN =         "0-13-390069-X (paperback)",
  ISBN-13 =      "978-0-13-390069-9 (paperback)",
  LCCN =         "QA76.73.J38 G68 2014",
  bibdate =      "Sat Dec 17 13:05:12 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib;
                 z3950.loc.gov:7090/Voyager",
  abstract =     "Written by the inventors of the technology,
                 \booktitle{The Java Language Specification, Java SE 8
                 Edition} is the definitive technical reference for the
                 Java programming language. The book provides complete,
                 accurate, and detailed coverage of the Java programming
                 language. It fully describes the new features added in
                 Java SE 8, including lambda expressions, method
                 references, default methods, type annotations, and
                 repeating annotations. The book also includes many
                 explanatory notes and carefully distinguishes the
                 formal rules of the language from the practical
                 behavior of compilers.",
  acknowledgement = ack-nhfb,
  author-dates = "1955--",
  subject =      "Java (Computer program language)",
  tableofcontents = "Introduction \\
                 Grammars \\
                 Lexical Structure \\
                 Types, Values, and Variables \\
                 Conversions and Contexts \\
                 Names \\
                 Packages \\
                 Classes \\
                 Interfaces \\
                 Arrays \\
                 Exceptions \\
                 Execution \\
                 Binary Compatibility \\
                 Blocks and Statements \\
                 Expressions \\
                 Definite Assignment \\
                 Threads and Locks \\
                 Type Inference \\
                 Syntax",
}

@Article{Greenman:2014:GFB,
  author =       "Ben Greenman and Fabian Muehlboeck and Ross Tate",
  title =        "Getting {F}-bounded polymorphism into shape",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "89--99",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594308",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a way to restrict recursive inheritance
                 without sacrificing the benefits of F-bounded
                 polymorphism. In particular, we distinguish two new
                 concepts, materials and shapes, and demonstrate through
                 a survey of 13.5 million lines of open-source
                 generic-Java code that these two concepts never
                 actually overlap in practice. With this Material-Shape
                 Separation, we prove that even na{\"\i}ve type-checking
                 algorithms are sound and complete, some of which
                 address problems that were unsolvable even under the
                 existing proposals for restricting inheritance. We
                 illustrate how the simplicity of our design reflects
                 the design intuitions employed by programmers and
                 potentially enables new features coming into demand for
                 upcoming programming languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Gunther:2014:ACC,
  author =       "John C. Gunther",
  title =        "{Algorithm 938}: Compressing circular buffers",
  journal =      j-TOMS,
  volume =       "40",
  number =       "2",
  pages =        "17:1--17:12",
  month =        feb,
  year =         "2014",
  CODEN =        "ACMSCU",
  DOI =          "https://doi.org/10.1145/2559995",
  ISSN =         "0098-3500 (print), 1557-7295 (electronic)",
  ISSN-L =       "0098-3500",
  bibdate =      "Fri Mar 14 06:30:41 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toms.bib",
  abstract =     "Data sequences generated by on-line sensors can become
                 arbitrarily large and must, therefore, be pared down to
                 fit into available memory. For situations where only
                 the most recent data is of interest, this problem can
                 be solved with optimal efficiency by a simple circular
                 buffer: it fills each memory location with useful data,
                 and requires just one write to memory per update. The
                 algorithm presented here provides essentially the same
                 efficiency, but while maintaining a continuously
                 updated, fixed-size, compressed representation of the
                 entire data sequence. Each value in these compressed
                 sequences represents a statistic (an average, maximum,
                 random sample, etc.) computed over a contiguous chunk
                 of the original sequence. Compressing circular buffers
                 gain their efficiency by using an alternative indexing
                 sequence, based on well-known principles of elementary
                 number theory, to ensure that each newly written value
                 gets stored in the unoccupied location created when the
                 two oldest sequential over-sampled values are
                 compressed into one. The associated Java implementation
                 supports a variety of aggregating statistics and is
                 used to compare the algorithm's performance with a more
                 obvious approach (doubling).",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Mathematical Software (TOMS)",
  journal-URL =  "http://dl.acm.org/pub.cfm?id=J782",
}

@Article{Guyer:2014:UJT,
  author =       "Samuel Z. Guyer",
  title =        "Use of the {JVM} at {Twitter}: a bird's eye view",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "11",
  pages =        "1--1",
  month =        nov,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775049.2619208",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Specialties: 15+ years of virtual machine
                 implementation experience with special focus on memory
                 management / garbage collection. Close to 20 years of
                 C/C++ experience. 15+ years of Java experience. Expert
                 in concurrent/parallel programming.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '14 conference proceedings.",
}

@Article{Haubl:2014:TTE,
  author =       "Christian H{\"a}ubl and Christian Wimmer and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Trace transitioning and exception handling in a
                 trace-based {JIT} compiler for {Java}",
  journal =      j-TACO,
  volume =       "11",
  number =       "1",
  pages =        "6:1--6:??",
  month =        feb,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2579673",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Fri Mar 14 17:30:52 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "Trace-based Just-In-Time (JIT) compilation generates
                 machine code for frequently executed paths (so-called
                 traces) instead of whole methods. While this has
                 several advantages, it complicates invocation of
                 compiled traces as well as exception handling, so that
                 previous trace-based compilers limited the way in which
                 traces could be invoked. We present a significantly
                 enhanced trace-based compiler where arbitrary
                 transitions between interpreted and compiled traces are
                 possible. For that, we introduce suitable trace calling
                 conventions and extend exception handling to work both
                 within traces and across trace boundaries. Furthermore,
                 we use the recorded trace information for optimizations
                 and combine the tracing ideas with ideas from
                 partial-method compilation to avoid code bloat. An
                 extensive evaluation with the benchmark suites DaCapo
                 9.12 Bach and SPECjvm2008 shows that our trace-based
                 compiler achieves up to 59\% higher peak performance
                 than the method-based Java HotSpot client compiler. On
                 a few benchmarks, our fairly simple trace-based
                 compiler shows a higher peak performance than the Java
                 HotSpot server compiler, which is one of today's best
                 optimizing JIT compilers for Java.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Higuera-Toledano:2014:EIS,
  author =       "M. Teresa Higuera-Toledano and Andy Wellings",
  title =        "Editorials: Introduction to the {Special Issue on Java
                 Technologies for Real-Time and Embedded Systems: JTRES
                 2012}",
  journal =      j-CCPE,
  volume =       "26",
  number =       "14",
  pages =        "2405--2406",
  day =          "25",
  month =        sep,
  year =         "2014",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3310",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Wed Feb 11 22:34:10 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "19 Jun 2014",
}

@Article{Hlopko:2014:ISJ,
  author =       "Marcel Hlopko and Jan Kurs and Jan Vran{\'y} and Claus
                 Gittinger",
  title =        "On the integration of {Smalltalk} and {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "96 (part 1)",
  number =       "??",
  pages =        "17--33",
  day =          "15",
  month =        dec,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue Oct 21 18:32:39 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642313002839",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Horie:2014:SDJ,
  author =       "Michihiro Horie and Kazunori Ogata and Kiyokuni
                 Kawachiya and Tamiya Onodera",
  title =        "String deduplication for {Java}-based middleware in
                 virtualized environments",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "7",
  pages =        "177--188",
  month =        jul,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2674025.2576210",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:29:50 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "To increase the memory efficiency in physical servers
                 is a significant concern for increasing the number of
                 virtual machines (VM) in them. When similar web
                 application service runs in each guest VM, many string
                 data with the same values are created in every guest
                 VMs. These duplications of string data are redundant
                 from the viewpoint of memory efficiency in the host OS.
                 This paper proposes two approaches to reduce the
                 duplication in Java string in a single Java VM (JVM)
                 and across JVMs. The first approach is to share string
                 objects cross JVMs by using a read-only memory-mapped
                 file. The other approach is to selectively unify string
                 objects created at runtime in the web applications.
                 This paper evaluates our approach by using the Apache
                 DayTrader and the DaCapo benchmark suite. Our prototype
                 implementation achieved 7\% to 12\% reduction in the
                 total size of the objects allocated over the lifetime
                 of the programs. In addition, we observed the
                 performance of DayTrader was maintained even under a
                 situation of high density guest VMs in a KVM host
                 machine.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '14 conference proceedings.",
}

@Article{Hower:2014:HRF,
  author =       "Derek R. Hower and Blake A. Hechtman and Bradford M.
                 Beckmann and Benedict R. Gaster and Mark D. Hill and
                 Steven K. Reinhardt and David A. Wood",
  title =        "Heterogeneous-race-free memory models",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "42",
  number =       "1",
  pages =        "427--440",
  month =        mar,
  year =         "2014",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2654822.2541981",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Aug 18 17:12:47 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "Commodity heterogeneous systems (e.g., integrated CPUs
                 and GPUs), now support a unified, shared memory address
                 space for all components. Because the latency of global
                 communication in a heterogeneous system can be
                 prohibitively high, heterogeneous systems (unlike
                 homogeneous CPU systems) provide synchronization
                 mechanisms that only guarantee ordering among a subset
                 of threads, which we call a scope. Unfortunately, the
                 consequences and semantics of these scoped operations
                 are not yet well under-stood. Without a formal and
                 approachable model to reason about the behavior of
                 these operations, we risk an array of portability and
                 performance issues. In this paper, we embrace scoped
                 synchronization with a new class of memory consistency
                 models that add scoped synchronization to
                 data-race-free models like those of C++ and Java.
                 Called sequential consistency for
                 heterogeneous-race-free (SC for HRF), the new models
                 guarantee SC for programs with ``sufficient''
                 synchronization (no data races) of ``sufficient''
                 scope. We discuss two such models. The first,
                 HRF-direct, works well for programs with highly regular
                 parallelism. The second, HRF-indirect, builds on
                 HRF-direct by allowing synchronization using different
                 scopes in some cases involving transitive
                 communication. We quantitatively show that HRF-indirect
                 encourages forward-looking programs with irregular
                 parallelism by showing up to a 10\% performance
                 increase in a task runtime for GPUs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
  remark =       "ASPLOS '14 conference proceedings.",
}

@Article{Hsiao:2014:UWC,
  author =       "Chun-Hung Hsiao and Michael Cafarella and Satish
                 Narayanasamy",
  title =        "Using web corpus statistics for program analysis",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "49--65",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660226",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Several program analysis tools --- such as plagiarism
                 detection and bug finding --- rely on knowing a piece
                 of code's relative semantic importance. For example, a
                 plagiarism detector should not bother reporting two
                 programs that have an identical simple loop counter
                 test, but should report programs that share more
                 distinctive code. Traditional program analysis
                 techniques ( e.g., finding data and control
                 dependencies) are useful, but do not say how surprising
                 or common a line of code is. Natural language
                 processing researchers have encountered a similar
                 problem and addressed it using an n -gram model of text
                 frequency, derived from statistics computed over text
                 corpora. We propose and compute an n -gram model for
                 programming languages, computed over a corpus of 2.8
                 million JavaScript programs we downloaded from the Web.
                 In contrast to previous techniques, we describe a code
                 n -gram as a subgraph of the program dependence graph
                 that contains all nodes and edges reachable in n steps
                 from the statement. We can count n -grams in a program
                 and count the frequency of n -grams in the corpus,
                 enabling us to compute tf-idf -style measures that
                 capture the differing importance of different lines of
                 code. We demonstrate the power of this approach by
                 implementing a plagiarism detector with accuracy that
                 beats previous techniques, and a bug-finding tool that
                 discovered over a dozen previously unknown bugs in a
                 collection of real deployed programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Jagannathan:2014:ARV,
  author =       "Suresh Jagannathan and Vincent Laporte and Gustavo
                 Petri and David Pichardie and Jan Vitek",
  title =        "Atomicity refinement for verified compilation",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "27--27",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594346",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We consider the verified compilation of high-level
                 managed languages like Java or C\# whose intermediate
                 representations provide support for shared-memory
                 synchronization and automatic memory management. In
                 this environment, the interactions between application
                 threads and the language runtime (e.g., the garbage
                 collector) are regulated by compiler-injected code
                 snippets. Example of snippets include allocation fast
                 paths among others. In our TOPLAS paper we propose a
                 refinement-based proof methodology that precisely
                 relates concurrent code expressed at different
                 abstraction levels, cognizant throughout of the relaxed
                 memory semantics of the underlying processor. Our
                 technique allows the compiler writer to reason
                 compositionally about the atomicity of low-level
                 concurrent code used to implement managed services. We
                 illustrate our approach with examples taken from the
                 verification of a concurrent garbage collector.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Jung:2014:HCO,
  author =       "Dong-Heon Jung and Soo-Mook Moon and Hyeong-Seok Oh",
  title =        "Hybrid compilation and optimization for {Java}-based
                 digital {TV} platforms",
  journal =      j-TECS,
  volume =       "13",
  number =       "2s",
  pages =        "62:1--62:??",
  month =        jan,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2506257",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Tue Jan 28 17:34:43 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "The Java-based software platform for interactive
                 digital TV (DTV) is composed of the system/middleware
                 class statically installed on the DTV set-top box and
                 the xlet applications dynamically downloaded from the
                 TV stations. The xlet application includes Java classes
                 and image/text files. The xlets are executed only when
                 the TV viewer initiates an interaction, even if the
                 xlets have been completely downloaded. To achieve high
                 performance on this dual-component, user-initiated
                 system, existing just-in-time (JIT) compilation and
                 optimization is not enough; instead, ahead-of-time and
                 idle-time compilation and optimization are also needed,
                 requiring a hybrid compilation and optimization
                 environment. We constructed such a hybrid environment
                 for a commercial DTV software platform and evaluated it
                 using real, on-air xlet applications. Our experimental
                 results show that the proposed hybrid environment can
                 improve the DTV Java performance by more than three
                 times, compared to the JIT-only environment, with
                 little change to other DTV behavior.",
  acknowledgement = ack-nhfb,
  articleno =    "62",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Kaiser:2014:WAM,
  author =       "Alexander Kaiser and Daniel Kroening and Thomas Wahl",
  title =        "A Widening Approach to Multithreaded Program
                 Verification",
  journal =      j-TOPLAS,
  volume =       "36",
  number =       "4",
  pages =        "14:1--14:??",
  month =        oct,
  year =         "2014",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2629608",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 28 17:05:40 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Pthread-style multithreaded programs feature rich
                 thread communication mechanisms, such as shared
                 variables, signals, and broadcasts. In this article, we
                 consider the automated verification of such programs
                 where an unknown number of threads execute a given
                 finite-data procedure in parallel. Such procedures are
                 typically obtained as predicate abstractions of
                 recursion-free source code written in C or Java. Many
                 safety problems over finite-data replicated
                 multithreaded programs are decidable via a reduction to
                 the coverability problem in certain types of
                 well-ordered infinite-state transition systems. On the
                 other hand, in full generality, this problem is
                 Ackermann-hard, which seems to rule out efficient
                 algorithmic treatment. We present a novel, sound, and
                 complete yet empirically efficient solution. Our
                 approach is to judiciously widen the original set of
                 coverability targets by configurations that involve
                 fewer threads and are thus easier to decide, and whose
                 exploration may well be sufficient: if they turn out
                 uncoverable, so are the original targets. To soften the
                 impact of ``bad guesses''-configurations that turn out
                 coverable-the exploration is accompanied by a parallel
                 engine that generates coverable configurations; none of
                 these is ever selected for widening. Its job being
                 merely to prevent bad widening choices, such an engine
                 need not be complete for coverability analysis, which
                 enables a range of existing partial (e.g.,
                 nonterminating) techniques. We present extensive
                 experiments on multithreaded C programs, including
                 device driver code from FreeBSD, Solaris, and Linux
                 distributions. Our approach outperforms existing
                 coverability methods by orders of magnitude.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Kalibera:2014:FAS,
  author =       "Tomas Kalibera and Petr Maj and Floreal Morandat and
                 Jan Vitek",
  title =        "A fast abstract syntax tree interpreter for {R}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "7",
  pages =        "89--102",
  month =        jul,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2674025.2576205",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:29:50 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/s-plus.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic languages have been gaining popularity to the
                 point that their performance is starting to matter. The
                 effort required to develop a production-quality,
                 high-performance runtime is, however, staggering and
                 the expertise required to do so is often out of reach
                 of the community maintaining a particular language.
                 Many domain specific languages remain stuck with naive
                 implementations, as they are easy to write and simple
                 to maintain for domain scientists. In this paper, we
                 try to see how far one can push a naive implementation
                 while remaining portable and not requiring expertise in
                 compilers and runtime systems. We choose the R
                 language, a dynamic language used in statistics, as the
                 target of our experiment and adopt the simplest
                 possible implementation strategy, one based on
                 evaluation of abstract syntax trees. We build our
                 interpreter on top of a Java virtual machine and use
                 only facilities available to all Java programmers. We
                 compare our results to other implementations of R.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '14 conference proceedings.",
}

@Article{Kashyap:2014:TRS,
  author =       "Vineeth Kashyap and John Sarracino and John Wagner and
                 Ben Wiedermann and Ben Hardekopf",
  title =        "Type refinement for static analysis of {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "17--26",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508175",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:05:03 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "Static analysis of JavaScript has proven useful for a
                 variety of purposes, including optimization, error
                 checking, security auditing, program refactoring, and
                 more. We propose a technique called type refinement
                 that can improve the precision of such static analyses
                 for JavaScript without any discernible performance
                 impact. Refinement is a known technique that uses the
                 conditions in branch guards to refine the analysis
                 information propagated along each branch path. The key
                 insight of this paper is to recognize that JavaScript
                 semantics include many implicit conditional checks on
                 types, and that performing type refinement on these
                 implicit checks provides significant benefit for
                 analysis precision. To demonstrate the effectiveness of
                 type refinement, we implement a static analysis tool
                 for reporting potential type-errors in JavaScript
                 programs. We provide an extensive empirical evaluation
                 of type refinement using a benchmark suite containing a
                 variety of JavaScript application domains, ranging from
                 the standard performance benchmark suites (Sunspider
                 and Octane), to open-source JavaScript applications, to
                 machine-generated JavaScript via Emscripten. We show
                 that type refinement can significantly improve analysis
                 precision by up to 86\% without affecting the
                 performance of the analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Kedlaya:2014:DDL,
  author =       "Madhukar N. Kedlaya and Behnam Robatmili and Cglin
                 Cascaval and Ben Hardekopf",
  title =        "Deoptimization for dynamic language {JITs} on typed,
                 stack-based virtual machines",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "7",
  pages =        "103--114",
  month =        jul,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2674025.2576209",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:29:50 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We are interested in implementing dynamic language
                 runtimes on top of language-level virtual machines.
                 Type specialization is a critical optimization for
                 dynamic language runtimes: generic code that handles
                 any type of data is replaced with specialized code for
                 particular types observed during execution. However,
                 types can change, and the runtime must recover whenever
                 unexpected types are encountered. The state-of-the-art
                 recovery mechanism is called deoptimization.
                 Deoptimization is a well-known technique for dynamic
                 language runtimes implemented in low-level languages
                 like C. However, no dynamic language runtime
                 implemented on top of a virtual machine such as the
                 Common Language Runtime (CLR) or the Java Virtual
                 Machine (JVM) uses deoptimization, because the
                 implementation thereof used in low-level languages is
                 not possible. In this paper we propose a novel
                 technique that enables deoptimization for dynamic
                 language runtimes implemented on top of typed,
                 stack-based virtual machines. Our technique does not
                 require any changes to the underlying virtual machine.
                 We implement our proposed technique in a JavaScript
                 language implementation, MCJS, running on top of the
                 Mono runtime (CLR). We evaluate our implementation
                 against the current state-of-the-art recovery mechanism
                 for virtual machine-based runtimes, as implemented both
                 in MCJS and in IronJS. We show that deoptimization
                 provides significant performance benefits, even for
                 runtimes running on top of a virtual machine.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '14 conference proceedings.",
}

@Article{Kedlaya:2014:ITS,
  author =       "Madhukar N. Kedlaya and Jared Roesch and Behnam
                 Robatmili and Mehrdad Reshadi and Ben Hardekopf",
  title =        "Improved type specialization for dynamic scripting
                 languages",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "37--48",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508177",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:05:03 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "Type feedback and type inference are two common
                 methods used to optimize dynamic languages such as
                 JavaScript. Each of these methods has its own strengths
                 and weaknesses, and we propose that each can benefit
                 from the other if combined in the right way. We explore
                 the interdependency between these two methods and
                 propose two novel ways to combine them in order to
                 significantly increase their aggregate benefit and
                 decrease their aggregate overhead. In our proposed
                 strategy, an initial type inference pass is applied
                 that can reduce type feedback overhead by enabling more
                 intelligent placement of profiling hooks. This initial
                 type inference pass is novel in the literature. After
                 profiling, a final type inference pass uses the type
                 information from profiling to generate efficient code.
                 While this second pass is not novel, we significantly
                 improve its effectiveness in a novel way by feeding the
                 type inference pass information about the function
                 signature, i.e., the types of the function's arguments
                 for a specific function invocation. Our results show
                 significant speedups when using these low-overhead
                 strategies, ranging from $ 1.2 \times $ to $ 4 \times $
                 over an implementation that does not perform type
                 feedback or type inference based optimizations. Our
                 experiments are carried out across a wide range of
                 traditional benchmarks and realistic web applications.
                 The results also show an average reduction of 23.5\% in
                 the size of the profiled data for these benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Keil:2014:EDA,
  author =       "Matthias Keil and Peter Thiemann",
  title =        "Efficient dynamic access analysis using {JavaScript}
                 proxies",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "49--60",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508176",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:05:03 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "JSConTest introduced the notions of effect monitoring
                 and dynamic effect inference for JavaScript. It enables
                 the description of effects with path specifications
                 resembling regular expressions. It is implemented by an
                 offline source code transformation. To overcome the
                 limitations of the JSConTest implementation, we
                 redesigned and reimplemented effect monitoring by
                 taking advantage of JavaScript proxies. Our new design
                 avoids all drawbacks of the prior implementation. It
                 guarantees full interposition; it is not restricted to
                 a subset of JavaScript; it is self-maintaining; and its
                 scalability to large programs is significantly better
                 than with JSConTest. The improved scalability has two
                 sources. First, the reimplementation is significantly
                 faster than the original, transformation-based
                 implementation. Second, the reimplementation relies on
                 the fly-weight pattern and on trace reduction to
                 conserve memory. Only the combination of these
                 techniques enables monitoring and inference for large
                 programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Kersten:2014:RRA,
  author =       "Rody W. J. Kersten and Bernard E. van Gastel and Olha
                 Shkaravska and Manuel Montenegro and Marko C. J. D. van
                 Eekelen",
  title =        "{ResAna}: a resource analysis toolset for (real-time)
                 {JAVA}",
  journal =      j-CCPE,
  volume =       "26",
  number =       "14",
  pages =        "2432--2455",
  day =          "25",
  month =        sep,
  year =         "2014",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3154",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Wed Feb 11 22:34:10 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "8 Oct 2013",
}

@Article{Kim:2014:LBL,
  author =       "Hongjune Kim and Seonmyeong Bak and Jaejin Lee",
  title =        "Lightweight and block-level concurrent sweeping for
                 {JavaScript} garbage collection",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "5",
  pages =        "155--164",
  month =        may,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666357.2597824",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:37:30 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript is a dynamic-typed language originally
                 developed for the purpose of giving dynamic client-side
                 behaviors to web pages. It is mainly used in web
                 application development and because of its popularity
                 and rapid development style it is now also used in
                 other types of applications. Increasing data processing
                 requirements and growing usage in more resource-limited
                 environments, such as mobile devices, has given demands
                 for JavaScript implementations to handle memory more
                 efficiently through garbage collection. Since
                 aggressive use of time consuming operations in garbage
                 collection can slow down the JavaScript application,
                 there is a trade-off relationship between the
                 effectiveness and the execution time of garbage
                 collection. In this paper, we present a lightweight,
                 block-level concurrent sweeping mechanism for a
                 mark-and-sweep garbage collector. The sweeping process
                 is detached to an additional thread to eagerly collect
                 free memory blocks and recycle it. To minimize the
                 overhead that comes from the synchronization between
                 the mutator thread and the new sweeping thread, we have
                 chosen a course grained block-level collecting scheme
                 for sweeping. To avoid contention that comes from
                 object destruction, we execute the object destruction
                 phase concurrently with the foreground marking phase.
                 We have implemented our algorithm in JavaScript Core
                 (JSC) engine embedded in the WebKit browser that uses a
                 variant of mark-and-sweep algorithm to manage
                 JavaScript objects. The original garbage collection
                 implementation performs lazy sweeping that cannot reuse
                 the free blocks. We evaluate our implementation on an
                 ARM-based mobile system and show that memory
                 utilization of the system is significantly improved
                 without performance degradation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "LCTES '14 conference proceedings.",
}

@Article{Kolesnikov:2014:CPB,
  author =       "Sergiy Kolesnikov and Alexander von Rhein and Claus
                 Hunsen and Sven Apel",
  title =        "A comparison of product-based, feature-based, and
                 family-based type checking",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "115--124",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517213",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Analyzing software product lines is difficult, due to
                 their inherent variability. In the past, several
                 strategies for product-line analysis have been
                 proposed, in particular, product-based, feature-based,
                 and family-based strategies. Despite recent attempts to
                 conceptually and empirically compare different
                 strategies, there is no work that empirically compares
                 all of the three strategies in a controlled setting. We
                 close this gap by extending a compiler for
                 feature-oriented programming with support for
                 product-based, feature-based, and family-based type
                 checking. We present and discuss the results of a
                 comparative performance evaluation that we conducted on
                 a set of 12 feature-oriented, Java-based product lines.
                 Most notably, we found that the family-based strategy
                 is superior for all subject product lines: it is
                 substantially faster, it detects all kinds of errors,
                 and provides the most detailed information about
                 them.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Korsholm:2014:RTJ,
  author =       "Stephan E. Korsholm and Hans S{\o}ndergaard and Anders
                 P. Ravn",
  title =        "A real-time {Java} tool chain for resource constrained
                 platforms",
  journal =      j-CCPE,
  volume =       "26",
  number =       "14",
  pages =        "2407--2431",
  day =          "25",
  month =        sep,
  year =         "2014",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3164",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Wed Feb 11 22:34:10 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "17 Oct 2013",
}

@Article{Krebs:2014:JJB,
  author =       "Nico Krebs and Lothar Schmitz",
  title =        "{Jaccie}: a {Java}-based compiler-compiler for
                 generating, visualizing and debugging compiler
                 components",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "79",
  number =       "??",
  pages =        "101--115",
  day =          "1",
  month =        jan,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Nov 30 15:06:12 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312000469",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Lerner:2014:TRT,
  author =       "Benjamin S. Lerner and Joe Gibbs Politz and Arjun Guha
                 and Shriram Krishnamurthi",
  title =        "{TeJaS}: retrofitting type systems for {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "1--16",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508170",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:05:03 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "JavaScript programs vary widely in functionality,
                 complexity, and use, and analyses of these programs
                 must accommodate such variations. Type-based analyses
                 are typically the simplest such analyses, but due to
                 the language's subtle idioms and many
                 application-specific needs --- such as ensuring
                 general-purpose type correctness, security properties,
                 or proper library usage --- we have found that a single
                 type system does not suffice for all purposes. However,
                 these varied uses still share many reusable common
                 elements. In this paper we present TeJaS, a framework
                 for building type systems for JavaScript. TeJaS has
                 been engineered modularly to encourage experimentation.
                 Its initial type environment is reified, to admit easy
                 modeling of the various execution contexts of
                 JavaScript programs, and its type language and typing
                 rules are extensible, to enable variations of the type
                 system to be constructed easily. The paper presents the
                 base TeJaS type system, which performs traditional
                 type-checking for JavaScript. Because JavaScript
                 demands complex types, we explain several design
                 decisions to improve user ergonomics. We then describe
                 TeJaS's modular structure, and illustrate it by
                 reconstructing the essence of a very different type
                 system for JavaScript. Systems built from TeJaS have
                 been applied to several real-world, third-party
                 JavaScript programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Li:2014:EAJ,
  author =       "Siliang Li and Gang Tan",
  title =        "Exception analysis in the {Java Native Interface}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "89 (part C)",
  number =       "??",
  pages =        "273--297",
  day =          "1",
  month =        sep,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri May 9 18:22:29 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642314000446",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Li:2014:MHD,
  author =       "Pengcheng Li and Chen Ding and Hao Luo",
  title =        "Modeling heap data growth using average liveness",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "11",
  pages =        "71--82",
  month =        nov,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775049.2602997",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Most of today's programs make use of a sizable heap to
                 store dynamic data. To characterize the heap dynamics,
                 this paper presents a set of metrics to measure the
                 average amount of data live and dead in a period of
                 execution. They are collectively called average
                 liveness. The paper defines these metrics of average
                 liveness, gives linear-time algorithms for measurement,
                 and discusses their use in finding the best heap size.
                 The algorithms are implemented in a Java tracing system
                 called Elephant Tracks and evaluated using the Dacapo
                 benchmarks running on the Oracle HotSpot and IBM J9
                 Java virtual machines.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '14 conference proceedings.",
}

@Book{Lindholm:2014:JVM,
  author =       "Tim Lindholm and Frank Yellin and Gilad Bracha and
                 Alex Buckley",
  title =        "The {Java} Virtual Machine Specification: {Java SE 8}
                 edition",
  publisher =    pub-AW,
  address =      pub-AW,
  pages =        "xvi + 584",
  year =         "2014",
  ISBN =         "0-13-390590-X (paperback), 0-13-392274-X (e-book)",
  ISBN-13 =      "978-0-13-390590-8 (paperback), 978-0-13-392274-5
                 (e-book)",
  LCCN =         "QA76.73.J38 L56 2014",
  bibdate =      "Thu Dec 4 07:34:57 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib;
                 z3950.loc.gov:7090/Voyager",
  abstract =     "Written by the inventors of the technology, this is
                 the definitive technical reference for the Java Virtual
                 Machine. The book provides complete, accurate, and
                 detailed coverage of the Java Virtual Machine. It fully
                 describes the new features added in Java SE 8,
                 including the invocation of default methods and the
                 class file extensions for type annotations and method
                 parameters. The book also clarifies the interpretation
                 of class file attributes and the rules of bytecode
                 verification.",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language)",
  tableofcontents = "1 Introduction / 1 \\
                 1.1 A Bit of History / 1 \\
                 1.2 The Java Virtual Machine / 2 \\
                 1.3 Organization of the Specification / 3 \\
                 1.4 Notation / 4 \\
                 1.5 Feedback / 4 \\
                 \\
                 2 The Structure of the Java Virtual Machine / 5 \\
                 2.1 The class File Format / 5 \\
                 2.2 Data Types / 6 \\
                 2.3 Primitive Types and Values / 6 \\
                 2.3.1 Integral Types and Values / 7 \\
                 2.3.2 Floating-Point Types, Value Sets, and Values / 8
                 \\
                 2.3.3 The returnAddress Type and Values / 10 \\
                 2.3.4 The boolean Type / 10 \\
                 2.4 Reference Types and Values / 11 \\
                 2.5 Run-Time Data Areas / 11 \\
                 2.5.1 The pc Register / 12 \\
                 2.5.2 Java Virtual Machine Stacks / 12 \\
                 2.5.3 Heap / 13 \\
                 2.5.4 Method Area / 13 \\
                 2.5.5 Run-Time Constant Pool / 14 \\
                 2.5.6 Native Method Stacks / 14 \\
                 2.6 Frames / 15 \\
                 2.6.1 Local Variables / 16 \\
                 2.6.2 Operand Stacks / 17 \\
                 2.6.3 Dynamic Linking / 18 \\
                 2.6.4 Normal Method Invocation Completion / 18 \\
                 2.6.5 Abrupt Method Invocation Completion / 18 \\
                 2.7 Representation of Objects / 19 \\
                 2.8 Floating-Point Arithmetic / 19 \\
                 2.8.1 Java Virtual Machine Floating-Point Arithmetic
                 and IEEE 754 / 19 \\
                 2.8.2 Floating-Point Modes / 20 \\
                 2.8.3 Value Set Conversion / 20 \\
                 2.9 Special Methods / 22 \\
                 2.10 Exceptions / 23 \\
                 2.11 Instruction Set Summary / 25 \\
                 2.11.1 Types and the Java Virtual Machine / 26 \\
                 2.11.2 Load and Store Instructions / 29 \\
                 2.11.3 Arithmetic Instructions / 30 \\
                 2.11.4 Type Conversion Instructions / 32 \\
                 2.11.5 Object Creation and Manipulation / 34 \\
                 2.11.6 Operand Stack Management Instructions / 34 \\
                 2.11.7 Control Transfer Instructions / 34 \\
                 2.11.8 Method Invocation and Return Instructions / 35
                 \\
                 2.11.9 Throwing Exceptions / 36 \\
                 2.11.10 Synchronization / 36 \\
                 2.12 Class Libraries / 37 \\
                 2.13 Public Design, Private Implementation / 37 \\
                 \\
                 3 Compiling for the Java Virtual Machine / 39 \\
                 3.1 Format of Examples / 39 \\
                 3.2 Use of Constants, Local Variables, and Control
                 Constructs / 40 \\
                 3.3 Arithmetic / 45 \\
                 3.4 Accessing the Run-Time Constant Pool / 46 \\
                 3.5 More Control Examples / 47 \\
                 3.6 Receiving Arguments / 50 \\
                 3.7 Invoking Methods / 51 \\
                 3.8 Working with Class Instances / 53 \\
                 3.9 Arrays / 55 \\
                 3.10 Compiling Switches / 57 \\
                 3.11 Operations on the Operand Stack / 59 \\
                 3.12 Throwing and Handling Exceptions / 60 \\
                 3.13 Compiling finally / 63 \\
                 3.14 Synchronization / 66 \\
                 3.15 Annotations / 67 \\
                 \\
                 4 The class File Format / 69 \\
                 4.1 The ClassFile Structure / 70 \\
                 4.2 The Internal Form of Names / 74 \\
                 4.2.1 Binary Class and Interface Names / 74 \\
                 4.2.2 Unqualified Names / 75 \\
                 4.3 Descriptors / 75 \\
                 4.3.1 Grammar Notation / 75 \\
                 4.3.2 Field Descriptors / 76 \\
                 4.3.3 Method Descriptors / 77 \\
                 4.4 The Constant Pool / 78 \\
                 4.4.1 The CONSTANT_Class_info Structure / 79 \\
                 4.4.2 The CONSTANT_Fieldref_info,
                 CONSTANT_Methodref_info, and
                 CONSTANT_InterfaceMethodref_info Structures / 80 \\
                 4.4.3 The CONSTANT_String_info Structure / 81 \\
                 4.4.4 The CONSTANT_Integer_info and CONSTANT_Float_info
                 Structures / 82 \\
                 4.4.5 The CONSTANT_Long_info and CONSTANT_Double_info
                 Structures / 83 \\
                 4.4.6 The CONSTANT_NameAndType_info Structure / 85 \\
                 4.4.7 The CONSTANT_Utf8_info Structure / 85 \\
                 4.4.8 The CONSTANT_MethodHandle_info Structure / 87 \\
                 4.4.9 The CONSTANT_MethodType_info Structure / 89 \\
                 4.4.10 The CONSTANT_InvokeDynamic_info Structure / 89
                 \\
                 4.5 Fields / 90 \\
                 4.6 Methods / 92 \\
                 4.7 Attributes / 95 \\
                 4.7.1 Defining and Naming New Attributes / 101 \\
                 4.7.2 The ConstantValue Attribute / 101 \\
                 4.7.3 The Code Attribute / 102 \\
                 4.7.4 The StackMapTable Attribute / 106 \\
                 4.7.5 The Exceptions Attribute / 113 \\
                 4.7.6 The InnerClasses Attribute / 114 \\
                 4.7.7 The EnclosingMethod Attribute / 116 \\
                 4.7.8 The Synthetic Attribute / 118 \\
                 4.7.9 The Signature Attribute / 118 \\
                 4.7.9.1 Signatures / 119 \\
                 4.7.10 The SourceFile Attribute / 123 \\
                 4.7.11 The SourceDebugExtension Attribute / 124 \\
                 4.7.12 The LineNumberTable Attribute / 124 \\
                 4.7.13 The LocalVariableTable Attribute / 126 \\
                 4.7.14 The LocalVariableTypeTable Attribute / 128 \\
                 4.7.15 The Deprecated Attribute / 129 \\
                 4.7.16 The RuntimeVisibleAnnotations Attribute / 130
                 \\
                 4.7.16.1 The element_value structure / 132 \\
                 4.7.17 The RuntimeInvisibleAnnotations Attribute / 135
                 \\
                 4.7.18 The RuntimeVisibleParameterAnnotations Attribute
                 / 136 \\
                 4.7.19 The RuntimeInvisibleParameterAnnotations
                 Attribute / 137 \\
                 4.7.20 The RuntimeVisibleTypeAnnotations Attribute /
                 139 \\
                 4.7.20.1 The target_info union / 144 \\
                 4.7.20.2 The type_path structure / 148 \\
                 4.7.21 The RuntimeInvisibleTypeAnnotations Attribute /
                 152 \\
                 4.7.22 The AnnotationDefault Attribute / 153 \\
                 4.7.23 The BootstrapMethods Attribute / 154 \\
                 4.7.24 The MethodParameters Attribute / 156 \\
                 4.8 Format Checking / 158 \\
                 4.9 Constraints on Java Virtual Machine Code / 159 \\
                 4.9.1 Static Constraints / 159 \\
                 4.9.2 Structural Constraints / 163 \\
                 4.10 Verification of class Files / 166 \\
                 4.10.1 Verification by Type Checking / 167 \\
                 4.10.1.1 Accessors for Java Virtual Machine Artifacts /
                 169 \\
                 4.10.1.2 Verification Type System / 173 \\
                 4.10.1.3 Instruction Representation / 177 \\
                 4.10.1.4 Stack Map Frame Representation / 178 \\
                 4.10.1.5 Type Checking Abstract and Native Methods /
                 184 \\
                 4.10.1.6 Type Checking Methods with Code / 187 \\
                 4.10.1.7 Type Checking Load and Store Instructions /
                 194 \\
                 4.10.1.8 Type Checking for protected Members / 196 \\
                 4.10.1.9 Type Checking Instructions / 199 \\
                 4.10.2 Verification by Type Inference / 319 \\
                 4.10.2.1 The Process of Verification by Type Inference
                 / 319 \\
                 4.10.2.2 The Bytecode Verifier / 319 \\
                 4.10.2.3 Values of Types long and double / 323 \\
                 4.10.2.4 Instance Initialization Methods and Newly
                 Created Objects / 323 \\
                 4.10.2.5 Exceptions and finally / 325 \\
                 4.11 Limitations of the Java Virtual Machine / 327 \\
                 \\
                 5 Loading, Linking, and Initializing / 329 \\
                 5.1 The Run-Time Constant Pool / 329 \\
                 5.2 Java Virtual Machine Startup / 332 \\
                 5.3 Creation and Loading / 332 \\
                 5.3.1 Loading Using the Bootstrap Class Loader / 334
                 \\
                 5.3.2 Loading Using a User-defined Class Loader / 335
                 \\
                 5.3.3 Creating Array Classes / 336 \\
                 5.3.4 Loading Constraints / 336 \\
                 5.3.5 Deriving a Class from a class File Representation
                 / 338 \\
                 5.4 Linking / 339 \\
                 5.4.1 Verification / 340 \\
                 5.4.2 Preparation / 340 \\
                 5.4.3 Resolution / 341 \\
                 5.4.3.1 Class and Interface Resolution / 342 \\
                 5.4.3.2 Field Resolution / 343 \\
                 5.4.3.3 Method Resolution / 344 \\
                 5.4.3.4 Interface Method Resolution / 346 \\
                 5.4.3.5 Method Type and Method Handle Resolution / 347
                 \\
                 5.4.3.6 Call Site Specifier Resolution / 350 \\
                 5.4.4 Access Control / 351 \\
                 5.4.5 Overriding / 352 \\
                 5.5 Initialization / 352 \\
                 5.6 Binding Native Method Implementations / 355 \\
                 5.7 Java Virtual Machine Exit / 355 \\
                 \\
                 6 The Java Virtual Machine Instruction Set / 357 \\
                 6.1 Assumptions: The Meaning of ``Must'' / 357 \\
                 6.2 Reserved Opcodes / 358 \\
                 6.3 Virtual Machine Errors / 358 \\
                 6.4 Format of Instruction Descriptions / 359 \\
                 mnemonic / 360 \\
                 6.5 Instructions / 362 \\
                 aaload / 363 \\
                 aastore / 364 \\
                 aconst_null / 366 \\
                 aload / 367 \\
                 aload_<n> / 368 \\
                 anewarray / 369 \\
                 areturn / 370 \\
                 arraylength / 371 \\
                 astore / 372 \\
                 astore_<n> / 373 \\
                 athrow / 374 \\
                 baload / 376 \\
                 bastore / 377 \\
                 bipush / 378 \\
                 caload / 379 \\
                 castore / 380 \\
                 checkcast / 381 \\
                 d2f / 383 \\
                 d2i / 384 \\
                 d2l / 385 \\
                 dadd / 386 \\
                 daload / 388 \\
                 dastore / 389 \\
                 dcmp<op> / 390 \\
                 dconst_<d> / 392 \\
                 ddiv / 393 \\
                 dload / 395 \\
                 dload_<n> / 396 \\
                 dmul / 397 \\
                 dneg / 399 \\
                 drem / 400 \\
                 dreturn / 402 \\
                 dstore / 403 \\
                 dstore_<n> / 404 \\
                 dsub / 405 \\
                 dup / 406 \\
                 dup_x1 / 407 \\
                 dup_x2 / 408 \\
                 dup2 / 409 \\
                 dup2_x1 / 410 \\
                 dup2_x2 / 411 \\
                 f2d / 413 \\
                 f2i / 414 \\
                 f2l / 415 \\
                 fadd / 416 \\
                 faload / 418 \\
                 fastore / 419 \\
                 fcmp<op> / 420 \\
                 fconst_<f> / 422 \\
                 fdiv / 423 \\
                 fload / 425 \\
                 fload_<n> / 426 \\
                 fmul / 427 \\
                 fneg / 429 \\
                 frem / 430 \\
                 freturn / 432 \\
                 fstore / 433 \\
                 fstore_<n> / 434 \\
                 fsub / 435 \\
                 getfield / 436 \\
                 getstatic / 438 \\
                 goto / 440 \\
                 goto_w / 441 \\
                 i2b / 442 \\
                 i2c / 443 \\
                 i2d / 444 \\
                 i2f / 445 \\
                 i2l / 446 \\
                 i2s / 447 \\
                 iadd / 448 \\
                 iaload / 449 \\
                 iand / 450 \\
                 iastore / 451 \\
                 iconst_<i> / 452 \\
                 idiv / 453 \\
                 if_acmp<cond> / 454 \\
                 if_icmp<cond> / 455 \\
                 if<cond> / 457 \\
                 ifnonnull / 459 \\
                 ifnull / 460 \\
                 iinc / 461 \\
                 iload / 462 \\
                 iload_<n> / 463 \\
                 imul / 464 \\
                 ineg / 465 \\
                 instanceof / 466 \\
                 invokedynamic / 468 \\
                 invokeinterface / 473 \\
                 invokespecial / 477 \\
                 invokestatic / 481 \\
                 invokevirtual / 484 \\
                 ior / 489 \\
                 irem / 490 \\
                 ireturn / 491 \\
                 ishl / 492 \\
                 ishr / 493 \\
                 istore / 494 \\
                 istore_<n> / 495 \\
                 isub / 496 \\
                 iushr / 497 \\
                 ixor / 498 \\
                 jsr / 499 \\
                 jsr_w / 500 \\
                 l2d / 501 \\
                 l2f / 502 \\
                 l2i / 503 \\
                 ladd / 504 \\
                 laload / 505 \\
                 land / 506 \\
                 lastore / 507 \\
                 lcmp / 508 \\
                 lconst_<l> / 509 \\
                 ldc / 510 \\
                 ldc_w / 512 \\
                 ldc2_w / 514 \\
                 ldiv / 515 \\
                 lload / 516 \\
                 lload_<n> / 517 \\
                 lmul / 518 \\
                 lneg / 519 \\
                 lookupswitch / 520 \\
                 lor / 522 \\
                 lrem / 523 \\
                 lreturn / 524 \\
                 lshl / 525 \\
                 lshr / 526 \\
                 lstore / 527 \\
                 lstore_<n> / 528 \\
                 lsub / 529 \\
                 lushr / 530 \\
                 lxor / 531 \\
                 monitorenter / 532 \\
                 monitorexit / 534 \\
                 multianewarray / 536 \\
                 new / 538 \\
                 newarray / 540 \\
                 nop / 542 \\
                 pop / 543 \\
                 pop2 / 544 \\
                 putfield / 545 \\
                 putstatic / 547 \\
                 ret / 549 \\
                 return / 550 \\
                 saload / 551 \\
                 sastore / 552 \\
                 sipush / 553 \\
                 swap / 554 \\
                 tableswitch / 555 \\
                 wide / 557 \\
                 \\
                 7 Opcode Mnemonics by Opcode / 559 \\
                 Index / 563 \\
                 \\
                 A Limited License Grant / 581",
}

@Article{Liu:2014:FFL,
  author =       "Peng Liu and Omer Tripp and Xiangyu Zhang",
  title =        "{Flint}: fixing linearizability violations",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "543--560",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660217",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Writing concurrent software while achieving both
                 correctness and efficiency is a grand challenge. To
                 facilitate this task, concurrent data structures have
                 been introduced into the standard library of popular
                 languages like Java and C\#. Unfortunately, while the
                 operations exposed by concurrent data structures are
                 atomic (or linearizable), compositions of these
                 operations are not necessarily atomic. Recent studies
                 have found many erroneous implementations of composed
                 concurrent operations. We address the problem of fixing
                 nonlinearizable composed operations such that they
                 behave atomically. We introduce Flint, an automated
                 fixing algorithm for composed Map operations. Flint
                 accepts as input a composed operation suffering from
                 atomicity violations. Its output, if fixing succeeds,
                 is a composed operation that behaves equivalently to
                 the original operation in sequential runs and is
                 guaranteed to be atomic. To our knowledge, Flint is the
                 first general algorithm for fixing incorrect concurrent
                 compositions. We have evaluated Flint on 48 incorrect
                 compositions from 27 popular applications, including
                 Tomcat and MyFaces. The results are highly encouraging:
                 Flint is able to correct 96\% of the methods, and the
                 fixed version is often the same as the fix by an expert
                 programmer and as efficient as the original code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Liu:2014:JNU,
  author =       "Alex Liu",
  title =        "{JavaScript} and the {Netflix} User Interface",
  journal =      j-QUEUE,
  volume =       "12",
  number =       "9",
  pages =        "20",
  month =        sep,
  year =         "2014",
  CODEN =        "AQCUAE",
  DOI =          "https://doi.org/10.1145/2674600.2677720",
  ISSN =         "1542-7730 (print), 1542-7749 (electronic)",
  ISSN-L =       "1542-7730",
  bibdate =      "Mon Oct 20 18:06:48 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/queue.bib",
  abstract =     "Conditional dependency resolution",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Queue: Tomorrow's Computing Today",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J882",
}

@Article{Luu:2014:MCC,
  author =       "Loi Luu and Shweta Shinde and Prateek Saxena and Brian
                 Demsky",
  title =        "A model counter for constraints over unbounded
                 strings",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "565--576",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594331",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Model counting is the problem of determining the
                 number of solutions that satisfy a given set of
                 constraints. Model counting has numerous applications
                 in the quantitative analyses of program execution time,
                 information flow, combinatorial circuit designs as well
                 as probabilistic reasoning. We present a new approach
                 to model counting for structured data types,
                 specifically strings in this work. The key ingredient
                 is a new technique that leverages generating functions
                 as a basic primitive for combinatorial counting. Our
                 tool SMC which embodies this approach can model count
                 for constraints specified in an expressive string
                 language efficiently and precisely, thereby
                 outperforming previous finite-size analysis tools. SMC
                 is expressive enough to model constraints arising in
                 real-world JavaScript applications and UNIX C
                 utilities. We demonstrate the practical feasibility of
                 performing quantitative analyses arising in security
                 applications, such as determining the comparative
                 strengths of password strength meters and determining
                 the information leakage via side channels.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Marek:2014:SRC,
  author =       "Luk{\'a}s Marek and Stephen Kell and Yudi Zheng and
                 Lubom{\'\i}r Bulej and Walter Binder and Petr Tuma and
                 Danilo Ansaloni and Aibek Sarimbekov and Andreas Sewe",
  title =        "{ShadowVM}: robust and comprehensive dynamic program
                 analysis for the {Java} platform",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "105--114",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517219",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic analysis tools are often implemented using
                 instrumentation, particularly on managed runtimes
                 including the Java Virtual Machine (JVM). Performing
                 instrumentation robustly is especially complex on such
                 runtimes: existing frameworks offer limited coverage
                 and poor isolation, while previous work has shown that
                 apparently innocuous instrumentation can cause
                 deadlocks or crashes in the observed application. This
                 paper describes ShadowVM, a system for
                 instrumentation-based dynamic analyses on the JVM which
                 combines a number of techniques to greatly improve both
                 isolation and coverage. These centre on the offload of
                 analysis to a separate process; we believe our design
                 is the first system to enable genuinely full bytecode
                 coverage on the JVM. We describe a working
                 implementation, and use a case study to demonstrate its
                 improved coverage and to evaluate its runtime
                 overhead.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Martin:2014:TCR,
  author =       "Marko Martin and Mira Mezini and Sebastian Erdweg",
  title =        "Template constructors for reusable object
                 initialization",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "43--52",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517212",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Reuse of and abstraction over object initialization
                 logic is not properly supported in mainstream
                 object-oriented languages. This may result in
                 significant amount of boilerplate code and
                 proliferation of constructors in subclasses. It also
                 makes it impossible for mixins to extend the
                 initialization interface of classes they are applied
                 to. We propose template constructors, which employ
                 template parameters and pattern matching of them
                 against signatures of superclass constructors to enable
                 a one-to-many binding of super-calls. We demonstrate
                 how template constructors solve the aforementioned
                 problems. We present a formalization of the concept, a
                 Java-based implementation, and use cases which exercise
                 its strengths.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Article{Martinsen:2014:HTL,
  author =       "Jan Kasper Martinsen and Hakan Grahn and Anders
                 Isberg",
  title =        "Heuristics for Thread-Level Speculation in {Web}
                 Applications",
  journal =      j-IEEE-COMPUT-ARCHIT-LETT,
  volume =       "13",
  number =       "2",
  pages =        "77--80",
  month =        jul # "\slash " # dec,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1109/L-CA.2013.26",
  ISSN =         "1556-6056 (print), 1556-6064 (electronic)",
  ISSN-L =       "1556-6056",
  bibdate =      "Thu Jun 20 17:18:18 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeecomputarchitlett.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "JavaScript is a sequential programming language, and
                 Thread-Level Speculation has been proposed to
                 dynamically extract parallelism in order to take
                 advantage of parallel hardware. In previous work, we
                 have showed significant speed-ups with a simple on/off
                 speculation heuristic. In this paper, we propose and
                 evaluate three heuristics for dynamically adapt the
                 speculation: a 2-bit heuristic, an exponential
                 heuristic, and a combination of these two. Our results
                 show that the combined heuristic is able to both
                 increase the number of successful speculations and
                 decrease the execution time for 15 popular web
                 applications.",
  acknowledgement = ack-nhfb,
  affiliation =  "Martinsen, JK (Reprint Author), Blekinge Inst Technol,
                 Sch Comp, SE-37179 Karlskrona, Sweden. Martinsen, Jan
                 Kasper; Grahn, Hakan, Blekinge Inst Technol, Sch Comp,
                 SE-37179 Karlskrona, Sweden. Isberg, Anders, Sony
                 Mobile Commun AB, SE-22188 Lund, Sweden.",
  author-email = "Jan.Kasper.Martinsen@bth.se Hakan.Grahn@bth.se
                 Anders.Isberg@sonymobile.com",
  da =           "2019-06-20",
  doc-delivery-number = "AX5PM",
  eissn =        "1556-6064",
  fjournal =     "IEEE Computer Architecture Letters",
  funding-acknowledgement = "Industrial Excellence Center EASE -
                 Embedded Applications Software Engineering; BESQ+
                 research project --- Knowledge Foundation in Sweden
                 [20100311]",
  funding-text = "This work was partly funded by the Industrial
                 Excellence Center EASE --- Embedded Applications
                 Software Engineering, (http://ease.cs.lth.se), and the
                 BESQ+ research project funded by the Knowledge
                 Foundation (grant number 20100311) in Sweden.",
  journal-iso =  "IEEE Comput. Archit. Lett.",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=10208",
  keywords =     "Automatic Parallelization; JavaScript; Multicore
                 processors; Parallel Computing",
  number-of-cited-references = "12",
  oa =           "Green Published",
  ORCID-numbers = "Martinsen, Jan Kasper/0000-0001-8915-3633 Grahn,
                 Hakan/0000-0001-9947-1088",
  research-areas = "Computer Science",
  times-cited =  "2",
  unique-id =    "Martinsen:2014:HTL",
  web-of-science-categories = "Computer Science, Hardware \&
                 Architecture",
}

@Article{Meijer:2014:EJR,
  author =       "Erik Meijer",
  title =        "Evolution of {Javascript} Revisited",
  journal =      j-QUEUE,
  volume =       "12",
  number =       "2",
  pages =        "50",
  month =        feb,
  year =         "2014",
  CODEN =        "AQCUAE",
  DOI =          "https://doi.org/10.1145/2578508.2594349",
  ISSN =         "1542-7730 (print), 1542-7749 (electronic)",
  ISSN-L =       "1542-7730",
  bibdate =      "Wed May 21 11:03:43 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/queue.bib",
  abstract =     "One of the highlights from Node Summit 2013, remixed.
                 Moderated by: Erik Meijer, Founder, Applied Duality
                 https://vimeo.com/nodesummit/review/85785879/7844ffa516",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Queue: Tomorrow's Computing Today",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J882",
}

@Article{Moller:2014:ADC,
  author =       "Anders M{\o}ller and Mathias Schwarz",
  title =        "Automated Detection of Client-State Manipulation
                 Vulnerabilities",
  journal =      j-TOSEM,
  volume =       "23",
  number =       "4",
  pages =        "29:1--29:??",
  month =        aug,
  year =         "2014",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2531921",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Oct 7 19:00:54 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Web application programmers must be aware of a wide
                 range of potential security risks. Although the most
                 common pitfalls are well described and categorized in
                 the literature, it remains a challenging task to ensure
                 that all guidelines are followed. For this reason, it
                 is desirable to construct automated tools that can
                 assist the programmers in the application development
                 process by detecting weaknesses. Many vulnerabilities
                 are related to Web application code that stores
                 references to application state in the generated HTML
                 documents to work around the statelessness of the HTTP
                 protocol. In this article, we show that such
                 client-state manipulation vulnerabilities are amenable
                 to tool-supported detection. We present a static
                 analysis for the widely used frameworks Java Servlets,
                 JSP, and Struts. Given a Web application archive as
                 input, the analysis identifies occurrences of client
                 state and infers the information flow between the
                 client state and the shared application state on the
                 server. This makes it possible to check how
                 client-state manipulation performed by malicious users
                 may affect the shared application state and cause
                 leakage or modifications of sensitive information. The
                 warnings produced by the tool help the application
                 programmer identify vulnerabilities before deployment.
                 The inferred information can also be applied to
                 configure a security filter that automatically guards
                 against attacks at runtime. Experiments on a collection
                 of open-source Web applications indicate that the
                 static analysis is able to effectively help the
                 programmer prevent client-state manipulation
                 vulnerabilities. The analysis detects a total of 4,802
                 client-state parameters in ten applications, whereof
                 4,437 are classified as safe and 241 reveal exploitable
                 vulnerabilities.",
  acknowledgement = ack-nhfb,
  articleno =    "29",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Murawski:2014:GSI,
  author =       "Andrzej S. Murawski and Nikos Tzevelekos",
  title =        "Game semantics for interface middleweight {Java}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "1",
  pages =        "517--528",
  month =        jan,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578855.2535880",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:04:57 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "POPL '14 conference proceedings.",
  abstract =     "We consider an object calculus in which open terms
                 interact with the environment through interfaces. The
                 calculus is intended to capture the essence of
                 contextual interactions of Middleweight Java code.
                 Using game semantics, we provide fully abstract models
                 for the induced notions of contextual approximation and
                 equivalence. These are the first denotational models of
                 this kind.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Book{Nolan:2014:XWT,
  author =       "Deborah Ann Nolan and Duncan Temple Lang",
  title =        "{XML} and {Web} technologies for data sciences with
                 {R}",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "xxiv + 663",
  year =         "2014",
  ISBN =         "1-4614-7899-5",
  ISBN-13 =      "978-1-4614-7899-7",
  LCCN =         "QA76.76.H94 N65 2014",
  bibdate =      "Wed Feb 11 10:57:20 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/s-plus.bib;
                 z3950.loc.gov:7090/Voyager",
  series =       "Use R!",
  URL =          "http://www.loc.gov/catdir/enhancements/fy1503/2013954669-b.html;
                 http://www.loc.gov/catdir/enhancements/fy1503/2013954669-d.html;
                 http://www.loc.gov/catdir/enhancements/fy1503/2013954669-t.html",
  abstract =     "Web technologies are increasingly relevant to
                 scientists working with data, for both accessing data
                 and creating rich dynamic and interactive displays. The
                 XML and JSON data formats are widely used in Web
                 services, regular Web pages and JavaScript code, and
                 visualization formats such as SVG and KML for Google
                 Earth and Google Maps. In addition, scientists use HTTP
                 and other network protocols to scrape data from Web
                 pages, access REST and SOAP Web Services, and interact
                 with NoSQL databases and text search applications. This
                 book provides a practical hands-on introduction to
                 these technologies, including high-level functions the
                 authors have developed for data scientists. It
                 describes strategies and approaches for extracting data
                 from HTML, XML, and JSON formats and how to
                 programmatically access data from the Web. Along with
                 these general skills, the authors illustrate several
                 applications that are relevant to data scientists, such
                 as reading and writing spreadsheet documents both
                 locally and via GoogleDocs, creating interactive and
                 dynamic visualizations, displaying spatial-temporal
                 displays with Google Earth, and generating code from
                 descriptions of data structures to read and write data.
                 These topics demonstrate the rich possibilities and
                 opportunities to do new things with these modern
                 technologies. The book contains many examples and
                 case-studies that readers can use directly and adapt to
                 their own work.",
  acknowledgement = ack-nhfb,
  subject =      "XML (Document markup language); R (Computer program
                 language); Web services; Electronic data processing",
  tableofcontents = "Data Formats XML and JSON \\
                 Web Technologies, Getting Data from the Web \\
                 General XML Application Areas \\
                 Bibliography \\
                 General Index \\
                 R Function and Parameter Index \\
                 R Package Index \\
                 R Class Index \\
                 Colophon",
}

@Book{Oaks:2014:JPD,
  author =       "Scott Oaks",
  title =        "{Java} Performance: The Definitive Guide",
  publisher =    pub-ORA-MEDIA,
  address =      pub-ORA-MEDIA:adr,
  pages =        "xiv + 408",
  year =         "2014",
  ISBN =         "1-4493-5845-4 (paperback), 1-4493-6354-7 (e-book)",
  ISBN-13 =      "978-1-4493-5845-7 (paperback), 978-1-4493-6354-3
                 (e-book)",
  LCCN =         "QA76.73.J38",
  bibdate =      "Thu Dec 4 13:14:48 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/ora.bib",
  URL =          "http://proquest.safaribooksonline.com/9781449363512",
  abstract =     "Coding and testing are often considered separate areas
                 of expertise. In this comprehensive guide, author and
                 Java expert Scott Oaks takes the approach that anyone
                 who works with Java should be equally adept at
                 understanding how code behaves in the JVM, as well as
                 the tunings likely to help its performance. You'll gain
                 in-depth knowledge of Java application performance,
                 using the Java Virtual Machine (JVM) and the Java
                 platform, including the language and API. Developers
                 and performance engineers alike will learn a variety of
                 features, tools, and processes for improving the way
                 Java 7 and 8 applications perform. Apply four
                 principles for obtaining the best results from
                 performance testing Use JDK tools to collect data on
                 how a Java application is performing Understand the
                 advantages and disadvantages of using a JIT compiler
                 Tune JVM garbage collectors to affect programs as
                 little as possible Use techniques to manage heap memory
                 and JVM native memory Maximize Java threading and
                 synchronization performance features Tackle performance
                 issues in Java EE and Java SE APIs Improve Java-driven
                 database application performance.",
  acknowledgement = ack-nhfb,
  subject =      "Java (Computer program language)",
}

@Article{Ortin:2014:RPI,
  author =       "Francisco Ortin and Patricia Conde and Daniel
                 Fernandez-Lanvin and Raul Izquierdo",
  title =        "The Runtime Performance of {{\tt invokedynamic}}: An
                 Evaluation with a {Java} Library",
  journal =      j-IEEE-SOFTWARE,
  volume =       "31",
  number =       "4",
  pages =        "82--90",
  month =        jul # "\slash " # aug,
  year =         "2014",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2013.46",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Mon Aug 25 07:50:47 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Papadimitriou:2014:MLS,
  author =       "Stergios Papadimitriou and Seferina Mavroudi and
                 Kostas Theofilatos and Spiridon Likothanasis",
  title =        "{MATLAB}-like scripting of {Java} scientific libraries
                 in {ScalaLab}",
  journal =      j-SCI-PROG,
  volume =       "22",
  number =       "3",
  pages =        "187--199",
  month =        "????",
  year =         "2014",
  CODEN =        "SCIPEV",
  DOI =          "https://doi.org/10.3233/SPR-140378",
  ISSN =         "1058-9244 (print), 1875-919X (electronic)",
  ISSN-L =       "1058-9244",
  bibdate =      "Tue Sep 9 18:01:15 MDT 2014",
  bibsource =    "http://www.iospress.nl/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/matlab.bib;
                 http://www.math.utah.edu/pub/tex/bib/sciprog.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Scientific Programming",
  journal-URL =  "http://iospress.metapress.com/content/1058-9244",
}

@Book{Pape:2014:EJV,
  author =       "Tobias Pape and Arian Treffer and Robert Hirschfeld
                 and Michael Haupt",
  title =        "Extending a {Java Virtual Machine} to Dynamic
                 Object-oriented Languages",
  volume =       "82",
  publisher =    "Universit{\"a}tsverlag Potsdam",
  address =      "Potsdam, Germany",
  pages =        "163",
  year =         "2014",
  ISBN =         "3-86956-266-8",
  ISBN-13 =      "978-3-86956-266-7",
  LCCN =         "????",
  bibdate =      "Thu Dec 4 08:01:22 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  series =       "Technische Berichte des Hasso-Plattner-Instituts
                 f{\"u}r Softwaresystemtechnik an der Universit{\"a}t
                 Potsdam",
  URL =          "http://d-nb.info/1046379119/04;
                 http://opus.kobv.de/ubp/volltexte/2013/6743/",
  acknowledgement = ack-nhfb,
  subject =      "Java Virtual Machine; Objektorientierte
                 Programmiersprache; Dynamische Optimierung",
}

@Article{Park:2014:AAS,
  author =       "Changhee Park and Hongki Lee and Sukyoung Ryu",
  title =        "All about the with statement in {JavaScript}: removing
                 with statements in {JavaScript} applications",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "73--84",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508173",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:05:03 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "The with statement in JavaScript makes static analysis
                 of JavaScript applications difficult by introducing a
                 new scope at run time and thus invalidating lexical
                 scoping. Therefore, many static approaches to
                 JavaScript program analysis and the strict mode of
                 ECMAScript 5 simply disallow the with statement. To
                 justify exclusion of the with statement, we should
                 better understand the actual usage patterns of the with
                 statement. In this paper, we present the usage patterns
                 of the with statement in real-world JavaScript
                 applications currently used in the 898 most popular web
                 sites. We investigate whether we can rewrite the with
                 statements in each pattern to other statements not
                 using the with statement. We show that we can rewrite
                 all the static occurrences of the with statement that
                 do not have any dynamic code generating functions. Even
                 though the rewriting process is not applicable to any
                 dynamically generated with statements, our results are
                 still promising. Because all the static approaches that
                 disallow the with statement also disallow dynamic code
                 generation, such static approaches can allow the with
                 statement using our rewriting process. We formally
                 present our rewriting strategy, provide its
                 implementation, and show its faithfulness using
                 extensive testing. We believe that removing with
                 statements will simplify JavaScript program analysis
                 designs without considering dynamic scope introduction
                 while imposing fewer syntactic restrictions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Paul:2014:RTP,
  author =       "Anand Paul",
  title =        "Real-Time Power Management for Embedded {M2M} Using
                 Intelligent Learning Methods",
  journal =      j-TECS,
  volume =       "13",
  number =       "5s",
  pages =        "148:1--148:??",
  month =        sep,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2632158",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Oct 6 16:07:59 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "In this work, an embedded system working model is
                 designed with one server that receives requests by a
                 requester by a service queue that is monitored by a
                 Power Manager (PM). A novel approach is presented based
                 on reinforcement learning to predict the best policy
                 amidst existing DPM policies and deterministic
                 Markovian nonstationary policies (DMNSP). We apply
                 reinforcement learning, namely a computational approach
                 to understanding and automating goal-directed learning
                 that supports different devices according to their DPM.
                 Reinforcement learning uses a formal framework defining
                 the interaction between agent and environment in terms
                 of states, response action, and reward points. The
                 capability of this approach is demonstrated by an
                 event-driven simulator designed using Java with a
                 power-manageable machine-to-machine device. Our
                 experiment result shows that the proposed dynamic power
                 management with timeout policy gives average power
                 saving from 4\% to 21\% and the novel dynamic power
                 management with DMNSP gives average power saving from
                 10\% to 28\% more than already proposed DPM policies.",
  acknowledgement = ack-nhfb,
  articleno =    "148",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Pina:2014:RDJ,
  author =       "Lu{\'\i}s Pina and Lu{\'\i}s Veiga and Michael Hicks",
  title =        "{Rubah}: {DSU} for {Java} on a stock {JVM}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "103--119",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660220",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper presents Rubah, the first dynamic software
                 updating system for Java that: is portable, implemented
                 via libraries and bytecode rewriting on top of a
                 standard JVM; is efficient, imposing essentially no
                 overhead on normal, steady-state execution; is
                 flexible, allowing nearly arbitrary changes to classes
                 between updates; and is non-disruptive, employing
                 either a novel eager algorithm that transforms the
                 program state with multiple threads, or a novel lazy
                 algorithm that transforms objects as they are demanded,
                 post-update. Requiring little programmer effort, Rubah
                 has been used to dynamically update five long-running
                 applications: the H2 database, the Voldemort key-value
                 store, the Jake2 implementation of the Quake 2 shooter
                 game, the CrossFTP server, and the JavaEmailServer.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Pinto:2014:UEB,
  author =       "Gustavo Pinto and Fernando Castor and Yu David Liu",
  title =        "Understanding energy behaviors of thread management
                 constructs",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "345--360",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660235",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Java programmers are faced with numerous choices in
                 managing concurrent execution on multicore platforms.
                 These choices often have different trade-offs (e.g.,
                 performance, scalability, and correctness guarantees).
                 This paper analyzes an additional dimension, energy
                 consumption. It presents an empirical study aiming to
                 illuminate the relationship between the choices and
                 settings of thread management constructs and energy
                 consumption. We consider three important thread
                 management constructs in concurrent programming:
                 explicit thread creation, fixed-size thread pooling,
                 and work stealing. We further shed light on the
                 energy/performance trade-off of three ``tuning knobs''
                 of these constructs: the number of threads, the task
                 division strategy, and the characteristics of processed
                 data. Through an extensive experimental space
                 exploration over real-world Java programs, we produce a
                 list of findings about the energy behaviors of
                 concurrent programs, which are not always obvious. The
                 study serves as a first step toward improving energy
                 efficiency of concurrent programs on parallel
                 architectures.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Pradel:2014:EAR,
  author =       "Michael Pradel and Parker Schuh and George Necula and
                 Koushik Sen",
  title =        "{EventBreak}: analyzing the responsiveness of user
                 interfaces through performance-guided test generation",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "33--47",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660233",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Event-driven user interface applications typically
                 have a single thread of execution that processes event
                 handlers in response to input events triggered by the
                 user, the network, or other applications. Programmers
                 must ensure that event handlers terminate after a short
                 amount of time because otherwise, the application may
                 become unresponsive. This paper presents EventBreak, a
                 performance-guided test generation technique to
                 identify and analyze event handlers whose execution
                 time may gradually increase while using the
                 application. The key idea is to systematically search
                 for pairs of events where triggering one event
                 increases the execution time of the other event. For
                 example, this situation may happen because one event
                 accumulates data that is processed by the other event.
                 We implement the approach for JavaScript-based web
                 applications and apply it to three real-world
                 applications. EventBreak discovers events with an
                 execution time that gradually increases in an unbounded
                 way, which makes the application unresponsive, and
                 events that, if triggered repeatedly, reveal a severe
                 scalability problem, which makes the application
                 unusable. The approach reveals two known bugs and four
                 previously unknown responsiveness problems.
                 Furthermore, we show that EventBreak helps in testing
                 that event handlers avoid such problems by bounding a
                 handler's execution time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Radoi:2014:TIC,
  author =       "Cosmin Radoi and Stephen J. Fink and Rodric Rabbah and
                 Manu Sridharan",
  title =        "Translating imperative code to {MapReduce}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "909--927",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660228",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present an approach for automatic translation of
                 sequential, imperative code into a parallel MapReduce
                 framework. Automating such a translation is
                 challenging: imperative updates must be translated into
                 a functional MapReduce form in a manner that both
                 preserves semantics and enables parallelism. Our
                 approach works by first translating the input code into
                 a functional representation, with loops succinctly
                 represented by fold operations. Then, guided by rewrite
                 rules, our system searches a space of equivalent
                 programs for an effective MapReduce implementation. The
                 rules include a novel technique for handling irregular
                 loop-carried dependencies using group-by operations to
                 enable greater parallelism. We have implemented our
                 technique in a tool called Mold. It translates
                 sequential Java code into code targeting the Apache
                 Spark runtime. We evaluated Mold on several real-world
                 kernels and found that in most cases Mold generated the
                 desired MapReduce program, even for codes with complex
                 indirect updates.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Rathje:2014:FMC,
  author =       "William Rathje and Brad Richards",
  title =        "A framework for model checking {UDP} network programs
                 with {Java Pathfinder}",
  journal =      j-SIGADA-LETTERS,
  volume =       "34",
  number =       "3",
  pages =        "81--86",
  month =        dec,
  year =         "2014",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2692956.2663184",
  ISSN =         "1094-3641 (print), 1557-9476 (electronic)",
  ISSN-L =       "1094-3641",
  bibdate =      "Fri Feb 13 07:33:53 MST 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  abstract =     "Complex asynchronous, distributed systems could
                 benefit significantly from model checking, but model
                 checking programs do not natively support verification
                 of distributed software. Several frameworks have been
                 developed recently that apply model checking to
                 networked software, but none of these frameworks
                 support complete modeling of programs that use the User
                 Datagram Protocol (UDP). This paper presents the first
                 framework to model realistic rather than ideal UDP
                 network operations using Java Pathfinder, and describes
                 its use in verifying a distributed UDP-based
                 application.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J32",
  remark =       "HILT '14 conference proceedings.",
}

@Book{Rauschmayer:2014:SJD,
  author =       "Axel Rauschmayer",
  title =        "Speaking {JavaScript}: [an in-depth guide for
                 programmers]",
  publisher =    pub-ORA-MEDIA,
  address =      pub-ORA-MEDIA:adr,
  pages =        "xvii + 437",
  year =         "2014",
  ISBN =         "1-4493-6503-5",
  ISBN-13 =      "978-1-4493-6503-5",
  LCCN =         "QA76.73.J39 R38 2014",
  bibdate =      "Tue May 12 16:03:24 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/ora.bib;
                 http://www.math.utah.edu/pub/tex/bib/unicode.bib;
                 z3950.loc.gov:7090/Voyager",
  acknowledgement = ack-nhfb,
  author-dates = "1972--",
  subject =      "JavaScript (Computer program language); Application
                 software; Development; Web sites; Programming; Web site
                 development",
  tableofcontents = "Part I: JavaScript Quick Start \\
                 Basic JavaScript \\
                 Part II: Background \\
                 Why JavaScript? \\
                 The Nature of JavaScript \\
                 How JavaScript was created \\
                 Standardization: ECMAScript \\
                 Historical JavaScript Milestones \\
                 Part III: JavaScript in Depth \\
                 JavaScript's Syntax \\
                 Values \\
                 Operators \\
                 Booleans \\
                 Numbers \\
                 Strings \\
                 Statements \\
                 Exception Handling \\
                 Functions \\
                 Variables: Scopes, Environments, and Closures \\
                 Objects and Inheritance \\
                 Arrays \\
                 Regular Expressions \\
                 Dates \\
                 Math \\
                 JSON \\
                 Standard Global Variables \\
                 Unicode and JavaScript \\
                 New in ECMAScript 5 \\
                 Part IV: Tips, Tools, and Libraries \\
                 A Meta Code Style Guide \\
                 Language Mechanisms for Debugging \\
                 Subclassing Built-ins \\
                 JSDoc: Generating API Documentation \\
                 Libraries \\
                 Module Systems and Package Managers \\
                 More Tools \\
                 What to Do Next",
}

@Article{Reardon:2014:SSB,
  author =       "Susan Reardon and Brendan Tangney",
  title =        "{Smartphones}, Studio-Based Learning, and Scaffolding:
                 Helping Novices Learn to Program",
  journal =      j-TOCE,
  volume =       "14",
  number =       "4",
  pages =        "23:1--23:??",
  month =        dec,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2677089",
  ISSN =         "1946-6226",
  bibdate =      "Wed Feb 11 21:50:28 MST 2015",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toce.bib",
  abstract =     "This article describes how smartphones, studio-based
                 learning, and extensive scaffolding were used in
                 combination in the teaching of a freshman Introduction
                 to Programming course. To reduce cognitive overload, a
                 phased approach was followed in introducing programming
                 concepts and development environments, beginning with
                 the visual programming environment Scratch and
                 culminating with Java development for Android
                 smartphones. Studio-based learning, a pedagogical
                 approach long established in the fields of architecture
                 and design education, was used as the basis for a
                 collaborative social constructivist-and
                 constructionist-approach to learning. Smartphones
                 offered students the potential to develop applications
                 for a context that is both immediate and clearly
                 relevant to the ways in which they utilize and interact
                 with technology. The research was carried out over
                 three full academic years and included 53 student
                 participants. An exploratory case study methodology was
                 used to investigate the efficacy of the approach in
                 helping to overcome the barriers faced by novice
                 programmers. The findings indicate that the approach
                 has merit. The students were motivated and engaged by
                 the learning experience and were able to develop
                 sophisticated applications that incorporated images,
                 sound, arrays, and event handling. There is evidence
                 that aspects of the studio-based learning approach,
                 such as the scope that it gave students to innovate and
                 the open feedback during student presentations,
                 provided a learning environment that was motivating.
                 Overall, the combination of smartphones, studio-based
                 learning, and appropriate scaffolding offers an
                 effective way to teach introductory programming
                 courses.",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Computing Education",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1193",
}

@Article{Richard-Foy:2014:EHL,
  author =       "Julien Richard-Foy and Olivier Barais and Jean-Marc
                 J{\'e}z{\'e}quel",
  title =        "Efficient high-level abstractions for {Web}
                 programming",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "3",
  pages =        "53--60",
  month =        mar,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2637365.2517227",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 05:58:25 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Writing large Web applications is known to be
                 difficult. One challenge comes from the fact that the
                 application's logic is scattered into heterogeneous
                 clients and servers, making it difficult to share code
                 between both sides or to move code from one side to the
                 other. Another challenge is performance: while Web
                 applications rely on ever more code on the client-side,
                 they may run on smart phones with limited hardware
                 capabilities. These two challenges raise the following
                 problem: how to benefit from high-level languages and
                 libraries making code complexity easier to manage and
                 abstracting over the clients and servers differences
                 without trading this ease of engineering for
                 performance? This article presents high-level
                 abstractions defined as deep embedded DSLs in Scala
                 that can generate efficient code leveraging the
                 characteristics of both client and server environments.
                 We compare performance on client-side against other
                 candidate technologies and against hand written
                 low-level JavaScript code. Though code written with our
                 DSL has a high level of abstraction, our benchmark on a
                 real world application reports that it runs as fast as
                 hand tuned low-level JavaScript code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '13 conference proceedings.",
}

@Book{Richardson:2014:BEL,
  author =       "Matt Richardson",
  title =        "{BeagleBone f{\"u}r Einsteiger: [Linux-basierte
                 Elektronik-Projekte mit Python und JavaScript]}",
  publisher =    pub-ORA,
  address =      pub-ORA:adr,
  pages =        "xii + 134",
  year =         "2014",
  ISBN =         "3-95561-409-3",
  ISBN-13 =      "978-3-95561-409-6",
  LCCN =         "????",
  bibdate =      "Thu Feb 26 14:22:56 MST 2015",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/linux.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/unix.bib",
  acknowledgement = ack-nhfb,
  language =     "German",
  subject =      "BeagleBone Black; BeagleBone; Digitalelektronik;
                 Hobbyelektronik; JavaScript; LINUX; Programmierung;
                 Python (Programmiersprache); Systemplattform",
}

@Article{Robatmili:2014:MRL,
  author =       "Behnam Robatmili and Calin Cascaval and Mehrdad
                 Reshadi and Madhukar N. Kedlaya and Seth Fowler and
                 Vrajesh Bhavsar and Michael Weber and Ben Hardekopf",
  title =        "{MuscalietJS}: rethinking layered dynamic web
                 runtimes",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "7",
  pages =        "77--88",
  month =        jul,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2674025.2576211",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:29:50 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Layered JavaScript engines, in which the JavaScript
                 runtime is built on top another managed runtime,
                 provide better extensibility and portability compared
                 to traditional monolithic engines. In this paper, we
                 revisit the design of layered JavaScript engines and
                 propose a layered architecture, called MuscalietJS2,
                 that splits the responsibilities of a JavaScript engine
                 between a high-level, JavaScript-specific component and
                 a low-level, language-agnostic .NET VM. To make up for
                 the performance loss due to layering, we propose a two
                 pronged approach: high-level JavaScript optimizations
                 and exploitation of low-level VM features that produce
                 very efficient code for hot functions. We demonstrate
                 the validity of the MuscalietJS design through a
                 comprehensive evaluation using both the Sunspider
                 benchmarks and a set of web workloads. We demonstrate
                 that our approach outperforms other layered engines
                 such as IronJS and Rhino engines while providing
                 extensibility, adaptability and portability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '14 conference proceedings.",
}

@Article{Rompf:2014:SPJ,
  author =       "Tiark Rompf and Arvind K. Sujeeth and Kevin J. Brown
                 and HyoukJoong Lee and Hassan Chafi and Kunle
                 Olukotun",
  title =        "Surgical precision {JIT} compilers",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "41--52",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594316",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Just-in-time (JIT) compilation of running programs
                 provides more optimization opportunities than offline
                 compilation. Modern JIT compilers, such as those in
                 virtual machines like Oracle's HotSpot for Java or
                 Google's V8 for JavaScript, rely on dynamic profiling
                 as their key mechanism to guide optimizations. While
                 these JIT compilers offer good average performance,
                 their behavior is a black box and the achieved
                 performance is highly unpredictable. In this paper, we
                 propose to turn JIT compilation into a precision tool
                 by adding two essential and generic metaprogramming
                 facilities: First, allow programs to invoke JIT
                 compilation explicitly. This enables controlled
                 specialization of arbitrary code at run-time, in the
                 style of partial evaluation. It also enables the JIT
                 compiler to report warnings and errors to the program
                 when it is unable to compile a code path in the
                 demanded way. Second, allow the JIT compiler to call
                 back into the program to perform compile-time
                 computation. This lets the program itself define the
                 translation strategy for certain constructs on the fly
                 and gives rise to a powerful JIT macro facility that
                 enables ``smart'' libraries to supply domain-specific
                 compiler optimizations or safety checks. We present
                 Lancet, a JIT compiler framework for Java bytecode that
                 enables such a tight, two-way integration with the
                 running program. Lancet itself was derived from a
                 high-level Java bytecode interpreter: staging the
                 interpreter using LMS (Lightweight Modular Staging)
                 produced a simple bytecode compiler. Adding abstract
                 interpretation turned the simple compiler into an
                 optimizing compiler. This fact provides compelling
                 evidence for the scalability of the staged-interpreter
                 approach to compiler construction. In the case of
                 Lancet, JIT macros also provide a natural interface to
                 existing LMS-based toolchains such as the Delite
                 parallelism and DSL framework, which can now serve as
                 accelerator macros for arbitrary JVM bytecode.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Rowe:2014:STA,
  author =       "Reuben N. S. Rowe and S. J. van Bakel",
  title =        "Semantic Types and Approximation for {Featherweight
                 Java}",
  journal =      j-THEOR-COMP-SCI,
  volume =       "517",
  number =       "??",
  pages =        "34--74",
  day =          "16",
  month =        jan,
  year =         "2014",
  CODEN =        "TCSCDI",
  ISSN =         "0304-3975 (print), 1879-2294 (electronic)",
  ISSN-L =       "0304-3975",
  bibdate =      "Wed Dec 18 14:01:23 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tcs2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0304397513006415",
  acknowledgement = ack-nhfb,
  fjournal =     "Theoretical Computer Science",
  journal-URL =  "http://www.sciencedirect.com/science/journal/03043975/",
}

@Article{Rubin:2014:HCW,
  author =       "Norm Rubin",
  title =        "Heterogeneous computing: what does it mean for
                 compiler research?",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "8",
  pages =        "315--316",
  month =        aug,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2692916.2558891",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Nov 26 16:26:30 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The current trend in computer architecture is to
                 increase the number of cores, to create specialized
                 types of cores within a single machine, and to network
                 such machines together in very fluid web/cloud
                 computing arrangements. Compilers have traditionally
                 focused on optimizations to code that improve
                 performance, but is that the right target to speed up
                 real applications? Consider loading a web page (like
                 starting GMAIL) the page is transferred to the client,
                 any JavaScript is compiled, the JavaScript executes,
                 and the page gets displayed. The classic compiler model
                 (which was first developed in the late 50's) was a
                 great fit for single core machines but has fallen
                 behind architecture, and language. For example how do
                 you compile a single program for a machine that has
                 both a CPU and a graphics coprocessor (a GPU) with a
                 very different programming and memory model? Together
                 with the changes in architecture there have been
                 changes in programming languages. Dynamic languages are
                 used more, static languages are used less. How does
                 this effect compiler research? In this talk, I'll
                 review a number of traditional compiler research
                 challenges that have (or will) become burning issues
                 and will describe some new problems areas that were not
                 considered in the past. For example language
                 specifications are large complex technical documents
                 that are difficult for non-experts to follow.
                 Application programmers are often not willing to read
                 these documents; can a compiler bridge the gap?",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '14 conference proceedings.",
}

@Article{Samak:2014:MTS,
  author =       "Malavika Samak and Murali Krishna Ramanathan",
  title =        "Multithreaded test synthesis for deadlock detection",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "473--489",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660238",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Designing and implementing thread-safe multithreaded
                 libraries can be a daunting task as developers of these
                 libraries need to ensure that their implementations are
                 free from concurrency bugs, including deadlocks. The
                 usual practice involves employing software testing
                 and/or dynamic analysis to detect deadlocks. Their
                 effectiveness is dependent on well-designed
                 multithreaded test cases. Unsurprisingly, developing
                 multithreaded tests is significantly harder than
                 developing sequential tests for obvious reasons. In
                 this paper, we address the problem of automatically
                 synthesizing multithreaded tests that can induce
                 deadlocks. The key insight to our approach is that a
                 subset of the properties observed when a deadlock
                 manifests in a concurrent execution can also be
                 observed in a single threaded execution. We design a
                 novel, automatic, scalable and directed approach that
                 identifies these properties and synthesizes a deadlock
                 revealing multithreaded test. The input to our approach
                 is the library implementation under consideration and
                 the output is a set of deadlock revealing multithreaded
                 tests. We have implemented our approach as part of a
                 tool, named OMEN$^1$. OMEN is able to synthesize
                 multithreaded tests on many multithreaded Java
                 libraries. Applying a dynamic deadlock detector on the
                 execution of the synthesized tests results in the
                 detection of a number of deadlocks, including 35 real
                 deadlocks in classes documented as thread-safe.
                 Moreover, our experimental results show that dynamic
                 analysis on multithreaded tests that are either
                 synthesized randomly or developed by third-party
                 programmers are ineffective in detecting the
                 deadlocks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Samak:2014:TDD,
  author =       "Malavika Samak and Murali Krishna Ramanathan",
  title =        "Trace driven dynamic deadlock detection and
                 reproduction",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "8",
  pages =        "29--42",
  month =        aug,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2692916.2555262",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Nov 26 16:26:30 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic analysis techniques have been proposed to
                 detect potential deadlocks. Analyzing and comprehending
                 each potential deadlock to determine whether the
                 deadlock is feasible in a real execution requires
                 significant programmer effort. Moreover, empirical
                 evidence shows that existing analyses are quite
                 imprecise. This imprecision of the analyses further
                 void the manual effort invested in reasoning about
                 non-existent defects. In this paper, we address the
                 problems of imprecision of existing analyses and the
                 subsequent manual effort necessary to reason about
                 deadlocks. We propose a novel approach for deadlock
                 detection by designing a dynamic analysis that
                 intelligently leverages execution traces. To reduce the
                 manual effort, we replay the program by making the
                 execution follow a schedule derived based on the
                 observed trace. For a real deadlock, its feasibility is
                 automatically verified if the replay causes the
                 execution to deadlock. We have implemented our approach
                 as part of WOLF and have analyzed many large (upto
                 160KLoC) Java programs. Our experimental results show
                 that we are able to identify 74\% of the reported
                 defects as true (or false) positives automatically
                 leaving very few defects for manual analysis. The
                 overhead of our approach is negligible making it a
                 compelling tool for practical adoption.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '14 conference proceedings.",
}

@Article{Sarimbekov:2014:JCS,
  author =       "Aibek Sarimbekov and Andreas Sewe and Walter Binder
                 and Philippe Moret and Mira Mezini",
  title =        "{JP2}: {Call}-site aware calling context profiling for
                 the {Java Virtual Machine}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "79",
  number =       "??",
  pages =        "146--157",
  day =          "1",
  month =        jan,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Nov 30 15:06:12 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642311002036",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Savrun-Yeniceri:2014:EHI,
  author =       "G{\"u}lfem Savrun-Yeni{\c{c}}eri and Wei Zhang and
                 Huahan Zhang and Eric Seckler and Chen Li and Stefan
                 Brunthaler and Per Larsen and Michael Franz",
  title =        "Efficient hosted interpreters on the {JVM}",
  journal =      j-TACO,
  volume =       "11",
  number =       "1",
  pages =        "9:1--9:24",
  month =        feb,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2532642",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Tue Mar 10 08:08:33 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/2532642",
  abstract =     "Many guest languages are implemented using the Java
                 Virtual Machine (JVM) as a host environment. There are
                 two major implementation choices: custom compilers and
                 so-called hosted interpreters. Custom compilers are
                 complex to build but offer good performance. Hosted
                 interpreters are comparatively simpler to implement but
                 until now have suffered from poor performance.\par

                 We studied the performance of hosted interpreters and
                 identified common bottlenecks preventing their
                 efficient execution. First, similar to interpreters
                 written in C/C++, instruction dispatch is expensive on
                 the JVM. Second, Java's semantics require expensive
                 runtime exception checks that negatively affect array
                 performance essential to interpreters.\par

                 We present two optimizations targeting these
                 bottlenecks and show that the performance of optimized
                 interpreters increases dramatically: we report speedups
                 by a factor of up to 2.45 over the Jython interpreter,
                 3.57 over the Rhino interpreter, and 2.52 over the
                 JRuby interpreter, respectively. The resulting
                 performance is comparable with that of custom
                 compilers. Our optimizations are enabled by a few
                 simple annotations that require only modest
                 implementation effort; in return, performance increases
                 substantially.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "https://dl.acm.org/loi/taco",
}

@Book{Schildt:2014:JCRb,
  editor =       "Herbert Schildt",
  title =        "{Java}: The Complete Reference",
  publisher =    pub-MCGRAW-HILL,
  address =      pub-MCGRAW-HILL:adr,
  edition =      "Ninth",
  pages =        "xxxiv + 1274",
  year =         "2014",
  ISBN =         "0-07-180855-8 (paperback), 0-07-180925-2,
                 0-07-180856-6",
  ISBN-13 =      "978-0-07-180855-2, 978-0-07-180925-2,
                 978-0-07-180856-9",
  LCCN =         "QA76.73.J38 S332 2014eb",
  bibdate =      "Thu Dec 4 13:05:57 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Fully updated for Java SE 8, this edition explains how
                 to develop, compile, debug, and run Java programs. The
                 book covers the entire Java language, including its
                 syntax, keywords, and fundamental programming
                 principles, as well as significant portions of the Java
                 API library. JavaBeans, servlets, applets, and Swing
                 are examined and real-world examples demonstrate Java
                 in action. New Java SE 8 features such as lambda
                 expressions, the stream library, and the default
                 interface method are discussed in detail. This Oracle
                 Press resource also offers a solid introduction to
                 JavaFX. Topics covered include: data types, variables,
                 arrays, and operators; control statements; classes,
                 objects, and methods; method overloading and
                 overriding; inheritance; interfaces and packages;
                 exception handling; multithreaded programming;
                 enumerations, autoboxing, and annotations; I/O classes;
                 generics; lambda expressions; string handlin;
                 collections framework; networking; event handling; AWT
                 and Swing; concurrent and stream API; regular
                 expressions; JavaFX; JavaBeans; and applets and
                 servlets.",
  acknowledgement = ack-nhfb,
  shorttableofcontents = "The history and evolution of Java \\
                 An overview of Java \\
                 Data types, variables, and arrays \\
                 Operators \\
                 Control statements \\
                 Introducing classes \\
                 A closer look at methods and classes \\
                 Inheritance \\
                 Packages and interfaces \\
                 Exception handling \\
                 Multithreaded programming \\
                 Enumerations, autoboxing, and annotations (metadata)
                 \\
                 I/O, applets, and other topics \\
                 Generics \\
                 Lambda expressions \\
                 String handling \\
                 Exploring java.lang \\
                 Java.util part 1: the collections framework \\
                 Java.util part 2: more utility classes \\
                 Input/output: exploring java.io \\
                 Exploring NIO \\
                 Networking \\
                 The applet class \\
                 Event handling \\
                 Introducing the AWT: working with windows, graphics,
                 and text \\
                 Using AWT controls, layout managers, and menus \\
                 Images \\
                 The concurrency utilities \\
                 The stream API \\
                 Regular expressions and other packages \\
                 Introducing swing \\
                 Exploring swing \\
                 Introducing swing menus \\
                 Introducing JavaFX GUI programming \\
                 Exploring JavaFX controls \\
                 Introducing JavaFX menus \\
                 Java beans \\
                 Introducing servlets \\
                 Using Java's documentation comments",
  subject =      "Java (Langage de programmation); Programmation
                 Internet; Java (Computer program language); Internet
                 programming; Internet programming.; Java (Computer
                 program language)",
  tableofcontents = "Part I. The Java language \\
                 1. The history and evolution of Java: Java's lineage;
                 The creation of Java; How Java changed the Internet;
                 Java's magic: the bytecode; Servlets: Java on the
                 server side; The Java buzzwords; The evolution of Java;
                 Java SE 8; A culture of innovation \\
                 2. An overview of Java: Object-oriented programming; A
                 first simple program; A second short program; Two
                 control statements; Using blocks of code; Lexical
                 issues; The Java class libraries \\
                 3. Data types, variables, and arrays: Java is a
                 strongly typed language; The primitive types; Integers;
                 Floating-point types; Characters; Booleans; A closer
                 look at literals; Variables; Type conversion and
                 casting; Automatic type promotion in expressions;
                 Arrays; A few words about strings; A note to C/C++
                 programmers about pointers \\
                 4. Operators: Arithmetic operators; The bitwise
                 operators; Relational operators; Boolean logical
                 operators; The assignment operator; The ? operator;
                 Operator precedence; Using parentheses \\
                 5. Control statements: Java's selection statements;
                 Iteration statements; Jump statements \\
                 6. Introducing classes: Class fundamentals; Declaring
                 objects; Assigning object reference variables;
                 Introducing methods; Constructors; The this keyword;
                 Garbage collection; The finalize() method; A stack
                 class \\
                 7. A closer look at methods and classes: Overloading
                 methods; Using objects as parameters; A closer look at
                 argument passing; Returning objects; Recursion;
                 Introducing access control; Understanding static;
                 Introducing final; Arrays revisited; Introducing nested
                 and inner classes; Exploring the string class; Using
                 command-line arguments; Varargs: variable-length
                 arguments \\
                 8. Inheritance: Inheritance basics; Using super;
                 Creating a multilevel hierarchy; When constructors are
                 executed; Method overriding; Dynamic method dispatch;
                 Using abstract classes; Using final with inheritance;
                 The object class \\
                 9. Packages and interfaces: Packages; Access
                 protection; Importing packages; Interfaces; Default
                 interface methods; Use static methods in an interface;
                 Final thoughts on packages and interfaces \\
                 10. Exception handling: Exception-handling
                 fundamentals; Exception types; Uncaught exceptions;
                 Using try and catch; Multiple catch clauses; Nested try
                 statements; Throw; Throws; Finally; Java's build-in
                 exceptions; Creating your own exception subclasses;
                 Chained exceptions; Three recently added exception
                 features; Using exceptions \\
                 11. Multithreaded programming: The Java thread model;
                 The main thread; Creating a thread; Creating multiple
                 threads; Using isAlive() and join(); Thread priorities;
                 Synchronization; Interthread communication; Suspending,
                 resuming, and stopping threads; Obtaining a thread's
                 state; Using multithreading \\
                 12. Enumerations, autoboxing, and annotations
                 (metadata): Enumerations; Type wrappers; Autoboxing;
                 Annotations (metadata); Type annotations; Repeating
                 annotations \\
                 13. I/O, applets, and other topics: I/O basics; Reading
                 console input; Writing console output; The PrintWriter
                 class; Reading and writing files; Automatically closing
                 a file; Applet fundamentals; The transient and volatile
                 modifiers; Using instanceof; Strictfp; Native methods;
                 Problems with native methods; Using assert; Static
                 import; Invoking overloaded constructors through
                 this(); Compact API profiles \\
                 14. Generics: What are generics?; A simple generics
                 example; A generic class with two type parameters; The
                 general form of a generic class; Bounded types; Using
                 wildcard arguments; Creating a generic method; Generic
                 interfaces; Raw types and legacy code; Generic class
                 hierarchies; Type inference with generics; Erasure;
                 Ambiguity errors; Some generic restrictions \\
                 15. Lambda expressions: Introducing lambda expressions;
                 Block lambda expressions; Generic functional
                 interfaces; Passing lambda expressions as arguments;
                 Lambda expressions and exceptions; Lambda expressions
                 and variable capture; Method references; Constructor
                 references; Predefined functional interfaces \\
                 Part II. The Java library. \\
                 16. String handling: The string constructors; String
                 length; Special string operations; Character
                 extraction; String comparison; Searching strings;
                 Modifying a string; Data conversion using valueOf();
                 Changing the case of characters within a string;
                 Joining strings; Additional string methods;
                 StringBuffer; StringBuilder \\
                 17. Exploring java.lang: Primitive type wrappers; Void;
                 Process; Runtime; ProcessBuilder; System; Object; Using
                 clone() and the cloneable interface; Class;
                 ClassLoader; Math; StrictMath; Compiler; Thread,
                 ThreadGroup and runnable; ThreadLocal and
                 InheritableThreadLocal; Package; RuntimePermission;
                 Throwable; SecurityManager; StackTraceElement; Enum;
                 ClassValue; The CharSequence interface; The comparable
                 interface; The appendable interface; The iterable
                 interface; The readable interface; The AutoCloseable
                 interface; The Thread.UncaughtExceptionHandler
                 interface; The java.lang subpackages \\
                 18. java.util Part 1: The collections framework:
                 Collections overview; JDK 5 changed the collections
                 framework; The collection interfaces; The collection
                 classes; Accessing a collection via an iterator;
                 Spliterators; Storing user-defined classes in
                 collections; The RandomAccess interface; Working with
                 maps; Comparators; The collection algorithms; Arrays;
                 The legacy classes and interfaces; Parting thoughts on
                 collections \\
                 19. java.util Part 2: More utility classes:
                 StringTokenizer; BitSet; Optional, OptionalDouble,
                 OptionalInt, and OptionalLong; Date; Calendar;
                 GregorianCalendar; TimeZone; SimpleTimeZone; Locale;
                 Random; Observable; Timer and TimerTask; Currency;
                 Formatter; Scanner; The ResourceBundle,
                 ListResourceBundle, and PropertyResourceBundle classes;
                 Miscellaneous utility classes and interfaces; The
                 java.util subpackages \\
                 20. Input/output: exploring java.io: The I/O classes
                 and interfaces; File; The AutoCloseable, Closeable, and
                 flushable interfaces; I/O exceptions; Two ways to close
                 a stream; The stream classes; The byte streams; The
                 character streams; The console class; Serialization;
                 Stream benefits \\
                 21. Exploring NIO: The NIO classes; NIO fundamentals;
                 Enhancements added to NIO by JDK 7; Using the NIO
                 system; Pre-JDK 7 channel-based examples \\
                 22. Networking: Networking basics; The networking
                 classes and interfaces; Inet/Address; Inet4Address and
                 Inet6Address; TCP/IP client sockets; URL;
                 URLConnection; HttpURLConnection; The URI class;
                 Cookies; TCP/IP server sockets; Datagrams \\
                 23. The applet class: Two types of applets; Applet
                 basics; Applet architecture; An applet skeleton; Simple
                 applet display methods; Requesting repainting; Using
                 the status window; The HTML APPLET tag; Passing
                 parameters to applets; getDocumentBase() and
                 getCodeBase(); AppletContext and showDocument(); The
                 AudioClip interface; The AppletStub interface;
                 Outputting to the console \\
                 24. Event handling: Two event handling mechanisms; The
                 delegation event model; Event classes; The KeyEvent
                 class; Sources of events; Event listener interfaces;
                 Using the delegation event model; Adapter classes;
                 Inner classes \\
                 25. Introducing the AWT: working with windows,
                 graphics, and text: AWT classes; Window fundamentals;
                 Working with frame windows; Creating a frame window in
                 an AWT-based applet; Creating a windowed program;
                 Displaying information within a window; Introducing
                 graphics; Working with color; Setting the paint mode;
                 Working with fonts; Managing text output using
                 FontMetrics \\
                 26. Using AWT controls, layout managers, and menus: AWT
                 control fundamentals; Labels; Using buttons; Applying
                 check boxes; CheckboxGroup; Choice controls; Using
                 lists; Managing scroll bars; Using a TextField; Using a
                 TextArea; Understanding layout managers; Menu bars and
                 menus; Dialog boxes; FileDialog; A word about
                 overriding paint() \\
                 27. Images: File formats; Image fundamentals: creating,
                 loading, and displaying; ImageObserver; Double
                 buffering; MediaTracker; ImageProducer; ImageConsumer;
                 ImageFilter; Additional imaging classes \\
                 28. The concurrency utilities: The concurrent API
                 packages; Using synchronization objects; Phaser; Using
                 an executor; The TimeUnit enumeration; the concurrent
                 collections; Locks; Atomic operations; Parallel
                 programming via the fork/join framework; The
                 concurrency utilities versus Java's traditional
                 approach \\
                 29. The stream API: Stream basics; Reduction
                 operations; Using parallel streams; Mapping;
                 Collecting; Iterators and streams; More to explore in
                 the stream API \\
                 30. Regular expressions and other packages: The core
                 Java API packages; Regular expression processing;
                 Reflection; Remote method invocation (RMI); Formatting
                 date and time with java.text; The time and date API
                 added by JDK 8 \\
                 Part III. Introducing GUI programming with swing \\
                 31. Introducing swing: The origins of swing; Swing is
                 built on the AWT; Two key swing features; The MVC
                 connection; Components and containers; The swing
                 packages; A simple swing application; Event handling;
                 Create a swing applet; Painting in swing \\
                 32. Exploring swing: JLabel and ImageIcon; JTextField;
                 The swing buttons; JTabbedPane; JScrollPane; JList;
                 JComboBox; Trees; JTable \\
                 33. Introducing swing menus: Menu basics; An overview
                 of JMenuBar, JMenu, and JMenuItem; Create a main menu;
                 Add Mnemonics and accelerators to menu items; Add
                 images and tooltips to menu items; Use
                 JRadioButtonMenuItem and JCheckBoxMenuItem; Create a
                 popup menu; Create a toolbar; Use actions; Put the
                 entire MenuDemo program together; Continuing your
                 exploration of swing \\
                 Part IV. Introducing GUI programming with JavaFX \\
                 34. Introducing JavaFX GUI programming: JavaFX basic
                 concepts; A JavaFX application skeleton; Compiling and
                 running a JavaFX program; The application thread; A
                 simple JavaFX control: label; Using buttons and events;
                 Drawing directly on a canvas \\
                 35. Exploring JavaFX controls: Using image and
                 ImageView; ToggleButton; RadioButton; CheckBox;
                 ListView; ComboBox; TextField; ScrollPane; TreeView;
                 Introducing effects and transforms; Adding tooltips;
                 Disabling a control \\
                 36. Introducing JavaFX menus: Menu basics; An overview
                 of MenuBar, Menu, and MenuItem; Create a main menu; Add
                 mnemonics and accelerators to menu items; Add images to
                 menu items; Use RadioMenuItem and CheckMenuItem; Create
                 a context menu; Create a toolbar; Put the entire
                 MenuDemo program together; Continuing your exploration
                 of JavaFX \\
                 Part V. Applying Java \\
                 37. Java beans: What is a Java bean?; Advantages of
                 Java beans; Introspection; Bound and constrained
                 properties; Persistence; Customizers; The Java beans
                 API; A bean example \\
                 38. Introducing servlets: Background; The life cycle of
                 a servlet; Servlet development options; Using Tomcat; A
                 simple servlet; The servlet API; The javax.servlet
                 package; Reading servlet parameters; The
                 javax.servlet.http package; Handling HTTP requests and
                 responses; Using cookies; Session tracking \\
                 Appendix. Using Java's documentation comments: The
                 javadoc tags; The general form of a documentation
                 comment; What javadoc outputs; An example that uses
                 documentation comments",
}

@Article{Shahriyar:2014:FCG,
  author =       "Rifat Shahriyar and Stephen M. Blackburn and Kathryn
                 S. McKinley",
  title =        "Fast conservative garbage collection",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "121--139",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660198",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Garbage collectors are exact or conservative. An exact
                 collector identifies all references precisely and may
                 move referents and update references, whereas a
                 conservative collector treats one or more of stack,
                 register, and heap references as ambiguous. Ambiguous
                 references constrain collectors in two ways. (1) Since
                 they may be pointers, the collectors must retain
                 referents. (2) Since they may be values, the collectors
                 cannot modify them, pinning their referents. We explore
                 conservative collectors for managed languages, with
                 ambiguous stacks and registers. We show that for Java
                 benchmarks they retain and pin remarkably few heap
                 objects: $ < 0.01 \% $ are falsely retained and 0.03\%
                 are pinned. The larger effect is collector design.
                 Prior conservative collectors (1) use mark-sweep and
                 unnecessarily forgo moving all objects, or (2) use
                 mostly copying and pin entire pages. Compared to
                 generational collection, overheads are substantial:
                 12\% and 45\% respectively. We introduce high
                 performance conservative Immix and reference counting
                 (RC). Immix is a mark-region collector with fine line
                 -grain pinning and opportunistic copying of unambiguous
                 referents. Deferred RC simply needs an object map to
                 deliver the first conservative RC. We implement six
                 exact collectors and their conservative counterparts.
                 Conservative Immix and RC come within 2 to 3\% of their
                 exact counterparts. In particular, conservative RC
                 Immix is slightly faster than a well-tuned exact
                 generational collector. These findings show that for
                 managed languages, conservative collection is
                 compatible with high performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Sor:2014:MLD,
  author =       "Vladimir Sor and Satish Narayana Srirama",
  title =        "Memory leak detection in {Java}: Taxonomy and
                 classification of approaches",
  journal =      j-J-SYST-SOFTW,
  volume =       "96",
  number =       "??",
  pages =        "139--151",
  month =        oct,
  year =         "2014",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Sep 1 11:31:01 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121214001423",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Book{Stark:2014:JJV,
  author =       "Robert F. St{\"a}rk and Joachim Schmid and Egon
                 B{\"o}rger",
  title =        "{Java} and the {Java Virtual Machine}: Definition,
                 Verification, Validation",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "x + 381",
  year =         "2014",
  DOI =          "https://doi.org/10.1007/978-3-642-59495-3",
  ISBN =         "3-642-63997-6",
  ISBN-13 =      "978-3-642-63997-5",
  LCCN =         "QA76.76.C65",
  bibdate =      "Mon Jan 16 16:02:58 MST 2017",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  note =         "Softcover reprint of \cite{Stark:2001:JJV}.",
  URL =          "http://deposit.d-nb.de/cgi-bin/dokserv?id=4745749\%26prov=M\%26dok\_var=1\%26dok\_ext=htm",
  abstract =     "This book provides a high-level description, together
                 with a mathematical and an experimental analysis, of
                 Java and of the Java Virtual Machine (JVM), including a
                 standard compiler of Java programs to JVM code and the
                 security critical bytecode verifier component of the
                 JVM. The description is structured into language layers
                 and machine components. It comes with a natural
                 executable refinement which can be used for testing
                 code. The method developed for this purpose is based on
                 Abstract State Machines (ASMs) and can be applied to
                 other virtual machines and to other programming
                 languages as well. The book is written for advanced
                 students and for professionals and practitioners in
                 research and development who need for their work a
                 complete and transparent definition and an executable
                 model of the language and of the virtual machine
                 underlying its intended implementation.",
  acknowledgement = ack-nhfb,
  tableofcontents = "Introduction \\
                 Abstract State Machines \\
                 Part I. Java \\
                 Part II. Compilation of Java: The Trustful JVM \\
                 Part III. Bytecode Verification: The Secure JVM \\
                 Appendix \\
                 Index",
}

@Article{Steele:2014:FSP,
  author =       "Guy L. {Steele, Jr.} and Doug Lea and Christine H.
                 Flood",
  title =        "Fast splittable pseudorandom number generators",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "453--472",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660195",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/bibnet/authors/m/marsaglia-george.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/mathcw.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/prng.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tomacs.bib",
  abstract =     "We describe a new algorithm SplitMix for an
                 object-oriented and splittable pseudorandom number
                 generator (PRNG) that is quite fast: 9 64-bit
                 arithmetic/logical operations per 64 bits generated. A
                 conventional linear PRNG object provides a generate
                 method that returns one pseudorandom value and updates
                 the state of the PRNG, but a splittable PRNG object
                 also has a second operation, split, that replaces the
                 original PRNG object with two (seemingly) independent
                 PRNG objects, by creating and returning a new such
                 object and updating the state of the original object.
                 Splittable PRNG objects make it easy to organize the
                 use of pseudorandom numbers in multithreaded programs
                 structured using fork-join parallelism. No locking or
                 synchronization is required (other than the usual
                 memory fence immediately after object creation).
                 Because the generate method has no loops or
                 conditionals, it is suitable for SIMD or GPU
                 implementation. We derive SplitMix from the DotMix
                 algorithm of Leiserson, Schardl, and Sukha by making a
                 series of program transformations and engineering
                 improvements. The end result is an object-oriented
                 version of the purely functional API used in the
                 Haskell library for over a decade, but SplitMix is
                 faster and produces pseudorandom sequences of higher
                 quality; it is also far superior in quality and speed
                 to java.util.Random, and has been included in Java JDK8
                 as the class java.util.SplittableRandom. We have tested
                 the pseudorandom sequences produced by SplitMix using
                 two standard statistical test suites (DieHarder and
                 TestU01) and they appear to be adequate for
                 ``everyday'' use, such as in Monte Carlo algorithms and
                 randomized data structures where speed is important.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark-1 =     "OOPSLA '14 conference proceedings.",
  remark-2 =     "On page 466, the authors describe an interesting
                 technique for improving a user-supplied seed that might
                 produce insufficient randomness in the next several
                 members of the random-number sequence: ``Long runs of
                 0-bits or of 1-bits in the $\gamma$ [candidate seed]
                 value do not cause bits of the seed to flip; an
                 approximate proxy for how many bits of the seed will
                 flip might be the number of bit pairs of the form 01 or
                 10 in the candidate $\gamma$ value {\tt z}. Therefore
                 we require that the number of such pairs, as computed
                 by {\tt Long.bitCount(z ^ (z >>> 1))}, exceed 24; if it
                 does not, then the candidate z is replaced by the XOR
                 of {\tt z} and {\tt 0xaaaaaaaaaaaaaaaaL}, a constant
                 chosen so that (a) the low bit of {\tt z} remains 1,
                 and (b) every bit pair of the form 00 or 11 becomes
                 either 01 or 10, and likewise every bit pair of the
                 form 01 or 10 becomes either 00 or 11, so the new value
                 necessarily has more than 24 bit pairs whose bits
                 differ. Testing shows that this trick appears to be
                 effective.''",
  remark-3 =     "From page 468: ``we did three runs of TestU01 BigCrush
                 on {\tt java.util.Random}; 19 tests produced clear
                 failure on all three runs. These included 9 Birthday
                 Spacings tests, 8 ClosePairs tests, a WeightDistrib
                 test, and a CouponCollector test. This confirms
                 L'Ecuyer's observation that {\tt java.util.Random}
                 tends to fail Birthday Spacings tests [17].'' The
                 reference is to \cite{LEcuyer:2001:SUR}.",
  remark-4 =     "From page 470: ``[L'Ecuyer] comments, `In the Java
                 class {\tt java.util.Random}, RNG streams can be
                 declared and constructed dynamically, without limit on
                 their number. However, no precaution seems to have been
                 taken regarding the independence of these streams.'''",
  remark-5 =     "From page 471: ``They [the generators in this paper]
                 should not be used for cryptographic or security
                 applications, because they are too predictable (the
                 mixing functions are easily inverted, and two
                 successive outputs suffice to reconstruct the internal
                 state), \ldots{} One version seems especially suitable
                 for use as a replacement for {\tt java.util.Random},
                 because it produces sequences of higher quality, is
                 faster in sequential use, is easily parallelized for
                 use in JDK8 stream expressions, and is amenable to
                 efficient implementation on SIMD and GPU
                 architectures.''",
}

@Article{Stolee:2014:SSS,
  author =       "Kathryn T. Stolee and Sebastian Elbaum and Daniel
                 Dobos",
  title =        "Solving the Search for Source Code",
  journal =      j-TOSEM,
  volume =       "23",
  number =       "3",
  pages =        "26:1--26:??",
  month =        may,
  year =         "2014",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2581377",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Oct 7 19:00:52 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/string-matching.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Programmers frequently search for source code to reuse
                 using keyword searches. The search effectiveness in
                 facilitating reuse, however, depends on the
                 programmer's ability to specify a query that captures
                 how the desired code may have been implemented.
                 Further, the results often include many irrelevant
                 matches that must be filtered manually. More semantic
                 search approaches could address these limitations, yet
                 existing approaches are either not flexible enough to
                 find approximate matches or require the programmer to
                 define complex specifications as queries. We propose a
                 novel approach to semantic code search that addresses
                 several of these limitations and is designed for
                 queries that can be described using a concrete
                 input/output example. In this approach, programmers
                 write lightweight specifications as inputs and expected
                 output examples. Unlike existing approaches to semantic
                 search, we use an SMT solver to identify programs or
                 program fragments in a repository, which have been
                 automatically transformed into constraints using
                 symbolic analysis, that match the programmer-provided
                 specification. We instantiated and evaluated this
                 approach in subsets of three languages, the Java String
                 library, Yahoo! Pipes mashup language, and SQL select
                 statements, exploring its generality, utility, and
                 trade-offs. The results indicate that this approach is
                 effective at finding relevant code, can be used on its
                 own or to filter results from keyword searches to
                 increase search precision, and is adaptable to find
                 approximate matches and then guide modifications to
                 match the user specifications when exact matches do not
                 already exist. These gains in precision and flexibility
                 come at the cost of performance, for which underlying
                 factors and mitigation strategies are identified.",
  acknowledgement = ack-nhfb,
  articleno =    "26",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Stork:2014:APB,
  author =       "Sven Stork and Karl Naden and Joshua Sunshine and
                 Manual Mohr and Alcides Fonseca and Paulo Marques and
                 Jonathan Aldrich",
  title =        "{{\AE}minium}: a permission based
                 concurrent-by-default programming language approach",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "26--26",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594344",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The aim of {\AE}MINIUM is to study the implications of
                 having a concurrent-by-default programming language.
                 This includes language design, runtime system,
                 performance and software engineering considerations. We
                 conduct our study through the design of the
                 concurrent-by-default {\AE}MINIUM programming language.
                 {\AE}MINIUM leverages the permission flow of object and
                 group permissions through the program to validate the
                 program's correctness and to automatically infer a
                 possible parallelization strategy via a dataflow graph.
                 {\AE}MINIUM supports not only fork-join parallelism but
                 more general dataflow patterns of parallelism. In this
                 paper we present a formal system, called \mu
                 {\AE}MINIUM, modeling the core concepts of {\AE}MINIUM.
                 \mu {\AE}MINIUM's static type system is based on
                 Featherweight Java with {\AE}MINIUM-specific
                 extensions. Besides checking for correctness
                 {\AE}MINIUM's type system it also uses the permission
                 flow to compute a potential parallel execution strategy
                 for the program. \mu {\AE}MINIUM's dynamic semantics
                 use a concurrent-by-default evaluation approach. Along
                 with the formal system we present its soundness proof.
                 We provide a full description of the implementation
                 along with the description of various optimization
                 techniques we used. We implemented {\AE}MINIUM as an
                 extension of the Plaid programming language, which has
                 first-class support for permissions built-in. The
                 {\AE}MINIUM implementation and all case studies are
                 publicly available under the General Public License. We
                 use various case studies to evaluate {\AE}MINIUM's
                 applicability and to demonstrate that {\AE}MINIUM
                 parallelized code has performance improvements compared
                 to its sequential counterpart. We chose to use case
                 studies from common domains or problems that are known
                 to benefit from parallelization, to show that
                 {\AE}MINIUM is powerful enough to encode them. We
                 demonstrate through a webserver application, which
                 evaluates {\AE}MINIUM's impact on latency-bound
                 applications, that {\AE}MINIUM can achieve a 70\%
                 performance improvement over the sequential
                 counterpart. In another case study we chose to
                 implement a dictionary function to evaluate
                 {\AE}MINIUM's capabilities to express essential data
                 structures. Our evaluation demonstrates that
                 {\AE}MINIUM can be used to express parallelism in such
                 data-structures and that the performance benefits scale
                 with the amount of annotation effort which is put into
                 the implementation. We chose an integral
                 computationally example to evaluate pure functional
                 programming and computational intensive use cases. Our
                 experiments show that {\AE}MINIUM is capable of
                 extracting parallelism from functional code and
                 achieving performance improvements up to the limits of
                 Plaid's inherent performance bounds. Overall, we hope
                 that the work helps to advance concurrent programming
                 in modern programming environments.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Su:2014:CEM,
  author =       "Xueyuan Su and Garret Swart and Brian Goetz and Brian
                 Oliver and Paul Sandoz",
  title =        "Changing engines in midstream: a {Java} stream
                 computational model for big data processing",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "7",
  number =       "13",
  pages =        "1343--1354",
  month =        aug,
  year =         "2014",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Wed Feb 4 17:20:31 MST 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "With the addition of lambda expressions and the Stream
                 API in Java 8, Java has gained a powerful and
                 expressive query language that operates over in-memory
                 collections of Java objects, making the transformation
                 and analysis of data more convenient, scalable and
                 efficient. In this paper, we build on Java 8 Stream and
                 add a DistributableStream abstraction that supports
                 federated query execution over an extensible set of
                 distributed compute engines. Each query eventually
                 results in the creation of a materialized result that
                 is returned either as a local object or as an engine
                 defined distributed Java Collection that can be saved
                 and/or used as a source for future queries.
                 Distinctively, DistributableStream supports the
                 changing of compute engines both between and within a
                 query, allowing different parts of a computation to be
                 executed on different platforms. At execution time, the
                 query is organized as a sequence of pipelined stages,
                 each stage potentially running on a different engine.
                 Each node that is part of a stage executes its portion
                 of the computation on the data available locally or
                 produced by the previous stage of the computation. This
                 approach allows for computations to be assigned to
                 engines based on pricing, data locality, and resource
                 availability. Coupled with the inherent laziness of
                 stream operations, this brings great flexibility to
                 query planning and separates the semantics of the query
                 from the details of the engine used to execute it. We
                 currently support three engines, Local, Apache Hadoop
                 MapReduce and Oracle Coherence, and we illustrate how
                 new engines and data sources can be added.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Su:2014:RVP,
  author =       "Tzu-Hsiang Su and Hsiang-Jen Tsai and Keng-Hao Yang
                 and Po-Chun Chang and Tien-Fu Chen and Yi-Ting Zhao",
  title =        "Reconfigurable vertical profiling framework for the
                 {Android} runtime system",
  journal =      j-TECS,
  volume =       "13",
  number =       "2s",
  pages =        "59:1--59:??",
  month =        jan,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2544375.2544379",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Tue Jan 28 17:34:43 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "Dalvik virtual machine in the Android system creates a
                 profiling barrier between VM-space applications and
                 Linux user-space libraries. It is difficult for
                 existing profiling tools on the Android system to
                 definitively identify whether a bottleneck occurred in
                 the application level, the Linux user-space level, or
                 the Linux kernel level. Information barriers exist
                 between VM-space applications and Linux native analysis
                 tools due to runtime virtual machines' dynamic memory
                 allocation mechanism. Furthermore, traditional vertical
                 profiling tools targeted for Java virtual machines
                 cannot be simply applied on the Dalvik virtual machine
                 due to its unique design. The proposed the
                 Reconfigurable Vertical Profiling Framework bridges the
                 information gap and streamlines the hardware-software
                 co-design process for the Android runtime system.",
  acknowledgement = ack-nhfb,
  articleno =    "59",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?&idx=J840",
}

@Article{Sverdlove:2014:JVL,
  author =       "Harry Sverdlove",
  title =        "The {Java} vulnerability landscape",
  journal =      j-NETWORK-SECURITY,
  volume =       "2014",
  number =       "4",
  pages =        "9--14",
  month =        apr,
  year =         "2014",
  CODEN =        "NTSCF5",
  DOI =          "https://doi.org/10.1016/S1353-4858(14)70041-8",
  ISSN =         "1353-4858 (print), 1872-9371 (electronic)",
  ISSN-L =       "1353-4858",
  bibdate =      "Mon Dec 4 17:01:06 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/network-security.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1353485814700418",
  acknowledgement = ack-nhfb,
  fjournal =     "Network Security",
  journal-URL =  "https://www.sciencedirect.com/journal/network-security",
}

@Article{Swamy:2014:GTE,
  author =       "Nikhil Swamy and Cedric Fournet and Aseem Rastogi and
                 Karthikeyan Bhargavan and Juan Chen and Pierre-Yves
                 Strub and Gavin Bierman",
  title =        "Gradual typing embedded securely in {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "1",
  pages =        "425--437",
  month =        jan,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578855.2535889",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Mar 4 17:04:57 MST 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "POPL '14 conference proceedings.",
  abstract =     "JavaScript's flexible semantics makes writing correct
                 code hard and writing secure code extremely difficult.
                 To address the former problem, various forms of gradual
                 typing have been proposed, such as Closure and
                 TypeScript. However, supporting all common programming
                 idioms is not easy; for example, TypeScript
                 deliberately gives up type soundness for programming
                 convenience. In this paper, we propose a gradual type
                 system and implementation techniques that provide
                 important safety and security guarantees. We present
                 TS\# , a gradual type system and source-to-source
                 compiler for JavaScript. In contrast to prior gradual
                 type systems, TS\# features full runtime reflection
                 over three kinds of types: (1) simple types for
                 higher-order functions, recursive datatypes and
                 dictionary-based extensible records; (2) the type any,
                 for dynamically type-safe TS\# expressions; and (3) the
                 type un, for untrusted, potentially malicious
                 JavaScript contexts in which TS\# is embedded. After
                 type-checking, the compiler instruments the program
                 with various checks to ensure the type safety of TS\#
                 despite its interactions with arbitrary JavaScript
                 contexts, which are free to use eval, stack walks,
                 prototype customizations, and other offensive features.
                 The proof of our main theorem employs a form of
                 type-preserving compilation, wherein we prove all the
                 runtime invariants of the translation of TS\# to
                 JavaScript by showing that translated programs are
                 well-typed in JS\# , a previously proposed dependently
                 typed language for proving functional correctness of
                 JavaScript programs. We describe a prototype compiler,
                 a secure runtime, and sample applications for TS\#. Our
                 examples illustrate how web security patterns that
                 developers currently program in JavaScript (with much
                 difficulty and still with dubious results) can instead
                 be programmed naturally in TS\#, retaining a flavor of
                 idiomatic JavaScript, while providing strong safety
                 guarantees by virtue of typing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
}

@Article{Teyton:2014:SLM,
  author =       "C{\'e}dric Teyton and Jean-R{\'e}my Falleri and Marc
                 Palyart and Xavier Blanc",
  title =        "A study of library migrations in {Java}",
  journal =      j-J-SOFTW-EVOL-PROC,
  volume =       "26",
  number =       "11",
  pages =        "1030--1052",
  month =        nov,
  year =         "2014",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1002/smr.1660",
  ISSN =         "2047-7473 (print), 2047-7481 (electronic)",
  ISSN-L =       "2047-7473",
  bibdate =      "Wed Jan 31 13:48:30 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwevolproc.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software: Evolution and Process",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Tosch:2014:SPA,
  author =       "Emma Tosch and Emery D. Berger",
  title =        "{SurveyMan}: programming and automatically debugging
                 surveys",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "197--211",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660206",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Surveys can be viewed as programs, complete with
                 logic, control flow, and bugs. Word choice or the order
                 in which questions are asked can unintentionally bias
                 responses. Vague, confusing, or intrusive questions can
                 cause respondents to abandon a survey. Surveys can also
                 have runtime errors: inattentive respondents can taint
                 results. This effect is especially problematic when
                 deploying surveys in uncontrolled settings, such as on
                 the web or via crowdsourcing platforms. Because the
                 results of surveys drive business decisions and inform
                 scientific conclusions, it is crucial to make sure they
                 are correct. We present SurveyMan, a system for
                 designing, deploying, and automatically debugging
                 surveys. Survey authors write their surveys in a
                 lightweight domain-specific language aimed at end
                 users. SurveyMan statically analyzes the survey to
                 provide feedback to survey authors before deployment.
                 It then compiles the survey into JavaScript and deploys
                 it either to the web or a crowdsourcing platform.
                 SurveyMan 's dynamic analyses automatically find survey
                 bugs, and control for the quality of responses. We
                 evaluate SurveyMan 's algorithms analytically and
                 empirically, demonstrating its effectiveness with case
                 studies of social science surveys conducted via
                 Amazon's Mechanical Turk.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Tu:2014:PPP,
  author =       "Chia-Heng Tu and Hui-Hsin Hsu and Jen-Hao Chen and
                 Chun-Han Chen and Shih-Hao Hung",
  title =        "Performance and power profiling for emulated {Android}
                 systems",
  journal =      j-TODAES,
  volume =       "19",
  number =       "2",
  pages =        "10:1--10:??",
  month =        mar,
  year =         "2014",
  CODEN =        "ATASFO",
  DOI =          "https://doi.org/10.1145/2566660",
  ISSN =         "1084-4309 (print), 1557-7309 (electronic)",
  ISSN-L =       "1084-4309",
  bibdate =      "Fri Mar 21 18:21:14 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/todaes/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/todaes.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Simulation is a common approach for assisting system
                 design and optimization. For system-wide optimization,
                 energy and computational resources are often the two
                 most critical issues. Monitoring the energy state of
                 each hardware component and measuring the time spent in
                 each state is needed for accurate energy and
                 performance prediction. For software optimization, it
                 is important to profile the energy and the time
                 consumed by each software construct in a realistic
                 operating environment with a proper workload. However,
                 the conventional approaches of simulation often fail to
                 produce satisfying data. First, building a
                 cycle-accurate simulation environment for a complex
                 system, such as an Android smartphone, is difficult and
                 can take a long time. Second, a slow simulation can
                 significantly alter the behavior of multithreaded,
                 I/O-intensive applications and can affect the accuracy
                 of profiles. Third, existing software-based profilers
                 generally do not work on simulators, which makes it
                 difficult for performance analysis of complicated
                 software, for example, Java applications executed by
                 the Dalvik VM in an Android system. To address these
                 aforementioned problems, we proposed and prototyped a
                 framework, called virtual performance analyzer (VPA).
                 VPA takes advantage of an existing emulator or virtual
                 machine monitor to reduce the complexity of building a
                 simulator. VPA allows the user to selectively and
                 incrementally integrate timing models and power models
                 into the emulator with our carefully designed
                 performance/power monitors, tracing facility, and
                 profiling tools to evaluate and analyze the emulated
                 system. The emulated system can perform at different
                 levels of speed to help verify if the profile data are
                 impacted by the emulation speed. Finally, VPA supports
                 existing software-based profiles and enables
                 non-intrusive tracing/profiling by minimizing the probe
                 effect. Our experimental results show that the VPA
                 framework allows users to quickly establish a
                 performance/power evaluation environment and gather
                 useful information to support system design and
                 software optimization for Android smartphones.",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Design Automation of Electronic
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J776",
}

@Article{Ugawa:2014:ROP,
  author =       "Tomoharu Ugawa and Richard E. Jones and Carl G.
                 Ritson",
  title =        "Reference object processing in on-the-fly garbage
                 collection",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "11",
  pages =        "59--69",
  month =        nov,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775049.2602991",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Most proposals for on-the-fly garbage collection
                 ignore the question of Java's weak and other reference
                 types. However, we show that reference types are
                 heavily used in DaCapo benchmarks. Of the few
                 collectors that do address this issue, most block
                 mutators, either globally or individually, while
                 processing reference types. We introduce a new
                 framework for processing reference types on-the-fly in
                 Jikes RVM. Our framework supports both insertion and
                 deletion write barriers. We have model checked our
                 algorithm and incorporated it in our new implementation
                 of the Sapphire on-the-fly collector. Using a deletion
                 barrier, we process references while mutators are
                 running in less than three times the time that previous
                 approaches take while mutators are halted; our overall
                 execution times are no worse, and often better.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '14 conference proceedings.",
}

@Article{Vikas:2014:MGA,
  author =       "Vikas and Nasser Giacaman and Oliver Sinnen",
  title =        "Multiprocessing with {GUI}-awareness using
                 {OpenMP}-like directives in {Java}",
  journal =      j-PARALLEL-COMPUTING,
  volume =       "40",
  number =       "2",
  pages =        "69--89",
  month =        feb,
  year =         "2014",
  CODEN =        "PACOEJ",
  ISSN =         "0167-8191 (print), 1872-7336 (electronic)",
  ISSN-L =       "0167-8191",
  bibdate =      "Fri Feb 28 06:47:16 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/parallelcomputing.bib;
                 http://www.math.utah.edu/pub/tex/bib/pvm.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167819113001439",
  acknowledgement = ack-nhfb,
  fjournal =     "Parallel Computing",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01678191/",
}

@Article{Vilk:2014:DBB,
  author =       "John Vilk and Emery D. Berger",
  title =        "{Doppio}: breaking the browser language barrier",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "508--518",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594293",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Web browsers have become a de facto universal
                 operating system, and JavaScript its instruction set.
                 Unfortunately, running other languages in the browser
                 is not generally possible. Translation to JavaScript is
                 not enough because browsers are a hostile environment
                 for other languages. Previous approaches are either
                 non-portable or require extensive modifications for
                 programs to work in a browser. This paper presents
                 Doppio, a JavaScript-based runtime system that makes it
                 possible to run unaltered applications written in
                 general-purpose languages directly inside the browser.
                 Doppio provides a wide range of runtime services,
                 including a file system that enables local and external
                 (cloud-based) storage, an unmanaged heap, sockets,
                 blocking I/O, and multiple threads. We demonstrate
                 DOPPIO's usefulness with two case studies: we extend
                 Emscripten with Doppio, letting it run an unmodified
                 C++ application in the browser with full functionality,
                 and present DoppioJVM, an interpreter that runs
                 unmodified JVM programs directly in the browser. While
                 substantially slower than a native JVM (between 24X and
                 42X slower on CPU-intensive benchmarks in Google
                 Chrome), DoppioJVM makes it feasible to directly reuse
                 existing, non compute-intensive code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Vitek:2014:CTR,
  author =       "Jan Vitek",
  title =        "The case for the three {R}'s of systems research:
                 repeatability, reproducibility and rigor",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "7",
  pages =        "115--116",
  month =        jul,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2674025.2576216",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:29:50 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Computer systems research spans sub-disciplines that
                 include embedded systems, programming languages,
                 networking, and operating systems. In this talk my
                 contention is that a number of structural factors
                 inhibit quality systems research. Symptoms of the
                 problem include unrepeatable and unreproduced results
                 as well as results that are either devoid of meaning or
                 that measure the wrong thing. I will illustrate the
                 impact of these issues on our research output with
                 examples from the development and empirical evaluation
                 of the Schism real-time garbage collection algorithm
                 that is shipped with the FijiVM --- a Java virtual
                 machine for embedded and mobile devices. I will argue
                 that our field should foster: repetition of results,
                 independent reproduction, as well as rigorous
                 evaluation. I will outline some baby steps taken by
                 several computer conferences. In particular I will
                 focus on the introduction of Artifact Evaluation
                 Committees or AECs to ECOOP, OOPLSA, PLDI and soon
                 POPL. The goal of the AECs is to encourage author to
                 package the software artifacts that they used to
                 support the claims made in their paper and to submit
                 these artifacts for evaluation. AECs were carefully
                 designed to provide positive feedback to the authors
                 that take the time to create repeatable research.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '14 conference proceedings.",
}

@Article{Vouillon:2014:BJJ,
  author =       "J{\'e}r{\^o}me Vouillon and Vincent Balat",
  title =        "From bytecode to {JavaScript}: the {Js\_of\_ocaml}
                 compiler",
  journal =      j-SPE,
  volume =       "44",
  number =       "8",
  pages =        "951--972",
  month =        aug,
  year =         "2014",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2187",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Sep 10 05:57:37 MDT 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "26 Feb 2013",
}

@Article{Wood:2014:LLD,
  author =       "Benjamin P. Wood and Luis Ceze and Dan Grossman",
  title =        "Low-level detection of language-level data races with
                 {LARD}",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "42",
  number =       "1",
  pages =        "671--686",
  month =        mar,
  year =         "2014",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/2654822.2541955",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Aug 18 17:12:47 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "Researchers have proposed always-on data-race
                 exceptions as a way to avoid the ill effects of data
                 races, but slow performance of accurate dynamic
                 data-race detection remains a barrier to the adoption
                 of always-on data-race exceptions. Proposals for
                 accurate low-level (e.g., hardware) data-race detection
                 have the potential to reduce this performance barrier.
                 This paper explains why low-level data-race detectors
                 are wrong for programs written in high-level languages
                 (e.g., Java): they miss true data races and report
                 false data races in these programs. To bring the
                 benefits of low-level data-race detection to high-level
                 languages, we design low-level abstractable race
                 detection (LARD), an extension of the interface between
                 low-level data-race detectors and run-time systems that
                 enables accurate language-level data-race detection
                 using low-level detection mechanisms. We implement
                 accurate LARD data-race exception support for Java,
                 coupling a modified Jikes RVM Java virtual machine and
                 a simulated hardware race detector. We evaluate our
                 detector's accuracy against an accurate dynamic Java
                 data-race detector and other low-level race detectors
                 without LARD, showing that naive accurate low-level
                 data-race detectors suffer from many missed and false
                 language-level races in practice, and that LARD
                 prevents this inaccuracy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
  remark =       "ASPLOS '14 conference proceedings.",
}

@Article{Xu:2014:SRB,
  author =       "Guoqing Xu and Nick Mitchell and Matthew Arnold and
                 Atanas Rountev and Edith Schonberg and Gary Sevitsky",
  title =        "Scalable Runtime Bloat Detection Using Abstract
                 Dynamic Slicing",
  journal =      j-TOSEM,
  volume =       "23",
  number =       "3",
  pages =        "23:1--23:??",
  month =        may,
  year =         "2014",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2560047",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Oct 7 19:00:52 MDT 2014",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Many large-scale Java applications suffer from runtime
                 bloat. They execute large volumes of methods and create
                 many temporary objects, all to execute relatively
                 simple operations. There are large opportunities for
                 performance optimizations in these applications, but
                 most are being missed by existing optimization and
                 tooling technology. While JIT optimizations struggle
                 for a few percent improvement, performance experts
                 analyze deployed applications and regularly find gains
                 of 2$ \times $ or more. Finding such big gains is
                 difficult, for both humans and compilers, because of
                 the diffuse nature of runtime bloat. Time is spread
                 thinly across calling contexts, making it difficult to
                 judge how to improve performance. Our experience shows
                 that, in order to identify large performance
                 bottlenecks in a program, it is more important to
                 understand its dynamic dataflow than traditional
                 performance metrics, such as running time. This article
                 presents a general framework for designing and
                 implementing scalable analysis algorithms to find
                 causes of bloat in Java programs. At the heart of this
                 framework is a generalized form of runtime dependence
                 graph computed by abstract dynamic slicing, a
                 semantics-aware technique that achieves high
                 scalability by performing dynamic slicing over bounded
                 abstract domains. The framework is instantiated to
                 create two independent dynamic analyses, copy profiling
                 and cost-benefit analysis, that help programmers
                 identify performance bottlenecks by identifying,
                 respectively, high-volume copy activities and data
                 structures that have high construction cost but low
                 benefit for the forward execution. We have successfully
                 applied these analyses to large-scale and long-running
                 Java applications. We show that both analyses are
                 effective at detecting inefficient operations that can
                 be optimized for better performance. We also
                 demonstrate that the general framework is flexible
                 enough to be instantiated for dynamic analyses in a
                 variety of application domains.",
  acknowledgement = ack-nhfb,
  articleno =    "23",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Yoo:2014:WRR,
  author =       "Danny Yoo and Shriram Krishnamurthi",
  title =        "{Whalesong}: running {Racket} in the browser",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "2",
  pages =        "97--108",
  month =        feb,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2578856.2508172",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 26 06:09:05 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  note =         "DLS '13 conference proceedings.",
  abstract =     "JavaScript is the language of the ubiquitous Web, but
                 it only poorly supports event-driven functional
                 programs due to its single-threaded, asynchronous
                 nature and lack of rich control flow operators. We
                 present Whalesong, a compiler from Racket that
                 generates JavaScript code that masks these problems. We
                 discuss the implementation strategy using delimited
                 continuations, an interface to the DOM, and an FFI for
                 adapting JavaScript libraries to add new
                 platform-dependent reactive features. In the process,
                 we also describe extensions to Racket's functional
                 event-driven programming model. We also briefly discuss
                 the implementation details.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '13 conference proceedings.",
}

@Article{Zakkak:2014:JJM,
  author =       "Foivos S. Zakkak and Polyvios Pratikakis",
  title =        "{JDMM}: a {Java} memory model for non-cache-coherent
                 memory architectures",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "11",
  pages =        "83--92",
  month =        nov,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775049.2602999",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "As the number of cores continuously grows, processor
                 designers are considering non coherent memories as more
                 scalable and energy efficient alternatives to the
                 current coherent ones. The Java Memory Model (JMM)
                 requires that all cores can access the Java heap. It
                 guarantees sequential consistency for data-race-free
                 programs and no out-of-thin-air values for non
                 data-race-free programs. To implement the Java Memory
                 Model over non-cache-coherent and distributed
                 architectures Java Virtual Machines (JVMs) are most
                 likely to employ software caching. In this work, (i) we
                 provide a formalization of the Java Memory Model for
                 non-cache-coherent and distributed memory
                 architectures, (ii) prove the adherence of our model
                 with the Java Memory Model and (iii) evaluate,
                 regarding its compliance to the Java Memory Model, a
                 state-of-the-art Java Virtual Machine implementation on
                 a non-cache-coherent architecture.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '14 conference proceedings.",
}

@Article{Zeyda:2014:CMS,
  author =       "Frank Zeyda and Lalkhumsanga Lalkhumsanga and Ana
                 Cavalcanti and Andy Wellings",
  title =        "Circus Models for Safety-Critical {Java} Programs",
  journal =      j-COMP-J,
  volume =       "57",
  number =       "7",
  pages =        "1046--1091",
  month =        jul,
  year =         "2014",
  CODEN =        "CMPJA6",
  DOI =          "https://doi.org/10.1093/comjnl/bxt060",
  ISSN =         "0010-4620 (print), 1460-2067 (electronic)",
  ISSN-L =       "0010-4620",
  bibdate =      "Fri Jun 20 08:41:22 MDT 2014",
  bibsource =    "http://comjnl.oxfordjournals.org/content/57/7.toc;
                 http://www.math.utah.edu/pub/tex/bib/compj2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://comjnl.oxfordjournals.org/content/57/7/1046.full.pdf+html",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Journal",
  journal-URL =  "http://comjnl.oxfordjournals.org/",
  onlinedate =   "July 3, 2013",
}

@Article{Zhang:2014:AIO,
  author =       "Wei Zhang and Per Larsen and Stefan Brunthaler and
                 Michael Franz",
  title =        "Accelerating iterators in optimizing {AST}
                 interpreters",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "727--743",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660223",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Generators offer an elegant way to express iterators.
                 However, their performance has always been their
                 Achilles heel and has prevented widespread adoption. We
                 present techniques to efficiently implement and
                 optimize generators. We have implemented our
                 optimizations in ZipPy, a modern, light-weight AST
                 interpreter based Python 3 implementation targeting the
                 Java virtual machine. Our implementation builds on a
                 framework that optimizes AST interpreters using
                 just-in-time compilation. In such a system, it is
                 crucial that AST optimizations do not prevent
                 subsequent optimizations. Our system was carefully
                 designed to avoid this problem. We report an average
                 speedup of 3.58x for generator-bound programs. As a
                 result, using generators no longer has downsides and
                 programmers are free to enjoy their upsides.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Zhang:2014:ARP,
  author =       "Xin Zhang and Ravi Mangal and Radu Grigore and Mayur
                 Naik and Hongseok Yang",
  title =        "On abstraction refinement for program analyses in
                 {Datalog}",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "239--248",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594327",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "A central task for a program analysis concerns how to
                 efficiently find a program abstraction that keeps only
                 information relevant for proving properties of
                 interest. We present a new approach for finding such
                 abstractions for program analyses written in Datalog.
                 Our approach is based on counterexample-guided
                 abstraction refinement: when a Datalog analysis run
                 fails using an abstraction, it seeks to generalize the
                 cause of the failure to other abstractions, and pick a
                 new abstraction that avoids a similar failure. Our
                 solution uses a boolean satisfiability formulation that
                 is general, complete, and optimal: it is independent of
                 the Datalog solver, it generalizes the failure of an
                 abstraction to as many other abstractions as possible,
                 and it identifies the cheapest refined abstraction to
                 try next. We show the performance of our approach on a
                 pointer analysis and a typestate analysis, on eight
                 real-world Java benchmark programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Zhang:2014:HTB,
  author =       "Xin Zhang and Ravi Mangal and Mayur Naik and Hongseok
                 Yang",
  title =        "Hybrid top-down and bottom-up interprocedural
                 analysis",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "6",
  pages =        "249--258",
  month =        jun,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2666356.2594328",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Sep 26 07:38:28 MDT 2014",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Interprocedural static analyses are broadly classified
                 into top-down and bottom-up, depending upon how they
                 compute, instantiate, and reuse procedure summaries.
                 Both kinds of analyses are challenging to scale:
                 top-down analyses are hindered by ineffective reuse of
                 summaries whereas bottom-up analyses are hindered by
                 inefficient computation and instantiation of summaries.
                 This paper presents a hybrid approach Swift that
                 combines top-down and bottom-up analyses in a manner
                 that gains their benefits without suffering their
                 drawbacks. Swift is general in that it is parametrized
                 by the top-down and bottom-up analyses it combines. We
                 show an instantiation of Swift on a type-state analysis
                 and evaluate it on a suite of 12 Java programs of size
                 60-250 KLOC each. Swift outperforms both conventional
                 approaches, finishing on all the programs while both of
                 those approaches fail on the larger programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  received =     "PLDI '14 conference proceedings.",
}

@Article{Zhao:2014:CSP,
  author =       "Zhijia Zhao and Bo Wu and Mingzhou Zhou and Yufei Ding
                 and Jianhua Sun and Xipeng Shen and Youfeng Wu",
  title =        "Call sequence prediction through probabilistic calling
                 automata",
  journal =      j-SIGPLAN,
  volume =       "49",
  number =       "10",
  pages =        "745--762",
  month =        oct,
  year =         "2014",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2714064.2660221",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Predicting a sequence of upcoming function calls is
                 important for optimizing programs written in modern
                 managed languages (e.g., Java, Javascript, C\#.)
                 Existing function call predictions are mainly built on
                 statistical patterns, suitable for predicting a single
                 call but not a sequence of calls. This paper presents a
                 new way to enable call sequence prediction, which
                 exploits program structures through Probabilistic
                 Calling Automata (PCA), a new program representation
                 that captures both the inherent ensuing relations among
                 function calls, and the probabilistic nature of
                 execution paths. It shows that PCA-based prediction
                 outperforms existing predictions, yielding substantial
                 speedup when being applied to guide Just-In-Time
                 compilation. By enabling accurate, efficient call
                 sequence prediction for the first time, PCA-based
                 predictors open up many new opportunities for dynamic
                 program optimizations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '14 conference proceedings.",
}

@Article{Zschaler:2014:SJF,
  author =       "Steffen Zschaler and Birgit Demuth and Lothar
                 Schmitz",
  title =        "{Salespoint}: a {Java} framework for teaching
                 object-oriented software development",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "79",
  number =       "??",
  pages =        "189--203",
  day =          "1",
  month =        jan,
  year =         "2014",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Nov 30 15:06:12 MST 2013",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib;
                 http://www.sciencedirect.com/science/journal/01676423",
  URL =          "http://www.sciencedirect.com/science/article/pii/S016764231200069X",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Aigner:2015:AJE,
  author =       "Martin Aigner and Thomas H{\"u}tter and Christoph M.
                 Kirsch and Alexander Miller and Hannes Payer and Mario
                 Preishuber",
  title =        "{ACDC-JS}: explorative benchmarking of {JavaScript}
                 memory management",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "67--78",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661089",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "We present ACDC-JS, an open-source JavaScript memory
                 management benchmarking tool. ACDC-JS incorporates a
                 heap model based on real web applications and may be
                 configured to expose virtually any relevant performance
                 characteristics of JavaScript memory management
                 systems. ACDC-JS is based on ACDC, a benchmarking tool
                 for C/C++ that models periodic allocation and
                 deallocation behavior (AC) as well as persistent memory
                 (DC). We identify important characteristics of
                 JavaScript mutator behavior and propose a configurable
                 heap model based on typical distributions of these
                 characteristics as foundation for ACDC-JS. We describe
                 heap analyses of 13 real web applications extending
                 existing work on JavaScript behavior analysis. Our
                 experimental results show that ACDC-JS enables
                 performance benchmarking and debugging of
                 state-of-the-art JavaScript virtual machines such as V8
                 and SpiderMonkey by exposing key aspects of their
                 memory management performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Anikeev:2015:SGC,
  author =       "Maxim Anikeev and Felix C. Freiling and Johannes
                 G{\"o}tzfried and Tilo M{\"u}ller",
  title =        "Secure garbage collection: Preventing malicious data
                 harvesting from deallocated {Java} objects inside the
                 {Dalvik VM}",
  journal =      j-J-INFO-SEC-APPL,
  volume =       "22",
  number =       "??",
  pages =        "81--86",
  month =        jun,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.jisa.2014.10.001",
  ISSN =         "2214-2126",
  ISSN-L =       "2214-2126",
  bibdate =      "Sun May 8 11:59:08 MDT 2022",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jinfosecappl.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S2214212614001367",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Info. Sec. Appl.",
  fjournal =     "Journal of Information Security and Applications
                 (JISA)",
  journal-URL =  "http://www.sciencedirect.com/science/journal/22142126",
}

@Article{Anonymous:2015:BRL,
  author =       "Anonymous",
  title =        "Book Review: {{\booktitle{Learning PHP, MySQL,
                 JavaScript, CSS \& HTML5}}, by Robin Nixon. Third
                 Edition. O'Reilly. ISBN 978-1-4919-4946-7}",
  journal =      j-NETWORK-SECURITY,
  volume =       "2015",
  number =       "1",
  pages =        "4--4",
  month =        jan,
  year =         "2015",
  CODEN =        "NTSCF5",
  DOI =          "https://doi.org/10.1016/S1353-4858(15)70006-1",
  ISSN =         "1353-4858 (print), 1872-9371 (electronic)",
  ISSN-L =       "1353-4858",
  bibdate =      "Mon Dec 4 17:01:15 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/network-security.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1353485815700061",
  acknowledgement = ack-nhfb,
  fjournal =     "Network Security",
  journal-URL =  "https://www.sciencedirect.com/journal/network-security",
}

@Article{Ashrov:2015:UCB,
  author =       "Adiel Ashrov and Assaf Marron and Gera Weiss and Guy
                 Wiener",
  title =        "A use-case for behavioral programming: an architecture
                 in {JavaScript} and {Blockly} for interactive
                 applications with cross-cutting scenarios",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "98 (part 2)",
  number =       "??",
  pages =        "268--292",
  day =          "1",
  month =        feb,
  year =         "2015",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Thu Dec 4 19:44:58 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S016764231400032X",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Bell:2015:VFB,
  author =       "Jonathan Bell and Eric Melski and Mohan Dattatreya and
                 Gail E. Kaiser",
  title =        "{Vroom}: Faster Build Processes for {Java}",
  journal =      j-IEEE-SOFTWARE,
  volume =       "32",
  number =       "2",
  pages =        "97--104",
  month =        mar # "\slash " # apr,
  year =         "2015",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2015.32",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Jun 5 15:23:25 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.computer.org/csdl/mags/so/2015/02/mso2015020097-abs.html",
  abstract-URL = "http://www.computer.org/csdl/mags/so/2015/02/mso2015020097-abs.html",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  journalabr =   "IEEE Software",
}

@Article{Bogdanas:2015:KJC,
  author =       "Denis Bogdanas and Grigore Rosu",
  title =        "{K-Java}: a Complete Semantics of {Java}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "1",
  pages =        "445--456",
  month =        jan,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775051.2676982",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper presents K-Java, a complete executable
                 formal semantics of Java 1.4. K-Java was extensively
                 tested with a test suite developed alongside the
                 project, following the Test Driven Development
                 methodology. In order to maintain clarity while
                 handling the great size of Java, the semantics was
                 split into two separate definitions --- a static
                 semantics and a dynamic semantics. The output of the
                 static semantics is a preprocessed Java program, which
                 is passed as input to the dynamic semantics for
                 execution. The preprocessed program is a valid Java
                 program, which uses a subset of the features of Java.
                 The semantics is applied to model-check multi-threaded
                 programs. Both the test suite and the static semantics
                 are generic and ready to be used in other Java-related
                 projects.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '15 conference proceedings.",
}

@Article{Bouffard:2015:UCF,
  author =       "Guillaume Bouffard and Jean-Louis Lanet",
  title =        "The ultimate control flow transfer in a {Java} based
                 smart card",
  journal =      j-COMPUT-SECUR,
  volume =       "50",
  number =       "??",
  pages =        "33--46",
  month =        may,
  year =         "2015",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:41 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S016740481500005X",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Cameron:2015:JFE,
  author =       "Callum Cameron and Jeremy Singer and David Vengerov",
  title =        "The judgment of {FORSETI}: economic utility for
                 dynamic heap sizing of multiple runtimes",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "11",
  pages =        "143--156",
  month =        nov,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2887746.2754180",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:44 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "We introduce the FORSETI system, which is a principled
                 approach for holistic memory management. It permits a
                 sysadmin to specify the total physical memory resource
                 that may be shared between all concurrent virtual
                 machines on a physical node. FORSETI models the heap
                 size versus application throughput for each virtual
                 machine, and seeks to maximize the combined throughput
                 of the set of VMs based on concepts from economic
                 utility theory. We evaluate the FORSETI system using a
                 standard Java managed runtime, i.e. OpenJDK. Our
                 results demonstrate that FORSETI enables dramatic
                 reductions (up to 5x) in heap footprint without
                 compromising application execution times.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '15 conference proceedings.",
}

@Article{Ceccato:2015:LSE,
  author =       "Mariano Ceccato and Andrea Capiluppi and Paolo
                 Falcarin and Cornelia Boldyreff",
  title =        "A large study on the effect of code obfuscation on the
                 quality of {Java} code",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "20",
  number =       "6",
  pages =        "1486--1524",
  month =        dec,
  year =         "2015",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-014-9321-0",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Dec 2 09:14:40 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-014-9321-0",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Chaikalis:2015:FJS,
  author =       "T. Chaikalis and A. Chatzigeorgiou",
  title =        "Forecasting {Java} Software Evolution Trends Employing
                 Network Models",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "41",
  number =       "6",
  pages =        "582--602",
  month =        jun,
  year =         "2015",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2014.2381249",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6985636",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Chatterjee:2015:QIA,
  author =       "Krishnendu Chatterjee and Andreas Pavlogiannis and
                 Yaron Velner",
  title =        "Quantitative Interprocedural Analysis",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "1",
  pages =        "539--551",
  month =        jan,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775051.2676968",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We consider the quantitative analysis problem for
                 interprocedural control-flow graphs (ICFGs). The input
                 consists of an ICFG, a positive weight function that
                 assigns every transition a positive integer-valued
                 number, and a labelling of the transitions (events) as
                 good, bad, and neutral events. The weight function
                 assigns to each transition a numerical value that
                 represents a measure of how good or bad an event is.
                 The quantitative analysis problem asks whether there is
                 a run of the ICFG where the ratio of the sum of the
                 numerical weights of good events versus the sum of
                 weights of bad events in the long-run is at least a
                 given threshold (or equivalently, to compute the
                 maximal ratio among all valid paths in the ICFG). The
                 quantitative analysis problem for ICFGs can be solved
                 in polynomial time, and we present an efficient and
                 practical algorithm for the problem. We show that
                 several problems relevant for static program analysis,
                 such as estimating the worst-case execution time of a
                 program or the average energy consumption of a mobile
                 application, can be modeled in our framework. We have
                 implemented our algorithm as a tool in the Java Soot
                 framework. We demonstrate the effectiveness of our
                 approach with two case studies. First, we show that our
                 framework provides a sound approach (no false
                 positives) for the analysis of inefficiently-used
                 containers. Second, we show that our approach can also
                 be used for static profiling of programs which reasons
                 about methods that are frequently invoked. Our
                 experimental results show that our tool scales to
                 relatively large benchmarks, and discovers relevant and
                 useful information that can be used to optimize
                 performance of the programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '15 conference proceedings.",
}

@Article{Clifford:2015:MMD,
  author =       "Daniel Clifford and Hannes Payer and Michael Stanton
                 and Ben L. Titzer",
  title =        "Memento mori: dynamic allocation-site-based
                 optimizations",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "11",
  pages =        "105--117",
  month =        nov,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2887746.2754181",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:44 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Languages that lack static typing are ubiquitous in
                 the world of mobile and web applications. The rapid
                 rise of larger applications like interactive web GUIs,
                 games, and cryptography presents a new range of
                 implementation challenges for modern virtual machines
                 to close the performance gap between typed and untyped
                 languages. While all languages can benefit from
                 efficient automatic memory management, languages like
                 JavaScript present extra thrill with innocent-looking
                 but difficult features like dynamically-sized arrays,
                 deletable properties, and prototypes. Optimizing such
                 languages requires complex dynamic techniques with more
                 radical object layout strategies such as dynamically
                 evolving representations for arrays. This paper
                 presents a general approach for gathering temporal
                 allocation site feedback that tackles both the general
                 problem of object lifetime estimation and improves
                 optimization of these problematic language features. We
                 introduce a new implementation technique where
                 allocation mementos processed by the garbage collector
                 and runtime system efficiently tie objects back to
                 allocation sites in the program and dynamically
                 estimate object lifetime, representation, and size to
                 inform three optimizations: pretenuring,
                 pretransitioning, and presizing. Unlike previous work
                 on pretenuring, our system utilizes allocation mementos
                 to achieve fully dynamic allocation-site-based
                 pretenuring in a production system. We implement all of
                 our techniques in V8, a high performance virtual
                 machine for JavaScript, and demonstrate solid
                 performance improvements across a range of
                 benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '15 conference proceedings.",
}

@Article{Cogumbreiro:2015:DDV,
  author =       "Tiago Cogumbreiro and Raymond Hu and Francisco Martins
                 and Nobuko Yoshida",
  title =        "Dynamic deadlock verification for general barrier
                 synchronisation",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "150--160",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688519",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present Armus, a dynamic verification tool for
                 deadlock detection and avoidance specialised in barrier
                 synchronisation. Barriers are used to coordinate the
                 execution of groups of tasks, and serve as a building
                 block of parallel computing. Our tool verifies more
                 barrier synchronisation patterns than current
                 state-of-the-art. To improve the scalability of
                 verification, we introduce a novel event-based
                 representation of concurrency constraints, and a
                 graph-based technique for deadlock analysis. The
                 implementation is distributed and fault-tolerant, and
                 can verify X10 and Java programs. To formalise the
                 notion of barrier deadlock, we introduce a core
                 language expressive enough to represent the three most
                 widespread barrier synchronisation patterns: group,
                 split-phase, and dynamic membership. We propose a graph
                 analysis technique that selects from two alternative
                 graph representations: the Wait-For Graph, that favours
                 programs with more tasks than barriers; and the State
                 Graph, optimised for programs with more barriers than
                 tasks. We prove that finding a deadlock in either
                 representation is equivalent, and that the verification
                 algorithm is sound and complete with respect to the
                 notion of deadlock in our core language. Armus is
                 evaluated with three benchmark suites in local and
                 distributed scenarios. The benchmarks show that graph
                 analysis with automatic graph-representation selection
                 can record a 7-fold execution increase versus the
                 traditional fixed graph representation. The performance
                 measurements for distributed deadlock detection between
                 64 processes show negligible overheads.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@InCollection{deGouw:2015:OJU,
  author =       "Stijn de Gouw and Jurriaan Rot and Frank S. de Boer
                 and Richard Bubel and Reiner H{\"a}hnle",
  title =        "{OpenJDK}'s {{\tt Java.utils.Collection.sort()}} Is
                 Broken: The Good, the Bad and the Worst Case",
  crossref =     "Kroening:2015:CAV",
  pages =        "273--289",
  year =         "2015",
  DOI =          "https://doi.org/10.1007/978-3-319-21690-4_16",
  bibdate =      "Sat Jan 9 11:36:38 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://envisage-project.eu/wp-content/uploads/2015/02/sorting.pdf;
                 http://link.springer.com/chapter/10.1007/978-3-319-21690-4_16",
  abstract =     "We investigate the correctness of TimSort, which is
                 the main sorting algorithm provided by the Java
                 standard library. The goal is functional verification
                 with mechanical proofs. During our verification attempt
                 we discovered a bug which causes the implementation to
                 crash. We characterize the conditions under which the
                 bug occurs, and from this we derive a bug-free version
                 that does not compromise the performance. We formally
                 specify the new version and mechanically verify the
                 absence of this bug with KeY, a state-of-the-art
                 verification tool for Java.",
  acknowledgement = ack-nhfb,
}

@Article{Dietrich:2015:GSE,
  author =       "Jens Dietrich and Nicholas Hollingum and Bernhard
                 Scholz",
  title =        "Giga-scale exhaustive points-to analysis for {Java} in
                 under a minute",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "535--551",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814307",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Computing a precise points-to analysis for very large
                 Java programs remains challenging despite the large
                 body of research on points-to analysis. Any approach
                 must solve an underlying dynamic graph reachability
                 problem, for which the best algorithms have near-cubic
                 worst-case runtime complexity, and, hence, previous
                 work does not scale to programs with millions of lines
                 of code. In this work, we present a novel approach for
                 solving the field-sensitive points-to problem for Java
                 with the means of (1) a transitive-closure
                 data-structure, and (2) a pre-computed set of
                 potentially matching load/store pairs to accelerate the
                 fix-point calculation. Experimentation on Java
                 benchmarks validates the superior performance of our
                 approach over the standard context-free language
                 reachability implementations. Our approach computes a
                 points-to index for the OpenJDK with over 1.5 billion
                 tuples in under a minute.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Disney:2015:SYJ,
  author =       "Tim Disney and Nathan Faubion and David Herman and
                 Cormac Flanagan",
  title =        "Sweeten your {JavaScript}: hygienic macros for {ES5}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "35--44",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661097",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Lisp and Scheme have demonstrated the power of macros
                 to enable programmers to evolve and craft languages. In
                 languages with more complex syntax, macros have had
                 less success. In part, this has been due to the
                 difficulty in building expressive hygienic macro
                 systems for such languages. JavaScript in particular
                 presents unique challenges for macro systems due to
                 ambiguities in the lexing stage that force the
                 JavaScript lexer and parser to be intertwined. In this
                 paper we present a novel solution to the lexing
                 ambiguity of JavaScript that enables us to cleanly
                 separate the JavaScript lexer and parser by recording
                 enough history during lexing to resolve ambiguities. We
                 give an algorithm for this solution along with a proof
                 that it does in fact correctly resolve ambiguities in
                 the language. Though the algorithm and proof we present
                 is specific to JavaScript, the general technique can be
                 applied to other languages with ambiguous grammars.
                 With lexer and parser separated, we then implement an
                 expressive hygienic macro system for JavaScript called
                 sweet.js.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Ebert:2015:ESE,
  author =       "Felipe Ebert and Fernando Castor and Alexander
                 Serebrenik",
  title =        "An exploratory study on exception handling bugs in
                 {Java} programs",
  journal =      j-J-SYST-SOFTW,
  volume =       "106",
  number =       "??",
  pages =        "82--101",
  month =        aug,
  year =         "2015",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Jun 8 11:23:23 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121215000862",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Article{Erdweg:2015:SOI,
  author =       "Sebastian Erdweg and Moritz Lichter and Manuel Weiel",
  title =        "A sound and optimal incremental build system with
                 dynamic dependencies",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "89--106",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814316",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Build systems are used in all but the smallest
                 software projects to invoke the right build tools on
                 the right files in the right order. A build system must
                 be sound (after a build, generated files consistently
                 reflect the latest source files) and efficient (recheck
                 and rebuild as few build units as possible).
                 Contemporary build systems provide limited efficiency
                 because they lack support for expressing fine-grained
                 file dependencies. We present a build system called
                 pluto that supports the definition of reusable,
                 parameterized, interconnected builders. When run, a
                 builder notifies the build system about dynamically
                 required and produced files as well as about other
                 builders whose results are needed. To support
                 fine-grained file dependencies, we generalize the
                 traditional notion of time stamps to allow builders to
                 declare their actual requirements on a file's content.
                 pluto collects the requirements and products of a
                 builder with their stamps in a build summary. This
                 enables pluto to provides provably sound and optimal
                 incremental rebuilding. To support dynamic
                 dependencies, our rebuild algorithm interleaves
                 dependency analysis and builder execution and enforces
                 invariants on the dependency graph through a dynamic
                 analysis. We have developed pluto as a Java API and
                 used it to implement more than 25 builders. We describe
                 our experience with migrating a larger Ant build script
                 to pluto and compare the respective build times.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Exposito:2015:LLJ,
  author =       "Roberto R. Exp{\'o}sito and Guillermo L. Taboada and
                 Sabela Ramos and Juan Touri{\~n}o and Ram{\'o}n
                 Doallo",
  title =        "Low-latency {Java} communication devices on
                 {RDMA}-enabled networks",
  journal =      j-CCPE,
  volume =       "27",
  number =       "17",
  pages =        "4852--4879",
  day =          "10",
  month =        dec,
  year =         "2015",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3473",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Feb 9 06:13:20 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "15 May 2015",
}

@Article{Fan:2015:UCC,
  author =       "Hua Fan and Aditya Ramaraju and Marlon McKenzie and
                 Wojciech Golab and Bernard Wong",
  title =        "Understanding the causes of consistency anomalies in
                 {Apache Cassandra}",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "8",
  number =       "7",
  pages =        "810--813",
  month =        feb,
  year =         "2015",
  CODEN =        "????",
  ISSN =         "2150-8097",
  bibdate =      "Wed Apr 15 19:04:24 MDT 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "A recent paper on benchmarking eventual consistency
                 showed that when a constant workload is applied against
                 Cassandra, the staleness of values returned by read
                 operations exhibits interesting but unexplained
                 variations when plotted against time. In this paper we
                 reproduce this phenomenon and investigate in greater
                 depth the low-level mechanisms that give rise to stale
                 reads. We show that the staleness spikes exhibited by
                 Cassandra are strongly correlated with garbage
                 collection, particularly the ``stop-the-world'' phase
                 which pauses all application threads in a Java virtual
                 machine. We show experimentally that the staleness
                 spikes can be virtually eliminated by delaying read
                 operations artificially at servers immediately after a
                 garbage collection pause. In our experiments this
                 yields more than a 98\% reduction in the number of
                 consistency anomalies that exceed 5ms, and has
                 negligible impact on throughput and latency.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Felgentreff:2015:CBC,
  author =       "Tim Felgentreff and Todd Millstein and Alan Borning
                 and Robert Hirschfeld",
  title =        "Checks and balances: constraint solving without
                 surprises in object-constraint programming languages",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "767--782",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814311",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Object-constraint programming systems integrate
                 declarative constraint solving with imperative,
                 object-oriented languages, seamlessly providing the
                 power of both paradigms. However, experience with
                 object-constraint systems has shown that giving too
                 much power to the constraint solver opens up the
                 potential for solutions that are surprising and
                 unintended as well as for complex interactions between
                 constraints and imperative code. On the other hand,
                 systems that overly limit the power of the solver, for
                 example by disallowing constraints involving mutable
                 objects, object identity, or polymorphic message sends,
                 run the risk of excluding the core object-oriented
                 features of the language from the constraint part, and
                 consequently not being able to express declaratively a
                 large set of interesting problem solutions. In this
                 paper we present design principles that tame the power
                 of the constraint solver in object-constraint languages
                 to avoid difficult corner cases and surprising
                 solutions while retaining the key features of the
                 approach, including constraints over mutable objects,
                 constraints involving object identity, and constraints
                 on the results of message sends. We present our
                 solution concretely in the context of the Babelsberg
                 object-constraint language framework, providing both an
                 informal description of the resulting language and a
                 formal semantics for a core subset of it. We validate
                 the utility of this semantics with an executable
                 version that allows us to run test programs and to
                 verify that they provide the same results as existing
                 implementations of Babelsberg in JavaScript, Ruby, and
                 Smalltalk.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Feng:2015:EQD,
  author =       "Yu Feng and Xinyu Wang and Isil Dillig and Calvin
                 Lin",
  title =        "{EXPLORER}: query- and demand-driven exploration of
                 interprocedural control flow properties",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "520--534",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814284",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper describes a general framework and its
                 implementation in a tool called EXPLORER for statically
                 answering a class of interprocedural control flow
                 queries about Java programs. EXPLORER allows users to
                 formulate queries about feasible callstack
                 configurations using regular expressions, and it
                 employs a precise, demand-driven algorithm for
                 answering such queries. Specifically, EXPLORER
                 constructs an automaton A that is iteratively refined
                 until either the language accepted by A is empty
                 (meaning that the query has been refuted) or until no
                 further refinement is possible based on a precise,
                 context-sensitive abstraction of the program. We
                 evaluate EXPLORER by applying it to three different
                 program analysis tasks, namely, (1) analysis of the
                 observer design pattern in Java, (2) identification of
                 a class of performance bugs, and (3) analysis of
                 inter-component communication in Android applications.
                 Our evaluation shows that EXPLORER is both efficient
                 and precise.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Freudenberg:2015:SMP,
  author =       "Bert Freudenberg and Dan H. H. Ingalls and Tim
                 Felgentreff and Tobias Pape and Robert Hirschfeld",
  title =        "{SqueakJS}: a modern and practical smalltalk that runs
                 in any browser",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "57--66",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661100",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "We report our experience in implementing SqueakJS, a
                 bit-compatible implementation of Squeak/Smalltalk
                 written in pure JavaScript. SqueakJS runs entirely in
                 the Web browser with a virtual filesystem that can be
                 directed to a server or client-side storage. Our
                 implementation is notable for simplicity and
                 performance gained through adaptation to the host
                 object memory and deployment leverage gained through
                 the Lively Web development environment. We present
                 several novel techniques as well as performance
                 measurements for the resulting virtual machine. Much of
                 this experience is potentially relevant to preserving
                 other dynamic language systems and making them
                 available in a browser-based environment.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Gidra:2015:NGC,
  author =       "Lokesh Gidra and Ga{\"e}l Thomas and Julien Sopena and
                 Marc Shapiro and Nhan Nguyen",
  title =        "{NumaGiC}: a Garbage Collector for Big Data on Big
                 {NUMA} Machines",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "4",
  pages =        "661--673",
  month =        apr,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775054.2694361",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "On contemporary cache-coherent Non-Uniform Memory
                 Access (ccNUMA) architectures, applications with a
                 large memory footprint suffer from the cost of the
                 garbage collector (GC), because, as the GC scans the
                 reference graph, it makes many remote memory accesses,
                 saturating the interconnect between memory nodes. We
                 address this problem with NumaGiC, a GC with a
                 mostly-distributed design. In order to maximise memory
                 access locality during collection, a GC thread avoids
                 accessing a different memory node, instead notifying a
                 remote GC thread with a message; nonetheless, NumaGiC
                 avoids the drawbacks of a pure distributed design,
                 which tends to decrease parallelism. We compare NumaGiC
                 with Parallel Scavenge and NAPS on two different ccNUMA
                 architectures running on the Hotspot Java Virtual
                 Machine of OpenJDK 7. On Spark and Neo4j, two
                 industry-strength analytics applications, with heap
                 sizes ranging from 160GB to 350GB, and on SPECjbb2013
                 and SPECjbb2005, our gc improves overall performance by
                 up to 45\% over NAPS (up to 94\% over Parallel
                 Scavenge), and increases the performance of the
                 collector itself by up to 3.6x over NAPS (up to 5.4x
                 over Parallel Scavenge).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '15 conference proceedings.",
}

@Article{Gill:2015:RMD,
  author =       "Andy Gill and Neil Sculthorpe and Justin Dawson and
                 Aleksander Eskilson and Andrew Farmer and Mark Grebe
                 and Jeffrey Rosenbluth and Ryan Scott and James
                 Stanton",
  title =        "The remote monad design pattern",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "12",
  pages =        "59--70",
  month =        dec,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2887747.2804311",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:44 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Remote Procedure Calls are expensive. This paper
                 demonstrates how to reduce the cost of calling remote
                 procedures from Haskell by using the remote monad
                 design pattern, which amortizes the cost of remote
                 calls. This gives the Haskell community access to
                 remote capabilities that are not directly supported, at
                 a surprisingly inexpensive cost. We explore the remote
                 monad design pattern through six models of remote
                 execution patterns, using a simulated Internet of
                 Things toaster as a running example. We consider the
                 expressiveness and optimizations enabled by each remote
                 execution model, and assess the feasibility of our
                 approach. We then present a full-scale case study: a
                 Haskell library that provides a Foreign Function
                 Interface to the JavaScript Canvas API. Finally, we
                 discuss existing instances of the remote monad design
                 pattern found in Haskell libraries.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "Haskell '15 conference proceedings.",
}

@Article{Gligoric:2015:GCB,
  author =       "Milos Gligoric and Alex Groce and Chaoqiang Zhang and
                 Rohan Sharma and Mohammad Amin Alipour and Darko
                 Marinov",
  title =        "Guidelines for Coverage-Based Comparisons of
                 Non-Adequate Test Suites",
  journal =      j-TOSEM,
  volume =       "24",
  number =       "4",
  pages =        "22:1--22:??",
  month =        aug,
  year =         "2015",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2660767",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Sep 8 18:21:02 MDT 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "A fundamental question in software testing research is
                 how to compare test suites, often as a means for
                 comparing test-generation techniques that produce those
                 test suites. Researchers frequently compare test suites
                 by measuring their coverage. A coverage criterion C
                 provides a set of test requirements and measures how
                 many requirements a given suite satisfies. A suite that
                 satisfies 100\% of the feasible requirements is called
                 C-adequate. Previous rigorous evaluations of coverage
                 criteria mostly focused on such adequate test suites:
                 given two criteria C and C', are C-adequate suites on
                 average more effective than C'-adequate suites?
                 However, in many realistic cases, producing adequate
                 suites is impractical or even impossible. This article
                 presents the first extensive study that evaluates
                 coverage criteria for the common case of non-adequate
                 test suites: given two criteria C and C', which one is
                 better to use to compare test suites? Namely, if suites
                 T$_1$, T$_2$,..., T$_n$ have coverage values $ c_1$, $
                 c_2$,..., $ c_n$ for C and $ c_1 '$, $ c_2 '$,..., $
                 c_n'$ for C', is it better to compare suites based on $
                 c_1$, $ c_2$,..., $ c_n$ or based on $ c_1 '$, $ c_2 '$
                 \ldots{}, $ c_n'$ ? We evaluate a large set of
                 plausible criteria, including basic criteria such as
                 statement and branch coverage, as well as stronger
                 criteria used in recent studies, including criteria
                 based on program paths, equivalence classes of covered
                 statements, and predicate states. The criteria are
                 evaluated on a set of Java and C programs with both
                 manually written and automatically generated test
                 suites. The evaluation uses three correlation measures.
                 Based on these experiments, two criteria perform best:
                 branch coverage and an intraprocedural acyclic path
                 coverage. We provide guidelines for testing researchers
                 aiming to evaluate test suites using coverage criteria
                 as well as for other researchers evaluating coverage
                 criteria for research use.",
  acknowledgement = ack-nhfb,
  articleno =    "22",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Golan-Gueta:2015:ASA,
  author =       "Guy Golan-Gueta and G. Ramalingam and Mooly Sagiv and
                 Eran Yahav",
  title =        "Automatic scalable atomicity via semantic locking",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "31--41",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688511",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In this paper, we consider concurrent programs in
                 which the shared state consists of instances of
                 linearizable ADTs (abstract data types). We present an
                 automated approach to concurrency control that
                 addresses a common need: the need to atomically execute
                 a code fragment, which may contain multiple ADT
                 operations on multiple ADT instances. We present a
                 synthesis algorithm that automatically enforces
                 atomicity of given code fragments (in a client program)
                 by inserting pessimistic synchronization that
                 guarantees atomicity and deadlock-freedom (without
                 using any rollback mechanism). Our algorithm takes a
                 commutativity specification as an extra input. This
                 specification indicates for every pair of ADT
                 operations the conditions under which the operations
                 commute. Our algorithm enables greater parallelism by
                 permitting commuting operations to execute
                 concurrently. We have implemented the synthesis
                 algorithm in a Java compiler, and applied it to several
                 Java programs. Our results show that our approach
                 produces efficient and scalable synchronization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Gramoli:2015:MTY,
  author =       "Vincent Gramoli",
  title =        "More than you ever wanted to know about
                 synchronization: synchrobench, measuring the impact of
                 the synchronization on concurrent algorithms",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "1--10",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688501",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In this paper, we present the most extensive
                 comparison of synchronization techniques. We evaluate 5
                 different synchronization techniques through a series
                 of 31 data structure algorithms from the recent
                 literature on 3 multicore platforms from Intel, Sun
                 Microsystems and AMD. To this end, we developed in
                 C/C++ and Java a new micro-benchmark suite, called
                 Synchrobench, hence helping the community evaluate new
                 data structures and synchronization techniques. The
                 main conclusion of this evaluation is threefold: (i)
                 although compare-and-swap helps achieving the best
                 performance on multicores, doing so correctly is hard;
                 (ii) optimistic locking offers varying performance
                 results while transactional memory offers more
                 consistent results; and (iii) copy-on-write and
                 read-copy-update suffer more from contention than any
                 other technique but could be combined with others to
                 derive efficient algorithms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Gvero:2015:SJE,
  author =       "Tihomir Gvero and Viktor Kuncak",
  title =        "Synthesizing {Java} expressions from free-form
                 queries",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "416--432",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814295",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a new code assistance tool for integrated
                 development environments. Our system accepts as input
                 free-form queries containing a mixture of English and
                 Java, and produces Java code expressions that take the
                 query into account and respect syntax, types, and
                 scoping rules of Java, as well as statistical usage
                 patterns. In contrast to solutions based on code
                 search, the results returned by our tool need not
                 directly correspond to any previously seen code
                 fragment. As part of our system we have constructed a
                 probabilistic context free grammar for Java constructs
                 and library invocations, as well as an algorithm that
                 uses a customized natural language processing tool
                 chain to extract information from free-form text
                 queries. We present the results on a number of examples
                 showing that our technique (1) often produces the
                 expected code fragments, (2) tolerates much of the
                 flexibility of natural language, and (3) can repair
                 incorrect Java expressions that use, for example, the
                 wrong syntax or missing arguments.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Hague:2015:DRC,
  author =       "Matthew Hague and Anthony W. Lin and C.-H. Luke Ong",
  title =        "Detecting redundant {CSS} rules in {HTML5}
                 applications: a tree rewriting approach",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "1--19",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814288",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "HTML5 applications normally have a large set of CSS
                 (Cascading Style Sheets) rules for data display. Each
                 CSS rule consists of a node selector and a declaration
                 block (which assigns values to selected nodes' display
                 attributes). As web applications evolve, maintaining
                 CSS files can easily become problematic. Some CSS rules
                 will be replaced by new ones, but these obsolete (hence
                 redundant) CSS rules often remain in the applications.
                 Not only does this ``bloat'' the applications ---
                 increasing the bandwidth requirement --- but it also
                 significantly increases web browsers' processing time.
                 Most works on detecting redundant CSS rules in HTML5
                 applications do not consider the dynamic behaviours of
                 HTML5 (specified in JavaScript); in fact, the only
                 proposed method that takes these into account is
                 dynamic analysis, which cannot soundly prove redundancy
                 of CSS rules. In this paper, we introduce an
                 abstraction of HTML5 applications based on monotonic
                 tree-rewriting and study its ``redundancy problem''. We
                 establish the precise complexity of the problem and
                 various subproblems of practical importance (ranging
                 from P to EXP). In particular, our algorithm relies on
                 an efficient reduction to an analysis of symbolic
                 pushdown systems (for which highly optimised solvers
                 are available), which yields a fast method for checking
                 redundancy in practice. We implemented our algorithm
                 and demonstrated its efficacy in detecting redundant
                 CSS rules in HTML5 applications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Hanenberg:2015:WDW,
  author =       "Stefan Hanenberg",
  title =        "Why do we know so little about programming languages,
                 and what would have happened if we had known more?",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "1--1",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661102",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Programming language research in the last decades was
                 mainly driven by mathematical methods (such as formal
                 semantics, correctness proofs, type soundness proofs,
                 etc.) or run-time arguments based on benchmark tests.
                 This happened despite the frequent discussion over
                 programming language usability. We have now been
                 through decade after decade of one language after
                 another dominating the field, forcing companies to
                 switch languages and migrate libraries. Now that
                 Javascript seems to be the next language to dominate,
                 people start to ask old questions anew. The first goal
                 of this talk is to discuss why the application of
                 empirical methods is (still) relatively rare in PL
                 research, and to discuss what could be done in
                 empirical methods to make them a substantial part of PL
                 research. The second goal is to speculate about the
                 possible effects that concrete empirical knowledge
                 could have had on the programming language community.
                 For example, what would have happened to programming
                 languages if current knowledge would have been
                 available 30 years ago? What if knowledge about
                 programming languages from the year 2050 would be
                 available today?",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Humer:2015:DSL,
  author =       "Christian Humer and Christian Wimmer and Christian
                 Wirth and Andreas W{\"o}{\ss} and Thomas
                 W{\"u}rthinger",
  title =        "A domain-specific language for building
                 self-optimizing {AST} interpreters",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "3",
  pages =        "123--132",
  month =        mar,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775053.2658776",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:23 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Self-optimizing AST interpreters dynamically adapt to
                 the provided input for faster execution. This
                 adaptation includes initial tests of the input, changes
                 to AST nodes, and insertion of guards that ensure
                 assumptions still hold. Such specialization and
                 speculation is essential for the performance of dynamic
                 programming languages such as JavaScript. In
                 traditional procedural and objectoriented programming
                 languages it can be tedious to write selfoptimizing AST
                 interpreters, as those languages fail to provide
                 constructs that would specifically support that. This
                 paper introduces a declarative domain-specific language
                 (DSL) that greatly simplifies writing self-optimizing
                 AST interpreters. The DSL supports specialization of
                 operations based on types of the input and other
                 properties. It can then use these specializations
                 directly or chain them to represent the operation with
                 the minimum amount of code possible. The DSL
                 significantly reduces the complexity of expressing
                 specializations for those interpreters. We use it in
                 our high-performance implementation of JavaScript,
                 where 274 language operations have an average of about
                 4 and a maximum of 190 specializations. In addition,
                 the DSL is used in implementations of Ruby, Python, R,
                 and Smalltalk.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '14 conference proceedings.",
}

@Article{Johnson:2015:EES,
  author =       "Andrew Johnson and Lucas Waye and Scott Moore and
                 Stephen Chong",
  title =        "Exploring and enforcing security guarantees via
                 program dependence graphs",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "6",
  pages =        "291--302",
  month =        jun,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2813885.2737957",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:41 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present PIDGIN, a program analysis and
                 understanding tool that enables the specification and
                 enforcement of precise application-specific information
                 security guarantees. PIDGIN also allows developers to
                 interactively explore the information flows in their
                 applications to develop policies and investigate
                 counter-examples. PIDGIN combines program dependence
                 graphs (PDGs), which precisely capture the information
                 flows in a whole application, with a custom PDG query
                 language. Queries express properties about the paths in
                 the PDG; because paths in the PDG correspond to
                 information flows in the application, queries can be
                 used to specify global security policies. PIDGIN is
                 scalable. Generating a PDG for a 330k line Java
                 application takes 90 seconds, and checking a policy on
                 that PDG takes under 14 seconds. The query language is
                 expressive, supporting a large class of precise,
                 application-specific security guarantees. Policies are
                 separate from the code and do not interfere with
                 testing or development, and can be used for security
                 regression testing. We describe the design and
                 implementation of PIDGIN and report on using it: (1) to
                 explore information security guarantees in legacy
                 programs; (2) to develop and modify security policies
                 concurrently with application development; and (3) to
                 develop policies based on known vulnerabilities.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '15 conference proceedings.",
}

@Article{Karakoidas:2015:TSE,
  author =       "Vassilios Karakoidas and Dimitris Mitropoulos and
                 Panagiotis Louridas and Diomidis Spinellis",
  title =        "A type-safe embedding of {SQL} into {Java} using the
                 extensible compiler framework {J\%}",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "41",
  number =       "??",
  pages =        "1--20",
  month =        apr,
  year =         "2015",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Fri Apr 17 08:28:13 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842415000020",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Keil:2015:BAH,
  author =       "Matthias Keil and Peter Thiemann",
  title =        "Blame assignment for higher-order contracts with
                 intersection and union",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "9",
  pages =        "375--386",
  month =        sep,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858949.2784737",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present an untyped calculus of blame assignment for
                 a higher-order contract system with two new operators:
                 intersection and union. The specification of these
                 operators is based on the corresponding type theoretic
                 constructions. This connection makes intersection and
                 union contracts their inevitable dynamic counterparts
                 with a range of desirable properties and makes them
                 suitable for subsequent integration in a gradual type
                 system. A denotational specification provides the
                 semantics of a contract in terms of two sets: a set of
                 terms satisfying the contract and a set of contexts
                 respecting the contract. This kind of specification for
                 contracts is novel and interesting in its own right. A
                 nondeterministic operational semantics serves as the
                 specification for contract monitoring and for proving
                 its correctness. It is complemented by a deterministic
                 semantics that is closer to an implementation and that
                 is connected to the nondeterministic semantics by
                 simulation. The calculus is the formal basis of TJS, a
                 language embedded, higher-order contract system
                 implemented for JavaScript.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ICFP '15 conference proceedings.",
}

@Article{Kereki:2015:JAW,
  author =       "Federico Kereki",
  title =        "{JavaScript} all the way down",
  journal =      j-LINUX-J,
  volume =       "2015",
  number =       "250",
  pages =        "1:1--1:??",
  month =        feb,
  year =         "2015",
  CODEN =        "LIJOFX",
  ISSN =         "1075-3583 (print), 1938-3827 (electronic)",
  ISSN-L =       "1075-3583",
  bibdate =      "Thu Apr 2 16:27:43 MDT 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/linux-journal.bib",
  URL =          "http://dl.acm.org/ft_gateway.cfm?id=2754898",
  abstract =     "JavaScript for server- and client-side Web
                 development.",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "Linux Journal",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J508",
}

@Article{Khan:2015:UJW,
  author =       "Faiz Khan and Vincent Foley-Bourgon and Sujay
                 Kathrotia and Erick Lavoie and Laurie Hendren",
  title =        "Using {JavaScript} and {WebCL} for numerical
                 computations: a comparative study of native and web
                 technologies",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "91--102",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661090",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "From its modest beginnings as a tool to validate
                 forms, JavaScript is now an industrial-strength
                 language used to power online applications such as
                 spreadsheets, IDEs, image editors and even 3D games.
                 Since all modern web browsers support JavaScript, it
                 provides a medium that is both easy to distribute for
                 developers and easy to access for users. This paper
                 provides empirical data to answer the question: Is
                 JavaScript fast enough for numerical computations? By
                 measuring and comparing the runtime performance of
                 benchmarks representative of a wide variety of
                 scientific applications, we show that sequential
                 JavaScript is within a factor of 2 of native code.
                 Parallel code using WebCL shows speed improvements of
                 up to 2.28 over JavaScript for the majority of the
                 benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Kroshko:2015:OPN,
  author =       "Andrew Kroshko and Raymond J. Spiteri",
  title =        "{odeToJava}: a {PSE} for the Numerical Solution of
                 {IVPs}",
  journal =      j-TOMS,
  volume =       "41",
  number =       "3",
  pages =        "17:1--17:33",
  month =        jun,
  year =         "2015",
  CODEN =        "ACMSCU",
  DOI =          "https://doi.org/10.1145/2641563",
  ISSN =         "0098-3500 (print), 1557-7295 (electronic)",
  ISSN-L =       "0098-3500",
  bibdate =      "Wed Jun 3 17:59:32 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toms.bib",
  abstract =     "Problem-solving environments (PSEs) offer a powerful
                 yet flexible and convenient means for general
                 experimentation with computational methods, algorithm
                 prototyping, and visualization and manipulation of
                 data. Consequently, PSEs have become the modus operandi
                 of many computational scientists and engineers.
                 However, despite these positive aspects, PSEs typically
                 do not offer the level of granularity required by the
                 specialist or algorithm designer to conveniently modify
                 the details. In other words, the level at which PSEs
                 are black boxes is often still too high for someone
                 interested in modifying an algorithm as opposed to
                 trying an alternative. In this article, we describe
                 odeToJava, a Java-based PSE for initial-value problems
                 in ordinary differential equations. odeToJava
                 implements explicit and linearly implicit
                 implicit-explicit Runge--Kutta methods with error and
                 stepsize control and intra-step interpolation (dense
                 output), giving the user control and flexibility over
                 the implementational aspects of these methods. We
                 illustrate the usage and functionality of odeToJava by
                 means of computational case studies of initial-value
                 problems (IVPs).",
  acknowledgement = ack-nhfb,
  articleno =    "17",
  fjournal =     "ACM Transactions on Mathematical Software (TOMS)",
  journal-URL =  "http://dl.acm.org/pub.cfm?id=J782",
}

@Article{Leavens:2015:BSS,
  author =       "Gary T. Leavens and David A. Naumann",
  title =        "Behavioral Subtyping, Specification Inheritance, and
                 Modular Reasoning",
  journal =      j-TOPLAS,
  volume =       "37",
  number =       "4",
  pages =        "13:1--13:??",
  month =        aug,
  year =         "2015",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2766446",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Aug 13 17:33:50 MDT 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Verification of a dynamically dispatched method call,
                 E.m(), seems to depend on E's dynamic type. To avoid
                 case analysis and allow incremental development,
                 object-oriented program verification uses supertype
                 abstraction. In other words, one reasons about E.m()
                 using m 's specification for E's static type. Supertype
                 abstraction is valid when each subtype in the program
                 is a behavioral subtype. This article semantically
                 formalizes supertype abstraction and behavioral
                 subtyping for a Java-like sequential language with
                 mutation and proves that behavioral subtyping is both
                 necessary and sufficient for the validity of supertype
                 abstraction. Specification inheritance, as in JML, is
                 also formalized and proved to entail behavioral
                 subtyping.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Leino:2015:APS,
  author =       "K. Rustan M. Leino and Paqui Lucio",
  title =        "An Assertional Proof of the Stability and Correctness
                 of {Natural Mergesort}",
  journal =      j-TOCL,
  volume =       "17",
  number =       "1",
  pages =        "6:1--6:22",
  month =        dec,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2814571",
  ISSN =         "1529-3785 (print), 1557-945X (electronic)",
  ISSN-L =       "1529-3785",
  bibdate =      "Sat Jan 9 10:42:43 MST 2016",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tocl/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tocl.bib",
  abstract =     "We present a mechanically verified implementation of
                 the sorting algorithm Natural Mergesort that consists
                 of a few methods specified by their contracts of
                 pre/post conditions. Methods are annotated with
                 assertions that allow the automatic verification of the
                 contract satisfaction. This program-proof is made using
                 the state-of-the-art verifier Dafny. We verify not only
                 the standard sortedness property, but also that the
                 algorithm performs a stable sort. Throughout the
                 article, we provide and explain the complete text of
                 the program-proof.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Computational Logic",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J773",
  remark =       "From the conclusion on pages 20--21: ``There is no
                 doubt that sorting algorithms are useful and important
                 in software. Good algorithms based on ingenious ideas
                 can be subtle and warrant formal proofs. Indeed, if the
                 comparison {\tt GT(min,xs.head)} in function {\tt
                 descending} were replaced by {\tt $ \neg
                 $GT(xs.head,min)}, then the algorithm would no longer
                 be stable. An excellent example is the recent
                 revelation [de Gouw et al. 2015] of the incorrectness
                 of a very popular sorting algorithm that has been
                 running since 2002 in billions of computers, cloud
                 services, and mobile phones. Indeed, it is the default
                 sorting algorithm for Android SDK, Sun's JDK, and
                 OpenJDK. The bug was discovered and fixed using the
                 formal verification tool KeY [Beckert et al. 2007]. The
                 bug appeared already in the original implementation in
                 Python.'' The 2015 reference is ``Stijn de Gouw,
                 Jurriaan Rot, Frank S. de Boer, Richard Bubel, and
                 Reiner H{\"a}hnle. 2015. \booktitle{OpenJDK's {\tt
                 java.utils.Collection.sort()} is broken: The good, the
                 bad and the worst case}. In \booktitle{Computer Aided
                 Verification. 27th International Conference, CAV 2015}
                 (LNCS). Springer. doi:10.1007/978-3-319-21690-4_16.''",
}

@Article{Lin:2015:SGU,
  author =       "Yi Lin and Kunshan Wang and Stephen M. Blackburn and
                 Antony L. Hosking and Michael Norrish",
  title =        "Stop and go: understanding yieldpoint behavior",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "11",
  pages =        "70--80",
  month =        nov,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2887746.2754187",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:44 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Yieldpoints are critical to the implementation of high
                 performance garbage collected languages, yet the design
                 space is not well understood. Yieldpoints allow a
                 running program to be interrupted at well-defined
                 points in its execution, facilitating exact garbage
                 collection, biased locking, on-stack replacement,
                 profiling, and other important virtual machine
                 behaviors. In this paper we identify and evaluate
                 yieldpoint design choices, including previously
                 undocumented designs and optimizations. One of the
                 designs we identify opens new opportunities for very
                 low overhead profiling. We measure the frequency with
                 which yieldpoints are executed and establish a
                 methodology for evaluating the common case execution
                 time overhead. We also measure the median and worst
                 case time-to-yield. We find that Java benchmarks
                 execute about 100M yieldpoints per second, of which
                 about 1/20000 are taken. The average execution time
                 overhead for untaken yieldpoints on the VM we use
                 ranges from 2.5\% to close to zero on modern hardware,
                 depending on the design, and we find that the designs
                 trade off total overhead with worst case time-to-yield.
                 This analysis gives new insight into a critical but
                 overlooked aspect of garbage collector implementation,
                 and identifies a new optimization and new opportunities
                 for very low overhead profiling.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '15 conference proceedings.",
}

@Article{Lin:2015:STU,
  author =       "Yixiao Lin and Sayan Mitra",
  title =        "{StarL}: Towards a Unified Framework for Programming,
                 Simulating and Verifying Distributed Robotic Systems",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "5",
  pages =        "9:1--9:??",
  month =        may,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2808704.2754966",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Jul 31 19:39:44 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We developed StarL as a framework for programming,
                 simulating, and verifying distributed systems that
                 interacts with physical processes. StarL framework has
                 (a) a collection of distributed primitives for
                 coordination, such as mutual exclusion, registration
                 and geocast that can be used to build sophisticated
                 applications, (b) theory libraries for verifying StarL
                 applications in the PVS theorem prover, and (c) an
                 execution environment that can be used to deploy the
                 applications on hardware or to execute them in a
                 discrete event simulator. The primitives have (i)
                 abstract, nondeterministic specifications in terms of
                 invariants, and assume-guarantee style progress
                 properties, (ii) implementations in Java/Android that
                 always satisfy the invariants and attempt progress
                 using best effort strategies. The PVS theories specify
                 the invariant and progress properties of the
                 primitives, and have to be appropriately instantiated
                 and composed with the application's state machine to
                 prove properties about the application. We have built
                 two execution environments: one for deploying
                 applications on Android/iRobot Create platform and a
                 second one for simulating large instantiations of the
                 applications in a discrete even simulator. The
                 capabilities are illustrated with a StarL application
                 for vehicle to vehicle coordination in an automatic
                 intersection that uses primitives for point-to-point
                 motion, mutual exclusion, and registration.",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "LCTES '15 conference proceedings.",
}

@Article{Lopes:2015:HSA,
  author =       "Cristina V. Lopes and Joel Ossher",
  title =        "How scale affects structure in {Java} programs",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "675--694",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814300",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Many internal software metrics and external quality
                 attributes of Java programs correlate strongly with
                 program size. This knowledge has been used pervasively
                 in quantitative studies of software through practices
                 such as normalization on size metrics. This paper
                 reports size-related super- and sublinear effects that
                 have not been known before. Findings obtained on a very
                 large collection of Java programs --- 30,911 projects
                 hosted at Google Code as of Summer 2011 --- unveils how
                 certain characteristics of programs vary
                 disproportionately with program size, sometimes even
                 non-monotonically. Many of the specific parameters of
                 nonlinear relations are reported. This result gives
                 further insights for the differences of ``programming
                 in the small'' vs. ``programming in the large.'' The
                 reported findings carry important consequences for OO
                 software metrics, and software research in general:
                 metrics that have been known to correlate with size can
                 now be properly normalized so that all the information
                 that is left in them is size-independent.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Madsen:2015:SAE,
  author =       "Magnus Madsen and Frank Tip and Ondrej Lhot{\'a}k",
  title =        "Static analysis of event-driven {Node.js JavaScript}
                 applications",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "505--519",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814272",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Many JavaScript programs are written in an
                 event-driven style. In particular, in server-side
                 Node.js applications, operations involving sockets,
                 streams, and files are typically performed in an
                 asynchronous manner, where the execution of listeners
                 is triggered by events. Several types of programming
                 errors are specific to such event-based programs (e.g.,
                 unhandled events, and listeners that are registered too
                 late). We present the event-based call graph, a program
                 representation that can be used to detect bugs related
                 to event handling. We have designed and implemented
                 three analyses for constructing event-based call
                 graphs. Our results show that these analyses are
                 capable of detecting problems reported on
                 StackOverflow. Moreover, we show that the number of
                 false positives reported by the analysis on a suite of
                 small Node.js applications is manageable.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Marr:2015:TVP,
  author =       "Stefan Marr and St{\'e}phane Ducasse",
  title =        "Tracing vs. partial evaluation: comparing
                 meta-compilation approaches for self-optimizing
                 interpreters",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "821--839",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814275",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Tracing and partial evaluation have been proposed as
                 meta-compilation techniques for interpreters to make
                 just-in-time compilation language-independent. They
                 promise that programs executing on simple interpreters
                 can reach performance of the same order of magnitude as
                 if they would be executed on state-of-the-art virtual
                 machines with highly optimizing just-in-time compilers
                 built for a specific language. Tracing and partial
                 evaluation approach this meta-compilation from two ends
                 of a spectrum, resulting in different sets of
                 tradeoffs. This study investigates both approaches in
                 the context of self-optimizing interpreters, a
                 technique for building fast abstract-syntax-tree
                 interpreters. Based on RPython for tracing and Truffle
                 for partial evaluation, we assess the two approaches by
                 comparing the impact of various optimizations on the
                 performance of an interpreter for SOM, an
                 object-oriented dynamically-typed language. The goal is
                 to determine whether either approach yields clear
                 performance or engineering benefits. We find that
                 tracing and partial evaluation both reach roughly the
                 same level of performance. SOM based on meta-tracing is
                 on average 3x slower than Java, while SOM based on
                 partial evaluation is on average 2.3x slower than Java.
                 With respect to the engineering, tracing has however
                 significant benefits, because it requires language
                 implementers to apply fewer optimizations to reach the
                 same level of performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Mastrangelo:2015:UYO,
  author =       "Luis Mastrangelo and Luca Ponzanelli and Andrea Mocci
                 and Michele Lanza and Matthias Hauswirth and Nathaniel
                 Nystrom",
  title =        "Use at your own risk: the {Java} unsafe {API} in the
                 wild",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "695--710",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814313",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Java is a safe language. Its runtime environment
                 provides strong safety guarantees that any Java
                 application can rely on. Or so we think. We show that
                 the runtime actually does not provide these
                 guarantees---for a large fraction of today's Java code.
                 Unbeknownst to many application developers, the Java
                 runtime includes a ``backdoor'' that allows expert
                 library and framework developers to circumvent Java's
                 safety guarantees. This backdoor is there by design,
                 and is well known to experts, as it enables them to
                 write high-performance ``systems-level'' code in Java.
                 For much the same reasons that safe languages are
                 preferred over unsafe languages, these powerful---but
                 unsafe---capabilities in Java should be restricted.
                 They should be made safe by changing the language, the
                 runtime system, or the libraries. At the very least,
                 their use should be restricted. This paper is a step in
                 that direction. We analyzed 74 GB of compiled Java
                 code, spread over 86,479 Java archives, to determine
                 how Java's unsafe capabilities are used in real-world
                 libraries and applications. We found that 25\% of Java
                 bytecode archives depend on unsafe third-party Java
                 code, and thus Java's safety guarantees cannot be
                 trusted. We identify 14 different usage patterns of
                 Java's unsafe capabilities, and we provide supporting
                 evidence for why real-world code needs these
                 capabilities. Our long-term goal is to provide a
                 foundation for the design of new language features to
                 regain safety in Java.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Matsakis:2015:TOJ,
  author =       "Nicholas D. Matsakis and David Herman and Dmitry
                 Lomov",
  title =        "Typed objects in {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "125--134",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661095",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript's typed arrays have proven to be a crucial
                 API for many JS applications, particularly those
                 working with large amounts of data or emulating other
                 languages. Unfortunately, the current typed array API
                 offers no means of abstraction. Programmers are
                 supplied with a simple byte buffer that can be viewed
                 as an array of integers or floats, but nothing more.
                 This paper presents a generalization of the typed
                 arrays API entitled typed objects. The typed objects
                 API is slated for inclusion in the upcoming ES7
                 standard. The API gives users the ability to define
                 named types, making typed arrays much easier to work
                 with. In particular, it is often trivial to replace
                 uses of existing JavaScript objects with typed objects,
                 resulting in better memory consumption and more
                 predictable performance. The advantages of the typed
                 object specification go beyond convenience, however. By
                 supporting opacity---that is, the ability to deny
                 access to the raw bytes of a typed object---the new
                 typed object specification makes it possible to store
                 objects as well as scalar data and also enables more
                 optimization by JIT compilers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Mirshokraie:2015:GMT,
  author =       "S. Mirshokraie and A. Mesbah and K. Pattabiraman",
  title =        "Guided Mutation Testing for {JavaScript Web}
                 Applications",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "41",
  number =       "5",
  pages =        "429--444",
  month =        may,
  year =         "2015",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2014.2371458",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6960094",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Motika:2015:LWS,
  author =       "Christian Motika and Reinhard von Hanxleden",
  title =        "Light-weight {Synchronous Java (SJL)}: An approach for
                 programming deterministic reactive systems with
                 {Java}",
  journal =      j-COMPUTING,
  volume =       "97",
  number =       "3",
  pages =        "281--307",
  month =        mar,
  year =         "2015",
  CODEN =        "CMPTA2",
  DOI =          "https://doi.org/10.1007/s00607-014-0416-7",
  ISSN =         "0010-485X (print), 1436-5057 (electronic)",
  ISSN-L =       "0010-485X",
  bibdate =      "Fri Feb 9 14:53:59 MST 2018",
  bibsource =    "http://link.springer.com/journal/607/97/3;
                 http://www.math.utah.edu/pub/tex/bib/computing.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Computing",
  journal-URL =  "http://link.springer.com/journal/607",
}

@Article{Newton:2015:ALF,
  author =       "Ryan R. Newton and Peter P. Fogg and Ali Varamesh",
  title =        "Adaptive lock-free maps: purely-functional to
                 scalable",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "9",
  pages =        "218--229",
  month =        sep,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858949.2784734",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Purely functional data structures stored inside a
                 mutable variable provide an excellent concurrent data
                 structure-obviously correct, cheap to create, and
                 supporting snapshots. They are not, however, scalable.
                 We provide a way to retain the benefits of these
                 pure-in-a-box data structures while dynamically
                 converting to a more scalable lock-free data structure
                 under contention. Our solution scales to any pair of
                 pure and lock-free container types with key/value set
                 semantics, while retaining lock-freedom. We demonstrate
                 the principle in action on two very different
                 platforms: first in the Glasgow Haskell Compiler and
                 second in Java. To this end we extend GHC to support
                 lock-free data structures and introduce a new approach
                 for safe CAS in a lazy language.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ICFP '15 conference proceedings.",
}

@Article{Nguyen:2015:FCR,
  author =       "Khanh Nguyen and Kai Wang and Yingyi Bu and Lu Fang
                 and Jianfei Hu and Guoqing Xu",
  title =        "{FACADE}: a Compiler and Runtime for (Almost)
                 Object-Bounded Big Data Applications",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "4",
  pages =        "675--690",
  month =        apr,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775054.2694345",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The past decade has witnessed the increasing demands
                 on data-driven business intelligence that led to the
                 proliferation of data-intensive applications. A managed
                 object-oriented programming language such as Java is
                 often the developer's choice for implementing such
                 applications, due to its quick development cycle and
                 rich community resource. While the use of such
                 languages makes programming easier, their automated
                 memory management comes at a cost. When the managed
                 runtime meets Big Data, this cost is significantly
                 magnified and becomes a scalability-prohibiting
                 bottleneck. This paper presents a novel compiler
                 framework, called Facade, that can generate
                 highly-efficient data manipulation code by
                 automatically transforming the data path of an existing
                 Big Data application. The key treatment is that in the
                 generated code, the number of runtime heap objects
                 created for data types in each thread is (almost)
                 statically bounded, leading to significantly reduced
                 memory management cost and improved scalability. We
                 have implemented Facade and used it to transform 7
                 common applications on 3 real-world, already
                 well-optimized Big Data frameworks: GraphChi, Hyracks,
                 and GPS. Our experimental results are very positive:
                 the generated programs have (1) achieved a 3\%--48\%
                 execution time reduction and an up to 88X GC reduction;
                 (2) consumed up to 50\% less memory, and (3) scaled to
                 much larger datasets.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '15 conference proceedings.",
}

@Article{Oh:2015:MWA,
  author =       "JinSeok Oh and Jin-woo Kwon and Hyukwoo Park and
                 Soo-Mook Moon",
  title =        "Migration of {Web} Applications with Seamless
                 Execution",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "7",
  pages =        "173--185",
  month =        jul,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2817817.2731197",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Web applications (apps) are programmed using HTML5,
                 CSS, and JavaScript, and are distributed in the source
                 code format. Web apps can be executed on any devices
                 where a web browser is installed, allowing one-source,
                 multi-platform environment. We can exploit this
                 advantage of platform independence for a new user
                 experience called app migration, which allows migrating
                 an app in the middle of execution seamlessly between
                 smart devices. This paper proposes such a migration
                 framework for web apps where we can save the current
                 state of a running app and resume its execution on a
                 different device by restoring the saved state. We save
                 the web app's state in the form of a snapshot, which is
                 actually another web app whose execution can restore
                 the saved state. In the snapshot, the state of the
                 JavaScript variables and DOM trees are saved using the
                 JSON format. We solved some of the saving/restoring
                 problems related to event handlers and closures by
                 accessing the browser and the JavaScript engine
                 internals. Our framework does not require instrumenting
                 an app or changing its source code, but works for the
                 original app. We implemented the framework on the
                 Chrome browser with the V8 JavaScript engine and
                 successfully migrated non-trivial sample apps with
                 reasonable saving and restoring overhead. We also
                 discuss other usage of the snapshot for optimizations
                 and user experiences for the web platform.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '15 conference proceedings.",
}

@Article{Olivo:2015:SDA,
  author =       "Oswaldo Olivo and Isil Dillig and Calvin Lin",
  title =        "Static detection of asymptotic performance bugs in
                 collection traversals",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "6",
  pages =        "369--378",
  month =        jun,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2813885.2737966",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:41 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper identifies and formalizes a prevalent class
                 of asymptotic performance bugs called redundant
                 traversal bugs and presents a novel static analysis for
                 automatically detecting them. We evaluate our technique
                 by implementing it in a tool called CLARITY and
                 applying it to widely-used software packages such as
                 the Google Core Collections Library, the Apache Common
                 Collections, and the Apache Ant build tool. Across 1.6M
                 lines of Java code, CLARITY finds 92 instances of
                 redundant traversal bugs, including 72 that have never
                 been previously reported, with just 5 false positives.
                 To evaluate the performance impact of these bugs, we
                 manually repair these programs and find that for an
                 input size of 50,000, all repaired programs are at
                 least 2.45 faster than their original code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '15 conference proceedings.",
}

@Article{Park:2015:KCF,
  author =       "Daejun Park and Andrei Stefanescu and Grigore Rosu",
  title =        "{KJS}: a complete formal semantics of {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "6",
  pages =        "346--356",
  month =        jun,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2813885.2737991",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:41 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper presents KJS, the most complete and
                 thoroughly tested formal semantics of JavaScript to
                 date. Being executable, KJS has been tested against the
                 ECMAScript 5.1 conformance test suite, and passes all
                 2,782 core language tests. Among the existing
                 implementations of JavaScript, only Chrome V8's passes
                 all the tests, and no other semantics passes more than
                 90\%. In addition to a reference implementation for
                 JavaScript, KJS also yields a simple coverage metric
                 for a test suite: the set of semantic rules it
                 exercises. Our semantics revealed that the ECMAScript
                 5.1 conformance test suite fails to cover several
                 semantic rules. Guided by the semantics, we wrote tests
                 to exercise those rules. The new tests revealed bugs
                 both in production JavaScript engines (Chrome V8,
                 Safari WebKit, Firefox SpiderMonkey) and in other
                 semantics. KJS is symbolically executable, thus it can
                 be used for formal analysis and verification of
                 JavaScript programs. We verified non-trivial programs
                 and found a known security vulnerability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '15 conference proceedings.",
}

@Article{Passerat-Palmbach:2015:TSS,
  author =       "Jonathan Passerat-Palmbach and Claude Mazel and David
                 R. C. Hill",
  title =        "{TaskLocalRandom}: a statistically sound substitute to
                 pseudorandom number generation in parallel {Java} tasks
                 frameworks",
  journal =      j-CCPE,
  volume =       "27",
  number =       "13",
  pages =        "3383--3398",
  day =          "10",
  month =        sep,
  year =         "2015",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3214",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Mon Sep 28 09:32:54 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/prng.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "18 Feb 2014",
}

@Article{Piao:2015:JJF,
  author =       "Xianglan Piao and Channoh Kim and Younghwan Oh and
                 Huiying Li and Jincheon Kim and Hanjun Kim and Jae W.
                 Lee",
  title =        "{JAWS}: a {JavaScript} framework for adaptive
                 {CPU--GPU} work sharing",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "251--252",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688525",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper introduces jAWS, a JavaScript framework for
                 adaptive work sharing between CPU and GPU for
                 data-parallel workloads. Unlike conventional
                 heterogeneous parallel programming environments for
                 JavaScript, which use only one compute device when
                 executing a single kernel, jAWS accelerates kernel
                 execution by exploiting both devices to realize full
                 performance potential of heterogeneous multicores. jAWS
                 employs an efficient work partitioning algorithm that
                 finds an optimal work distribution between the two
                 devices without requiring offline profiling. The jAWS
                 runtime provides shared arrays for multiple parallel
                 contexts, hence eliminating extra copy overhead for
                 input and output data. Our preliminary evaluation with
                 both CPU-friendly and GPU-friendly benchmarks
                 demonstrates that jAWS provides good load balancing and
                 efficient data communication between parallel contexts,
                 to significantly outperform best single-device
                 execution.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Pinto:2015:LSS,
  author =       "Gustavo Pinto and Weslley Torres and Benito Fernandes
                 and Fernando Castor and Roberto S. M. Barros",
  title =        "A large-scale study on the usage of {Java}'s
                 concurrent programming constructs",
  journal =      j-J-SYST-SOFTW,
  volume =       "106",
  number =       "??",
  pages =        "59--81",
  month =        aug,
  year =         "2015",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Mon Jun 8 11:23:23 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121215000849",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Article{Radoi:2015:ETS,
  author =       "Cosmin Radoi and Danny Dig",
  title =        "Effective Techniques for Static Race Detection in
                 {Java} Parallel Loops",
  journal =      j-TOSEM,
  volume =       "24",
  number =       "4",
  pages =        "24:1--24:??",
  month =        aug,
  year =         "2015",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2729975",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Tue Sep 8 18:21:02 MDT 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Despite significant progress in recent years, the
                 important problem of static race detection remains
                 open. Previous techniques took a general approach and
                 looked for races by analyzing the effects induced by
                 low-level concurrency constructs (e.g.,
                 java.lang.Thread). But constructs and libraries for
                 expressing parallelism at a higher level (e.g.,
                 fork-join, futures, parallel loops) are becoming
                 available in all major programming languages. We claim
                 that specializing an analysis to take advantage of the
                 extra semantic information provided by the use of these
                 constructs and libraries improves precision and
                 scalability. We present I teRace, a set of techniques
                 that are specialized to use the intrinsic thread,
                 safety, and dataflow structure of collections and of
                 the new loop parallelism mechanism introduced in Java
                 8. Our evaluation shows that IteRace is fast and
                 precise enough to be practical. It scales to programs
                 of hundreds of thousands of lines of code and reports
                 very few race warnings, thus avoiding a common pitfall
                 of static analyses. In five out of the seven case
                 studies, IteRace reported no false warnings. Also, it
                 revealed six bugs in real-world applications. We
                 reported four of them: one had already been fixed, and
                 three were new and the developers confirmed and fixed
                 them. Furthermore, we evaluate the effect of each
                 specialization technique on the running time and
                 precision of the analysis. For each application, we run
                 the analysis under 32 different configurations. This
                 allows to analyze each technique's effect both alone
                 and in all possible combinations with other
                 techniques.",
  acknowledgement = ack-nhfb,
  articleno =    "24",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Radoi:2015:WAR,
  author =       "Cosmin Radoi and Stephan Herhut and Jaswanth Sreeram
                 and Danny Dig",
  title =        "Are web applications ready for parallelism?",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "289--290",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2700995",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In recent years, web applications have become
                 pervasive. Their backbone is JavaScript, the only
                 programming language supported by all major web
                 browsers. Most browsers run on desktop or mobile
                 devices with parallel hardware. However, JavaScript is
                 by design sequential, and current web applications make
                 little use of hardware parallelism. Are web
                 applications ready to exploit parallel hardware? We
                 answer the question in two steps: First, we survey 174
                 web developers about the potential and challenges of
                 using parallelism. Then, we study the performance and
                 computation shape of a set of web applications that are
                 representative for the emerging web. Our findings
                 indicate that emerging web applications do have latent
                 data parallelism, and JavaScript developers'
                 programming style is not a significant impediment to
                 exploiting this parallelism.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Ramos:2015:NCS,
  author =       "Sabela Ramos and Guillermo L. Taboada and Roberto R.
                 Exp{\'o}sito and Juan Touri{\~n}o",
  title =        "Nonblocking collectives for scalable {Java}
                 communications",
  journal =      j-CCPE,
  volume =       "27",
  number =       "5",
  pages =        "1169--1187",
  day =          "10",
  month =        apr,
  year =         "2015",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3279",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Jul 25 19:54:07 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "21 Apr 2014",
}

@Article{Rastogi:2015:SEG,
  author =       "Aseem Rastogi and Nikhil Swamy and C{\'e}dric Fournet
                 and Gavin Bierman and Panagiotis Vekris",
  title =        "Safe \& Efficient Gradual Typing for {TypeScript}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "1",
  pages =        "167--180",
  month =        jan,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775051.2676971",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Current proposals for adding gradual typing to
                 JavaScript, such as Closure, TypeScript and Dart, forgo
                 soundness to deal with issues of scale, code reuse, and
                 popular programming patterns. We show how to address
                 these issues in practice while retaining soundness. We
                 design and implement a new gradual type system,
                 prototyped for expediency as a 'Safe' compilation mode
                 for TypeScript. Our compiler achieves soundness by
                 enforcing stricter static checks and embedding residual
                 runtime checks in compiled code. It emits plain
                 JavaScript that runs on stock virtual machines. Our
                 main theorem is a simulation that ensures that the
                 checks introduced by Safe TypeScript (1) catch any
                 dynamic type error, and (2) do not alter the semantics
                 of type-safe TypeScript code. Safe TypeScript is
                 carefully designed to minimize the performance overhead
                 of runtime checks. At its core, we rely on two new
                 ideas: differential subtyping, a new form of coercive
                 subtyping that computes the minimum amount of runtime
                 type information that must be added to each object; and
                 an erasure modality, which we use to safely and
                 selectively erase type information. This allows us to
                 scale our design to full-fledged TypeScript, including
                 arrays, maps, classes, inheritance, overloading, and
                 generic types. We validate the usability and
                 performance of Safe TypeScript empirically by
                 type-checking and compiling around 120,000 lines of
                 existing TypeScript source code. Although runtime
                 checks can be expensive, the end-to-end overhead is
                 small for code bases that already have type
                 annotations. For instance, we bootstrap the Safe
                 TypeScript compiler (90,000 lines including the base
                 TypeScript compiler): we measure a 15\% runtime
                 overhead for type safety, and also uncover programming
                 errors as type safety violations. We conclude that, at
                 least during development and testing, subjecting
                 JavaScript/TypeScript programs to safe gradual typing
                 adds significant value to source type annotations at a
                 modest cost.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '15 conference proceedings.",
}

@Article{Raychev:2015:PPP,
  author =       "Veselin Raychev and Martin Vechev and Andreas Krause",
  title =        "Predicting Program Properties from {``Big Code''}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "1",
  pages =        "111--124",
  month =        jan,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775051.2677009",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:19 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a new approach for predicting program
                 properties from massive codebases (aka ``Big Code'').
                 Our approach first learns a probabilistic model from
                 existing data and then uses this model to predict
                 properties of new, unseen programs. The key idea of our
                 work is to transform the input program into a
                 representation which allows us to phrase the problem of
                 inferring program properties as structured prediction
                 in machine learning. This formulation enables us to
                 leverage powerful probabilistic graphical models such
                 as conditional random fields (CRFs) in order to perform
                 joint prediction of program properties. As an example
                 of our approach, we built a scalable prediction engine
                 called JSNice for solving two kinds of problems in the
                 context of JavaScript: predicting (syntactic) names of
                 identifiers and predicting (semantic) type annotations
                 of variables. Experimentally, JSNice predicts correct
                 names for 63\% of name identifiers and its type
                 annotation predictions are correct in 81\% of the
                 cases. In the first week since its release, JSNice was
                 used by more than 30,000 developers and in only few
                 months has become a popular tool in the JavaScript
                 developer community. By formulating the problem of
                 inferring program properties as structured prediction
                 and showing how to perform both learning and inference
                 in this context, our work opens up new possibilities
                 for attacking a wide range of difficult problems in the
                 context of ``Big Code'' including invariant generation,
                 decompilation, synthesis and others.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '15 conference proceedings.",
}

@Article{Rhodes:2015:DDO,
  author =       "Dustin Rhodes and Tim Disney and Cormac Flanagan",
  title =        "Dynamic detection of object capability violations
                 through model checking",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "2",
  pages =        "103--112",
  month =        feb,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775052.2661099",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:21 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In this paper we present a new tool called DOCaT
                 (Dynamic Object Capability Tracer), a model checker for
                 JavaScript that detects capability leaks in an object
                 capability system. DOCaT includes an editor that
                 highlights the sections of code that can be potentially
                 transferred to untrusted third-party code along with a
                 trace showing how the code could be leaked in an actual
                 execution. This code highlighting provides a simple way
                 of visualizing the references untrusted code
                 potentially has access to and helps programmers to
                 discover if their code is leaking more capabilities
                 then required. DOCaT is implemented using a combination
                 of source code rewriting (using Sweet.js, a JavaScript
                 macro system), dynamic behavioral intercession
                 (Proxies, introduced in ES6, the most recent version of
                 JavaScript), and model checking. Together these methods
                 are able to locate common ways for untrusted code to
                 elevate its authority.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '14 conference proceedings.",
}

@Article{Rodeghero:2015:ETS,
  author =       "P. Rodeghero and C. Liu and P. W. McBurney and C.
                 McMillan",
  title =        "An Eye-Tracking Study of {Java} Programmers and
                 Application to Source Code Summarization",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "41",
  number =       "11",
  pages =        "1038--1054",
  month =        nov,
  year =         "2015",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2015.2442238",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7118751",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Rossi:2015:NPJ,
  author =       "Gianfranco Rossi and Federico Bergenti",
  title =        "Nondeterministic Programming in {Java} with {JSetL}",
  journal =      j-FUND-INFO,
  volume =       "140",
  number =       "3--4",
  pages =        "393--412",
  month =        "????",
  year =         "2015",
  CODEN =        "FUMAAJ",
  DOI =          "https://doi.org/10.3233/FI-2015-1260",
  ISSN =         "0169-2968 (print), 1875-8681 (electronic)",
  ISSN-L =       "0169-2968",
  bibdate =      "Sat Mar 5 17:21:23 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fundinfo2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Fundamenta Informaticae",
  journal-URL =  "http://content.iospress.com/journals/fundamenta-informaticae",
}

@Article{Samak:2015:SRT,
  author =       "Malavika Samak and Murali Krishna Ramanathan and
                 Suresh Jagannathan",
  title =        "Synthesizing racy tests",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "6",
  pages =        "175--185",
  month =        jun,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2813885.2737998",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:41 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Subtle concurrency errors in multithreaded libraries
                 that arise because of incorrect or inadequate
                 synchronization are often difficult to pinpoint
                 precisely using only static techniques. On the other
                 hand, the effectiveness of dynamic race detectors is
                 critically dependent on multithreaded test suites whose
                 execution can be used to identify and trigger races.
                 Usually, such multithreaded tests need to invoke a
                 specific combination of methods with objects involved
                 in the invocations being shared appropriately to expose
                 a race. Without a priori knowledge of the race,
                 construction of such tests can be challenging. In this
                 paper, we present a lightweight and scalable technique
                 for synthesizing precisely these kinds of tests. Given
                 a multithreaded library and a sequential test suite, we
                 describe a fully automated analysis that examines
                 sequential execution traces, and produces as its output
                 a concurrent client program that drives shared objects
                 via library method calls to states conducive for
                 triggering a race. Experimental results on a variety of
                 well-tested Java libraries yield 101 synthesized
                 multithreaded tests in less than four minutes.
                 Analyzing the execution of these tests using an
                 off-the-shelf race detector reveals 187 harmful races,
                 including several previously unreported ones. Our
                 implementation, named NARADA, and the results of our
                 experiments are available at
                 http://www.csa.iisc.ernet.in/~sss/tools/narada.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '15 conference proceedings.",
}

@Article{Sherman:2015:DTB,
  author =       "Elena Sherman and Brady J. Garvin and Matthew B.
                 Dwyer",
  title =        "Deciding Type-Based Partial-Order Constraints for
                 Path-Sensitive Analysis",
  journal =      j-TOSEM,
  volume =       "24",
  number =       "3",
  pages =        "15:1--15:??",
  month =        may,
  year =         "2015",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2755971",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Wed May 13 18:25:46 MDT 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "The precision and scalability of path-sensitive
                 program analyses depend on their ability to distinguish
                 feasible and infeasible program paths. Analyses express
                 path feasibility as the satisfiability of conjoined
                 branch conditions, which is then decided by cooperating
                 decision procedures such as those in satisfiability
                 modulo theory (SMT) solvers. Consequently, efficient
                 underlying decision procedures are key to precise,
                 scalable program analyses. When we investigate the
                 branch conditions accumulated by inter-procedural
                 path-sensitive analyses of object-oriented programs, we
                 find that many relate to an object's dynamic type.
                 These conditions arise from explicit type tests and the
                 branching implicit in dynamic dispatch and type
                 casting. These conditions share a common form that
                 comprises a fragment of the theory of partial orders,
                 which we refer to as type-based partial orders (TPO).
                 State-of-the-art SMT solvers can heuristically
                 instantiate the quantified formulae that axiomatize
                 partial orders, and thereby support TPO constraints. We
                 present two custom decision procedures with
                 significantly better performance. On benchmarks that
                 reflect inter-procedural path-sensitive analyses
                 applied to significant Java systems, the custom
                 procedures run three orders of magnitude faster. The
                 performance of the two decision procedures varies
                 across benchmarks, which suggests that a portfolio
                 approach may be beneficial for solving constraints
                 generated by program analyses.",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Simon:2015:STH,
  author =       "Doug Simon and Christian Wimmer and Bernhard Urban and
                 Gilles Duboscq and Lukas Stadler and Thomas
                 W{\"u}rthinger",
  title =        "Snippets: Taking the High Road to a Low Level",
  journal =      j-TACO,
  volume =       "12",
  number =       "2",
  pages =        "20:1--20:??",
  month =        jul,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2764907",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Fri Aug 7 09:46:00 MDT 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "When building a compiler for a high-level language,
                 certain intrinsic features of the language must be
                 expressed in terms of the resulting low-level
                 operations. Complex features are often expressed by
                 explicitly weaving together bits of low-level IR, a
                 process that is tedious, error prone, difficult to
                 read, difficult to reason about, and machine dependent.
                 In the Graal compiler for Java, we take a different
                 approach: we use snippets of Java code to express
                 semantics in a high-level, architecture-independent
                 way. Two important restrictions make snippets feasible
                 in practice: they are compiler specific, and they are
                 explicitly prepared and specialized. Snippets make
                 Graal simpler and more portable while still capable of
                 generating machine code that can compete with other
                 compilers of the Java HotSpot VM.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Stancu:2015:SEH,
  author =       "Codrut Stancu and Christian Wimmer and Stefan
                 Brunthaler and Per Larsen and Michael Franz",
  title =        "Safe and efficient hybrid memory management for
                 {Java}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "11",
  pages =        "81--92",
  month =        nov,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2887746.2754185",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:44 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Java uses automatic memory management, usually
                 implemented as a garbage-collected heap. That lifts the
                 burden of manually allocating and deallocating memory,
                 but it can incur significant runtime overhead and
                 increase the memory footprint of applications. We
                 propose a hybrid memory management scheme that utilizes
                 region-based memory management to deallocate objects
                 automatically on region exits. Static program analysis
                 detects allocation sites that are safe for region
                 allocation, i.e., the static analysis proves that the
                 objects allocated at such a site are not reachable
                 after the region exit. A regular garbage-collected heap
                 is used for objects that are not region allocatable.
                 The region allocation exploits the temporal locality of
                 object allocation. Our analysis uses coarse-grain
                 source code annotations to disambiguate objects with
                 non-overlapping lifetimes, and maps them to different
                 memory scopes. Region-allocated memory does not require
                 garbage collection as the regions are simply
                 deallocated when they go out of scope. The region
                 allocation technique is backed by a garbage collector
                 that manages memory that is not region allocated. We
                 provide a detailed description of the analysis, provide
                 experimental results showing that as much as 78\% of
                 the memory is region allocatable and discuss how our
                 hybrid memory management system can be implemented
                 efficiently with respect to both space and time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '15 conference proceedings.",
}

@Article{Steindorfer:2015:CSM,
  author =       "Michael J. Steindorfer and Jurgen J. Vinju",
  title =        "Code specialization for memory efficient hash tries
                 (short paper)",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "3",
  pages =        "11--14",
  month =        mar,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2775053.2658763",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue May 12 17:41:23 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/hash.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The hash trie data structure is a common part in
                 standard collection libraries of JVM programming
                 languages such as Clojure and Scala. It enables fast
                 immutable implementations of maps, sets, and vectors,
                 but it requires considerably more memory than an
                 equivalent array-based data structure. This hinders the
                 scalability of functional programs and the further
                 adoption of this otherwise attractive style of
                 programming. In this paper we present a product family
                 of hash tries. We generate Java source code to
                 specialize them using knowledge of JVM object memory
                 layout. The number of possible specializations is
                 exponential. The optimization challenge is thus to find
                 a minimal set of variants which lead to a maximal loss
                 in memory footprint on any given data. Using a set of
                 experiments we measured the distribution of internal
                 tree node sizes in hash tries. We used the results as a
                 guidance to decide which variants of the family to
                 generate and which variants should be left to the
                 generic implementation. A preliminary validating
                 experiment on the implementation of sets and maps shows
                 that this technique leads to a median decrease of 55\%
                 in memory footprint for maps (and 78\% for sets), while
                 still maintaining comparable performance. Our
                 combination of data analysis and code specialization
                 proved to be effective.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '14 conference proceedings.",
}

@Article{Steindorfer:2015:OHA,
  author =       "Michael J. Steindorfer and Jurgen J. Vinju",
  title =        "Optimizing hash-array mapped tries for fast and lean
                 immutable {JVM} collections",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "783--800",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814312",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/hash.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The data structures under-pinning collection API (e.g.
                 lists, sets, maps) in the standard libraries of
                 programming languages are used intensively in many
                 applications. The standard libraries of recent Java
                 Virtual Machine languages, such as Clojure or Scala,
                 contain scalable and well-performing immutable
                 collection data structures that are implemented as
                 Hash-Array Mapped Tries (HAMTs). HAMTs already feature
                 efficient lookup, insert, and delete operations,
                 however due to their tree-based nature their memory
                 footprints and the runtime performance of iteration and
                 equality checking lag behind array-based counterparts.
                 This particularly prohibits their application in
                 programs which process larger data sets. In this paper,
                 we propose changes to the HAMT design that increase the
                 overall performance of immutable sets and maps. The
                 resulting general purpose design increases cache
                 locality and features a canonical representation. It
                 outperforms Scala's and Clojure's data structure
                 implementations in terms of memory footprint and
                 runtime efficiency of iteration (1.3-6.7x) and equality
                 checking (3-25.4x).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Stilkerich:2015:PGA,
  author =       "Isabella Stilkerich and Clemens Lang and Christoph
                 Erhardt and Michael Stilkerich",
  title =        "A Practical Getaway: Applications of Escape Analysis
                 in Embedded Real-Time Systems",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "5",
  pages =        "4:1--4:??",
  month =        may,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2808704.2754961",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Jul 31 19:39:44 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The use of a managed, type-safe language such as Java
                 in real-time and embedded systems offers productivity
                 and, in particular, safety and dependability benefits
                 at a reasonable cost. It has been shown for commodity
                 systems that escape analysis (EA) enables a set of
                 useful optimization, and benefits from the properties
                 of a type-safe language. In this paper, we explore the
                 application of escape analysis in KESO [34], a Java
                 ahead-of-time compiler targeting (deeply) embedded
                 real-time systems. We present specific applications of
                 EA for embedded programs that go beyond the widely
                 known stack-allocation and synchronization
                 optimizations such as extended remote procedure call
                 support for software-isolated applications, automated
                 inference of immutable data or improved upper space and
                 time bounds for worst-case estimations.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "LCTES '15 conference proceedings.",
}

@Article{Stone:2015:WMT,
  author =       "James Stone and John Towse",
  title =        "A Working Memory Test Battery: {Java}-Based Collection
                 of Seven Working Memory Tasks",
  journal =      j-J-OPEN-RES-SOFT,
  volume =       "3",
  number =       "1",
  pages =        "e5--??",
  day =          "05",
  month =        jun,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.5334/jors.br",
  ISSN =         "2049-9647",
  ISSN-L =       "2049-9647",
  bibdate =      "Sat Sep 8 10:03:49 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jors.bib",
  URL =          "https://openresearchsoftware.metajnl.com/articles/10.5334/jors.br/",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Open Research Software",
  journal-URL =  "https://openresearchsoftware.metajnl.com/issue/archive/",
}

@Article{Thomson:2015:LHB,
  author =       "Paul Thomson and Alastair F. Donaldson",
  title =        "The lazy happens-before relation: better partial-order
                 reduction for systematic concurrency testing",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "259--260",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688533",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present the lazy happens-before relation (lazy
                 HBR), which ignores mutex-induced edges to provide a
                 more precise notion of state equivalence compared with
                 the traditional happens-before relation. We demonstrate
                 experimentally that the lazy HBR has the potential to
                 provide greater schedule reduction during systematic
                 concurrency testing with respect to a set of 79 Java
                 benchmarks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Toffola:2015:PPY,
  author =       "Luca Della Toffola and Michael Pradel and Thomas R.
                 Gross",
  title =        "Performance problems you can fix: a dynamic analysis
                 of memoization opportunities",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "607--622",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814290",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Performance bugs are a prevalent problem and recent
                 research proposes various techniques to identify such
                 bugs. This paper addresses a kind of performance
                 problem that often is easy to address but difficult to
                 identify: redundant computations that may be avoided by
                 reusing already computed results for particular inputs,
                 a technique called memoization. To help developers find
                 and use memoization opportunities, we present
                 MemoizeIt, a dynamic analysis that identifies methods
                 that repeatedly perform the same computation. The key
                 idea is to compare inputs and outputs of method calls
                 in a scalable yet precise way. To avoid the overhead of
                 comparing objects at all method invocations in detail,
                 MemoizeIt first compares objects without following any
                 references and iteratively increases the depth of
                 exploration while shrinking the set of considered
                 methods. After each iteration, the approach ignores
                 methods that cannot benefit from memoization, allowing
                 it to analyze calls to the remaining methods in more
                 detail. For every memoization opportunity that
                 MemoizeIt detects, it provides hints on how to
                 implement memoization, making it easy for the developer
                 to fix the performance issue. Applying MemoizeIt to
                 eleven real-world Java programs reveals nine profitable
                 memoization opportunities, most of which are missed by
                 traditional CPU time profilers, conservative compiler
                 optimizations, and other existing approaches for
                 finding performance bugs. Adding memoization as
                 proposed by MemoizeIt leads to statistically
                 significant speedups by factors between 1.04x and
                 12.93x.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Tsai:2015:JPI,
  author =       "Chun-Jen Tsai and Han-Wen Kuo and Zigang Lin and
                 Zi-Jing Guo and Jun-Fu Wang",
  title =        "A {Java} Processor {IP} Design for Embedded {SoC}",
  journal =      j-TECS,
  volume =       "14",
  number =       "2",
  pages =        "35:1--35:??",
  month =        mar,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2629649",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Thu Mar 26 05:58:56 MDT 2015",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "In this article, we present a reusable Java processor
                 IP for application processors of embedded systems. For
                 the Java microarchitecture, we propose a low-cost stack
                 memory design that supports a two-fold instruction
                 folding pipeline and a low-complexity Java exception
                 handling hardware. We also propose a mapping between
                 the Java dynamic class loading model and the SoC
                 platform-based design principle so that the Java core
                 can be encapsulated as a reusable IP. To achieve this
                 goal, a two-level method area with two on-chip circular
                 buffers is proposed as an interface between the RISC
                 core and the Java core. The proposed architecture is
                 implemented on a Xilinx Virtex-5 FPGA device.
                 Experimental results show that its performance has some
                 advantages over other Java processors and a Java VM
                 with JIT acceleration on a PowerPC platform.",
  acknowledgement = ack-nhfb,
  articleno =    "35",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J840",
}

@Article{Upadhyaya:2015:EML,
  author =       "Ganesha Upadhyaya and Hridesh Rajan",
  title =        "Effectively mapping linguistic abstractions for
                 message-passing concurrency to threads on the {Java
                 Virtual Machine}",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "840--859",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814289",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Efficient mapping of message passing concurrency (MPC)
                 abstractions to Java Virtual Machine (JVM) threads is
                 critical for performance, scalability, and CPU
                 utilization; but tedious and time consuming to perform
                 manually. In general, this mapping cannot be found in
                 polynomial time, but we show that by exploiting the
                 local characteristics of MPC abstractions and their
                 communication patterns this mapping can be determined
                 effectively. We describe our MPC abstraction to thread
                 mapping technique, its realization in two frameworks
                 (Panini and Akka), and its rigorous evaluation using
                 several benchmarks from representative MPC frameworks.
                 We also compare our technique against four default
                 mapping techniques: thread-all, round-robin-task-all,
                 random-task-all and work-stealing. Our evaluation shows
                 that our mapping technique can improve the performance
                 by 30\%-60\% over default mapping techniques. These
                 improvements are due to a number of challenges
                 addressed by our technique namely: i) balancing the
                 computations across JVM threads, ii) reducing the
                 communication overheads, iii) utilizing information
                 about cache locality, and iv) mapping MPC abstractions
                 to threads in a way that reduces the contention between
                 JVM threads.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Book{Urma:2015:JAL,
  author =       "Raoul-Gabriel Urma and Mario Fusco and Alan Mycroft",
  title =        "{Java 8} in action: lambdas, streams, and
                 functional-style programming",
  publisher =    pub-MANNING,
  address =      pub-MANNING:adr,
  pages =        "xxviii + 394",
  year =         "2015",
  ISBN =         "1-61729-199-4 (paperback)",
  ISBN-13 =      "978-1-61729-199-9 (paperback)",
  LCCN =         "QA76.73.J38 U76 2015",
  bibdate =      "Thu Dec 4 13:27:00 MST 2014",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://proquest.safaribooksonline.com/?fpi=9781617291999;
                 http://proquest.tech.safaribooksonline.de/9781617291999",
  abstract =     "Every new version of Java is important, but Java 8 is
                 a game changer. Java 8 in Action is a clearly written
                 guide to the new features of Java 8. It begins with a
                 practical introduction to lambdas, using real-world
                 Java code. Next, it covers the new Streams API and
                 shows how you can use it to make collection-based code
                 radically easier to understand and maintain. It also
                 explains other major Java 8 features including default
                 methods, Optional, CompletableFuture, and the new Date
                 and Time API. This book is written for programmers
                 familiar with Java and basic OO programming.",
  acknowledgement = ack-nhfb,
  subject =      "Java (langage de programmation); Java (Computer
                 program language); Object-oriented programs (Computer
                 programs); Java (Computer program language);
                 Object-oriented programs (Computer programs)",
  tableofcontents = "Part 1 Fundamentals \\
                 Chapter 1 Java 8: why should you care? \\
                 Chapter 2 Passing code with behavior parameterization
                 \\
                 Chapter 3 Lambda expressions \\
                 Part 2 Functional-style data processing \\
                 Chapter 4 Introducing streams \\
                 Chapter 5 Working with streams \\
                 Chapter 6 Collecting data with streams \\
                 Chapter 7 Parallel data processing and performance \\
                 Part 3 Effective Java 8 programming \\
                 Chapter 8 Refactoring, testing, and debugging \\
                 Chapter 9 Default methods \\
                 Chapter 10 Using Optional as a better alternative to
                 null \\
                 Chapter 11 CompletableFuture: composable asynchronous
                 programming \\
                 Chapter 12 New Date and Time API \\
                 Part 4 Beyond Java \\
                 Chapter 13 Thinking functionally \\
                 Chapter 14 Functional programming techniques \\
                 Chapter 15 Blending OOP and FP: comparing Java 8 and
                 Scala \\
                 Chapter 16 Conclusions and where next for Java \\
                 appendix A Miscellaneous language updates \\
                 appendix B Miscellaneous library updates \\
                 appendix C Performing multiple operations in parallel
                 on a stream \\
                 Appendix D Lambdas and JVM bytecode",
}

@Article{VanCutsem:2015:RTC,
  author =       "Tom {Van Cutsem} and Mark S. Miller",
  title =        "Robust trait composition for {JavaScript}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "98 (part 3)",
  number =       "??",
  pages =        "422--438",
  day =          "1",
  month =        feb,
  year =         "2015",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Thu Dec 4 19:45:00 MST 2014",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642312002079",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Yi:2015:CTC,
  author =       "Jaeheon Yi and Tim Disney and Stephen N. Freund and
                 Cormac Flanagan",
  title =        "Cooperative types for controlling thread interference
                 in {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "112 (part 3)",
  number =       "??",
  pages =        "227--260",
  day =          "15",
  month =        nov,
  year =         "2015",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Mon Oct 19 06:31:52 MDT 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642315001483",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Yi:2015:SCC,
  author =       "Jooyong Yi and Dawei Qi and Shin Hwei Tan and Abhik
                 Roychoudhury",
  title =        "Software Change Contracts",
  journal =      j-TOSEM,
  volume =       "24",
  number =       "3",
  pages =        "18:1--18:??",
  month =        may,
  year =         "2015",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2729973",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Wed May 13 18:25:46 MDT 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Software errors often originate from incorrect
                 changes, including incorrect program fixes, incorrect
                 feature updates, and so on. Capturing the intended
                 program behavior explicitly via contracts is thus an
                 attractive proposition. In our recent work, we had
                 espoused the notion of ``change contracts'' to express
                 the intended program behavior changes across program
                 versions. Change contracts differ from program
                 contracts in that they do not require the programmer to
                 describe the intended behavior of those program
                 features which are unchanged across program versions.
                 In this work, we present the formal semantics of our
                 change contract language built on top of the Java
                 modeling language (JML). Our change contract language
                 can describe behavioral as well as structural changes.
                 We evaluate the expressivity of the change contract
                 language via a survey given to final-year undergraduate
                 students. The survey results enable to understand the
                 usability of our change contract language for purposes
                 of writing contracts, comprehending written contracts,
                 and modifying programs according to given change
                 contracts. Finally, we develop both dynamic and static
                 checkers for change contracts, and show how they can be
                 used in maintaining software changes. We use our
                 dynamic checker to automatically suggest tests that
                 manifest violations of change contracts. Meanwhile, we
                 use our static checker to verify that a program is
                 changed as specified in its change contract. Apart from
                 verification, our static checker also performs various
                 other software engineering tasks, such as localizing
                 the buggy method, detecting/debugging regression
                 errors, and classifying the cause for a test failure as
                 either error in production code or error in test
                 code.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Zabolotnyi:2015:JCG,
  author =       "Rostyslav Zabolotnyi and Philipp Leitner and Waldemar
                 Hummer and Schahram Dustdar",
  title =        "{JCloudScale}: Closing the Gap Between {IaaS} and
                 {PaaS}",
  journal =      j-TOIT,
  volume =       "15",
  number =       "3",
  pages =        "10:1--10:??",
  month =        sep,
  year =         "2015",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2792980",
  ISSN =         "1533-5399 (print), 1557-6051 (electronic)",
  ISSN-L =       "1533-5399",
  bibdate =      "Sat Dec 19 18:06:52 MST 2015",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toit/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toit.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Building Infrastructure-as-a-Service (IaaS)
                 applications today is a complex, repetitive, and
                 error-prone endeavor, as IaaS does not provide
                 abstractions on top of virtual machines. This article
                 presents JCloudScale, a Java-based middleware for
                 moving elastic applications to IaaS clouds, with
                 minimal adjustments to the application code. We discuss
                 the architecture and technical features, as well as
                 evaluate our system with regard to user acceptance and
                 performance overhead. Our user study reveals that
                 JCloudScale allows many participants to build IaaS
                 applications more efficiently, compared to industrial
                 Platform-as-a-Service (PaaS) solutions. Additionally,
                 unlike PaaS, JCloudScale does not lead to a control
                 loss and vendor lock-in.",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Internet Technology (TOIT)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J780",
}

@Article{Zhang:2015:LOS,
  author =       "Minjia Zhang and Jipeng Huang and Man Cao and Michael
                 D. Bond",
  title =        "Low-overhead software transactional memory with
                 progress guarantees and strong semantics",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "8",
  pages =        "97--108",
  month =        aug,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858788.2688510",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Software transactional memory offers an appealing
                 alternative to locks by improving programmability,
                 reliability, and scalability. However, existing STMs
                 are impractical because they add high instrumentation
                 costs and often provide weak progress guarantees and/or
                 semantics. This paper introduces a novel STM called
                 LarkTM that provides three significant features. (1)
                 Its instrumentation adds low overhead except when
                 accesses actually conflict, enabling low single-thread
                 overhead and scaling well on low-contention workloads.
                 (2) It uses eager concurrency control mechanisms, yet
                 naturally supports flexible conflict resolution,
                 enabling strong progress guarantees. (3) It naturally
                 provides strong atomicity semantics at low cost.
                 LarkTM's design works well for low-contention
                 workloads, but adds significant overhead under higher
                 contention, so we design an adaptive version of LarkTM
                 that uses alternative concurrency control for
                 high-contention objects. An implementation and
                 evaluation in a Java virtual machine show that the
                 basic and adaptive versions of LarkTM not only provide
                 low single-thread overhead, but their multithreaded
                 performance compares favorably with existing
                 high-performance STMs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '15 conference proceedings.",
}

@Article{Zhang:2015:SYB,
  author =       "Haoyuan Zhang and Zewei Chu and Bruno C. d. S.
                 Oliveira and Tijs van der Storm",
  title =        "Scrap your boilerplate with object algebras",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "127--146",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814279",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Traversing complex Abstract Syntax Trees (ASTs)
                 typically requires large amounts of tedious boilerplate
                 code. For many operations most of the code simply walks
                 the structure, and only a small portion of the code
                 implements the functionality that motivated the
                 traversal in the first place. This paper presents a
                 type-safe Java framework called Shy that removes much
                 of this boilerplate code. In Shy object algebras are
                 used to describe complex and extensible AST structures.
                 Using Java annotations Shy generates generic
                 boilerplate code for various types of traversals. For a
                 concrete traversal, users of Shy can then inherit from
                 the generated code and override only the interesting
                 cases. Consequently, the amount of code that users need
                 to write is significantly smaller. Moreover, traversals
                 using the Shy framework are also much more structure
                 shy, becoming more adaptive to future changes or
                 extensions to the AST structure. To prove the
                 effectiveness of the approach, we applied Shy in the
                 implementation of a domain-specific questionnaire
                 language. Our results show that for a large number of
                 traversals there was a significant reduction in the
                 amount of user-defined code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Zheng:2015:APP,
  author =       "Yudi Zheng and Lubom{\'\i}r Bulej and Walter Binder",
  title =        "Accurate profiling in the presence of dynamic
                 compilation",
  journal =      j-SIGPLAN,
  volume =       "50",
  number =       "10",
  pages =        "433--450",
  month =        oct,
  year =         "2015",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2858965.2814281",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Tue Feb 16 12:01:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Many profilers based on bytecode instrumentation yield
                 wrong results in the presence of an optimizing dynamic
                 compiler, either due to not being aware of
                 optimizations such as stack allocation and method
                 inlining, or due to the inserted code disrupting such
                 optimizations. To avoid such perturbations, we present
                 a novel technique to make any profiler implemented at
                 the bytecode level aware of optimizations performed by
                 the dynamic compiler. We implement our approach in a
                 state-of-the-art Java virtual machine and demonstrate
                 its significance with concrete profilers. We quantify
                 the impact of escape analysis on allocation profiling,
                 object life-time analysis, and the impact of method
                 inlining on callsite profiling. We illustrate how our
                 approach enables new kinds of profilers, such as a
                 profiler for non-inlined callsites, and a testing
                 framework for locating performance bugs in dynamic
                 compiler implementations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '15 conference proceedings.",
}

@Article{Zhu:2015:APL,
  author =       "Xiaoyan Zhu and E. James {Whitehead, Jr.} and Caitlin
                 Sadowski and Qinbao Song",
  title =        "An analysis of programming language statement
                 frequency in {C}, {C++}, and {Java} source code",
  journal =      j-SPE,
  volume =       "45",
  number =       "11",
  pages =        "1479--1495",
  month =        nov,
  year =         "2015",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2298",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Mon Feb 8 18:03:22 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "6 Nov 2014",
}

@Article{Abanades:2016:DAR,
  author =       "Miguel Ab{\'a}nades and Francisco Botana and
                 Zolt{\'a}n Kov{\'a}cs and Tom{\'a}s Recio and Csilla
                 S{\'o}lyom-Gecse",
  title =        "Development of automatic reasoning tools in
                 {GeoGebra}",
  journal =      j-ACM-COMM-COMP-ALGEBRA,
  volume =       "50",
  number =       "3",
  pages =        "85--88",
  month =        sep,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3015306.3015309",
  ISSN =         "1932-2232 (print), 1932-2240 (electronic)",
  ISSN-L =       "1932-2232",
  bibdate =      "Fri Nov 4 16:34:18 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsam.bib",
  abstract =     "Much effort has been put into the implementation of
                 automatic proving in interactive geometric environments
                 (e.g., Java Geometry Expert, GeoGebra). The closely
                 related concept of automatic discovery, remains however
                 almost unexplored. This software presentation will
                 demonstrate our results towards the incorporation of
                 automatic discovery capabilities into GeoGebra, an
                 educational software with tens of millions of users
                 worldwide. As main result, we report on a new command,
                 currently available in the official version, that
                 allows the automatic discovery of loci of points in
                 diagrams defined by implicit conditions. This
                 represents an extension of a previous command, similar
                 in nature, but restricted to loci defined by the
                 standard mover-tracer construction. Our proposal
                 successfully automates the `dummy locus dragging' in
                 dynamic geometry. This makes the cycle
                 conjecturing-checking-proving accessible for general
                 users in elementary geometry.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Communications in Computer Algebra",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1000",
}

@Article{Akram:2016:BPG,
  author =       "Shoaib Akram and Jennifer B. Sartor and Kenzo {Van
                 Craeynest} and Wim Heirman and Lieven Eeckhout",
  title =        "Boosting the Priority of Garbage: Scheduling
                 Collection on Heterogeneous Multicore Processors",
  journal =      j-TACO,
  volume =       "13",
  number =       "1",
  pages =        "4:1--4:??",
  month =        apr,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2875424",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Tue Apr 5 16:27:36 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "While hardware is evolving toward heterogeneous
                 multicore architectures, modern software applications
                 are increasingly written in managed languages.
                 Heterogeneity was born of a need to improve energy
                 efficiency; however, we want the performance of our
                 applications not to suffer from limited resources. How
                 best to schedule managed language applications on a mix
                 of big, out-of-order cores and small, in-order cores is
                 an open question, complicated by the host of service
                 threads that perform key tasks such as memory
                 management. These service threads compete with the
                 application for core and memory resources, and garbage
                 collection (GC) must sometimes suspend the application
                 if there is not enough memory available for allocation.
                 In this article, we explore concurrent garbage
                 collection's behavior, particularly when it becomes
                 critical, and how to schedule it on a heterogeneous
                 system to optimize application performance. While some
                 applications see no difference in performance when GC
                 threads are run on big versus small cores, others ---
                 those with GC criticality --- see up to an 18\%
                 performance improvement. We develop a new, adaptive
                 scheduling algorithm that responds to GC criticality
                 signals from the managed runtime, giving more big-core
                 cycles to the concurrent collector when it is under
                 pressure and in danger of suspending the application.
                 Our experimental results show that our
                 GC-criticality-aware scheduler is robust across a range
                 of heterogeneous architectures with different core
                 counts and frequency scaling and across heap sizes. Our
                 algorithm is performance and energy neutral for
                 GC-uncritical Java applications and significantly
                 speeds up GC-critical applications by 16\%, on average,
                 while being 20\% more energy efficient for a
                 heterogeneous multicore with three big cores and one
                 small core.",
  acknowledgement = ack-nhfb,
  articleno =    "4",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Alshara:2016:MLO,
  author =       "Zakarea Alshara and Abdelhak-Djamel Seriai and Chouki
                 Tibermacine and Hinde Lilia Bouziane and Christophe
                 Dony and Anas Shatnawi",
  title =        "Migrating large object-oriented applications into
                 component-based ones: instantiation and inheritance
                 transformation",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "3",
  pages =        "55--64",
  month =        mar,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936314.2814223",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Large object-oriented applications have complex and
                 numerous dependencies, and usually do not have explicit
                 software architectures. Therefore they are hard to
                 maintain, and parts of them are difficult to reuse.
                 Component-based development paradigm emerged for
                 improving these aspects and for supporting effective
                 maintainability and reuse. It provides better
                 understandability through a high-level architecture
                 view of the application. Thereby migrating
                 object-oriented applications to component-based ones
                 will contribute to improve these characteristics
                 (maintainability and reuse). In this paper, we propose
                 an approach to automatically transform object-oriented
                 applications to component-based ones. More
                 particularly, the input of the approach is the result
                 provided by software architecture recovery: a
                 component-based architecture description. Then, our
                 approach transforms the object-oriented source code in
                 order to produce deployable components. We focus in
                 this paper on the transformation of source code related
                 to instantiation and inheritance dependencies between
                 classes that are in different components. We
                 experimented the proposed solution in the
                 transformation of a collection of Java applications
                 into the OSGi framework. The experimental results are
                 discussed in this paper.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '15 conference proceedings.",
}

@Article{Amighi:2016:PCC,
  author =       "Afshin Amighi and Pedro de Carvalho Gomes and Dilian
                 Gurov and Marieke Huisman",
  title =        "Provably correct control flow graphs from {Java}
                 bytecode programs with exceptions",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "18",
  number =       "6",
  pages =        "653--684",
  month =        nov,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10009-015-0375-0",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Sun Jan 1 11:13:22 MST 2017",
  bibsource =    "http://link.springer.com/journal/10009/18/6;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sttt.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10009-015-0375-0;
                 http://link.springer.com/article/10.1007/s10009-015-0375-0",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer (STTT)",
  journal-URL =  "http://link.springer.com/journal/10009",
}

@Article{Amin:2016:JST,
  author =       "Nada Amin and Ross Tate",
  title =        "{Java} and {Scala}'s type systems are unsound: the
                 existential crisis of null pointers",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "838--848",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984004",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present short programs that demonstrate the
                 unsoundness of Java and Scala's current type systems.
                 In particular, these programs provide parametrically
                 polymorphic functions that can turn any type into any
                 type without (down)casting. Fortunately, parametric
                 polymorphism was not integrated into the Java Virtual
                 Machine (JVM), so these examples do not demonstrate any
                 unsoundness of the JVM. Nonetheless, we discuss broader
                 implications of these findings on the field of
                 programming languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Andrysco:2016:PFP,
  author =       "Marc Andrysco and Ranjit Jhala and Sorin Lerner",
  title =        "Printing floating-point numbers: a faster, always
                 correct method",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "1",
  pages =        "555--567",
  month =        jan,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2914770.2837654",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:57 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fparith.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Floating-point numbers are an essential part of modern
                 software, recently gaining particular prominence on the
                 web as the exclusive numeric format of Javascript. To
                 use floating-point numbers, we require a way to convert
                 binary machine representations into human readable
                 decimal outputs. Existing conversion algorithms make
                 trade-offs between completeness and performance. The
                 classic Dragon4 algorithm by Steele and White and its
                 later refinements achieve completeness --- i.e. produce
                 correct and optimal outputs on all inputs --- by using
                 arbitrary precision integer (bignum) arithmetic which
                 leads to a high performance cost. On the other hand,
                 the recent Grisu3 algorithm by Loitsch shows how to
                 recover performance by using native integer arithmetic
                 but sacrifices optimality for 0.5\% of all inputs. We
                 present Errol, a new complete algorithm that is
                 guaranteed to produce correct and optimal results for
                 all inputs while simultaneously being 2x faster than
                 the incomplete Grisu3 and 4x faster than previous
                 complete methods.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '16 conference proceedings.",
}

@Article{Anjo:2016:DML,
  author =       "Ivo Anjo and Jo{\~a}o Cachopo",
  title =        "Design of a Method-Level Speculation framework for
                 boosting irregular {JVM} applications",
  journal =      j-J-PAR-DIST-COMP,
  volume =       "87",
  number =       "??",
  pages =        "13--25",
  month =        jan,
  year =         "2016",
  CODEN =        "JPDCER",
  ISSN =         "0743-7315 (print), 1096-0848 (electronic)",
  ISSN-L =       "0743-7315",
  bibdate =      "Mon Dec 21 18:24:37 MST 2015",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jpardistcomp.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0743731515001720",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Parallel and Distributed Computing",
  journal-URL =  "http://www.sciencedirect.com/science/journal/07437315/",
}

@Article{Aumuller:2016:OPD,
  author =       "Martin Aum{\"u}ller and Martin Dietzfelbinger",
  title =        "Optimal Partitioning for Dual-Pivot {Quicksort}",
  journal =      j-TALG,
  volume =       "12",
  number =       "2",
  pages =        "18:1--18:??",
  month =        feb,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2743020",
  ISSN =         "1549-6325 (print), 1549-6333 (electronic)",
  ISSN-L =       "1549-6325",
  bibdate =      "Fri Feb 12 18:02:17 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/talg.bib",
  abstract =     "Dual-pivot quicksort refers to variants of classical
                 quicksort where in the partitioning step two pivots are
                 used to split the input into three segments. This can
                 be done in different ways, giving rise to different
                 algorithms. Recently, a dual-pivot algorithm due to
                 Yaroslavskiy received much attention, because it
                 replaced the well-engineered quicksort algorithm in
                 Oracle's Java 7 runtime library. Nebel and Wild (ESA
                 2012) analyzed this algorithm and showed that on
                 average it uses $ 1.9 n \ln n + O (n) $ comparisons to
                 sort an input of size $n$, beating standard quicksort,
                 which uses $ 2 n \ln n + O (n)$ comparisons. We
                 introduce a model that captures all dual-pivot
                 algorithms, give a unified analysis, and identify new
                 dual-pivot algorithms that minimize the average number
                 of key comparisons among all possible algorithms up to
                 a linear term. This minimum is $ 1.8 n \ln n + O (n)$.
                 For the case that the pivots are chosen from a small
                 sample, we include a comparison of dual-pivot quicksort
                 and classical quicksort. Specifically, we show that
                 dual-pivot quicksort benefits from a skewed choice of
                 pivots. We experimentally evaluate our algorithms and
                 compare them to Yaroslavskiy's algorithm and the
                 recently described $3$-pivot quicksort algorithm of
                 Kushagra et al. (ALENEX 2014).",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Algorithms (TALG)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J982",
}

@Article{Bonetta:2016:GSM,
  author =       "Daniele Bonetta and Luca Salucci and Stefan Marr and
                 Walter Binder",
  title =        "{GEMs}: shared-memory parallel programming for
                 {Node.js}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "531--547",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984039",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript is the most popular programming language
                 for client-side Web applications, and Node.js has
                 popularized the language for server-side computing,
                 too. In this domain, the minimal support for parallel
                 programming remains however a major limitation. In this
                 paper we introduce a novel parallel programming
                 abstraction called Generic Messages (GEMs). GEMs allow
                 one to combine message passing and shared-memory
                 parallelism, extending the classes of parallel
                 applications that can be built with Node.js. GEMs have
                 customizable semantics and enable several forms of
                 thread safety, isolation, and concurrency control. GEMs
                 are designed as convenient JavaScript abstractions that
                 expose high-level and safe parallelism models to the
                 developer. Experiments show that GEMs outperform
                 equivalent Node.js applications thanks to their usage
                 of shared memory.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Brooks:2016:CST,
  author =       "Andrew Brooks and Laura Krebs and Brandon Paulsen",
  title =        "A Comparison of Sorting Times between {Java 8} and
                 {Parallel Colt}: an Exploratory Experiment",
  journal =      j-SIGSOFT,
  volume =       "41",
  number =       "4",
  pages =        "1--5",
  month =        jul,
  year =         "2016",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/2967307.2967316",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:45 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "An exploratory experiment found that sorting arrays of
                 random integers using Java 8's parallel sort required
                 only 50\%-70\% of the time taken using the parallel
                 sort of the Parallel Colt library. Factors considered
                 responsible for the performance advantage include the
                 use of a dual-pivot quicksort on locally held data at
                 certain phases of execution and work-stealing by
                 threads, a feature of the fork--join framework. The
                 default performance of Parallel Colt's parallel sort
                 was found to degrade dramatically for small array sizes
                 due to unnecessary thread creation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Brown:2016:HBS,
  author =       "Fraser Brown and Andres N{\"o}tzli and Dawson Engler",
  title =        "How to Build Static Checking Systems Using Orders of
                 Magnitude Less Code",
  journal =      j-OPER-SYS-REV,
  volume =       "50",
  number =       "2",
  pages =        "143--157",
  month =        jun,
  year =         "2016",
  CODEN =        "OSRED8",
  DOI =          "https://doi.org/10.1145/2954680.2872364",
  ISSN =         "0163-5980 (print), 1943-586X (electronic)",
  ISSN-L =       "0163-5980",
  bibdate =      "Thu Jun 9 17:03:34 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/opersysrev.bib",
  abstract =     "Modern static bug finding tools are complex. They
                 typically consist of hundreds of thousands of lines of
                 code, and most of them are wedded to one language (or
                 even one compiler). This complexity makes the systems
                 hard to understand, hard to debug, and hard to retarget
                 to new languages, thereby dramatically limiting their
                 scope. This paper reduces checking system complexity by
                 addressing a fundamental assumption, the assumption
                 that checkers must depend on a full-blown language
                 specification and compiler front end. Instead, our
                 program checkers are based on drastically incomplete
                 language grammars (``micro-grammars'') that describe
                 only portions of a language relevant to a checker. As a
                 result, our implementation is tiny --- roughly 2500
                 lines of code, about two orders of magnitude smaller
                 than a typical system. We hope that this dramatic
                 increase in simplicity will allow people to use more
                 checkers on more systems in more languages. We
                 implement our approach in $ \mu $ chex, a
                 language-agnostic framework for writing static bug
                 checkers. We use it to build micro-grammar based
                 checkers for six languages (C, the C preprocessor, C++,
                 Java, JavaScript, and Dart) and find over 700 errors in
                 real-world projects.",
  acknowledgement = ack-nhfb,
  fjournal =     "Operating Systems Review",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J597",
}

@Article{Chandra:2016:TIS,
  author =       "Satish Chandra and Colin S. Gordon and Jean-Baptiste
                 Jeannin and Cole Schlesinger and Manu Sridharan and
                 Frank Tip and Youngil Choi",
  title =        "Type inference for static compilation of
                 {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "410--429",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984017",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a type system and inference algorithm for a
                 rich subset of JavaScript equipped with objects,
                 structural subtyping, prototype inheritance, and
                 first-class methods. The type system supports abstract
                 and recursive objects, and is expressive enough to
                 accommodate several standard benchmarks with only minor
                 workarounds. The invariants enforced by the types
                 enable an ahead-of-time compiler to carry out
                 optimizations typically beyond the reach of static
                 compilers for dynamic languages. Unlike previous
                 inference techniques for prototype inheritance, our
                 algorithm uses a combination of lower and upper bound
                 propagation to infer types and discover type errors in
                 all code, including uninvoked functions. The inference
                 is expressed in a simple constraint language, designed
                 to leverage off-the-shelf fixed point solvers. We prove
                 soundness for both the type system and inference
                 algorithm. An experimental evaluation showed that the
                 inference is powerful, handling the aforementioned
                 benchmarks with no manual type annotation, and that the
                 inferred types enable effective static compilation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Chapman:2016:HSH,
  author =       "Keith Chapman and Antony L. Hosking and J. Eliot B.
                 Moss",
  title =        "Hybrid {STM\slash HTM} for nested transactions on
                 {OpenJDK}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "660--676",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984029",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Transactional memory (TM) has long been advocated as a
                 promising pathway to more automated concurrency control
                 for scaling concurrent programs running on parallel
                 hardware. Software TM (STM) has the benefit of being
                 able to run general transactional programs, but at the
                 significant cost of overheads imposed to log memory
                 accesses, mediate access conflicts, and maintain other
                 transaction metadata. Recently, hardware manufacturers
                 have begun to offer commodity hardware TM (HTM) support
                 in their processors wherein the transaction metadata is
                 maintained ``for free'' in hardware. However, HTM
                 approaches are only best-effort: they cannot
                 successfully run all transactional programs, whether
                 because of hardware capacity issues (causing large
                 transactions to fail), or compatibility restrictions on
                 the processor instructions permitted within hardware
                 transactions (causing transactions that execute those
                 instructions to fail). In such cases, programs must
                 include failure-handling code to attempt the
                 computation by some other software means, since
                 retrying the transaction would be futile. Thus, a
                 canonical use of HTM is lock elision: replacing lock
                 regions with transactions, retrying some number of
                 times in the case of conflicts, but falling back to
                 locking when HTM fails for other reasons. Here, we
                 describe how software and hardware schemes can combine
                 seamlessly into a hybrid system in support of
                 transactional programs, allowing use of low-cost HTM
                 when it works, but reverting to STM when it doesn't. We
                 describe heuristics used to make this choice
                 dynamically and automatically, but allowing the
                 transition back to HTM opportunistically. Our
                 implementation is for an extension of Java having
                 syntax for both open and closed nested transactions,
                 and boosting, running on the OpenJDK, with dynamic
                 injection of STM mechanisms (into code variants used
                 under STM) and HTM instructions (into code variants
                 used under HTM). Both schemes are compatible to allow
                 different threads to run concurrently with either
                 mechanism, while preserving transaction safety. Using a
                 standard synthetic benchmark we demonstrate that HTM
                 offers significant acceleration of both closed and open
                 nested transactions, while yielding parallel scaling up
                 to the limits of the hardware, whereupon scaling in
                 software continues but with the penalty to throughput
                 imposed by software mechanisms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Chavez:2016:ACC,
  author =       "H. M. Chavez and W. Shen and R. B. France and B. A.
                 Mechling and G. Li",
  title =        "An Approach to Checking Consistency between {UML}
                 Class Model and Its {Java} Implementation",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "42",
  number =       "4",
  pages =        "322--344",
  month =        apr,
  year =         "2016",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2015.2488645",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7294689",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Chen:2016:CDD,
  author =       "Yuting Chen and Ting Su and Chengnian Sun and Zhendong
                 Su and Jianjun Zhao",
  title =        "Coverage-directed differential testing of {JVM}
                 implementations",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "6",
  pages =        "85--99",
  month =        jun,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2980983.2908095",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Sep 5 07:32:25 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Java virtual machine (JVM) is a core technology, whose
                 reliability is critical. Testing JVM implementations
                 requires painstaking effort in designing test
                 classfiles (*.class) along with their test oracles. An
                 alternative is to employ binary fuzzing to
                 differentially test JVMs by blindly mutating seeding
                 classfiles and then executing the resulting mutants on
                 different JVM binaries for revealing inconsistent
                 behaviors. However, this blind approach is not cost
                 effective in practice because most of the mutants are
                 invalid and redundant. This paper tackles this
                 challenge by introducing classfuzz, a coverage-directed
                 fuzzing approach that focuses on representative
                 classfiles for differential testing of JVMs' startup
                 processes. Our core insight is to (1) mutate seeding
                 classfiles using a set of predefined mutation operators
                 (mutators) and employ Markov Chain Monte Carlo (MCMC)
                 sampling to guide mutator selection, and (2) execute
                 the mutants on a reference JVM implementation and use
                 coverage uniqueness as a discipline for accepting
                 representative ones. The accepted classfiles are used
                 as inputs to differentially test different JVM
                 implementations and find defects. We have implemented
                 classfuzz and conducted an extensive evaluation of it
                 against existing fuzz testing algorithms. Our
                 evaluation results show that classfuzz can enhance the
                 ratio of discrepancy-triggering classfiles from 1.7\%
                 to 11.9\%. We have also reported 62 JVM discrepancies,
                 along with the test classfiles, to JVM developers. Many
                 of our reported issues have already been confirmed as
                 JVM defects, and some even match recent clarifications
                 and changes to the Java SE 8 edition of the JVM
                 specification.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '16 conference proceedings.",
}

@Article{Clerc:2016:OJJ,
  author =       "Xavier Clerc",
  title =        "{OCaml-Java}: The {Java Virtual Machine} as the target
                 of an {OCaml} compiler",
  journal =      j-J-FUNCT-PROGRAM,
  volume =       "26",
  number =       "",
  pages =        "e7",
  month =        "????",
  year =         "2016",
  CODEN =        "JFPRES",
  DOI =          "https://doi.org/10.1017/S0956796816000095",
  ISSN =         "0956-7968 (print), 1469-7653 (electronic)",
  ISSN-L =       "0956-7968",
  bibdate =      "Mon Jul 22 09:36:09 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jfunctprogram.bib",
  URL =          "https://www.cambridge.org/core/journals/journal-of-functional-programming/article/ocamljava-the-java-virtual-machine-as-the-target-of-an-ocaml-compiler/EDA83983550B6025B3705E2F8D97EB81",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Funct. Program.",
  fjournal =     "Journal of Functional Programming",
  journal-URL =  "https://www.cambridge.org/core/journals/journal-of-functional-programming",
  onlinedate =   "17 May 2016",
}

@Article{Cordoba-Sanchez:2016:ADS,
  author =       "Irene C{\'o}rdoba-S{\'a}nchez and Juan de Lara",
  title =        "{Ann}: a domain-specific language for the effective
                 design and validation of {Java} annotations",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "??",
  number =       "??",
  pages =        "164--190",
  month =        "????",
  year =         "2016",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Wed Jun 1 06:21:45 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842416300318",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Dietrich:2016:WJD,
  author =       "Jens Dietrich and Kamil Jezek and Premek Brada",
  title =        "What {Java} developers know about compatibility, and
                 why this matters",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "21",
  number =       "3",
  pages =        "1371--1396",
  month =        jun,
  year =         "2016",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-015-9389-1",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Dec 2 09:14:43 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-015-9389-1",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Dissegna:2016:AIB,
  author =       "Stefano Dissegna and Francesco Logozzo and Francesco
                 Ranzato",
  title =        "An Abstract Interpretation-Based Model of Tracing
                 Just-in-Time Compilation",
  journal =      j-TOPLAS,
  volume =       "38",
  number =       "2",
  pages =        "7:1--7:??",
  month =        jan,
  year =         "2016",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2853131",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Jan 5 16:31:06 MST 2016",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Tracing just-in-time compilation is a popular
                 compilation technique for the efficient implementation
                 of dynamic languages, which is commonly used for
                 JavaScript, Python, and PHP. It relies on two key
                 ideas. First, it monitors program execution in order to
                 detect so-called hot paths, that is, the most
                 frequently executed program paths. Then, hot paths are
                 optimized by exploiting some information on program
                 stores that is available and therefore gathered at
                 runtime. The result is a residual program where the
                 optimized hot paths are guarded by sufficient
                 conditions ensuring some form of equivalence with the
                 original program. The residual program is persistently
                 mutated during its execution, for example, to add new
                 optimized hot paths or to merge existing paths. Tracing
                 compilation is thus fundamentally different from
                 traditional static compilation. Nevertheless, despite
                 the practical success of tracing compilation, very
                 little is known about its theoretical foundations. We
                 provide a formal model of tracing compilation of
                 programs using abstract interpretation. The monitoring
                 phase (viz., hot path detection) corresponds to an
                 abstraction of the trace semantics of the program that
                 captures the most frequent occurrences of sequences of
                 program points together with an abstraction of their
                 corresponding stores, for example, a type environment.
                 The optimization phase (viz., residual program
                 generation) corresponds to a transform of the original
                 program that preserves its trace semantics up to a
                 given observation as modeled by some abstraction. We
                 provide a generic framework to express dynamic
                 optimizations along hot paths and to prove them
                 correct. We instantiate it to prove the correctness of
                 dynamic type specialization and constant variable
                 folding. We show that our framework is more general
                 than the model of tracing compilation introduced by Guo
                 and Palsberg [2011], which is based on operational
                 bisimulations. In our model, we can naturally express
                 hot path reentrance and common optimizations like
                 dead-store elimination, which are either excluded or
                 unsound in Guo and Palsberg's framework.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Doeraene:2016:PIW,
  author =       "S{\'e}bastien Doeraene and Tobias Schlatter",
  title =        "Parallel incremental whole-program optimizations for
                 {Scala.js}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "59--73",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984013",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Whole-program optimizations are powerful tools that
                 can dramatically improve performance, size and other
                 aspects of programs. Because they depend on global
                 knowledge, they must typically be reapplied to the
                 whole program when small changes are made, which makes
                 them too slow for the development cycle. This is an
                 issue for some environments that require, or benefit a
                 lot from, whole-program optimizations, such as
                 compilation to JavaScript or to the Dalvik VM, because
                 their development cycle is slowed down either by the
                 lack of optimizations, or by the time spent on applying
                 them. We present a new approach to designing
                 incremental whole-program optimizers for
                 object-oriented and functional languages: when part of
                 a program changes, only the portions affected by the
                 changes are reoptimized. An incremental optimizer using
                 this approach for Scala.js, the Scala to JavaScript
                 compiler, demonstrates speedups from 10x to 100x
                 compared to its batch version. As a result, the
                 optimizer's running time becomes insignificant compared
                 to separate compilation, making it fit for use on every
                 compilation run during the development cycle. We also
                 show how to parallelize the incremental algorithm to
                 take advantage of multicore hardware.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Feeley:2016:CML,
  author =       "Marc Feeley",
  title =        "Compiling for multi-language task migration",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "2",
  pages =        "63--77",
  month =        feb,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936313.2816713",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Task migration allows a running program to continue
                 its execution in a different destination environment.
                 Increasingly, execution environments are defined by
                 combinations of cultural and technological constraints,
                 affecting the choice of host language, libraries and
                 tools. A compiler supporting multiple target
                 environments and task migration must be able to marshal
                 continuations and then unmarshal and continue their
                 execution, ideally, even if the language of the
                 destination environment is different. In this paper, we
                 propose a compilation approach based on a virtual
                 machine that strikes a balance between implementation
                 portability and efficiency. We explain its
                 implementation within a Scheme compiler targeting
                 JavaScript, PHP, Python, Ruby and Java --- some of the
                 most popular host languages for web applications. As
                 our experiments show, this approach compares well with
                 other Scheme compilers targeting high-level languages
                 in terms of execution speed, being sometimes up to 3
                 orders of magnitude faster.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '15 conference proceedings.",
}

@Article{Fischer:2016:EIE,
  author =       "Lars Fischer and Stefan Hanenberg",
  title =        "An empirical investigation of the effects of type
                 systems and code completion on {API} usability using
                 {TypeScript} and {JavaScript} in {MS Visual Studio}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "2",
  pages =        "154--167",
  month =        feb,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936313.2816720",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Recent empirical studies that compared static and
                 dynamic type systems on API usability showed a positive
                 impact of static type systems on developer productivity
                 in most cases. Nevertheless, it is unclear how large
                 this effect is in comparison to other factors. One
                 obvious factor in programming is tooling: It is
                 commonly accepted that modern IDEs have a large
                 positive impact on developers, although it is not clear
                 which parts of modern IDEs are responsible for that.
                 One possible---and for most developers obvious
                 candidate---is code completion. This paper describes a
                 2x2 randomized trial that compares JavaScript and
                 Microsoft's statically typed alternative TypeScript
                 with and without code completion in MS Visual Studio.
                 While the experiment shows (in correspondence to
                 previous experiments) a large positive effect of the
                 statically typed language TypeScript, the code
                 completion effect is not only marginal, but also just
                 approaching statistical significance. This seems to be
                 an indicator that the effect of static type systems is
                 larger than often assumed, at least in comparison to
                 code completion.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '15 conference proceedings.",
}

@Article{Grigore:2016:ARG,
  author =       "Radu Grigore and Hongseok Yang",
  title =        "Abstraction refinement guided by a learnt
                 probabilistic model",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "1",
  pages =        "485--498",
  month =        jan,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2914770.2837663",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:57 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The core challenge in designing an effective static
                 program analysis is to find a good program abstraction
                 --- one that retains only details relevant to a given
                 query. In this paper, we present a new approach for
                 automatically finding such an abstraction. Our approach
                 uses a pessimistic strategy, which can optionally use
                 guidance from a probabilistic model. Our approach
                 applies to parametric static analyses implemented in
                 Datalog, and is based on counterexample-guided
                 abstraction refinement. For each untried abstraction,
                 our probabilistic model provides a probability of
                 success, while the size of the abstraction provides an
                 estimate of its cost in terms of analysis time.
                 Combining these two metrics, probability and cost, our
                 refinement algorithm picks an optimal abstraction. Our
                 probabilistic model is a variant of the Erdos--Renyi
                 random graph model, and it is tunable by what we call
                 hyperparameters. We present a method to learn good
                 values for these hyperparameters, by observing past
                 runs of the analysis on an existing codebase. We
                 evaluate our approach on an object sensitive pointer
                 analysis for Java programs, with two client analyses
                 (PolySite and Downcast).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '16 conference proceedings.",
}

@Article{Grimmer:2016:HPC,
  author =       "Matthias Grimmer and Chris Seaton and Roland Schatz
                 and Thomas W{\"u}rthinger and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "High-performance cross-language interoperability in a
                 multi-language runtime",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "2",
  pages =        "78--90",
  month =        feb,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936313.2816714",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Programmers combine different programming languages
                 because it allows them to use the most suitable
                 language for a given problem, to gradually migrate
                 existing projects from one language to another, or to
                 reuse existing source code. However, existing
                 cross-language mechanisms suffer from complex
                 interfaces, insufficient flexibility, or poor
                 performance. We present the TruffleVM, a multi-language
                 runtime that allows composing different language
                 implementations in a seamless way. It reduces the
                 amount of required boiler-plate code to a minimum by
                 allowing programmers to access foreign functions or
                 objects by using the notation of the host language. We
                 compose language implementations that translate source
                 code to an intermediate representation (IR), which is
                 executed on top of a shared runtime system. Language
                 implementations use language-independent messages that
                 the runtime resolves at their first execution by
                 transforming them to efficient
                 foreign-language-specific operations. The TruffleVM
                 avoids conversion or marshaling of foreign objects at
                 the language boundary and allows the dynamic compiler
                 to perform its optimizations across language
                 boundaries, which guarantees high performance. This
                 paper presents an implementation of our ideas based on
                 the Truffle system and its guest language
                 implementations JavaScript, Ruby, and C.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '15 conference proceedings.",
}

@Article{Gupta:2016:LSA,
  author =       "Kartik Gupta and V. Krishna Nandivada",
  title =        "Lexical state analyzer for {JavaCC} grammars",
  journal =      j-SPE,
  volume =       "46",
  number =       "6",
  pages =        "751--765",
  month =        jun,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2322",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Jun 8 07:13:22 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Hedin:2016:IFS,
  author =       "Daniel Hedin and Luciano Bello and Andrei Sabelfeld",
  title =        "Information-flow security for {JavaScript} and its
                 {APIs}",
  journal =      j-J-COMP-SECUR,
  volume =       "24",
  number =       "2",
  pages =        "181--234",
  month =        "????",
  year =         "2016",
  CODEN =        "JCSIET",
  DOI =          "https://doi.org/10.3233/JCS-160544",
  ISSN =         "0926-227X (print), 1875-8924 (electronic)",
  ISSN-L =       "0926-227X",
  bibdate =      "Tue May 24 06:26:59 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jcompsecur.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Computer Security",
  journal-URL =  "http://content.iospress.com/journals/journal-of-computer-security",
}

@Article{Hindle:2016:NS,
  author =       "Abram Hindle and Earl T. Barr and Mark Gabel and
                 Zhendong Su and Premkumar Devanbu",
  title =        "On the naturalness of software",
  journal =      j-CACM,
  volume =       "59",
  number =       "5",
  pages =        "122--131",
  month =        may,
  year =         "2016",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/2902362",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Wed May 25 17:07:29 MDT 2016",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://cacm.acm.org/magazines/2016/5/201595/fulltext",
  abstract =     "Natural languages like English are rich, complex, and
                 powerful. The highly creative and graceful use of
                 languages like English and Tamil, by masters like
                 Shakespeare and Avvaiyar, can certainly delight and
                 inspire. But in practice, given cognitive constraints
                 and the exigencies of daily life, most human utterances
                 are far simpler and much more repetitive and
                 predictable. In fact, these utterances can be very
                 usefully modeled using modern statistical methods. This
                 fact has led to the phenomenal success of statistical
                 approaches to speech recognition, natural language
                 translation, question-answering, and text mining and
                 comprehension. We begin with the conjecture that most
                 software is also natural, in the sense that it is
                 created by humans at work, with all the attendant
                 constraints and limitations---and thus, like natural
                 language, it is also likely to be repetitive and
                 predictable. We then proceed to ask whether (a) code
                 can be usefully modeled by statistical language models
                 and (b) such models can be leveraged to support
                 software engineers. Using the widely adopted n -gram
                 model, we provide empirical evidence supportive of a
                 positive answer to both these questions. We show that
                 code is also very regular, and, in fact, even more so
                 than natural languages. As an example use of the model,
                 we have developed a simple code completion engine for
                 Java that, despite its simplicity, already improves
                 Eclipse's completion capability. We conclude the paper
                 by laying out a vision for future research in this
                 area.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@InProceedings{Holzinger:2016:DSM,
  author =       "P. Holzinger and S. Triller and A. Bartel and E.
                 Bodden",
  editor =       "{ACM}",
  booktitle =    "Proceedings of the {ACM SIGSAC} Conference on
                 Computer and Communications Security",
  title =        "An in-depth study of more than ten years of {Java}
                 exploitation",
  publisher =    pub-ACM,
  address =      pub-ACM:adr,
  pages =        "779--790",
  year =         "2016",
  DOI =          "https://doi.org/10.1145/2976749.2978361",
  bibdate =      "Mon Jun 5 13:46:37 2023",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
}

@Article{Hunt:2016:RFF,
  author =       "Pete Hunt and Paul O'Shannessy and Dave Smith and
                 Terry Coatta",
  title =        "React: {Facebook}'s Functional Turn on Writing
                 {JavaScript}",
  journal =      j-QUEUE,
  volume =       "14",
  number =       "4",
  pages =        "40",
  month =        jul,
  year =         "2016",
  CODEN =        "AQCUAE",
  DOI =          "https://doi.org/10.1145/2984629.2994373",
  ISSN =         "1542-7730 (print), 1542-7749 (electronic)",
  ISSN-L =       "1542-7730",
  bibdate =      "Wed Dec 11 08:08:28 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/queue.bib",
  URL =          "http://queue.acm.org/detail.cfm?id=2994373",
  abstract =     "A discussion with Pete Hunt, Paul O'Shannessy, Dave
                 Smith and Terry Coatta.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM Queue: Tomorrow's Computing Today",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J882",
}

@Article{Inostroza:2016:MIM,
  author =       "Pablo Inostroza and Tijs van der Storm",
  title =        "Modular interpreters for the masses: implicit context
                 propagation using object algebras",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "3",
  pages =        "171--180",
  month =        mar,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936314.2814209",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Modular interpreters have the potential to achieve
                 component-based language development: instead of
                 writing language interpreters from scratch, they can be
                 assembled from reusable, semantic building blocks.
                 Unfortunately, traditional language interpreters are
                 hard to extend because different language constructs
                 may require different interpreter signatures. For
                 instance, arithmetic interpreters produce a value
                 without any context information, whereas binding
                 constructs require an additional environment. In this
                 paper, we present a practical solution to this problem
                 based on implicit context propagation. By structuring
                 denotational-style interpreters as Object Algebras,
                 base interpreters can be retroactively lifted into new
                 interpreters that have an extended signature. The
                 additional parameters are implicitly propagated behind
                 the scenes, through the evaluation of the base
                 interpreter. Interpreter lifting enables a flexible
                 style of component-based language development. The
                 technique works in mainstream object-oriented
                 languages, does not sacrifice type safety or separate
                 compilation, and can be easily automated. We illustrate
                 implicit context propagation using a modular definition
                 of Featherweight Java and its extension to support
                 side-effects.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '15 conference proceedings.",
}

@Article{Iranmanesh:2016:SSE,
  author =       "Zeinab Iranmanesh and Mehran S. Fallah",
  title =        "Specification and static enforcement of
                 scheduler-independent noninterference in a middleweight
                 {Java}",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "46",
  number =       "??",
  pages =        "20--43",
  month =        nov,
  year =         "2016",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Thu Nov 17 09:48:26 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842415300300",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Javed:2016:TSJ,
  author =       "Ansar Javed and Bibrak Qamar and Mohsan Jameel and
                 Aamir Shafi and Bryan Carpenter",
  title =        "Towards Scalable {Java} {HPC} with Hybrid and Native
                 Communication Devices in {MPJ} Express",
  journal =      j-INT-J-PARALLEL-PROG,
  volume =       "44",
  number =       "6",
  pages =        "1142--1172",
  month =        dec,
  year =         "2016",
  CODEN =        "IJPPE5",
  DOI =          "https://doi.org/10.1007/s10766-015-0375-4",
  ISSN =         "0885-7458 (print), 1573-7640 (electronic)",
  ISSN-L =       "0885-7458",
  bibdate =      "Tue Sep 20 10:50:01 MDT 2016",
  bibsource =    "http://link.springer.com/journal/10766/44/6;
                 http://www.math.utah.edu/pub/tex/bib/intjparallelprogram.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10766-015-0375-4",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal of Parallel Programming",
  journal-URL =  "http://link.springer.com/journal/10766",
}

@Article{Kedlaya:2016:SST,
  author =       "Madhukar N. Kedlaya and Behnam Robatmili and Ben
                 Hardekopf",
  title =        "Server-side type profiling for optimizing client-side
                 {JavaScript} engines",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "2",
  pages =        "140--153",
  month =        feb,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936313.2816719",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Modern JavaScript engines optimize hot functions using
                 a JIT compiler along with type information gathered by
                 an online profiler. However, the profiler's information
                 can be unsound and when unexpected types are
                 encountered the engine must recover using an expensive
                 mechanism called deoptimization. In this paper we
                 describe a method to significantly reduce the number of
                 deoptimizations observed by client-side JavaScript
                 engines by using ahead-of-time profiling on the
                 server-side. Unlike previous work on ahead-of-time
                 profiling for statically-typed languages such as Java,
                 our technique must operate on a dynamically-typed
                 language, which significantly changes the required
                 insights and methods to make the technique effective.
                 We implement our proposed technique using the
                 SpiderMonkey JavaScript engine, and we evaluate our
                 implementation using three different kinds of
                 benchmarks: the industry-standard Octane benchmark
                 suite, a set of JavaScript physics engines, and a set
                 of real-world websites from the Membench50 benchmark
                 suite. We show that using ahead-of-time profiling
                 provides significant performance benefits over the
                 baseline vanilla SpiderMonkey engine.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '15 conference proceedings.",
}

@Article{Kulkarni:2016:APA,
  author =       "Sulekha Kulkarni and Ravi Mangal and Xin Zhang and
                 Mayur Naik",
  title =        "Accelerating program analyses by cross-program
                 training",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "359--377",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984023",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Practical programs share large modules of code.
                 However, many program analyses are ineffective at
                 reusing analysis results for shared code across
                 programs. We present POLYMER, an analysis optimizer to
                 address this problem. POLYMER runs the analysis offline
                 on a corpus of training programs and learns analysis
                 facts over shared code. It prunes the learnt facts to
                 eliminate intermediate computations and then reuses
                 these pruned facts to accelerate the analysis of other
                 programs that share code with the training corpus. We
                 have implemented POLYMER to accelerate analyses
                 specified in Datalog, and apply it to optimize two
                 analyses for Java programs: a call-graph analysis that
                 is flow- and context-insensitive, and a points-to
                 analysis that is flow- and context-sensitive. We
                 evaluate the resulting analyses on ten programs from
                 the DaCapo suite that share the JDK library. POLYMER
                 achieves average speedups of 2.6$ \times $ for the
                 call-graph analysis and 5.2$ \times $ for the points-to
                 analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Landman:2016:EAR,
  author =       "Davy Landman and Alexander Serebrenik and Eric Bouwers
                 and Jurgen J. Vinju",
  title =        "Empirical analysis of the relationship between {CC}
                 and {SLOC} in a large corpus of {Java} methods and {C}
                 functions",
  journal =      j-J-SOFTW-EVOL-PROC,
  volume =       "28",
  number =       "7",
  pages =        "589--618",
  month =        jul,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1002/smr.1760",
  ISSN =         "2047-7473 (print), 2047-7481 (electronic)",
  ISSN-L =       "2047-7473",
  bibdate =      "Wed Jan 31 13:48:43 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwevolproc.bib",
  note =         "See corrigendum \cite{Landman:2017:CEA}.",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software: Evolution and Process",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Lee:2016:ECP,
  author =       "Seong-Won Lee and Soo-Mook Moon and Seong-Moo Kim",
  title =        "Extended Conference Papers: Flow-sensitive runtime
                 estimation: an enhanced hot spot detection heuristics
                 for embedded {Java} just-in-time compilers",
  journal =      j-SPE,
  volume =       "46",
  number =       "6",
  pages =        "841--864",
  month =        jun,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2315",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Jun 8 07:13:22 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Leopoldseder:2016:JJT,
  author =       "David Leopoldseder and Lukas Stadler and Christian
                 Wimmer and Hanspeter M{\"o}ssenb{\"o}ck",
  title =        "{Java-to-JavaScript} translation via structured
                 control flow reconstruction of compiler {IR}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "2",
  pages =        "91--103",
  month =        feb,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936313.2816715",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present an approach to cross-compile Java bytecodes
                 to Java-Script, building on existing Java optimizing
                 compiler technology. Static analysis determines which
                 Java classes and methods are reachable. These are then
                 translated to JavaScript using a re-configured Java
                 just-in-time compiler with a new back end that
                 generates JavaScript instead of machine code. Standard
                 compiler optimizations such as method inlining and
                 global value numbering, as well as advanced
                 optimizations such as escape analysis, lead to compact
                 and optimized JavaScript code. Compiler IR is
                 unstructured, so structured control flow needs to be
                 reconstructed before code generation is possible. We
                 present details of our control flow reconstruction
                 algorithm. Our system is based on Graal, an open-source
                 optimizing compiler for the Java HotSpot VM and other
                 VMs. The modular and VM-independent architecture of
                 Graal allows us to reuse the intermediate
                 representation, the bytecode parser, and the high-level
                 optimizations. Our custom back end first performs
                 control flow reconstruction and then JavaScript code
                 generation. The generated JavaScript undergoes a set of
                 optimizations to increase readability and performance.
                 Static analysis is performed on the Graal intermediate
                 representation as well. Benchmark results for
                 medium-sized Java benchmarks such as SPECjbb2005 run
                 with acceptable performance on the V8 JavaScript VM.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '15 conference proceedings.",
}

@Article{Li:2016:JJM,
  author =       "Bing Li and Junbo Zhang and Ning Yu and Yi Pan",
  title =        "{J2M}: a {Java} to {MapReduce} translator for cloud
                 computing",
  journal =      j-J-SUPERCOMPUTING,
  volume =       "72",
  number =       "5",
  pages =        "1928--1945",
  month =        may,
  year =         "2016",
  CODEN =        "JOSUED",
  DOI =          "https://doi.org/10.1007/s11227-016-1695-x",
  ISSN =         "0920-8542 (print), 1573-0484 (electronic)",
  ISSN-L =       "0920-8542",
  bibdate =      "Mon May 30 09:17:38 MDT 2016",
  bibsource =    "http://link.springer.com/journal/11227/72/5;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsuper.bib",
  URL =          "http://link.springer.com/article/10.1007/s11227-016-1695-x",
  acknowledgement = ack-nhfb,
  fjournal =     "The Journal of Supercomputing",
  journal-URL =  "http://link.springer.com/journal/11227",
}

@Article{Lorenzen:2016:STD,
  author =       "Florian Lorenzen and Sebastian Erdweg",
  title =        "Sound type-dependent syntactic language extension",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "1",
  pages =        "204--216",
  month =        jan,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2914770.2837644",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:57 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Syntactic language extensions can introduce new
                 facilities into a programming language while requiring
                 little implementation effort and modest changes to the
                 compiler. It is typical to desugar language extensions
                 in a distinguished compiler phase after parsing or type
                 checking, not affecting any of the later compiler
                 phases. If desugaring happens before type checking, the
                 desugaring cannot depend on typing information and type
                 errors are reported in terms of the generated code. If
                 desugaring happens after type checking, the code
                 generated by the desugaring is not type checked and may
                 introduce vulnerabilities. Both options are
                 undesirable. We propose a system for syntactic
                 extensibility where desugaring happens after type
                 checking and desugarings are guaranteed to only
                 generate well-typed code. A major novelty of our work
                 is that desugarings operate on typing derivations
                 instead of plain syntax trees. This provides
                 desugarings access to typing information and forms the
                 basis for the soundness guarantee we provide, namely
                 that a desugaring generates a valid typing derivation.
                 We have implemented our system for syntactic
                 extensibility in a language-independent fashion and
                 instantiated it for a substantial subset of Java,
                 including generics and inheritance. We provide a sound
                 Java extension for Scala-like for-comprehensions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '16 conference proceedings.",
}

@Article{Maas:2016:THL,
  author =       "Martin Maas and Krste Asanovi{\'c} and Tim Harris and
                 John Kubiatowicz",
  title =        "{Taurus}: a Holistic Language Runtime System for
                 Coordinating Distributed Managed-Language
                 Applications",
  journal =      j-OPER-SYS-REV,
  volume =       "50",
  number =       "2",
  pages =        "457--471",
  month =        jun,
  year =         "2016",
  CODEN =        "OSRED8",
  DOI =          "https://doi.org/10.1145/2954680.2872386",
  ISSN =         "0163-5980 (print), 1943-586X (electronic)",
  ISSN-L =       "0163-5980",
  bibdate =      "Thu Jun 9 17:03:34 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/opersysrev.bib",
  abstract =     "Many distributed workloads in today's data centers are
                 written in managed languages such as Java or Ruby.
                 Examples include big data frameworks such as Hadoop,
                 data stores such as Cassandra or applications such as
                 the SOLR search engine. These workloads typically run
                 across many independent language runtime systems on
                 different nodes. This setup represents a source of
                 inefficiency, as these language runtime systems are
                 unaware of each other. For example, they may perform
                 Garbage Collection at times that are locally reasonable
                 but not in a distributed setting. We address these
                 problems by introducing the concept of a Holistic
                 Runtime System that makes runtime-level decisions for
                 the entire distributed application rather than locally.
                 We then present Taurus, a Holistic Runtime System
                 prototype. Taurus is a JVM drop-in replacement,
                 requires almost no configuration and can run unmodified
                 off-the-shelf Java applications. Taurus enforces
                 user-defined coordination policies and provides a DSL
                 for writing these policies. By applying Taurus to
                 Garbage Collection, we demonstrate the potential of
                 such a system and use it to explore coordination
                 strategies for the runtime systems of real-world
                 distributed applications, to improve application
                 performance and address tail-latencies in
                 latency-sensitive workloads.",
  acknowledgement = ack-nhfb,
  fjournal =     "Operating Systems Review",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J597",
}

@Article{Marino:2016:DXU,
  author =       "Daniel Marino and Abhayendra Singh and Todd Millstein
                 and Madanlal Musuvathi and Satish Narayanasamy",
  title =        "{drf x}: an Understandable, High Performance, and
                 Flexible Memory Model for Concurrent Languages",
  journal =      j-TOPLAS,
  volume =       "38",
  number =       "4",
  pages =        "16:1--16:??",
  month =        oct,
  year =         "2016",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/2925988",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Tue Oct 18 11:41:44 MDT 2016",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "The most intuitive memory model for shared-memory
                 multi-threaded programming is sequential consistency
                 (SC), but it disallows the use of many compiler and
                 hardware optimizations and thus affects performance.
                 Data-race-free (DRF) models, such as the C++11 memory
                 model, guarantee SC execution for data-race-free
                 programs. But these models provide no guarantee at all
                 for racy programs, compromising the safety and
                 debuggability of such programs. To address the safety
                 issue, the Java memory model, which is also based on
                 the DRF model, provides a weak semantics for racy
                 executions. However, this semantics is subtle and
                 complex, making it difficult for programmers to reason
                 about their programs and for compiler writers to ensure
                 the correctness of compiler optimizations. We present
                 the drf x memory model, which is simple for programmers
                 to understand and use while still supporting many
                 common optimizations. We introduce a memory model (MM)
                 exception that can be signaled to halt execution. If a
                 program executes without throwing this exception, then
                 drf x guarantees that the execution is SC. If a program
                 throws an MM exception during an execution, then drf x
                 guarantees that the program has a data race. We observe
                 that SC violations can be detected in hardware through
                 a lightweight form of conflict detection. Furthermore,
                 our model safely allows aggressive compiler and
                 hardware optimizations within compiler-designated
                 program regions. We formalize our memory model, prove
                 several properties of this model, describe a compiler
                 and hardware design suitable for drf x, and evaluate
                 the performance overhead due to our compiler and
                 hardware requirements.",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Marz:2016:RPC,
  author =       "Stephen Marz and Brad {Vander Zanden}",
  title =        "Reducing Power Consumption and Latency in Mobile
                 Devices Using an Event Stream Model",
  journal =      j-TECS,
  volume =       "16",
  number =       "1",
  pages =        "11:1--11:??",
  month =        nov,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2964203",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Thu Nov 3 16:48:38 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "Most consumer-based mobile devices use asynchronous
                 events to awaken apps. Currently, event handling is
                 implemented in either an application or an application
                 framework such as Java's virtual machine (VM) or
                 Microsoft's .NET, and it uses a ``polling loop'' that
                 periodically queries an event queue to determine if an
                 event has occurred. These loops must awaken the
                 process, check for an event, and then put the process
                 back to sleep many times per second. This constant
                 arousal prevents the CPU from being put into a deep
                 sleep state, which increases power consumption.
                 Additionally, the process cannot check for events while
                 it sleeps, and this delay in handling events increases
                 latency, which is the time that elapses between when an
                 event occurs and when the application responds to the
                 event. We call this model of event handling a ``pull''
                 model because it needs to query hardware devices or
                 software queues in order to ``pull'' events from them.
                 Recent advances in input devices support direct,
                 informative interrupts to the kernel when an event
                 occurs. This allows us to develop a much more efficient
                 event-handling model called the ``Event Stream Model''
                 (ESM). This model is a push model that allows a process
                 to sleep as long as no event occurs but then
                 immediately awakens a process when an event occurs.
                 This model eliminates the polling loop, thus
                 eliminating latency-inducing sleep between polls and
                 reducing unnecessary power consumption. To work
                 properly, the ESM model must be implemented in the
                 kernel rather than in the application. In this article,
                 we describe how we implemented the ESM model in Android
                 operating system (OS). Our results show that with the
                 event stream model, power consumption is reduced by up
                 to 23.8\% in certain circumstances, and latency is
                 reduced by an average of 13.6ms.",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J840",
  remark =       "Special issue on VIPES, special issue on ICESS2015 and
                 regular papers.",
}

@Article{McBurney:2016:ASC,
  author =       "P. W. McBurney and C. McMillan",
  title =        "Automatic Source Code Summarization of Context for
                 {Java} Methods",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "42",
  number =       "2",
  pages =        "103--119",
  month =        feb,
  year =         "2016",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2015.2465386",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7181703",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{McKinley:2016:PWU,
  author =       "Kathryn S. McKinley",
  title =        "Programming the world of uncertain things (keynote)",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "1",
  pages =        "1--2",
  month =        jan,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2914770.2843895",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:57 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Computing has entered the era of uncertain data, in
                 which hardware and software generate and reason about
                 estimates. Applications use estimates from sensors,
                 machine learning, big data, humans, and approximate
                 hardware and software. Unfortunately, developers face
                 pervasive correctness, programmability, and
                 optimization problems due to estimates. Most
                 programming languages unfortunately make these problems
                 worse. We propose a new programming abstraction called
                 {Uncertain$<$T$>$} embedded into languages, such as
                 C\#, C++, Java, Python, and JavaScript. Applications
                 that consume estimates use familiar discrete operations
                 for their estimates; overloaded conditional operators
                 specify hypothesis tests and applications use them
                 control false positives and negatives; and new
                 compositional operators express domain knowledge. By
                 carefully restricting the expressiveness, the runtime
                 automatically implements correct statistical reasoning
                 at conditionals, relieving developers of the need to
                 implement or deeply understand statistics. We
                 demonstrate substantial programmability, correctness,
                 and efficiency benefits of this programming model for
                 GPS sensor navigation, approximate computing, machine
                 learning, and xBox.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '16 conference proceedings.",
}

@Article{Mehrnezhad:2016:TIU,
  author =       "Maryam Mehrnezhad and Ehsan Toreini and Siamak F.
                 Shahandashti and Feng Hao",
  title =        "{{\em TouchSignatures}}: Identification of user touch
                 actions and {PINs} based on mobile sensor data via
                 {JavaScript}",
  journal =      j-J-INFO-SEC-APPL,
  volume =       "26",
  number =       "??",
  pages =        "23--38",
  month =        feb,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.jisa.2015.11.007",
  ISSN =         "2214-2126",
  ISSN-L =       "2214-2126",
  bibdate =      "Sun May 8 11:59:10 MDT 2022",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jinfosecappl.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S2214212615000678",
  acknowledgement = ack-nhfb,
  ajournal =     "J. Info. Sec. Appl.",
  fjournal =     "Journal of Information Security and Applications
                 (JISA)",
  journal-URL =  "http://www.sciencedirect.com/science/journal/22142126",
}

@Article{Mitropoulos:2016:HTY,
  author =       "Dimitris Mitropoulos and Konstantinos Stroggylos and
                 Diomidis Spinellis and Angelos D. Keromytis",
  title =        "How to Train Your Browser: Preventing {XSS} Attacks
                 Using Contextual Script Fingerprints",
  journal =      j-TOPS,
  volume =       "19",
  number =       "1",
  pages =        "2:1--2:??",
  month =        aug,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2939374",
  ISSN =         "2471-2566 (print), 2471-2574 (electronic)",
  ISSN-L =       "2471-2566",
  bibdate =      "Mon Apr 3 09:09:38 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tops.bib",
  abstract =     "Cross-Site Scripting (XSS) is one of the most common
                 web application vulnerabilities. It is therefore
                 sometimes referred to as the ``buffer overflow of the
                 web.'' Drawing a parallel from the current state of
                 practice in preventing unauthorized native code
                 execution (the typical goal in a code injection), we
                 propose a script whitelisting approach to tame
                 JavaScript-driven XSS attacks. Our scheme involves a
                 transparent script interception layer placed in the
                 browser's JavaScript engine. This layer is designed to
                 detect every script that reaches the browser, from
                 every possible route, and compare it to a list of valid
                 scripts for the site or page being accessed; scripts
                 not on the list are prevented from executing. To avoid
                 the false positives caused by minor syntactic changes
                 (e.g., due to dynamic code generation), our layer uses
                 the concept of contextual fingerprints when comparing
                 scripts. Contextual fingerprints are identifiers that
                 represent specific elements of a script and its
                 execution context. Fingerprints can be easily enriched
                 with new elements, if needed, to enhance the proposed
                 method's robustness. The list can be populated by the
                 website's administrators or a trusted third party. To
                 verify our approach, we have developed a prototype and
                 tested it successfully against an extensive array of
                 attacks that were performed on more than 50 real-world
                 vulnerable web applications. We measured the browsing
                 performance overhead of the proposed solution on eight
                 websites that make heavy use of JavaScript. Our
                 mechanism imposed an average overhead of 11.1\% on the
                 execution time of the JavaScript engine. When measured
                 as part of a full browsing session, and for all tested
                 websites, the overhead introduced by our layer was less
                 than 0.05\%. When script elements are altered or new
                 scripts are added on the server side, a new fingerprint
                 generation phase is required. To examine the temporal
                 aspect of contextual fingerprints, we performed a
                 short-term and a long-term experiment based on the same
                 websites. The former, showed that in a short period of
                 time (10 days), for seven of eight websites, the
                 majority of valid fingerprints stay the same (more than
                 92\% on average). The latter, though, indicated that,
                 in the long run, the number of fingerprints that do not
                 change is reduced. Both experiments can be seen as one
                 of the first attempts to study the feasibility of a
                 whitelisting approach for the web.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Privacy and Security (TOPS)",
  journal-URL =  "http://dl.acm.org/citation.cfm?id=J1547",
}

@Article{Na:2016:JPC,
  author =       "Yeoul Na and Seon Wook Kim and Youngsun Han",
  title =        "{JavaScript} Parallelizing Compiler for Exploiting
                 Parallelism from Data-Parallel {HTML5} Applications",
  journal =      j-TACO,
  volume =       "12",
  number =       "4",
  pages =        "64:1--64:??",
  month =        jan,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2846098",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Tue Feb 16 15:36:38 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "With the advent of the HTML5 standard, JavaScript is
                 increasingly processing computationally intensive,
                 data-parallel workloads. Thus, the enhancement of
                 JavaScript performance has been emphasized because the
                 performance gap between JavaScript and native
                 applications is still substantial. Despite this
                 urgency, conventional JavaScript compilers do not
                 exploit much of parallelism even from data-parallel
                 JavaScript applications, despite contemporary mobile
                 devices being equipped with expensive parallel hardware
                 platforms, such as multicore processors and GPGPUs. In
                 this article, we propose an automatically parallelizing
                 JavaScript compiler that targets emerging,
                 data-parallel HTML5 applications by leveraging the
                 mature affine loop analysis of conventional static
                 compilers. We identify that the most critical issues
                 when parallelizing JavaScript with a conventional
                 static analysis are ensuring correct parallelization,
                 minimizing compilation overhead, and conducting
                 low-cost recovery when there is a speculation failure
                 during parallel execution. We propose a mechanism for
                 safely handling the failure at a low cost, based on
                 compiler techniques and the property of idempotence.
                 Our experiment shows that the proposed JavaScript
                 parallelizing compiler detects most affine parallel
                 loops. Also, we achieved a maximum speedup of 3.22
                 times on a quad-core system, while incurring negligible
                 compilation and recovery overheads with various sets of
                 data-parallel HTML5 applications.",
  acknowledgement = ack-nhfb,
  articleno =    "64",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Nunez:2016:PGC,
  author =       "Diogenes Nunez and Samuel Z. Guyer and Emery D.
                 Berger",
  title =        "Prioritized garbage collection: explicit {GC} support
                 for software caches",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "695--710",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984028",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Programmers routinely trade space for time to increase
                 performance, often in the form of caching or
                 memoization. In managed languages like Java or
                 JavaScript, however, this space-time tradeoff is
                 complex. Using more space translates into higher
                 garbage collection costs, especially at the limit of
                 available memory. Existing runtime systems provide
                 limited support for space-sensitive algorithms, forcing
                 programmers into difficult and often brittle choices
                 about provisioning. This paper presents prioritized
                 garbage collection, a cooperative programming language
                 and runtime solution to this problem. Prioritized GC
                 provides an interface similar to soft references,
                 called priority references, which identify objects that
                 the collector can reclaim eagerly if necessary. The key
                 difference is an API for defining the policy that
                 governs when priority references are cleared and in
                 what order. Application code specifies a priority value
                 for each reference and a target memory bound. The
                 collector reclaims references, lowest priority first,
                 until the total memory footprint of the cache fits
                 within the bound. We use this API to implement a
                 space-aware least-recently-used (LRU) cache, called a
                 Sache, that is a drop-in replacement for existing
                 caches, such as Google's Guava library. The garbage
                 collector automatically grows and shrinks the Sache in
                 response to available memory and workload with minimal
                 provisioning information from the programmer. Using a
                 Sache, it is almost impossible for an application to
                 experience a memory leak, memory pressure, or an
                 out-of-memory crash caused by software caching.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Olsson:2016:ERR,
  author =       "Ronald A. Olsson and Todd Williamson",
  title =        "Experience Reports: {RJ}: a {Java} package providing
                 {JR-like} concurrent programming",
  journal =      j-SPE,
  volume =       "46",
  number =       "5",
  pages =        "685--708",
  month =        may,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2330",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Jun 8 07:13:22 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Pawlak:2016:SLI,
  author =       "Renaud Pawlak and Martin Monperrus and Nicolas
                 Petitprez and Carlos Noguera and Lionel Seinturier",
  title =        "{SPOON}: a library for implementing analyses and
                 transformations of {Java} source code",
  journal =      j-SPE,
  volume =       "46",
  number =       "9",
  pages =        "1155--1179",
  month =        sep,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2346",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Sep 13 08:44:22 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Petrashko:2016:CGL,
  author =       "Dmitry Petrashko and Vlad Ureche and Ondrej Lhot{\'a}k
                 and Martin Odersky",
  title =        "Call graphs for languages with parametric
                 polymorphism",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "394--409",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2983991",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The performance of contemporary object oriented
                 languages depends on optimizations such as
                 devirtualization, inlining, and specialization, and
                 these in turn depend on precise call graph analysis.
                 Existing call graph analyses do not take advantage of
                 the information provided by the rich type systems of
                 contemporary languages, in particular generic type
                 arguments. Many existing approaches analyze Java
                 bytecode, in which generic types have been erased. This
                 paper shows that this discarded information is actually
                 very useful as the context in a context-sensitive
                 analysis, where it significantly improves precision and
                 keeps the running time small. Specifically, we propose
                 and evaluate call graph construction algorithms in
                 which the contexts of a method are (i) the type
                 arguments passed to its type parameters, and (ii) the
                 static types of the arguments passed to its term
                 parameters. The use of static types from the caller as
                 context is effective because it allows more precise
                 dispatch of call sites inside the callee. Our
                 evaluation indicates that the average number of
                 contexts required per method is small. We implement the
                 analysis in the Dotty compiler for Scala, and evaluate
                 it on programs that use the type-parametric Scala
                 collections library and on the Dotty compiler itself.
                 The context-sensitive analysis runs 1.4x faster than a
                 context-insensitive one and discovers 20\% more
                 monomorphic call sites at the same time. When applied
                 to method specialization, the imprecision in a
                 context-insensitive call graph would require the
                 average method to be cloned 22 times, whereas the
                 context-sensitive call graph indicates a much more
                 practical 1.00 to 1.50 clones per method. We applied
                 the proposed analysis to automatically specialize
                 generic methods. The resulting automatic transformation
                 achieves the same performance as state-of-the-art
                 techniques requiring manual annotations, while reducing
                 the size of the generated bytecode by up to 5 $ \times
                 $.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Pichon-Pharabod:2016:CSR,
  author =       "Jean Pichon-Pharabod and Peter Sewell",
  title =        "A concurrency semantics for relaxed atomics that
                 permits optimisation and avoids thin-air executions",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "1",
  pages =        "622--633",
  month =        jan,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2914770.2837616",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:57 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Despite much research on concurrent programming
                 languages, especially for Java and C/C++, we still do
                 not have a satisfactory definition of their semantics,
                 one that admits all common optimisations without also
                 admitting undesired behaviour. Especially problematic
                 are the ``thin-air'' examples involving
                 high-performance concurrent accesses, such as C/C++11
                 relaxed atomics. The C/C++11 model is in a
                 per-candidate-execution style, and previous work has
                 identified a tension between that and the fact that
                 compiler optimisations do not operate over single
                 candidate executions in isolation; rather, they operate
                 over syntactic representations that represent all
                 executions. In this paper we propose a novel approach
                 that circumvents this difficulty. We define a
                 concurrency semantics for a core calculus, including
                 relaxed-atomic and non-atomic accesses, and locks, that
                 admits a wide range of optimisation while still
                 forbidding the classic thin-air examples. It also
                 addresses other problems relating to undefined
                 behaviour. The basic idea is to use an event-structure
                 representation of the current state of each thread,
                 capturing all of its potential executions, and to
                 permit interleaving of execution and transformation
                 steps over that to reflect optimisation (possibly
                 dynamic) of the code. These are combined with a
                 non-multi-copy-atomic storage subsystem, to reflect
                 common hardware behaviour. The semantics is defined in
                 a mechanised and executable form, and designed to be
                 implementable above current relaxed hardware and strong
                 enough to support the programming idioms that C/C++11
                 does for this fragment. It offers a potential way
                 forward for concurrent programming language semantics,
                 beyond the current C/C++11 and Java models.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '16 conference proceedings.",
}

@Article{Portillo-Dominguez:2016:ECP,
  author =       "A. Omar Portillo-Dominguez and Philip Perry and Damien
                 Magoni and Miao Wang and John Murphy",
  title =        "Extended Conference Paper: {TRINI}: an adaptive load
                 balancing strategy based on garbage collection for
                 clustered {Java} systems",
  journal =      j-SPE,
  volume =       "46",
  number =       "12",
  pages =        "1705--1733",
  month =        dec,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2391",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Tue Nov 15 15:25:10 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Qian:2016:EFS,
  author =       "Junjie Qian and Witawas Srisa-an and Sharad Seth and
                 Hong Jiang and Du Li and Pan Yi",
  title =        "Exploiting {FIFO} Scheduler to Improve Parallel
                 Garbage Collection Performance",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "7",
  pages =        "109--121",
  month =        jul,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3007611.2892248",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:12 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Recent studies have found that parallel garbage
                 collection performs worse with more CPUs and more
                 collector threads. As part of this work, we further
                 investigate this phenomenon and find that poor
                 scalability is worst in highly scalable Java
                 applications. Our investigation to find the causes
                 clearly reveals that efficient multi-threading in an
                 application can prolong the average object lifespan,
                 which results in less effective garbage collection. We
                 also find that prolonging lifespan is the direct result
                 of Linux's Completely Fair Scheduler due to its
                 round-robin like behavior that can increase the heap
                 contention between the application threads. Instead, if
                 we use pseudo first-in-first-out to schedule
                 application threads in large multicore systems, the
                 garbage collection scalability is significantly
                 improved while the time spent in garbage collection is
                 reduced by as much as 21\%. The average execution time
                 of the 24 Java applications used in our study is also
                 reduced by 11\%. Based on this observation, we propose
                 two approaches to optimally select scheduling policies
                 based on application scalability profile. Our first
                 approach uses the profile information from one
                 execution to tune the subsequent executions. Our second
                 approach dynamically collects profile information and
                 performs policy selection during execution.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '16 conference proceedings.",
}

@Article{Raychev:2016:PMC,
  author =       "Veselin Raychev and Pavol Bielik and Martin Vechev",
  title =        "Probabilistic model for code with decision trees",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "731--747",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984041",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In this paper we introduce a new approach for learning
                 precise and general probabilistic models of code based
                 on decision tree learning. Our approach directly
                 benefits an emerging class of statistical programming
                 tools which leverage probabilistic models of code
                 learned over large codebases (e.g., GitHub) to make
                 predictions about new programs (e.g., code completion,
                 repair, etc). The key idea is to phrase the problem of
                 learning a probabilistic model of code as learning a
                 decision tree in a domain specific language over
                 abstract syntax trees (called TGen). This allows us to
                 condition the prediction of a program element on a
                 dynamically computed context. Further, our problem
                 formulation enables us to easily instantiate known
                 decision tree learning algorithms such as ID3, but also
                 to obtain new variants we refer to as ID3+ and E13, not
                 previously explored and ones that outperform ID3 in
                 prediction accuracy. Our approach is general and can be
                 used to learn a probabilistic model of any programming
                 language. We implemented our approach in a system
                 called Deep3 and evaluated it for the challenging task
                 of learning probabilistic models of JavaScript and
                 Python. Our experimental results indicate that Deep3
                 predicts elements of JavaScript and Python code with
                 precision above 82\% and 69\%, respectively. Further,
                 Deep3 often significantly outperforms state-of-the-art
                 approaches in overall prediction accuracy.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Rehman:2016:VMJ,
  author =       "Waqas Ur Rehman and Muhammad Sohaib Ayub and Junaid
                 Haroon Siddiqui",
  title =        "Verification of {MPI} {Java} programs using software
                 model checking",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "8",
  pages =        "55:1--55:??",
  month =        aug,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3016078.2851192",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:12 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pvm.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Development of concurrent software requires the
                 programmer to be aware of non-determinism, data races,
                 and deadlocks. MPI (message passing interface) is a
                 popular standard for writing message oriented
                 distributed applications. Some messages in MPI systems
                 can be processed by one of the many machines and in
                 many possible orders. This non-determinism can affect
                 the result of an MPI application. The alternate results
                 may or may not be correct. To verify MPI applications,
                 we need to check all these possible orderings and use
                 an application specific oracle to decide if these
                 orderings give correct output. MPJ Express is an open
                 source Java implementation of the MPI standard. We
                 developed a Java based model of MPJ Express, where
                 processes are modeled as threads, and which can run
                 unmodified MPI Java programs on a single system. This
                 enabled us to adapt the Java PathFinder explicit state
                 software model checker (JPF) using a custom listener to
                 verify our model running real MPI Java programs. We
                 evaluated our approach using small examples where model
                 checking revealed message orders that would result in
                 incorrect system behavior.",
  acknowledgement = ack-nhfb,
  articleno =    "55",
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '16 conference proceedings.",
}

@Article{Reynders:2016:GSB,
  author =       "Bob Reynders and Dominique Devriese and Frank
                 Piessens",
  title =        "Generating safe boundary {APIs} between typed {EDSLs}
                 and their environments",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "3",
  pages =        "31--34",
  month =        mar,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936314.2814219",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Embedded domain specific languages (EDSLs) are used to
                 represent special-purpose code in a general-purpose
                 language and they are used for applications like vector
                 calculations and run-time code generation. Often, code
                 in an EDSL is compiled to a target (e.g. GPU languages,
                 JVM bytecode, assembly, JavaScript) and needs to
                 interface with other code that is available at that
                 level but uses other data representations or calling
                 conventions. We present an approach for safely making
                 available such APIs in a typed EDSL, guaranteeing
                 correct conversions between data representations and
                 the respect for calling conventions. When the code
                 being interfaced with is the result of static
                 compilation of host language code, we propose a way to
                 auto-generate the needed boilerplate using
                 meta-programming. We instantiate our technique with
                 JavaScript as the target language, JS-Scala as the
                 EDSL, Scala.js as the static compiler and Scala macros
                 to generate the boilerplate, but our design is more
                 generally applicable. We provide evidence of usefulness
                 of our approach through a prototype implementation that
                 we have applied in a non-trivial code base.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '15 conference proceedings.",
}

@Article{Ryu:2016:JFB,
  author =       "Sukyoung Ryu",
  title =        "Journey to find bugs in {JavaScript} web applications
                 in the wild",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "9",
  pages =        "2--2",
  month =        sep,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022670.2976747",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Analyzing real-world JavaScript web applications is a
                 challenging task. On top of understanding the semantics
                 of JavaScript, it requires modeling of web documents,
                 platform objects, and interactions between them. Not
                 only the JavaScript language itself but also its usage
                 patterns are extremely dynamic. JavaScript can generate
                 code and run it during evaluation, and most web
                 applications load JavaScript code dynamically. Such
                 dynamic characteristics of JavaScript web applications
                 make pure static analysis approaches inapplicable. In
                 this talk, we present our attempts to analyze
                 JavaScript web applications in the wild mostly
                 statically using various approaches. From pure
                 JavaScript programs to JavaScript web applications
                 using platform-specific libraries and dynamic code
                 loading, we explain technical challenges in analyzing
                 each of them and how we built an open-source analysis
                 framework for JavaScript, SAFE, that addresses the
                 challenges incrementally. In spite of active research
                 accomplishments in analysis of JavaScript web
                 applications, many issues still remain to be resolved
                 such as events, callback functions, and hybrid web
                 applications. We discuss possible future research
                 directions and open challenges.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ICFP '16 conference proceedings.",
}

@Article{Samak:2016:DSF,
  author =       "Malavika Samak and Omer Tripp and Murali Krishna
                 Ramanathan",
  title =        "Directed synthesis of failing concurrent executions",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "430--446",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984040",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Detecting concurrency-induced bugs in multithreaded
                 libraries can be challenging due to the intricacies
                 associated with their manifestation. This includes
                 invocation of multiple methods, synthesis of inputs to
                 the methods to reach the failing location, and crafting
                 of thread interleavings that cause the erroneous
                 behavior. Neither fuzzing-based testing techniques nor
                 over-approximate static analyses are well positioned to
                 detect such subtle defects while retaining high
                 accuracy alongside satisfactory coverage. In this
                 paper, we propose a directed, iterative and scalable
                 testing engine that combines the strengths of static
                 and dynamic analysis to help synthesize concurrent
                 executions to expose complex concurrency-induced bugs.
                 Our engine accepts as input the library, its client
                 (either sequential or concurrent) and a specification
                 of correctness. Then, it iteratively refines the client
                 to generate an execution that can break the input
                 specification. Each step of the iterative process
                 includes statically identifying sub-goals towards the
                 goal of failing the specification, generating a plan
                 toward meeting these goals, and merging of the paths
                 traversed dynamically with the plan computed statically
                 via constraint solving to generate a new client. The
                 engine reports full reproduction scenarios, guaranteed
                 to be true, for the bugs it finds. We have created a
                 prototype of our approach named MINION. We validated
                 MINION by applying it to well-tested concurrent classes
                 from popular Java libraries, including the latest
                 versions of OpenJDK and Google-Guava. We were able to
                 detect 31 real crashes across 10 classes in a total of
                 23 minutes, including previously unknown bugs.
                 Comparison with three other tools reveals that
                 combined, they report only 9 of the 31 crashes (and no
                 other crashes beyond MINION). This is because several
                 of these bugs manifest under deeply nested path
                 conditions (observed maximum of 11), deep nesting of
                 method invocations (observed maximum of 6) and multiple
                 refinement iterations to generate the crash-inducing
                 client.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Scherr:2016:AFC,
  author =       "Maximilian Scherr and Shigeru Chiba",
  title =        "Almost first-class language embedding: taming staged
                 embedded {DSLs}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "3",
  pages =        "21--30",
  month =        mar,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2936314.2814217",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Thu Jun 9 17:13:58 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Embedded domain-specific languages (EDSLs), inheriting
                 a general-purpose language's features as well as
                 look-and-feel, have traditionally been second-class or
                 rather non-citizens in terms of host-language design.
                 This makes sense when one regards them to be on the
                 same level as traditional, non-EDSL library interfaces.
                 However, this equivalence only applies to the simplest
                 of EDSLs. In this paper we illustrate why this is
                 detrimental when moving on to EDSLs that employ
                 staging, i.e. program reification, by example of
                 various issues that affect authors and users alike. We
                 believe that if EDSLs are to be considered a reliable,
                 language-like interface abstraction, they require
                 exceptional attention and design scrutiny. Instead of
                 unenforceable conventions, we advocate the acceptance
                 of EDSLs as proper, i.e. almost first-class, citizens
                 while retaining most advantages of pure embeddings. As
                 a small step towards this goal, we present a pragmatic
                 framework prototype for Java. It is based on
                 annotations that explicate and document membership to
                 explicit EDSL entities. In a nutshell, our framework
                 identifies (annotated) method calls and field accesses
                 as EDSL terms and dynamically constructs an
                 abstract-syntax representation, which is eventually
                 passed to a semantics-defining back end implemented by
                 the EDSL author.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '15 conference proceedings.",
}

@Article{Serbanescu:2016:DPO,
  author =       "V. Serbanescu and K. Azadbakht and F. de Boer and C.
                 Nagarajagowda and B. Nobakht",
  title =        "A design pattern for optimizations in data intensive
                 applications using {ABS} and {JAVA 8}",
  journal =      j-CCPE,
  volume =       "28",
  number =       "2",
  pages =        "374--385",
  month =        feb,
  year =         "2016",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3480",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Tue Feb 9 06:13:21 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "31 Mar 2015",
}

@Article{Serrano:2016:GH,
  author =       "Manuel Serrano and Vincent Prunet",
  title =        "A glimpse of {Hopjs}",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "9",
  pages =        "180--192",
  month =        sep,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022670.2951916",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Hop.js is a multitier programming environment for
                 JavaScript. It allows a single JavaScript program to
                 describe the client-side and the server-side components
                 of a web application. Its runtime environment ensures
                 consistent executions of the application on the server
                 and on the client. This paper overviews the Hop.js
                 design. It shows the JavaScript extensions that makes
                 it possible to conceive web applications globally. It
                 presents how Hop.js interacts with the outside world.
                 It also briefly presents the Hop.js implementation. It
                 presents the Hop.js web server implementation, the
                 handling of server-side parallelism, and the JavaScript
                 and HTML compilers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ICFP '16 conference proceedings.",
}

@Article{Sluanschi:2016:AAD,
  author =       "Emil I. Slu{\c{s}}anschi and Vlad Dumitrel",
  title =        "{ADiJaC} --- Automatic Differentiation of {Java}
                 Classfiles",
  journal =      j-TOMS,
  volume =       "43",
  number =       "2",
  pages =        "9:1--9:33",
  month =        sep,
  year =         "2016",
  CODEN =        "ACMSCU",
  DOI =          "https://doi.org/10.1145/2904901",
  ISSN =         "0098-3500 (print), 1557-7295 (electronic)",
  ISSN-L =       "0098-3500",
  bibdate =      "Tue Nov 22 17:45:25 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toms.bib",
  URL =          "http://dl.acm.org/citation.cfm?id=2904901",
  acknowledgement = ack-nhfb,
  articleno =    "9",
  journal-URL =  "http://dl.acm.org/pub.cfm?id=J782",
}

@Article{Sousa:2016:CHL,
  author =       "Marcelo Sousa and Isil Dillig",
  title =        "{Cartesian} {Hoare} logic for verifying $k$-safety
                 properties",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "6",
  pages =        "57--69",
  month =        jun,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/2980983.2908092",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Mon Sep 5 07:32:25 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Unlike safety properties which require the absence of
                 a ``bad'' program trace, k-safety properties stipulate
                 the absence of a ``bad'' interaction between $k$
                 traces. Examples of $k$-safety properties include
                 transitivity, associativity, anti-symmetry, and
                 monotonicity. This paper presents a sound and
                 relatively complete calculus, called Cartesian Hoare
                 Logic (CHL), for verifying $k$-safety properties. We
                 also present an automated verification algorithm based
                 on CHL and implement it in a tool called DESCARTES. We
                 use DESCARTES to analyze user-defined relational
                 operators in Java and demonstrate that DESCARTES is
                 effective at verifying (or finding violations of)
                 multiple $k$-safety properties.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '16 conference proceedings.",
}

@InProceedings{Spoto:2016:JSA,
  author =       "Fausto Spoto",
  booktitle =    "{Static Analysis}",
  title =        "The {Julia} Static Analyzer for {Java}",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "39--57",
  year =         "2016",
  DOI =          "https://doi.org/10.1007/978-3-662-53413-7_3",
  bibdate =      "Fri Apr 9 07:54:52 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/julia.bib",
  URL =          "http://link.springer.com/chapter/10.1007/978-3-662-53413-7_3",
  acknowledgement = ack-nhfb,
}

@Article{Stefanescu:2016:SBP,
  author =       "Andrei Stefanescu and Daejun Park and Shijiao Yuwen
                 and Yilong Li and Grigore Rosu",
  title =        "Semantics-based program verifiers for all languages",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "74--91",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984027",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a language-independent verification
                 framework that can be instantiated with an operational
                 semantics to automatically generate a program verifier.
                 The framework treats both the operational semantics and
                 the program correctness specifications as reachability
                 rules between matching logic patterns, and uses the
                 sound and relatively complete reachability logic proof
                 system to prove the specifications using the semantics.
                 We instantiate the framework with the semantics of one
                 academic language, KernelC, as well as with three
                 recent semantics of real-world languages, C, Java, and
                 JavaScript, developed independently of our verification
                 infrastructure. We evaluate our approach empirically
                 and show that the generated program verifiers can check
                 automatically the full functional correctness of
                 challenging heap-manipulating programs implementing
                 operations on list and tree data structures, like AVL
                 trees. This is the first approach that can turn the
                 operational semantics of real-world languages into
                 correct-by-construction automatic verifiers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Steimann:2016:CRA,
  author =       "Friedrich Steimann and J{\"o}rg Hagemann and Bastian
                 Ulke",
  title =        "Computing repair alternatives for malformed programs
                 using constraint attribute grammars",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "711--730",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984007",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Attribute grammars decorate the nodes of a program's
                 parse tree with attributes whose values are defined by
                 equations encoding the (static) semantics of a
                 programming language. We show how replacing the
                 equations of an attribute grammar with equivalent
                 constraints that can be solved by a constraint solver
                 allows us to compute repairs of a malformed program
                 solely from a specification that was originally
                 designed for checking its well-formedness. We present
                 two repair modes --- shallow and deep fixing --- whose
                 computed repair alternatives are guaranteed to repair
                 every error on which they are invoked. While shallow
                 fixing may introduce new errors, deep fixing never
                 does; to make it tractable, we implement it using
                 neighborhood search. We demonstrate the feasibility of
                 our approach by implementing it on top of ExtendJ, an
                 attribute grammar based Java compiler, and by applying
                 it to an example from the Java EE context, detecting
                 and fixing well-formedness errors (both real and
                 injected) in a body of 14 open-source subject
                 programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Surendran:2016:APP,
  author =       "Rishi Surendran and Vivek Sarkar",
  title =        "Automatic parallelization of pure method calls via
                 conditional future synthesis",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "20--38",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984035",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We introduce a novel approach for using futures to
                 automatically parallelize the execution of pure method
                 calls. Our approach is built on three new techniques to
                 address the challenge of automatic parallelization via
                 future synthesis: candidate future synthesis,
                 parallelism benefit analysis, and threshold expression
                 synthesis. During candidate future synthesis, our
                 system annotates pure method calls as async expressions
                 and synthesizes a parallel program with future objects
                 and their type declarations. Next, the system performs
                 a parallel benefit analysis to determine which async
                 expressions may need to be executed sequentially due to
                 overhead reasons, based on execution profile
                 information collected from multiple test inputs.
                 Finally, threshold expression synthesis uses the output
                 from parallelism benefit analysis to synthesize
                 predicate expressions that can be used to determine at
                 runtime if a specific pure method call should be
                 executed sequentially or in parallel. We have
                 implemented our approach, and the results obtained from
                 an experimental evaluation of the complete system on a
                 range of sequential Java benchmarks are very
                 encouraging. Our evaluation shows that our approach can
                 provide significant parallel speedups of up to 7.4 $
                 \times $ (geometric mean of 3.69 $ \times $) relative
                 to the sequential programs when using 8 processor
                 cores, with zero programmer effort beyond providing the
                 sequential program and test cases for parallelism
                 benefit analysis.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Vega-Gisbert:2016:DIJ,
  author =       "Oscar Vega-Gisbert and Jose E. Roman and Jeffrey M.
                 Squyres",
  title =        "Design and implementation of {Java} bindings in {Open
                 MPI}",
  journal =      j-PARALLEL-COMPUTING,
  volume =       "59",
  number =       "??",
  pages =        "1--20",
  month =        nov,
  year =         "2016",
  CODEN =        "PACOEJ",
  ISSN =         "0167-8191 (print), 1872-7336 (electronic)",
  ISSN-L =       "0167-8191",
  bibdate =      "Sat Nov 26 12:06:01 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/parallelcomputing.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167819116300758",
  acknowledgement = ack-nhfb,
  fjournal =     "Parallel Computing",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01678191/",
}

@Article{Verdu:2016:PSA,
  author =       "Javier Verdu and Alex Pajuelo",
  title =        "Performance Scalability Analysis of {JavaScript}
                 Applications with {Web Workers}",
  journal =      j-IEEE-COMPUT-ARCHIT-LETT,
  volume =       "15",
  number =       "2",
  pages =        "105--108",
  month =        jul # "\slash " # dec,
  year =         "2016",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1109/LCA.2015.2494585",
  ISSN =         "1556-6056 (print), 1556-6064 (electronic)",
  ISSN-L =       "1556-6056",
  bibdate =      "Thu Jun 20 17:18:18 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeecomputarchitlett.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Web applications are getting closer to the performance
                 of native applications taking advantage of new
                 standard-based technologies. The recent HTML5 standard
                 includes, among others, the Web Workers API that allows
                 executing JavaScript applications on multiple threads,
                 or workers. However, the internals of the browser's
                 JavaScript virtual machine does not expose direct
                 relation between workers and running threads in the
                 browser and the utilization of logical cores in the
                 processor. As a result, developers do not know how
                 performance actually scales on different environments
                 and therefore what is the optimal number of workers on
                 parallel JavaScript codes. This paper presents the
                 first performance scalability analysis of parallel web
                 apps with multiple workers. We focus on two case
                 studies representative of different worker execution
                 models. Our analyses show performance scaling on
                 different parallel processor microarchitectures and on
                 three major web browsers in the market. Besides, we
                 study the impact of co-running applications on the web
                 app performance. The results provide insights for
                 future approaches to automatically find out the optimal
                 number of workers that provide the best tradeoff
                 between performance and resource usage to preserve
                 system responsiveness and user experience, especially
                 on environments with unexpected changes on system
                 workload.",
  acknowledgement = ack-nhfb,
  affiliation =  "Verdu, J (Reprint Author), BarcelonaTECH UPC, Dept
                 Comp Architecture, Barcelona, Spain. Verdu, Javier;
                 Pajuelo, Alex, BarcelonaTECH UPC, Dept Comp
                 Architecture, Barcelona, Spain.",
  author-email = "jverdu@ac.upc.edu mpajuelo@ac.upc.edu",
  da =           "2019-06-20",
  doc-delivery-number = "EH9MM",
  eissn =        "1556-6064",
  fjournal =     "IEEE Computer Architecture Letters",
  funding-acknowledgement = "Spanish Ministry of Economy and
                 Competitiveness (MINECO) [TIN2012-34557]",
  funding-text = "This work has been supported by the Spanish Ministry
                 of Economy and Competitiveness (MINECO) under contract
                 TIN2012-34557.",
  journal-iso =  "IEEE Comput. Archit. Lett.",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=10208",
  keywords =     "HTML5; javascript; multithreading; parallelism; web
                 apps; web workers",
  number-of-cited-references = "12",
  oa =           "Green Published",
  ORCID-numbers = "Pajuelo, Alex/0000-0002-5510-6860 Verdu Mula,
                 Javier/0000-0003-4485-2419",
  research-areas = "Computer Science",
  times-cited =  "1",
  unique-id =    "Verdu:2016:PSA",
  web-of-science-categories = "Computer Science, Hardware \&
                 Architecture",
}

@Article{Vidal:2016:ECJ,
  author =       "S. Vidal and A. Bergel and J. A. D{\'\i}az-Pace and C.
                 Marcos",
  title =        "Over-exposed classes in {Java}: an empirical study",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "46",
  number =       "??",
  pages =        "1--19",
  month =        nov,
  year =         "2016",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Thu Nov 17 09:48:26 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842415300531",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Vidal:2016:UAE,
  author =       "Santiago A. Vidal and Alexandre Bergel and Claudia
                 Marcos and J. Andr{\'e}s D{\'\i}az-Pace",
  title =        "Understanding and addressing exhibitionism in {Java}
                 empirical research about method accessibility",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "21",
  number =       "2",
  pages =        "483--516",
  month =        apr,
  year =         "2016",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-015-9365-9",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Dec 2 09:14:42 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-015-9365-9",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Wei:2016:ESD,
  author =       "Shiyi Wei and Franceska Xhakaj and Barbara G. Ryder",
  title =        "Empirical study of the dynamic behavior of
                 {JavaScript} objects",
  journal =      j-SPE,
  volume =       "46",
  number =       "7",
  pages =        "867--889",
  month =        jul,
  year =         "2016",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2334",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Wed Jun 8 07:13:23 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Wellings:2016:ISC,
  author =       "A. J. Wellings and V. Cholpanov and A. Burns",
  title =        "Implementing Safety-Critical {Java} Missions in
                 {Ada}",
  journal =      j-SIGADA-LETTERS,
  volume =       "36",
  number =       "1",
  pages =        "51--62",
  month =        jun,
  year =         "2016",
  CODEN =        "AALEE5",
  DOI =          "https://doi.org/10.1145/2971571.2971578",
  ISSN =         "0736-721X",
  bibdate =      "Thu Mar 16 15:40:54 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigada.bib",
  abstract =     "Critical systems written in Ada are still reluctant to
                 use dynamic memory allocation. The Ravenscar profile,
                 for example, prohibits the dynamic creation of tasks.
                 This is in spite of the availability of storage pools
                 and the strong compile-time checking of access types.
                 The Java community has, by necessity, taken a slightly
                 less conservative approach. Safety-Critical Java (SCJ)
                 supports a constrained use of dynamic memory
                 allocation. This paper takes the SCJ approach and tries
                 to implement it using Ada's storage pools. We show that
                 the approach is not directly transferable to Ada due to
                 the difference in the way that SCJ and Ada handle
                 region-based memory management. However, an equivalent
                 approach can be developed.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGADA Ada Letters",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J32",
}

@Article{Zhang:2016:NVC,
  author =       "Kebo Zhang and Hailing Xiong and Chao Li",
  title =        "A new version of code {Java} for {$3$D} simulation of
                 the {CCA} model",
  journal =      j-COMP-PHYS-COMM,
  volume =       "204",
  number =       "??",
  pages =        "214--215",
  month =        jul,
  year =         "2016",
  CODEN =        "CPHCBZ",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Fri May 13 19:25:21 MDT 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465516300741",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655/",
}

@Article{Zheng:2016:CMD,
  author =       "Yudi Zheng and Stephen Kell and Lubomir Bulej and
                 Haiyang Sun and Walter Binder",
  title =        "Comprehensive Multiplatform Dynamic Program Analysis
                 for {Java} and {Android}",
  journal =      j-IEEE-SOFTWARE,
  volume =       "33",
  number =       "4",
  pages =        "55--63",
  month =        jul # "\slash " # aug,
  year =         "2016",
  CODEN =        "IESOEG",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Thu Nov 17 07:49:10 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.computer.org/csdl/mags/so/2016/04/mso2016040055-abs.html",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Zhou:2016:IRO,
  author =       "Minghui Zhou and Audris Mockus and Xiujuan Ma and Lu
                 Zhang and Hong Mei",
  title =        "Inflow and Retention in {OSS} Communities with
                 Commercial Involvement: a Case Study of Three Hybrid
                 Projects",
  journal =      j-TOSEM,
  volume =       "25",
  number =       "2",
  pages =        "13:1--13:??",
  month =        may,
  year =         "2016",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/2876443",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Mon May 16 16:22:08 MDT 2016",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Motivation: Open-source projects are often supported
                 by companies, but such involvement often affects the
                 robust contributor inflow needed to sustain the project
                 and sometimes prompts key contributors to leave. To
                 capture user innovation and to maintain quality of
                 software and productivity of teams, these projects need
                 to attract and retain contributors. Aim: We want to
                 understand and quantify how inflow and retention are
                 shaped by policies and actions of companies in three
                 application server projects. Method: We identified
                 three hybrid projects implementing the same JavaEE
                 specification and used published literature, online
                 materials, and interviews to quantify actions and
                 policies companies used to get involved. We collected
                 project repository data, analyzed affiliation history
                 of project participants, and used generalized linear
                 models and survival analysis to measure contributor
                 inflow and retention. Results: We identified coherent
                 groups of policies and actions undertaken by sponsoring
                 companies as three models of community involvement and
                 quantified tradeoffs between the inflow and retention
                 each model provides. We found that full control
                 mechanisms and high intensity of commercial involvement
                 were associated with a decrease of external inflow and
                 with improved retention. However, a shared control
                 mechanism was associated with increased external inflow
                 contemporaneously with the increase of commercial
                 involvement. Implications: Inspired by a natural
                 experiment, our methods enabled us to quantify aspects
                 of the balance between community and private interests
                 in open- source software projects and provide clear
                 implications for the structure of future open-source
                 communities.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Zuo:2016:LOF,
  author =       "Zhiqiang Zuo and Lu Fang and Siau-Cheng Khoo and
                 Guoqing Xu and Shan Lu",
  title =        "Low-overhead and fully automated statistical debugging
                 with abstraction refinement",
  journal =      j-SIGPLAN,
  volume =       "51",
  number =       "10",
  pages =        "881--896",
  month =        oct,
  year =         "2016",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3022671.2984005",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Cooperative statistical debugging is an effective
                 approach for diagnosing production-run failures. To
                 quickly identify failure predictors from the huge
                 program predicate space, existing techniques rely on
                 random or heuristics-guided predicate sampling at the
                 user side. However, none of them can satisfy the
                 requirements of low cost, low diagnosis latency, and
                 high diagnosis quality simultaneously, which are all
                 indispensable for statistical debugging to be
                 practical. This paper presents a new technique that
                 tackles the above challenges. We formulate the
                 technique as an instance of abstraction refinement,
                 where efficient abstract-level profiling is first
                 applied to the whole program and its execution brings
                 information that can pinpoint suspicious coarse-grained
                 entities that need to be refined. The refinement
                 profiles a corresponding set of fine-grained entities,
                 and generates feedback that determines what to prune
                 and what to refine next. The process is fully
                 automated, and more importantly, guided by a
                 mathematically rigorous analysis that guarantees that
                 our approach produces the same debugging results as an
                 exhaustive analysis in deterministic settings. We have
                 implemented this technique for both C and Java on both
                 single machine and distributed system. A thorough
                 evaluation demonstrates that our approach yields (1) an
                 order of magnitude reduction in the user-side runtime
                 overhead even compared to a sampling-based approach and
                 (2) two orders of magnitude reduction in the size of
                 data transferred over the network, completely
                 automatically without sacrificing any debugging
                 capability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "OOPSLA '16 conference proceedings.",
}

@Article{Adamsen:2017:PIR,
  author =       "Christoffer Quist Adamsen and Anders M{\o}ller and
                 Frank Tip",
  title =        "Practical initialization race detection for
                 {JavaScript} web applications",
  journal =      j-PACMPL,
  volume =       "1",
  number =       "OOPSLA",
  pages =        "66:1--66:??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3133890",
  ISSN =         "2475-1421",
  bibdate =      "Wed Jan 10 09:45:26 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  acknowledgement = ack-nhfb,
  articleno =    "66",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Andreasen:2017:SDA,
  author =       "Esben Andreasen and Liang Gong and Anders M{\o}ller
                 and Michael Pradel and Marija Selakovic and Koushik Sen
                 and Cristian-Alexandru Staicu",
  title =        "A Survey of Dynamic Analysis and Test Generation for
                 {JavaScript}",
  journal =      j-COMP-SURV,
  volume =       "50",
  number =       "5",
  pages =        "66:1--66:??",
  month =        nov,
  year =         "2017",
  CODEN =        "CMSVAN",
  DOI =          "https://doi.org/10.1145/3106739",
  ISSN =         "0360-0300 (print), 1557-7341 (electronic)",
  ISSN-L =       "0360-0300",
  bibdate =      "Sat Jan 20 09:25:00 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compsurv.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "JavaScript has become one of the most prevalent
                 programming languages. Unfortunately, some of the
                 unique properties that contribute to this popularity
                 also make JavaScript programs prone to errors and
                 difficult for program analyses to reason about. These
                 properties include the highly dynamic nature of the
                 language, a set of unusual language features, a lack of
                 encapsulation mechanisms, and the ``no crash''
                 philosophy. This article surveys dynamic program
                 analysis and test generation techniques for JavaScript
                 targeted at improving the correctness, reliability,
                 performance, security, and privacy of JavaScript-based
                 software.",
  acknowledgement = ack-nhfb,
  articleno =    "66",
  fjournal =     "ACM Computing Surveys",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J204",
}

@Article{Antonopoulos:2017:DIS,
  author =       "Timos Antonopoulos and Paul Gazzillo and Michael Hicks
                 and Eric Koskinen and Tachio Terauchi and Shiyi Wei",
  title =        "Decomposition instead of self-composition for proving
                 the absence of timing channels",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "362--375",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062378",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We present a novel approach to proving the absence of
                 timing channels. The idea is to partition the program's
                 execution traces in such a way that each partition
                 component is checked for timing attack resilience by a
                 time complexity analysis and that per-component
                 resilience implies the resilience of the whole program.
                 We construct a partition by splitting the program
                 traces at secret-independent branches. This ensures
                 that any pair of traces with the same public input has
                 a component containing both traces. Crucially, the
                 per-component checks can be normal safety properties
                 expressed in terms of a single execution. Our approach
                 is thus in contrast to prior approaches, such as
                 self-composition, that aim to reason about multiple $
                 (k \geq 2) $ executions at once. We formalize the above
                 as an approach called quotient partitioning,
                 generalized to any k -safety property, and prove it to
                 be sound. A key feature of our approach is a
                 demand-driven partitioning strategy that uses a
                 regex-like notion called trails to identify sets of
                 execution traces, particularly those influenced by
                 tainted (or secret) data. We have applied our technique
                 in a prototype implementation tool called Blazer, based
                 on WALA, PPL, and the brics automaton library. We have
                 proved timing-channel freedom of (or synthesized an
                 attack specification for) 24 programs written in Java
                 bytecode, including 6 classic examples from the
                 literature and 6 examples extracted from the DARPA STAC
                 challenge problems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Arcaini:2017:RDP,
  author =       "Paolo Arcaini and Angelo Gargantini and Elvinia
                 Riccobene",
  title =        "Rigorous development process of a safety-critical
                 system: from {ASM} models to {Java} code",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "19",
  number =       "2",
  pages =        "247--269",
  month =        apr,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10009-015-0394-x",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Mon Mar 13 16:18:14 MDT 2017",
  bibsource =    "http://link.springer.com/journal/10009/19/2;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sttt.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10009-015-0394-x;
                 http://link.springer.com/article/10.1007/s10009-015-0394-x",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer (STTT)",
  journal-URL =  "http://link.springer.com/journal/10009",
}

@Article{Austin:2017:MFD,
  author =       "Thomas H. Austin and Tommy Schmitz and Cormac
                 Flanagan",
  title =        "Multiple Facets for Dynamic Information Flow with
                 Exceptions",
  journal =      j-TOPLAS,
  volume =       "39",
  number =       "3",
  pages =        "10:1--10:??",
  month =        jul,
  year =         "2017",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3024086",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Jul 24 09:44:41 MDT 2017",
  bibsource =    "http://www.acm.org/pubs/contents/journals/toplas/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "JavaScript is the source of many security problems,
                 including cross-site scripting attacks and malicious
                 advertising code. Central to these problems is the fact
                 that code from untrusted sources runs with full
                 privileges. Information flow controls help prevent
                 violations of data confidentiality and integrity. This
                 article explores faceted values, a mechanism for
                 providing information flow security in a dynamic manner
                 that avoids the stuck executions of some prior
                 approaches, such as the no-sensitive-upgrade technique.
                 Faceted values simultaneously simulate multiple
                 executions for different security levels to guarantee
                 termination-insensitive noninterference. We also
                 explore the interaction of faceted values with
                 exceptions, declassification, and clearance.",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Badihi:2017:CAG,
  author =       "Sahar Badihi and Abbas Heydarnoori",
  title =        "{CrowdSummarizer}: Automated Generation of Code
                 Summaries for {Java} Programs through Crowdsourcing",
  journal =      j-IEEE-SOFTWARE,
  volume =       "34",
  number =       "2",
  pages =        "71--80",
  month =        mar # "\slash " # apr,
  year =         "2017",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2017.45",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Tue Jul 25 21:43:46 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.computer.org/csdl/mags/so/2017/02/mso2017020071-abs.html",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
}

@Article{Basin:2017:KKV,
  author =       "Dmitry Basin and Edward Bortnikov and Anastasia
                 Braginsky and Guy Golan-Gueta and Eshcar Hillel and
                 Idit Keidar and Moshe Sulamy",
  title =        "{KiWi}: a Key--Value Map for Scalable Real-Time
                 Analytics",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "8",
  pages =        "357--369",
  month =        aug,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3155284.3018761",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:12 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Modern big data processing platforms employ huge
                 in-memory key--value (KV) maps. Their applications
                 simultaneously drive high-rate data ingestion and
                 large-scale analytics. These two scenarios expect
                 KV-map implementations that scale well with both
                 real-time updates and large atomic scans triggered by
                 range queries. We present KiWi, the first atomic KV-map
                 to efficiently support simultaneous large scans and
                 real-time access. The key to achieving this is treating
                 scans as first class citizens,and organizing the data
                 structure around them. KiWi provides wait-free scans,
                 whereas its put operations are lightweight and
                 lock-free. It optimizes memory management jointly with
                 data structure access.We implement KiWi and compare it
                 to state-of-the-art solutions. Compared to other
                 KV-maps providing atomic scans, KiWi performs either
                 long scans or concurrent puts an order of magnitude
                 faster. Its scans are twice as fast as non-atomic ones
                 implemented via iterators in the Java skiplist.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '17 conference proceedings.",
}

@Article{Battig:2017:SDC,
  author =       "Martin B{\"a}ttig and Thomas R. Gross",
  title =        "Synchronized-by-Default Concurrency for Shared-Memory
                 Systems",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "8",
  pages =        "299--312",
  month =        aug,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3155284.3018747",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:12 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We explore a programming approach for concurrency that
                 synchronizes all accesses to shared memory by default.
                 Synchronization takes place by ensuring that all
                 program code runs inside atomic sections even if the
                 program code has external side effects. Threads are
                 mapped to atomic sections that a programmer must
                 explicitly split to increase concurrency. A naive
                 implementation of this approach incurs a large amount
                 of overhead. We show how to reduce this overhead to
                 make the approach suitable for realistic application
                 programs on existing hardware. We present an
                 implementation technique based on a special-purpose
                 software transactional memory system. To reduce the
                 overhead, the technique exploits properties of managed,
                 object-oriented programming languages as well as
                 intraprocedural static analyses and uses field-level
                 granularity locking in combination with transactional
                 I/O to provide good scaling properties. We implemented
                 the synchronized-by-default (SBD) approach for the Java
                 language and evaluate its performance for six programs
                 from the DaCapo benchmark suite. The evaluation shows
                 that, compared to explicit synchronization, the SBD
                 approach has an overhead between 0.4\% and 102\%
                 depending on the benchmark and the number of threads,
                 with a mean (geom.) of 23.9\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '17 conference proceedings.",
}

@Article{Berman:2017:EUS,
  author =       "Lewis Berman and Keith Gallagher and Suzanne
                 Kozaitis",
  title =        "Evaluating the Use of Sound in Static Program
                 Comprehension",
  journal =      j-TAP,
  volume =       "15",
  number =       "1",
  pages =        "7:1--7:??",
  month =        nov,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3129456",
  ISSN =         "1544-3558 (print), 1544-3965 (electronic)",
  ISSN-L =       "1544-3558",
  bibdate =      "Mon Jan 22 17:39:41 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tap.bib",
  abstract =     "Comprehension of computer programs is daunting, due in
                 part to clutter in the software developer's visual
                 environment and the need for frequent visual context
                 changes. Previous research has shown that nonspeech
                 sound can be useful in understanding the runtime
                 behavior of a program. We explore the viability and
                 advantages of using nonspeech sound in an ecological
                 framework to help understand the static structure of
                 software. We describe a novel concept for auditory
                 display of program elements in which sounds indicate
                 characteristics and relationships among a Java
                 program's classes, interfaces, and methods. An
                 empirical study employing this concept was used to
                 evaluate 24 sighted software professionals and students
                 performing maintenance-oriented tasks using a 2$ \times
                 $2 crossover. Viability is strong for differentiation
                 and characterization of software entities, less so for
                 identification. The results suggest that sonification
                 can be advantageous under certain conditions, though
                 they do not indicate the overall advantage of using
                 sound in terms of task duration at a 5\% level of
                 significance. The results uncover other findings such
                 as differences in comprehension strategy based on the
                 available tool environment. The participants reported
                 enthusiasm for the idea of software sonification,
                 mitigated by lack of familiarity with the concept and
                 the brittleness of the tool. Limitations of the present
                 research include restriction to particular types of
                 comprehension tasks, a single sound mapping, a single
                 programming language, and limited training time, but
                 the use of sound in program comprehension shows
                 sufficient promise for continued research.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Applied Perception (TAP)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J932",
}

@Article{Bettini:2017:XTJ,
  author =       "Lorenzo Bettini and Ferruccio Damiani",
  title =        "{Xtraitj}: {Traits} for the {Java} platform",
  journal =      j-J-SYST-SOFTW,
  volume =       "131",
  number =       "??",
  pages =        "419--441",
  month =        sep,
  year =         "2017",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Thu Jul 27 16:32:34 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121216301297",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Biboudis:2017:RJD,
  author =       "Aggelos Biboudis and Pablo Inostroza and Tijs van der
                 Storm",
  title =        "{Recaf}: {Java} dialects as libraries",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "2--13",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993239",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Mainstream programming languages like Java have
                 limited support for language extensibility. Without
                 mechanisms for syntactic abstraction, new programming
                 styles can only be embedded in the form of libraries,
                 limiting expressiveness. In this paper, we present
                 Recaf, a lightweight tool for creating Java dialects;
                 effectively extending Java with new language constructs
                 and user defined semantics. The Recaf compiler
                 generically transforms designated method bodies to code
                 that is parameterized by a semantic factory (Object
                 Algebra), defined in plain Java. The implementation of
                 such a factory defines the desired runtime semantics.
                 We applied our design to produce several examples from
                 a diverse set of programming styles and two case
                 studies: we define (i) extensions for generators,
                 asynchronous computations and asynchronous streams and
                 (ii) a Domain-Specific Language (DSL) for Parsing
                 Expression Grammars (PEGs), in a few lines of code.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Bliudze:2017:ECC,
  author =       "Simon Bliudze and Anastasia Mavridou and Radoslaw
                 Szymanek and Alina Zolotukhina",
  title =        "Exogenous coordination of concurrent software
                 components with {JavaBIP}",
  journal =      j-SPE,
  volume =       "47",
  number =       "11",
  pages =        "1801--1836",
  month =        nov,
  year =         "2017",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2495",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Dec 23 09:28:58 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Bonetta:2017:FJF,
  author =       "Daniele Bonetta and Matthias Brantner",
  title =        "{FAD.js}: fast {JSON} data access using {JIT}-based
                 speculative optimizations",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "10",
  number =       "12",
  pages =        "1778--1789",
  month =        aug,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.14778/3137765.3137782",
  ISSN =         "2150-8097",
  bibdate =      "Tue Oct 10 17:16:19 MDT 2017",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "JSON is one of the most popular data encoding formats,
                 with wide adoption in Databases and BigData frameworks
                 as well as native support in popular programming
                 languages such as JavaScript/Node.js, Python, and R.
                 Nevertheless, JSON data processing can easily become a
                 performance bottleneck in data-intensive applications
                 because of parse and serialization overhead. In this
                 paper, we introduce F ad.js, a runtime system for
                 efficient processing of JSON objects in data-intensive
                 applications. Fad.js is based on (1) speculative
                 just-in-time (JIT) compilation and (2) selective access
                 to data. Experiments show that applications using
                 Fad.js achieve speedups up to 2.7x for encoding and
                 9.9x for decoding JSON data when compared to
                 state-of-the art JSON processing libraries.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Briggs:2017:COI,
  author =       "Kim T. Briggs and Baoguo Zhou and Gerhard W. Dueck",
  title =        "Cold object identification in the {Java Virtual
                 Machine}",
  journal =      j-SPE,
  volume =       "47",
  number =       "1",
  pages =        "79--95",
  month =        jan,
  year =         "2017",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2396",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Feb 18 10:00:11 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Brown:2017:NJP,
  author =       "Neil C. C. Brown and Amjad Altadmri",
  title =        "Novice {Java} Programming Mistakes: Large-Scale Data
                 vs. Educator Beliefs",
  journal =      j-TOCE,
  volume =       "17",
  number =       "2",
  pages =        "7:1--7:??",
  month =        jun,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2994154",
  ISSN =         "1946-6226",
  bibdate =      "Mon Aug 28 17:19:17 MDT 2017",
  bibsource =    "http://www.acm.org/pubs/toce;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toce.bib",
  abstract =     "Teaching is the process of conveying knowledge and
                 skills to learners. It involves preventing
                 misunderstandings or correcting misconceptions that
                 learners have acquired. Thus, effective teaching relies
                 on solid knowledge of the discipline, but also a good
                 grasp of where learners are likely to trip up or
                 misunderstand. In programming, there is much
                 opportunity for misunderstanding, and the penalties are
                 harsh: failing to produce the correct syntax for a
                 program, for example, can completely prevent any
                 progress in learning how to program. Because
                 programming is inherently computer-based, we have an
                 opportunity to automatically observe programming
                 behaviour --- more closely even than an educator in the
                 room at the time. By observing students' programming
                 behaviour, and surveying educators, we can ask: do
                 educators have an accurate understanding of the
                 mistakes that students are likely to make? In this
                 study, we combined two years of the Blackbox dataset
                 (with more than 900 thousand users and almost 100
                 million compilation events) with a survey of 76
                 educators to investigate which mistakes students make
                 while learning to program Java, and whether the
                 educators could make an accurate estimate of which
                 mistakes were most common. We find that educators'
                 estimates do not agree with one another or the student
                 data, and discuss the implications of these results.",
  acknowledgement = ack-nhfb,
  articleno =    "7",
  fjournal =     "ACM Transactions on Computing Education",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1193",
}

@Article{Bruno:2017:NPG,
  author =       "Rodrigo Bruno and Lu{\'\i}s Picciochi Oliveira and
                 Paulo Ferreira",
  title =        "{NG2C}: pretenuring garbage collection with dynamic
                 generations for {HotSpot} big data applications",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "9",
  pages =        "2--13",
  month =        sep,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3156685.3092272",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:13 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Big Data applications suffer from unpredictable and
                 unacceptably high pause times due to Garbage Collection
                 (GC). This is the case in latency-sensitive
                 applications such as on-line credit-card fraud
                 detection, graph-based computing for analysis on social
                 networks, etc. Such pauses compromise latency
                 requirements of the whole application stack and result
                 from applications' aggressive buffering/caching of
                 data, exposing an ill-suited GC design, which assumes
                 that most objects will die young and does not consider
                 that applications hold large amounts of middle-lived
                 data in memory. To avoid such pauses, we propose NG2C,
                 a new GC algorithm that combines pretenuring with
                 user-defined dynamic generations. By being able to
                 allocate objects into different generations, NG2C is
                 able to group objects with similar lifetime profiles in
                 the same generation. By allocating objects with similar
                 lifetime profiles close to each other, i.e. in the same
                 generation, we avoid object promotion (copying between
                 generations) and heap fragmentation (which leads to
                 heap compactions) both responsible for most of the
                 duration of HotSpot GC pause times. NG2C is implemented
                 for the OpenJDK 8 HotSpot Java Virtual Machine, as an
                 extension of the Garbage First GC. We evaluate NG2C
                 using Cassandra, Lucene, and GraphChi with three
                 different GCs: Garbage First (G1), Concurrent Mark
                 Sweep (CMS), and NG2C. Results show that NG2C decreases
                 the worst observable GC pause time by up to 94.8\% for
                 Cassandra, 85.0\% for Lucene and 96.45\% for GraphChi,
                 when compared to current collectors (G1 and CMS). In
                 addition, NG2c has no negative impact on application
                 throughput or memory usage.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '17 conference proceedings.",
}

@Article{Canino:2017:PAE,
  author =       "Anthony Canino and Yu David Liu",
  title =        "Proactive and adaptive energy-aware programming with
                 mixed typechecking",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "217--232",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062356",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Application-level energy management is an important
                 dimension of energy optimization. In this paper, we
                 introduce ENT, a novel programming language for
                 enabling *proactive* and *adaptive* mode-based energy
                 management at the application level. The proactive
                 design allows programmers to apply their application
                 knowledge to energy management, by characterizing the
                 energy behavior of different program fragments with
                 modes. The adaptive design allows such characterization
                 to be delayed until run time, useful for capturing
                 dynamic program behavior dependent on program states,
                 configuration settings, external battery levels, or CPU
                 temperatures. The key insight is both proactiveness and
                 adaptiveness can be unified under a type system
                 combined with static typing and dynamic typing. ENT has
                 been implemented as an extension to Java, and
                 successfully ported to three energy-conscious
                 platforms: an Intel-based laptop, a Raspberry Pi, and
                 an Android phone. Evaluation shows ENT improves the
                 programmability, debuggability, and energy efficiency
                 of battery-aware and temperature-aware programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Casale:2017:PEJ,
  author =       "Giuliano Casale and Giuseppe Serazzi and Lulai Zhu",
  title =        "Performance Evaluation with {Java} Modelling Tools: a
                 Hands-on Introduction",
  journal =      j-SIGMETRICS,
  volume =       "45",
  number =       "3",
  pages =        "246--247",
  month =        dec,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3199524.3199567",
  ISSN =         "0163-5999 (print), 1557-9484 (electronic)",
  ISSN-L =       "0163-5999",
  bibdate =      "Tue Apr 10 06:31:40 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigmetrics.bib",
  abstract =     "The goal of this tutorial is to introduce Java
                 Modelling Tools (JMT), an open source framework for
                 discrete-event simulation and analysis of queueing
                 networks, both product-form and extended, generalized
                 stochastic Petri nets (GSPNs), and queueing Petri nets
                 (QPNs). Thanks to a user-friendly graphical interface,
                 JMT is well-suited to teach performance modeling in
                 academia and to help research students familiarize with
                 classic modeling formalisms used in performance
                 evaluation. The tutorial introduces established and
                 novel features of the JMT suite and illustrates them on
                 case studies.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGMETRICS Performance Evaluation Review",
  journal-URL =  "http://portal.acm.org/toc.cfm?id=J618",
}

@Article{Castro:2017:JLC,
  author =       "Sergio Castro and Kim Mens and Paulo Moura",
  title =        "{JPC}: a library for categorising and applying
                 inter-language conversions between {Java} and
                 {Prolog}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "134",
  number =       "??",
  pages =        "75--99",
  month =        "????",
  year =         "2017",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Thu Dec 1 16:49:54 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642315004049",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423/",
}

@Article{Chamberlain:2017:PLR,
  author =       "Scott Chamberlain and Jeffrey W. Hollister",
  title =        "\pkg{lawn}: An {R} client for the {Turf Javascript
                 Library for Geospatial Analysis}",
  journal =      j-J-OPEN-SOURCE-SOFT,
  volume =       "2",
  number =       "11",
  pages =        "194:1--194:1",
  month =        mar,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.21105/joss.00194",
  ISSN =         "2475-9066",
  ISSN-L =       "2475-9066",
  bibdate =      "Thu Sep 13 08:09:35 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/joss.bib;
                 http://www.math.utah.edu/pub/tex/bib/s-plus.bib",
  URL =          "http://joss.theoj.org/papers/10.21105/joss.00194",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Open Source Software",
  journal-URL =  "http://joss.theoj.org/;
                 https://github.com/openjournals/joss-papers/",
  onlinedate =   "07 March 2017",
  ORCID-numbers = "Scott Chamberlain / 0000-0003-1444-9135; Jeffrey W.
                 Hollister / 0000-0002-9254-9740",
}

@Article{Chan:2017:DSL,
  author =       "Y. Chan and A. Wellings and I. Gray and N. Audsley",
  title =        "A Distributed Stream Library for {Java 8}",
  journal =      j-IEEE-TRANS-BIG-DATA,
  volume =       "3",
  number =       "3",
  pages =        "262--275",
  month =        sep,
  year =         "2017",
  DOI =          "https://doi.org/10.1109/TBDATA.2017.2666201",
  ISSN =         "2332-7790",
  bibdate =      "Fri Aug 2 11:24:47 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetransbigdata.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Big Data",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=6687317",
  keywords =     "application program interfaces; Big Data; Big data;
                 Big Data systems; Computational modeling; Data models;
                 data-parallel computing; distributed computing;
                 distributed stream library; Hadoop; Java; Java 8
                 Streams API; parallel processing; Pipelines;
                 Programming; programming models; Spark; Sparks",
}

@Article{Chaudhuri:2017:FPT,
  author =       "Avik Chaudhuri and Panagiotis Vekris and Sam Goldman
                 and Marshall Roch and Gabriel Levi",
  title =        "Fast and precise type checking for {JavaScript}",
  journal =      j-PACMPL,
  volume =       "1",
  number =       "OOPSLA",
  pages =        "48:1--48:??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3133872",
  ISSN =         "2475-1421",
  bibdate =      "Wed Jan 10 09:45:26 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  acknowledgement = ack-nhfb,
  articleno =    "48",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Chawdhary:2017:PES,
  author =       "Aziem Chawdhary and Ranjeet Singh and Andy King",
  title =        "Partial evaluation of string obfuscations for {Java}
                 malware detection",
  journal =      j-FORM-ASP-COMPUT,
  volume =       "29",
  number =       "1",
  pages =        "33--55",
  month =        jan,
  year =         "2017",
  CODEN =        "FACME5",
  DOI =          "https://doi.org/10.1007/s00165-016-0357-3",
  ISSN =         "0934-5043 (print), 1433-299X (electronic)",
  ISSN-L =       "0934-5043",
  bibdate =      "Sat Mar 11 16:42:14 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/formaspcomput.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s00165-016-0357-3;
                 http://link.springer.com/article/10.1007/s00165-016-0357-3",
  acknowledgement = ack-nhfb,
  fjournal =     "Formal Aspects of Computing",
  journal-URL =  "http://link.springer.com/journal/165",
}

@Article{Chen:2017:CLP,
  author =       "Boyuan Chen and Zhen Ming (Jack) Jiang",
  title =        "Characterizing logging practices in {Java}-based open
                 source software projects --- a replication study in
                 {Apache Software Foundation}",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "22",
  number =       "1",
  pages =        "330--374",
  month =        feb,
  year =         "2017",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-016-9429-5",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Mon Mar 13 15:08:57 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/accesspage/article/10.1007/s10664-016-9429-5",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Chisnall:2017:CJS,
  author =       "David Chisnall and Brooks Davis and Khilan Gudka and
                 David Brazdil and Alexandre Joannou and Jonathan
                 Woodruff and A. Theodore Markettos and J. Edward Maste
                 and Robert Norton and Stacey Son and Michael Roe and
                 Simon W. Moore and Peter G. Neumann and Ben Laurie and
                 Robert N. M. Watson",
  title =        "{CHERI JNI}: Sinking the {Java} Security Model into
                 the {C}",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "45",
  number =       "1",
  pages =        "569--583",
  month =        mar,
  year =         "2017",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/3093337.3037725",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Jun 5 18:01:58 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "Java provides security and robustness by building a
                 high-level security model atop the foundation of memory
                 protection. Unfortunately, any native code linked into
                 a Java program --- including the million lines used to
                 implement the standard library --- is able to bypass
                 both the memory protection and the higher-level
                 policies. We present a hardware-assisted implementation
                 of the Java native code interface, which extends the
                 guarantees required for Java's security model to native
                 code. Our design supports safe direct access to buffers
                 owned by the JVM, including hardware-enforced read-only
                 access where appropriate. We also present Java language
                 syntax to declaratively describe isolated compartments
                 for native code. We show that it is possible to
                 preserve the memory safety and isolation requirements
                 of the Java security model in C code, allowing native
                 code to run in the same process as Java code with the
                 same impact on security as running equivalent Java
                 code. Our approach has a negligible impact on
                 performance, compared with the existing unsafe native
                 code interface. We demonstrate a prototype
                 implementation running on the CHERI microprocessor
                 synthesized in FPGA.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
  remark =       "ASPLOS'17 conference proceedings",
}

@Article{Choi:2017:SAS,
  author =       "Jiho Choi and Thomas Shull and Maria J. Garzaran and
                 Josep Torrellas",
  title =        "{ShortCut}: Architectural Support for Fast Object
                 Access in Scripting Languages",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "45",
  number =       "2",
  pages =        "494--506",
  month =        may,
  year =         "2017",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/3140659.3080237",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Fri Sep 15 11:09:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "The same flexibility that makes dynamic scripting
                 languages appealing to programmers is also the primary
                 cause of their low performance. To access objects of
                 potentially different types, the compiler creates a
                 dispatcher with a series of if statements, each
                 performing a comparison to a type and a jump to a
                 handler. This induces major overhead in instructions
                 executed and branches mispredicted. This paper proposes
                 architectural support to significantly improve the
                 efficiency of accesses to objects. The idea is to
                 modify the instruction that calls the dispatcher so
                 that, under most conditions, it skips most of the
                 branches and instructions needed to reach the correct
                 handler, and sometimes even the execution of the
                 handler itself. Our novel architecture, called
                 ShortCut, performs two levels of optimization. Its
                 Plain design transforms the call to the dispatcher into
                 a call to the correct handler --- bypassing the whole
                 dispatcher execution. Its Aggressive design transforms
                 the call to the dispatcher into a simple load or store
                 --- bypassing the execution of both dispatcher and
                 handler. We implement the ShortCut software in the
                 state-of-the-art Google V8 JIT compiler, and the
                 ShortCut hardware in a simulator. We evaluate ShortCut
                 with the Octane and SunSpider JavaScript application
                 suites. Plain ShortCut reduces the average execution
                 time of the applications by 30\% running under the
                 baseline compiler, and by 11\% running under the
                 maximum level of compiler optimization. Aggressive
                 ShortCut performs only slightly better.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
}

@Book{Dannen:2017:IES,
  author =       "Chris Dannen",
  title =        "Introducing {Ethereum} and Solidity",
  publisher =    "Apress",
  address =      "Brooklyn, NY",
  pages =        "xxi + 185",
  year =         "2017",
  DOI =          "https://doi.org/10.1007/978-1-4842-2535-6",
  ISBN =         "1-4842-2535-X",
  ISBN-13 =      "978-1-4842-2535-6",
  bibdate =      "Thu Nov 30 15:51:20 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/bitcoin.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/book/10.1007/978-1-4842-2535-6",
  abstract =     "Learn how to use Solidity and the Ethereum project ---
                 second only to Bitcoin in market capitalization.
                 Blockchain protocols are taking the world by storm, and
                 the Ethereum project, with its Turing-complete
                 scripting language Solidity, has rapidly become a
                 front-runner. This book presents the blockchain
                 phenomenon in context; then situates Ethereum in a
                 world pioneered by Bitcoin. See why professionals and
                 non-professionals alike are honing their skills in
                 smart contract patterns and distributed application
                 development. You'll review the fundamentals of
                 programming and networking, alongside its introduction
                 to the new discipline of crypto-economics. You'll then
                 deploy smart contracts of your own, and learn how they
                 can serve as a back-end for JavaScript and HTML
                 applications on the Web. Many Solidity tutorials out
                 there today have the same flaw: they are written
                 for``advanced'' JavaScript developers who want to
                 transfer their skills to a blockchain environment.
                 Introducing Ethereum and Solidity is accessible to
                 technology professionals and enthusiasts of ``all
                 levels.'' You'll find exciting sample code that can
                 move forward real world assets in both the academic and
                 the corporate arenas. Find out now why this book is a
                 powerful gateway for creative technologists of all
                 types, from concept to deployment.",
  acknowledgement = ack-nhfb,
  tableofcontents = "At a Glance \\
                 Contents \\
                 About the Author \\
                 About the Technical Reviewer \\
                 Chapter 1: Bridging the Blockchain Knowledge Gap \\
                 Blockchain Roll Call! \\
                 What Ethereum Does \\
                 Three Parts of a Blockchain \\
                 Ethereum Assumes Many Chains \\
                 This Is a Scam, Just Like Bitcoin! \\
                 Ether as a Currency and Commodity \\
                 Gresham's Law \\
                 The Path to Better Money \\
                 Cryptoeconomics and Security \\
                 Back to the Good Old Days \\
                 Cryptochaos \\
                 The Power Is in the Protocol \\
                 You Can Build Trustless Systems \\
                 What Smart Contracts (Really) Do \\
                 Objects and Methods for Value \\
                 Just Add Commerce \\
                 Content Creation \\
                 Where's the Data?What Is Mining?Ether and Electricity
                 Prices \\
                 Going Inside the EVM \\
                 The Mist Browser \\
                 Browser vs. Wallet or Keychain \\
                 Solidity Is Kind of Like JavaScript, But and What
                 Ethereum Is Good For \\
                 A Critical Take \\
                 ``Without any possibility of downtime, censorship, or
                 third-party interference'' \\
                 ``A secure, free, and open platform for the Internet of
                 Things'' \\
                 ``Enabling transparent governance for communities and
                 businesses'' \\
                 ``Handles user authentication and secure payments for
                 you, as well as messaging and even decentralized
                 storage'' \\
                 ``No need to sign up or pay for application host: The
                 world's first zero-infrastructure platform'' \\
                 State of Smart Contract Development Today \\
                 Copycat Coins \\
                 Funding Your Project \\
                 Deciding Where You Fit In \\
                 A Note to New Programmers \\
                 Ethereum Is Free and Open Source \\
                 The EVM Is Here to Stay \\
                 What You Can Build Today \\
                 Private and Public Chains \\
                 Send and Receive Ether \\
                 Write Smart Contracts \\
                 Create Provably Fair Applications \\
                 Launch Your Own Token \\
                 The Promise of Decentralized Databases \\
                 What's Next: New Ways of Working \\
                 Summary \\
                 Chapter 2: The Mist Browser \\
                 Wallets as a Computing Metaphor \\
                 Your Address Is What? \\
                 Where Is My Ether? The Bank Teller Metaphor \\
                 In Cryptocurrency, You Hold Your Own Assets \\
                 Visualizing Ethereum Transactions \\
                 Breaking with Banking History \\
                 How Encryption Leads to Trust \\
                 System Requirements \\
                 More about Eth.guide and This Book \\
                 Tools for Developers \\
                 CLI Nodes \\
                 Recommended: Using Parity with Geth \\
                 Finally, into the Mist! \\
                 Downloading and Installing Mist \\
                 Configuring Mist \\
                 Finding Your New Address \\
                 Sending and Receiving Ether \\
                 Understanding Ethereum Account Types \\
                 Backing Up and Restoring Your Keys \\
                 Using Paper Wallets \\
                 Using Mobile Wallets \\
                 Working with Messages and Transactions \\
                 Transactions Change State \\
                 Editing a Global Database \\
                 So, What Is a Blockchain? \\
                 Paying for Transactions \\
                 Understanding Denominations \\
                 Getting Ether \\
                 Anonymity in Cryptocurrency \\
                 Blockchain Explorers \\
                 Summary \\
                 Chapter 3: The EVM \\
                 The Central Bank Network of Yesterday \\
                 What are Virtual Machines, Exactly? \\
                 The Role of the Ethereum Protocol in Banking \\
                 Anyone Can Make a Banking Platform \\
                 What the EVM Does \\
                 EVM Applications Are Called Smart Contracts \\
                 The Name ``Smart Contracts'' \\
                 The EVM Runs Bytecode \\
                 Understanding State Machines \\
                 Digital vs. Analog \\
                 ``State-ments'' \\
                 Data's Role in State",
}

@Article{DeBeukelaer:2017:ECP,
  author =       "Herman {De Beukelaer} and Guy F. Davenport and Geert
                 {De Meyer} and Veerle Fack",
  title =        "Extended Conference Paper: {JAMES}: an object-oriented
                 {Java} framework for discrete optimization using local
                 search metaheuristics",
  journal =      j-SPE,
  volume =       "47",
  number =       "6",
  pages =        "921--938",
  month =        jun,
  year =         "2017",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2459",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Mon Jul 24 08:17:12 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Fernandes:2017:AUM,
  author =       "Leonardo Fernandes and M{\'a}rcio Ribeiro and Luiz
                 Carvalho and Rohit Gheyi and Melina Mongiovi and
                 Andr{\'e} Santos and Ana Cavalcanti and Fabiano Ferrari
                 and Jos{\'e} Carlos Maldonado",
  title =        "Avoiding useless mutants",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "12",
  pages =        "187--198",
  month =        dec,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3170492.3136053",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:14 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Mutation testing is a program-transformation technique
                 that injects artificial bugs to check whether the
                 existing test suite can detect them. However, the costs
                 of using mutation testing are usually high, hindering
                 its use in industry. Useless mutants (equivalent and
                 duplicated) contribute to increase costs. Previous
                 research has focused mainly on detecting useless
                 mutants only after they are generated and compiled. In
                 this paper, we introduce a strategy to help developers
                 with deriving rules to avoid the generation of useless
                 mutants. To use our strategy, we pass as input a set of
                 programs. For each program, we also need a passing test
                 suite and a set of mutants. As output, our strategy
                 yields a set of useless mutants candidates. After
                 manually confirming that the mutants classified by our
                 strategy as ``useless'' are indeed useless, we derive
                 rules that can avoid their generation and thus decrease
                 costs. To the best of our knowledge, we introduce 37
                 new rules that can avoid useless mutants right before
                 their generation. We then implement a subset of these
                 rules in the MUJAVA mutation testing tool. Since our
                 rules have been derived based on artificial and small
                 Java programs, we take our MUJAVA version embedded with
                 our rules and execute it in industrial-scale projects.
                 Our rules reduced the number of mutants by almost 13\%
                 on average. Our results are promising because (i) we
                 avoid useless mutants generation; (ii) our strategy can
                 help with identifying more rules in case we set it to
                 use more complex Java programs; and (iii) our MUJAVA
                 version has only a subset of the rules we derived.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '17 conference proceedings.",
}

@Article{Ferrari:2017:JJF,
  author =       "Mauro Ferrari and Camillo Fiorentini and Guido
                 Fiorino",
  title =        "{JTabWb}: a {Java} Framework for Implementing
                 Terminating Sequent and Tableau Calculi",
  journal =      j-FUND-INFO,
  volume =       "150",
  number =       "1",
  pages =        "119--142",
  month =        "????",
  year =         "2017",
  CODEN =        "FUMAAJ",
  DOI =          "https://doi.org/10.3233/FI-2017-1462",
  ISSN =         "0169-2968 (print), 1875-8681 (electronic)",
  ISSN-L =       "0169-2968",
  bibdate =      "Sat Mar 11 09:46:15 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fundinfo2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Fundamenta Informaticae",
  journal-URL =  "http://content.iospress.com/journals/fundamenta-informaticae",
}

@Article{Fetter:2017:TJT,
  author =       "Mirko Fetter and David Bimamisa and Tom Gross",
  title =        "{TUIOFX}: a {JavaFX} Toolkit for Shared Interactive
                 Surfaces",
  journal =      j-PACMHCI,
  volume =       "1",
  number =       "EICS",
  pages =        "10:1--10:18",
  month =        jun,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3095812",
  ISSN =         "2573-0142 (electronic)",
  ISSN-L =       "2573-0142",
  bibdate =      "Wed Mar 31 06:23:42 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmhci.bib",
  URL =          "https://dl.acm.org/doi/10.1145/3095812",
  abstract =     "Building multi-touch multi-user applications for
                 Shared Interactive Surfaces is a complex endeavour that
                 requires fundamental knowledge in touch enabling
                 hardware, gesture recognition, graphical representation
                 of \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "Proceedings of the ACM on Human-Computer Interaction
                 (PACMHCI)",
  journal-URL =  "https://dl.acm.org/loi/pacmhci",
}

@Article{Foley-Bourgon:2017:EIC,
  author =       "Vincent Foley-Bourgon and Laurie Hendren",
  title =        "Efficiently implementing the copy semantics of
                 {MATLAB}'s arrays in {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "2",
  pages =        "72--83",
  month =        feb,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093334.2989235",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/matlab.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Compiling MATLAB---a dynamic, array-based
                 language---to JavaScript is an attractive proposal: the
                 output code can be deployed on a platform used by
                 billions and can leverage the countless hours that have
                 gone into making JavaScript JIT engines fast. But
                 before that can happen, the original MATLAB code must
                 be properly translated, making sure to bridge the
                 semantic gaps of the two languages. An important area
                 where MATLAB and JavaScript differ is in their handling
                 of arrays: for example, in MATLAB, arrays are
                 one-indexed and writing at an index beyond the end of
                 an array extends it; in JavaScript, typed arrays are
                 zero-indexed and writing out of bounds is a no-op. A
                 MATLAB-to-JavaScript compiler must address these
                 mismatches. Another salient and pervasive difference
                 between the two languages is the assignment of arrays
                 to variables: in MATLAB, this operation has value
                 semantics, while in JavaScript is has reference
                 semantics. In this paper, we present MatJuice --- a
                 source-to-source, ahead-of-time compiler back-end for
                 MATLAB --- and how it deals efficiently with this last
                 issue. We present an intra-procedural data-flow
                 analysis to track where each array variable may point
                 to and which variables are possibly aliased. We also
                 present the associated copy insertion transformation
                 that uses the points-to information to insert explicit
                 copies when necessary. The resulting JavaScript program
                 respects the MATLAB value semantics and we show that it
                 performs fewer run-time copies than some alternative
                 approaches.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '16 conference proceedings.",
}

@Article{Fox:2017:EJT,
  author =       "Geoffrey Fox",
  title =        "Editorials: {Java Technologies for Real-Time and
                 Embedded Systems (JTRES2013)}",
  journal =      j-CCPE,
  volume =       "29",
  number =       "6",
  pages =        "??--??",
  day =          "25",
  month =        mar,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4089",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Fri Mar 31 19:12:51 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Fox:2017:ESI,
  author =       "Geoffrey Fox",
  title =        "Editorial: Special issue on {12th international
                 workshop on Java technologies for real-time and
                 embedded systems (JTRES2014)}",
  journal =      j-CCPE,
  volume =       "29",
  number =       "22",
  pages =        "??--??",
  day =          "25",
  month =        nov,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4353",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Dec 30 09:11:59 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Fritz:2017:TSA,
  author =       "Eric Fritz and Tian Zhao",
  title =        "Typing and semantics of asynchronous arrows in
                 {JavaScript}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "141--142",
  number =       "??",
  pages =        "1--39",
  month =        jul # "\slash " # aug,
  year =         "2017",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed Jul 26 05:56:43 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642317300527",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Golan-Gueta:2017:ASA,
  author =       "Guy Golan-Gueta and G. Ramalingam and Mooly Sagiv and
                 Eran Yahav",
  title =        "Automatic Scalable Atomicity via Semantic Locking",
  journal =      j-TOPC,
  volume =       "3",
  number =       "4",
  pages =        "21:1--21:??",
  month =        mar,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3040223",
  ISSN =         "2329-4949 (print), 2329-4957 (electronic)",
  ISSN-L =       "2329-4949",
  bibdate =      "Sat Mar 25 07:55:06 MDT 2017",
  bibsource =    "http://topc.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/topc.bib",
  abstract =     "In this article, we consider concurrent programs in
                 which the shared state consists of instances of
                 linearizable abstract data types (ADTs). We present an
                 automated approach to concurrency control that
                 addresses a common need: the need to atomically execute
                 a code fragment, which may contain multiple ADT
                 operations on multiple ADT instances. We present a
                 synthesis algorithm that automatically enforces
                 atomicity of given code fragments (in a client program)
                 by inserting pessimistic synchronization that
                 guarantees atomicity and deadlock-freedom (without
                 using any rollback mechanism). Our algorithm takes a
                 commutativity specification as an extra input. This
                 specification indicates for every pair of ADT
                 operations the conditions under which the operations
                 commute. Our algorithm enables greater parallelism by
                 permitting commuting operations to execute
                 concurrently. We have implemented the synthesis
                 algorithm in a Java compiler and applied it to several
                 Java programs. Our results show that our approach
                 produces efficient and scalable synchronization.",
  acknowledgement = ack-nhfb,
  articleno =    "21",
  fjournal =     "ACM Transactions on Parallel Computing",
  journal-URL =  "http://dl.acm.org/citation.cfm?id=2632163",
}

@Article{Grigore:2017:JGT,
  author =       "Radu Grigore",
  title =        "{Java} generics are {Turing} complete",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "1",
  pages =        "73--85",
  month =        jan,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093333.3009871",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper describes a reduction from the halting
                 problem of Turing machines to subtype checking in Java.
                 It follows that subtype checking in Java is
                 undecidable, which answers a question posed by Kennedy
                 and Pierce in 2007. It also follows that Java's type
                 checker can recognize any recursive language, which
                 improves a result of Gill and Levy from 2016. The
                 latter point is illustrated by a parser generator for
                 fluent interfaces.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '17 conference proceedings.",
}

@Article{Guo:2017:MJF,
  author =       "Robert Guo",
  title =        "{MongoDB}'s {JavaScript} fuzzer",
  journal =      j-CACM,
  volume =       "60",
  number =       "5",
  pages =        "43--47",
  month =        may,
  year =         "2017",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/3052937",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Sat May 27 15:08:46 MDT 2017",
  bibsource =    "http://www.acm.org/pubs/contents/journals/cacm/;
                 http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://cacm.acm.org/magazines/2017/5/216320/fulltext",
  abstract =     "The fuzzer is for those edge cases that your testing
                 did not catch.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Haas:2017:BWS,
  author =       "Andreas Haas and Andreas Rossberg and Derek L. Schuff
                 and Ben L. Titzer and Michael Holman and Dan Gohman and
                 Luke Wagner and Alon Zakai and JF Bastien",
  title =        "Bringing the web up to speed with {WebAssembly}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "185--200",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062363",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The maturation of the Web platform has given rise to
                 sophisticated and demanding Web applications such as
                 interactive 3D visualization, audio and video software,
                 and games. With that, efficiency and security of code
                 on the Web has become more important than ever. Yet
                 JavaScript as the only built-in language of the Web is
                 not well-equipped to meet these requirements,
                 especially as a compilation target. Engineers from the
                 four major browser vendors have risen to the challenge
                 and collaboratively designed a portable low-level
                 bytecode called WebAssembly. It offers compact
                 representation, efficient validation and compilation,
                 and safe low to no-overhead execution. Rather than
                 committing to a specific programming model, WebAssembly
                 is an abstraction over modern hardware, making it
                 language-, hardware-, and platform-independent, with
                 use cases beyond just the Web. WebAssembly has been
                 designed with a formal semantics from the start. We
                 describe the motivation, design and formal semantics of
                 WebAssembly and provide some preliminary experience
                 with implementations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Halder:2017:JSV,
  author =       "Prithish Halder and Himadri Sekhar Das",
  title =        "{JaSTA-2}: Second version of the {Java Superposition
                 T-matrix Application}",
  journal =      j-COMP-PHYS-COMM,
  volume =       "221",
  number =       "??",
  pages =        "421--422",
  month =        dec,
  year =         "2017",
  CODEN =        "CPHCBZ",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Mon Oct 16 14:20:16 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465517302667",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Hammer:2017:VOV,
  author =       "Matthew A. Hammer and Bor-Yuh Evan Chang and David
                 {Van Horn}",
  title =        "A vision for online verification-validation",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "190--201",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993255",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Today's programmers face a false choice between
                 creating software that is extensible and software that
                 is correct. Specifically, dynamic languages permit
                 software that is richly extensible (via dynamic code
                 loading, dynamic object extension, and various forms of
                 reflection), and today's programmers exploit this
                 flexibility to ``bring their own language features'' to
                 enrich extensible languages (e.g., by using common
                 JavaScript libraries). Meanwhile, such library-based
                 language extensions generally lack enforcement of their
                 abstractions, leading to programming errors that are
                 complex to avoid and predict. To offer verification for
                 this extensible world, we propose online
                 verification-validation (OVV), which consists of
                 language and VM design that enables a ``phaseless''
                 approach to program analysis, in contrast to the
                 standard static-dynamic phase distinction. Phaseless
                 analysis freely interposes abstract interpretation with
                 concrete execution, allowing analyses to use dynamic
                 (concrete) information to prove universal (abstract)
                 properties about future execution. In this paper, we
                 present a conceptual overview of OVV through a
                 motivating example program that uses a hypothetical
                 database library. We present a generic semantics for
                 OVV, and an extension to this semantics that offers a
                 simple gradual type system for the database library
                 primitives. The result of instantiating this gradual
                 type system in an OVV setting is a checker that can
                 progressively type successive continuations of the
                 program until a continuation is fully verified. To
                 evaluate the proposed vision of OVV for this example,
                 we implement the VM semantics (in Rust), and show that
                 this design permits progressive typing in this
                 manner.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Hanazumi:2017:FAI,
  author =       "Simone Hanazumi and Ana C. V. de Melo",
  title =        "A formal approach to implement {Java} exceptions in
                 cooperative systems",
  journal =      j-J-SYST-SOFTW,
  volume =       "131",
  number =       "??",
  pages =        "475--490",
  month =        sep,
  year =         "2017",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Thu Jul 27 16:32:34 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121216301285",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Jayaraman:2017:CVJ,
  author =       "S. Jayaraman and B. Jayaraman and D. Lessa",
  title =        "Compact visualization of {Java} program execution",
  journal =      j-SPE,
  volume =       "47",
  number =       "2",
  pages =        "163--191",
  month =        feb,
  year =         "2017",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2411",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Feb 18 10:00:11 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Kang:2017:PSR,
  author =       "Jeehoon Kang and Chung-Kil Hur and Ori Lahav and
                 Viktor Vafeiadis and Derek Dreyer",
  title =        "A promising semantics for relaxed-memory concurrency",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "1",
  pages =        "175--189",
  month =        jan,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093333.3009850",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Despite many years of research, it has proven very
                 difficult to develop a memory model for concurrent
                 programming languages that adequately balances the
                 conflicting desiderata of programmers, compilers, and
                 hardware. In this paper, we propose the first relaxed
                 memory model that (1) accounts for a broad spectrum of
                 features from the C++11 concurrency model, (2) is
                 implementable, in the sense that it provably validates
                 many standard compiler optimizations and reorderings,
                 as well as standard compilation schemes to x86-TSO and
                 Power, (3) justifies simple invariant-based reasoning,
                 thus demonstrating the absence of bad
                 ``out-of-thin-air'' behaviors, (4) supports ``DRF''
                 guarantees, ensuring that programmers who use
                 sufficient synchronization need not understand the full
                 complexities of relaxed-memory semantics, and (5)
                 defines the semantics of racy programs without relying
                 on undefined behaviors, which is a prerequisite for
                 applicability to type-safe languages like Java. The key
                 novel idea behind our model is the notion of
                 *promises*: a thread may promise to execute a write in
                 the future, thus enabling other threads to read from
                 that write out of order. Crucially, to prevent
                 out-of-thin-air behaviors, a promise step requires a
                 thread-local certification that it will be possible to
                 execute the promised write even in the absence of the
                 promise. To establish confidence in our model, we have
                 formalized most of our key results in Coq.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '17 conference proceedings.",
}

@Article{Kedia:2017:SFS,
  author =       "Piyus Kedia and Manuel Costa and Matthew Parkinson and
                 Kapil Vaswani and Dimitrios Vytiniotis and Aaron
                 Blankstein",
  title =        "Simple, fast, and safe manual memory management",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "233--247",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062376",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Safe programming languages are readily available, but
                 many applications continue to be written in unsafe
                 languages because of efficiency. As a consequence, many
                 applications continue to have exploitable memory safety
                 bugs. Since garbage collection is a major source of
                 inefficiency in the implementation of safe languages,
                 replacing it with safe manual memory management would
                 be an important step towards solving this problem.
                 Previous approaches to safe manual memory management
                 use programming models based on regions, unique
                 pointers, borrowing of references, and ownership types.
                 We propose a much simpler programming model that does
                 not require any of these concepts. Starting from the
                 design of an imperative type safe language (like Java
                 or C\#), we just add a delete operator to free memory
                 explicitly and an exception which is thrown if the
                 program dereferences a pointer to freed memory. We
                 propose an efficient implementation of this programming
                 model that guarantees type safety. Experimental results
                 from our implementation based on the C\# native
                 compiler show that this design achieves up to 3x
                 reduction in peak working set and run time.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Kim:2017:TAA,
  author =       "Channoh Kim and Jaehyeok Kim and Sungmin Kim and
                 Dooyoung Kim and Namho Kim and Gitae Na and Young H. Oh
                 and Hyeon Gyu Cho and Jae W. Lee",
  title =        "Typed Architectures: Architectural Support for
                 Lightweight Scripting",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "45",
  number =       "1",
  pages =        "77--90",
  month =        mar,
  year =         "2017",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/3093337.3037726",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Jun 5 18:01:58 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib",
  abstract =     "Dynamic scripting languages are becoming more and more
                 widely adopted not only for fast prototyping but also
                 for developing production-grade applications. They
                 provide high-productivity programming environments
                 featuring high levels of abstraction with powerful
                 built-in functions, automatic memory management,
                 object-oriented programming paradigm and dynamic
                 typing. However, their flexible, dynamic type systems
                 easily become the source of inefficiency in terms of
                 instruction count, memory footprint, and energy
                 consumption. This overhead makes it challenging to
                 deploy these high-productivity programming technologies
                 on emerging single-board computers for IoT
                 applications. Addressing this challenge, this paper
                 introduces Typed Architectures, a high-efficiency,
                 low-cost execution substrate for dynamic scripting
                 languages, where each data variable retains high-level
                 type information at an ISA level. Typed Architectures
                 calculate and check the dynamic type of each variable
                 implicitly in hardware, rather than explicitly in
                 software, hence significantly reducing instruction
                 count for dynamic type checking. Besides, Typed
                 Architectures introduce polymorphic instructions (e.g.,
                 xadd), which are bound to the correct native
                 instruction at runtime within the pipeline (e.g., add
                 or fadd) to efficiently implement polymorphic
                 operators. Finally, Typed Architectures provide
                 hardware support for flexible yet efficient type tag
                 extraction and insertion, capturing common data layout
                 patterns of tag-value pairs. Our evaluation using a
                 fully synthesizable RISC-V RTL design on FPGA shows
                 that Typed Architectures achieve geomean speedups of
                 11.2\% and 9.9\% with maximum speedups of 32.6\% and
                 43.5\% for two production-grade scripting engines for
                 JavaScript and Lua, respectively. Moreover, Typed
                 Architectures improve the energy-delay product (EDP) by
                 19.3\% for JavaScript and 16.5\% for Lua with an area
                 overhead of 1.6\% at a 40nm technology node.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
  remark =       "ASPLOS'17 conference proceedings",
}

@Article{Kiselyov:2017:SFC,
  author =       "Oleg Kiselyov and Aggelos Biboudis and Nick Palladinos
                 and Yannis Smaragdakis",
  title =        "Stream fusion, to completeness",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "1",
  pages =        "285--299",
  month =        jan,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093333.3009880",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Stream processing is mainstream (again): Widely-used
                 stream libraries are now available for virtually all
                 modern OO and functional languages, from Java to C\# to
                 Scala to OCaml to Haskell. Yet expressivity and
                 performance are still lacking. For instance, the
                 popular, well-optimized Java 8 streams do not support
                 the zip operator and are still an order of magnitude
                 slower than hand-written loops. We present the first
                 approach that represents the full generality of stream
                 processing and eliminates overheads, via the use of
                 staging. It is based on an unusually rich semantic
                 model of stream interaction. We support any combination
                 of zipping, nesting (or flat-mapping), sub-ranging,
                 filtering, mapping-of finite or infinite streams. Our
                 model captures idiosyncrasies that a programmer uses in
                 optimizing stream pipelines, such as rate differences
                 and the choice of a ``for'' vs. ``while'' loops. Our
                 approach delivers hand-written-like code, but
                 automatically. It explicitly avoids the reliance on
                 black-box optimizers and sufficiently-smart compilers,
                 offering highest, guaranteed and portable performance.
                 Our approach relies on high-level concepts that are
                 then readily mapped into an implementation.
                 Accordingly, we have two distinct implementations: an
                 OCaml stream library, staged via MetaOCaml, and a Scala
                 library for the JVM, staged via LMS. In both cases, we
                 derive libraries richer and simultaneously many tens of
                 times faster than past work. We greatly exceed in
                 performance the standard stream libraries available in
                 Java, Scala and OCaml, including the well-optimized
                 Java 8 streams.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '17 conference proceedings.",
}

@Article{Kunjir:2017:TAM,
  author =       "Mayuresh Kunjir and Shivnath Babu",
  title =        "{Thoth} in action: memory management in modern data
                 analytics",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "10",
  number =       "12",
  pages =        "1917--1920",
  month =        aug,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.14778/3137765.3137808",
  ISSN =         "2150-8097",
  bibdate =      "Tue Oct 10 17:16:19 MDT 2017",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Allocation and usage of memory in modern
                 data-processing platforms is based on an interplay of
                 algorithms at multiple levels: (i) at the
                 resource-management level across containers allocated
                 by resource managers like Mesos and Yarn, (ii) at the
                 container level among the OS and processes such as the
                 Java Virtual Machine (JVM), (iii) at the framework
                 level for caching, aggregation, data shuffles, and
                 application data structures, and (iv) at the JVM level
                 across various pools such as the Young and Old
                 Generation as well as the heap versus off-heap. We use
                 Thoth, a data-driven platform for multi-system cluster
                 management, to build a deep understanding of different
                 interplays in memory management options. Through
                 multiple memory management apps built in Thoth, we
                 demonstrate how Thoth can deal with multiple levels of
                 memory management as well as multi-tenant nature of
                 clusters.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Landman:2017:CEA,
  author =       "Davy Landman and Alexander Serebrenik and Eric Bouwers
                 and Jurgen Vinju",
  title =        "Corrigendum: Empirical analysis of the relationship
                 between {CC} and {SLOC} in a large corpus of {Java}
                 methods and {C} functions published on {9 December
                 2015}",
  journal =      j-J-SOFTW-EVOL-PROC,
  volume =       "29",
  number =       "10",
  pages =        "??--??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1002/smr.1914",
  ISSN =         "2047-7473 (print), 2047-7481 (electronic)",
  ISSN-L =       "2047-7473",
  bibdate =      "Wed Jan 31 13:48:45 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwevolproc.bib",
  note =         "See \cite{Landman:2016:EAR}.",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software: Evolution and Process",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Leijen:2017:TDC,
  author =       "Daan Leijen",
  title =        "Type directed compilation of row-typed algebraic
                 effects",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "1",
  pages =        "486--499",
  month =        jan,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093333.3009872",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Algebraic effect handlers, introduced by Plotkin and
                 Power in 2002, are recently gaining in popularity as a
                 purely functional approach to modeling effects. In this
                 article, we give a full overview of practical algebraic
                 effects in the context of a compiled implementation in
                 the Koka language. In particular, we show how algebraic
                 effects generalize over common constructs like
                 exception handling, state, iterators and async-await.
                 We give an effective type inference algorithm based on
                 extensible effect rows using scoped labels, and a
                 direct operational semantics. Finally, we show an
                 efficient compilation scheme to common runtime
                 platforms (like JavaScript) using a type directed
                 selective CPS translation.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '17 conference proceedings.",
}

@Article{Loring:2017:SAJ,
  author =       "Matthew C. Loring and Mark Marron and Daan Leijen",
  title =        "Semantics of asynchronous {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "11",
  pages =        "51--62",
  month =        nov,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3170472.3133846",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:13 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript code running in the Node.js runtime is a
                 major platform for developers building cloud, mobile,
                 or IoT applications. A fundamental concept in Node.js
                 programming is the use of asynchronous callbacks and
                 event loops to provide highly responsive applications.
                 While conceptually simple, this programming model
                 contains numerous subtleties and behaviors that are
                 defined implicitly by the current Node.js
                 implementation. This paper presents the first
                 comprehensive formalization of the Node.js asynchronous
                 execution model and defines a high-level notion of
                 async-contexts to formalize fundamental relationships
                 between asynchronous executions in an application.
                 These formalizations provide a foundation for the
                 construction of static or dynamic program analysis
                 tools, support the exploration of alternative Node.js
                 event loop implementations, and provide a high-level
                 conceptual framework for reasoning about relationships
                 between the execution of asynchronous callbacks in a
                 Node.js application.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '17 conference proceedings.",
}

@Article{Luckcuck:2017:SCJ,
  author =       "Matt Luckcuck and Andy Wellings and Ana Cavalcanti",
  title =        "{Safety-Critical Java}: level 2 in practice",
  journal =      j-CCPE,
  volume =       "29",
  number =       "6",
  pages =        "??--??",
  day =          "25",
  month =        mar,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3951",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Fri Mar 31 19:12:51 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Luckow:2017:HTP,
  author =       "Kasper S{\o}e Luckow and Bent Thomsen and Stephan Erbs
                 Korsholm",
  title =        "{HVM$_{TP}$}: a time predictable and portable {Java
                 Virtual Machine} for hard real-time embedded systems",
  journal =      j-CCPE,
  volume =       "29",
  number =       "22",
  pages =        "??--??",
  day =          "25",
  month =        nov,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3828",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Dec 30 09:11:59 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Madsen:2017:MRA,
  author =       "Magnus Madsen and Ondrej Lhot{\'a}k and Frank Tip",
  title =        "A model for reasoning about {JavaScript} promises",
  journal =      j-PACMPL,
  volume =       "1",
  number =       "OOPSLA",
  pages =        "86:1--86:??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3133910",
  ISSN =         "2475-1421",
  bibdate =      "Wed Jan 10 09:45:26 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  acknowledgement = ack-nhfb,
  articleno =    "86",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Malhotra:2017:PPS,
  author =       "Geetika Malhotra and Rajshekar Kalayappan and Seep
                 Goel and Pooja Aggarwal and Abhishek Sagar and Smruti
                 R. Sarangi",
  title =        "{ParTejas}: a Parallel Simulator for Multicore
                 Processors",
  journal =      j-TOMACS,
  volume =       "27",
  number =       "3",
  pages =        "19:1--19:??",
  month =        sep,
  year =         "2017",
  CODEN =        "ATMCEZ",
  DOI =          "https://doi.org/10.1145/3077582",
  ISSN =         "1049-3301 (print), 1558-1195 (electronic)",
  ISSN-L =       "1049-3301",
  bibdate =      "Fri Sep 8 08:36:06 MDT 2017",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tomacs/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tomacs.bib",
  abstract =     "In this article, we present the design of a novel
                 parallel architecture simulator called ParTejas.
                 ParTejas is a timing simulation engine that gets its
                 execution traces from instrumented binaries using a
                 fast shared-memory-based mechanism. Subsequently, the
                 waiting threads simulate the execution of multiple
                 pipelines and an elaborate memory system with support
                 for multilevel coherent caches. ParTejas is written in
                 Java and primarily derives its speedups from the use of
                 novel data structures. Specifically, it uses lock-free
                 slot schedulers to design an entity called a parallel
                 port that effectively models the contention at shared
                 resources in the CPU and memory system. Parallel ports
                 remove the need for fine-grained synchronization and
                 allow each thread to use its local clock. Unlike
                 conventional simulators that use barriers for
                 synchronization at epoch boundaries, we use a
                 sophisticated type of barrier, known as a phaser. A
                 phaser allows threads to perform additional work
                 without waiting for other threads to arrive at the
                 barrier. Additionally, we use a host of Java-specific
                 optimizations and use profiling to effectively schedule
                 the threads. With all our optimizations, we demonstrate
                 a speedup of 11.8$ \times $ for a multi-issue in-order
                 pipeline and 10.9$ \times $ for an out-of-order
                 pipeline with 64 threads, for a suite of seven Splash2
                 and Parsec benchmarks. The simulation error is limited
                 to 2\% to 4\% as compared to strictly sequential
                 simulation",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Modeling and Computer Simulation",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J781",
}

@Article{Mamouras:2017:SMS,
  author =       "Konstantinos Mamouras and Mukund Raghothaman and
                 Rajeev Alur and Zachary G. Ives and Sanjeev Khanna",
  title =        "{StreamQRE}: modular specification and efficient
                 evaluation of quantitative queries over streaming
                 data",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "693--708",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062369",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Real-time decision making in emerging IoT applications
                 typically relies on computing quantitative summaries of
                 large data streams in an efficient and incremental
                 manner. To simplify the task of programming the desired
                 logic, we propose StreamQRE, which provides natural and
                 high-level constructs for processing streaming data.
                 Our language has a novel integration of linguistic
                 constructs from two distinct programming paradigms:
                 streaming extensions of relational query languages and
                 quantitative extensions of regular expressions. The
                 former allows the programmer to employ relational
                 constructs to partition the input data by keys and to
                 integrate data streams from different sources, while
                 the latter can be used to exploit the logical hierarchy
                 in the input stream for modular specifications. We
                 first present the core language with a small set of
                 combinators, formal semantics, and a decidable type
                 system. We then show how to express a number of common
                 patterns with illustrative examples. Our compilation
                 algorithm translates the high-level query into a
                 streaming algorithm with precise complexity bounds on
                 per-item processing time and total memory footprint. We
                 also show how to integrate approximation algorithms
                 into our framework. We report on an implementation in
                 Java, and evaluate it with respect to existing
                 high-performance engines for processing streaming data.
                 Our experimental evaluation shows that (1) StreamQRE
                 allows more natural and succinct specification of
                 queries compared to existing frameworks, (2) the
                 throughput of our implementation is higher than
                 comparable systems (for example, two-to-four times
                 greater than RxJava), and (3) the approximation
                 algorithms supported by our implementation can lead to
                 substantial memory savings.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Marr:2017:CLC,
  author =       "Stefan Marr and Benoit Daloze and Hanspeter
                 M{\"o}ssenb{\"o}ck",
  title =        "Cross-language compiler benchmarking: are we fast
                 yet?",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "2",
  pages =        "120--131",
  month =        feb,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093334.2989232",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Comparing the performance of programming languages is
                 difficult because they differ in many aspects including
                 preferred programming abstractions, available
                 frameworks, and their runtime systems. Nonetheless, the
                 question about relative performance comes up repeatedly
                 in the research community, industry, and wider audience
                 of enthusiasts. This paper presents 14 benchmarks and a
                 novel methodology to assess the compiler effectiveness
                 across language implementations. Using a set of common
                 language abstractions, the benchmarks are implemented
                 in Java, JavaScript, Ruby, Crystal, Newspeak, and
                 Smalltalk. We show that the benchmarks exhibit a wide
                 range of characteristics using language-agnostic
                 metrics. Using four different languages on top of the
                 same compiler, we show that the benchmarks perform
                 similarly and therefore allow for a comparison of
                 compiler effectiveness across languages. Based on
                 anecdotes, we argue that these benchmarks help language
                 implementers to identify performance bugs and
                 optimization potential by comparing to other language
                 implementations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '16 conference proceedings.",
}

@Article{Martinez:2017:ARR,
  author =       "Matias Martinez and Thomas Durieux and Romain
                 Sommerard and Jifeng Xuan and Martin Monperrus",
  title =        "Automatic repair of real bugs in {Java}: a large-scale
                 experiment on the {\tt defects4j} dataset",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "22",
  number =       "4",
  pages =        "1936--1964",
  month =        aug,
  year =         "2017",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-016-9470-4",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Mon Oct 2 11:35:01 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-016-9470-4",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Martinez:2017:MBA,
  author =       "Salvador Mart{\'\i}nez and Valerio Cosentino and Jordi
                 Cabot",
  title =        "Model-based analysis of {Java EE} web security
                 misconfigurations",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "49",
  number =       "??",
  pages =        "36--61",
  month =        sep,
  year =         "2017",
  CODEN =        "????",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Fri Sep 15 11:36:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842416301348",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Martinsen:2017:CTL,
  author =       "Jan Kasper Martinsen and H{\aa}kan Grahn and Anders
                 Isberg",
  title =        "Combining thread-level speculation and just-in-time
                 compilation in {Google's V8 JavaScript} engine",
  journal =      j-CCPE,
  volume =       "29",
  number =       "1",
  pages =        "??--??",
  day =          "10",
  month =        jan,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3826",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Feb 18 10:07:18 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Mazinanian:2017:UUL,
  author =       "Davood Mazinanian and Ameya Ketkar and Nikolaos
                 Tsantalis and Danny Dig",
  title =        "Understanding the use of lambda expressions in
                 {Java}",
  journal =      j-PACMPL,
  volume =       "1",
  number =       "OOPSLA",
  pages =        "85:1--85:??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3133909",
  ISSN =         "2475-1421",
  bibdate =      "Wed Jan 10 09:45:26 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  acknowledgement = ack-nhfb,
  articleno =    "85",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Mesbah:2017:REJ,
  author =       "Abdelhak Mesbah and Jean-Louis Lanet and Mohamed
                 Mezghiche",
  title =        "Reverse engineering a {Java Card} memory management
                 algorithm",
  journal =      j-COMPUT-SECUR,
  volume =       "66",
  number =       "??",
  pages =        "97--114",
  month =        may,
  year =         "2017",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:49 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167404817300093",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Nicolay:2017:PAJ,
  author =       "Jens Nicolay and Quentin Sti{\'e}venart and Wolfgang
                 {De Meuter} and Coen {De Roover}",
  title =        "Purity analysis for {JavaScript} through abstract
                 interpretation",
  journal =      j-J-SOFTW-EVOL-PROC,
  volume =       "29",
  number =       "12",
  pages =        "??--??",
  month =        dec,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1002/smr.1889",
  ISSN =         "2047-7473 (print), 2047-7481 (electronic)",
  ISSN-L =       "2047-7473",
  bibdate =      "Wed Jan 31 13:48:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwevolproc.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software: Evolution and Process",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Noller:2017:SSE,
  author =       "Yannic Noller and Hoang Lam Nguyen and Minxing Tang
                 and Timo Kehrer",
  title =        "Shadow Symbolic Execution with {Java PathFinder}",
  journal =      j-SIGSOFT,
  volume =       "42",
  number =       "4",
  pages =        "1--5",
  month =        oct,
  year =         "2017",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3149485.3149492",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:48 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Regression testing ensures that a software system when
                 it evolves still performs correctly and that the
                 changes introduce no unintended side-effects. However,
                 the creation of regression test cases that show
                 divergent behavior needs a lot of effort. A solution is
                 the idea of shadow symbolic execution, originally
                 implemented based on KLEE for programs written in C,
                 which takes a unified version of the old and the new
                 program and performs symbolic execution guided by
                 concrete values to explore the changed behavior. In
                 this work, we apply the idea of shadow symbolic
                 execution to Java programs and, hence, provide an
                 extension of the Java PathFinder (JPF) project to
                 perform shadow symbolic execution on Java bytecode. The
                 extension has been applied on several subjects from the
                 JPF test classes where it successfully generated test
                 inputs that expose divergences relevant for regression
                 testing.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Ocariza:2017:SCC,
  author =       "F. S. Ocariza and K. Bajaj and K. Pattabiraman and A.
                 Mesbah",
  title =        "A Study of Causes and Consequences of Client-Side
                 {JavaScript} Bugs",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "43",
  number =       "2",
  pages =        "128--144",
  month =        feb,
  year =         "2017",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2016.2586066",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7501855",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Omar:2017:PSF,
  author =       "Cyrus Omar and Jonathan Aldrich",
  title =        "Programmable semantic fragments: the design and
                 implementation of {\tt typy}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "81--92",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993245",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper introduces typy, a statically typed
                 programming language embedded by reflection into
                 Python. typy features a fragmentary semantics, i.e. it
                 delegates semantic control over each term, drawn from
                 Python's fixed concrete and abstract syntax, to some
                 contextually relevant user-defined semantic fragment.
                 The delegated fragment programmatically (1) typechecks
                 the term (following a bidirectional protocol); and (2)
                 assigns dynamic meaning to the term by computing a
                 translation to Python. We argue that this design is
                 expressive with examples of fragments that express the
                 static and dynamic semantics of (1) functional records;
                 (2) labeled sums (with nested pattern matching a la
                 ML); (3) a variation on JavaScript's prototypal object
                 system; and (4) typed foreign interfaces to Python and
                 OpenCL. These semantic structures are, or would need to
                 be, defined primitively in conventionally structured
                 languages. We further argue that this design is
                 compositionally well-behaved. It avoids the expression
                 problem and the problems of grammar composition because
                 the syntax is fixed. Moreover, programs are
                 semantically stable under fragment composition (i.e.
                 defining a new fragment will not change the meaning of
                 existing program components.)",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Pan:2017:GCF,
  author =       "Y. Pan and J. White and Y. Sun and J. Gray",
  title =        "Gray Computing: A Framework for Computing with
                 Background {JavaScript} Tasks",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "PP",
  number =       "99",
  pages =        "1--1",
  month =        "????",
  year =         "2017",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2017.2772812",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8105894",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Park:2017:PSS,
  author =       "Changhee Park and Hyeonseung Im and Sukyoung Ryu",
  title =        "Precise and scalable static analysis of {jQuery} using
                 a regular expression domain",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "2",
  pages =        "25--36",
  month =        feb,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093334.2989228",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "jQuery is the most popular JavaScript library but the
                 state-of-the-art static analyzers for JavaScript
                 applications fail to analyze simple programs that use
                 jQuery. In this paper, we present a novel abstract
                 string domain whose elements are simple regular
                 expressions that can represent prefix, infix, and
                 postfix substrings of a string and even their sets. We
                 formalize the new domain in the abstract interpretation
                 framework with abstract models of strings and objects
                 commonly used in the existing JavaScript analyzers. For
                 practical use of the domain, we present polynomial-time
                 inclusion decision rules between the regular
                 expressions and prove that the rules exactly capture
                 the actual inclusion relation. We have implemented the
                 domain as an extension of the open-source JavaScript
                 analyzer, SAFE, and we show that the extension
                 significantly improves the scalability and precision of
                 the baseline analyzer in analyzing programs that use
                 jQuery.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '16 conference proceedings.",
}

@Article{Philips:2017:DDD,
  author =       "Laure Philips and Joeri {De Koster} and Wolfgang {De
                 Meuter} and Coen {De Roover}",
  title =        "Dependence-driven delimited {CPS} transformation for
                 {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "59--69",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993243",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "In today's web applications asynchronous requests to
                 remote services using callbacks or futures are
                 omnipresent. The continuation of such a non-blocking
                 task is represented as a callback function that will
                 later be called with the result of the request. This
                 style of programming where the remainder of a
                 computation is captured in a continuation function is
                 called continuation-passing style (CPS). This style of
                 programming can quickly lead to a phenomenon called
                 ``callback hell'', which has a negative impact on the
                 maintainability of applications that employ this style.
                 Several alternatives to callbacks are therefore gaining
                 traction within the web domain. For example, there are
                 a number of frameworks that rely on automatically
                 transforming sequential style code into the
                 continuation-passing style. However, these frameworks
                 often employ a conservative approach in which each
                 function call is transformed into CPS. This
                 conservative approach can sequentialise requests that
                 could otherwise be run in parallel. So-called delimited
                 continuations can remedy, but require special marks
                 that have to be manually inserted in the code for
                 marking the beginning and end of the continuation. In
                 this paper we propose an alternative strategy in which
                 we apply a delimited CPS transformation that operates
                 on a Program Dependence Graph instead to find the
                 limits of each continuation.We implement this strategy
                 in JavaScript and demonstrate its applicability to
                 various web programming scenarios.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Piedrahita-Quintero:2017:JGA,
  author =       "Pablo Piedrahita-Quintero and Carlos Trujillo and
                 Jorge Garcia-Sucerquia",
  title =        "{JDiffraction}: a {GPGPU}-accelerated {JAVA} library
                 for numerical propagation of scalar wave fields",
  journal =      j-COMP-PHYS-COMM,
  volume =       "214",
  number =       "??",
  pages =        "128--139",
  month =        may,
  year =         "2017",
  CODEN =        "CPHCBZ",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Fri Mar 3 06:05:58 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465516303952",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Pizlo:2017:JVM,
  author =       "Filip Pizlo",
  title =        "The {JavaScriptCore} virtual machine (invited talk)",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "11",
  pages =        "1--1",
  month =        nov,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3170472.3148567",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:13 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScriptCore (JSC) is an open-source
                 high-performance implementation of JavaScript. JSC is
                 used in the WebKit open source browser engine as well
                 as a system framework on macOS and iOS. This talk will
                 give a broad high-level overview of JSC's
                 performance-oriented architecture, including specific
                 details about the object model, garbage collector,
                 optimizing compilers, type inference, and
                 deoptimization.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '17 conference proceedings.",
}

@Article{Powers:2017:BBG,
  author =       "Bobby Powers and John Vilk and Emery D. Berger",
  title =        "{Browsix}: Bridging the Gap Between {Unix} and the
                 Browser",
  journal =      j-COMP-ARCH-NEWS,
  volume =       "45",
  number =       "1",
  pages =        "253--266",
  month =        mar,
  year =         "2017",
  CODEN =        "CANED2",
  DOI =          "https://doi.org/10.1145/3093337.3037727",
  ISSN =         "0163-5964 (print), 1943-5851 (electronic)",
  ISSN-L =       "0163-5964",
  bibdate =      "Mon Jun 5 18:01:58 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigarch.bib;
                 http://www.math.utah.edu/pub/tex/bib/unix.bib",
  abstract =     "Applications written to run on conventional operating
                 systems typically depend on OS abstractions like
                 processes, pipes, signals, sockets, and a shared file
                 system. Porting these applications to the web currently
                 requires extensive rewriting or hosting significant
                 portions of code server-side because browsers present a
                 nontraditional runtime environment that lacks OS
                 functionality. This paper presents Browsix, a framework
                 that bridges the considerable gap between conventional
                 operating systems and the browser, enabling unmodified
                 programs expecting a Unix-like environment to run
                 directly in the browser. Browsix comprises two core
                 parts: (1) a JavaScript-only system that makes core
                 Unix features (including pipes, concurrent processes,
                 signals, sockets, and a shared file system) available
                 to web applications; and (2) extended JavaScript
                 runtimes for C, C++, Go, and Node.js that support
                 running programs written in these languages as
                 processes in the browser. Browsix supports running a
                 POSIX shell, making it straightforward to connect
                 applications together via pipes. We illustrate
                 Browsix's capabilities via case studies that
                 demonstrate how it eases porting legacy applications to
                 the browser and enables new functionality. We
                 demonstrate a Browsix-enabled LaTeX editor that
                 operates by executing unmodified versions of pdfLaTeX
                 and BibTeX. This browser-only LaTeX editor can render
                 documents in seconds, making it fast enough to be
                 practical. We further demonstrate how Browsix lets us
                 port a client-server application to run entirely in the
                 browser for disconnected operation. Creating these
                 applications required less than 50 lines of glue code
                 and no code modifications, demonstrating how easily
                 Browsix can be used to build sophisticated web
                 applications from existing parts without
                 modification.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGARCH Computer Architecture News",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J89",
  remark =       "ASPLOS'17 conference proceedings",
}

@Article{Qiu:2017:USR,
  author =       "Dong Qiu and Bixin Li and Earl T. Barr and Zhendong
                 Su",
  title =        "Understanding the syntactic rule usage in {Java}",
  journal =      j-J-SYST-SOFTW,
  volume =       "123",
  number =       "??",
  pages =        "160--172",
  month =        jan,
  year =         "2017",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Thu Dec 8 12:35:58 MST 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121216302126",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212/",
}

@Article{Ramamohanarao:2017:SSM,
  author =       "Kotagiri Ramamohanarao and Hairuo Xie and Lars Kulik
                 and Shanika Karunasekera and Egemen Tanin and Rui Zhang
                 and Eman Bin Khunayn",
  title =        "{SMARTS}: Scalable Microscopic Adaptive Road Traffic
                 Simulator",
  journal =      j-TIST,
  volume =       "8",
  number =       "2",
  pages =        "26:1--26:??",
  month =        jan,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/2898363",
  ISSN =         "2157-6904 (print), 2157-6912 (electronic)",
  ISSN-L =       "2157-6904",
  bibdate =      "Mon Apr 3 11:19:57 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tist.bib",
  abstract =     "Microscopic traffic simulators are important tools for
                 studying transportation systems as they describe the
                 evolution of traffic to the highest level of detail. A
                 major challenge to microscopic simulators is the slow
                 simulation speed due to the complexity of traffic
                 models. We have developed the Scalable Microscopic
                 Adaptive Road Traffic Simulator (SMARTS), a distributed
                 microscopic traffic simulator that can utilize multiple
                 independent processes in parallel. SMARTS can perform
                 fast large-scale simulations. For example, when
                 simulating 1 million vehicles in an area the size of
                 Melbourne, the system runs 1.14 times faster than real
                 time with 30 computing nodes and 0.2s simulation
                 timestep. SMARTS supports various driver models and
                 traffic rules, such as the car-following model and
                 lane-changing model, which can be driver dependent. It
                 can simulate multiple vehicle types, including bus and
                 tram. The simulator is equipped with a wide range of
                 features that help to customize, calibrate, and monitor
                 simulations. Simulations are accurate and confirm with
                 real traffic behaviours. For example, it achieves
                 79.1\% accuracy in predicting traffic on a 10km freeway
                 90 minutes into the future. The simulator can be used
                 for predictive traffic advisories as well as traffic
                 management decisions as simulations complete well ahead
                 of real time. SMARTS can be easily deployed to
                 different operating systems as it is developed with the
                 standard Java libraries.",
  acknowledgement = ack-nhfb,
  articleno =    "26",
  fjournal =     "ACM Transactions on Intelligent Systems and Technology
                 (TIST)",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1318",
}

@Article{Rathee:2017:ROO,
  author =       "Amit Rathee and Jitender Kumar Chhabra",
  title =        "Restructuring of Object-Oriented Software Through
                 Cohesion Improvement Using Frequent Usage Patterns",
  journal =      j-SIGSOFT,
  volume =       "42",
  number =       "3",
  pages =        "1--8",
  month =        jul,
  year =         "2017",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3127360.3127370",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:47 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Due to wide adoption of object-oriented programming in
                 software development, there is always a requirement to
                 produce well-designed software systems, so that the
                 overall software maintenance cost is reduced and
                 reusability of the component is increased. But, due to
                 prolonged maintenance activities, the internal
                 structure of software system deteriorates. In this
                 situation, restructuring is a widely used solution to
                 improve the overall internal structure of the system
                 without changing its external behavior. As, it is known
                 that, one technique to perform restructuring is to use
                 refactoring on the existing source code to alter its
                 internal structure without modifying its external
                 functionality. However, the refactoring solely depends
                 on our ability to identify various code smells present
                 in the system. Refactoring aims at improving cohesion
                 and reducing coupling in the software system. So, in
                 this paper, a restructuring approach based on
                 refactoring is proposed through improvement in
                 cohesion. This paper focuses on improving the cohesion
                 of different classes of object-oriented software using
                 a newly proposed similarity metric based on Frequent
                 Usage Patterns (FUP). The proposed similarity metric
                 measure the relatedness among member functions of the
                 classes. The metric makes use of FUPs used by member
                 functions. The FUP consists of unordered sequences of
                 member variables accessed by member function in
                 performing its task. The usage pattern includes both
                 direct and indirect usages based on sub-function calls
                 within a member function. Based on the values of the
                 similarity metric, we performed hierarchical
                 agglomerative clustering using complete linkage
                 strategy to cluster member functions. Finally, based on
                 the clusters obtained, the source code of the software
                 is refactored using proposed refactoring algorithm. The
                 applicability of our proposed approach is tested using
                 two java projects related to different domains of real
                 life. The result obtained encourages the applicability
                 of proposed approach in the restructuring of a software
                 system.patterns, refactoring, hierarchical clustering,
                 maintainability. usage patterns, refactoring,
                 hierarchical clustering, maintainability.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Rosa:2017:APV,
  author =       "Andrea Ros{\`a} and Lydia Y. Chen and Walter Binder",
  title =        "Actor profiling in virtual execution environments",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "36--46",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993241",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Nowadays, many virtual execution environments benefit
                 from concurrency offered by the actor model.
                 Unfortunately, while actors are used in many
                 applications, existing profiling tools are not much
                 effective in analyzing the performance of applications
                 using actors. In this paper, we present a new
                 instrumentation-based technique to profile actors in
                 virtual execution environments. Our technique adopts
                 platform-independent profiling metrics that minimize
                 the perturbations induced by the instrumentation logic
                 and allow comparing profiling results across different
                 platforms. In particular, our technique measures the
                 initialization cost, the amount of executed
                 computations, and the messages sent and received by
                 each actor. We implement our technique within a
                 profiling tool for Akka actors on the Java platform.
                 Evaluation results show that our profiling technique
                 helps performance analysis of actor utilization and
                 communication between actors in large-scale computing
                 frameworks.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Rosa:2017:ARC,
  author =       "Andrea Ros{\`a} and Eduardo Rosales and Walter
                 Binder",
  title =        "Accurate reification of complete supertype information
                 for dynamic analysis on the {JVM}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "12",
  pages =        "104--116",
  month =        dec,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3170492.3136061",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:14 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Reflective supertype information (RSI) is useful for
                 many instrumentation-based dynamic analyses on the Java
                 Virtual Machine (JVM). On the one hand, while such
                 information can be obtained when performing the
                 instrumentation within the same JVM process executing
                 the instrumented program, in-process instrumentation
                 severely limits the code coverage of the analysis. On
                 the other hand, performing the instrumentation in a
                 separate process can achieve full code coverage, but
                 complete RSI is generally not available, often
                 requiring expensive runtime checks in the instrumented
                 program. Providing accurate and complete RSI in the
                 instrumentation process is challenging because of
                 dynamic class loading and classloader namespaces. In
                 this paper, we present a novel technique to accurately
                 reify complete RSI in a separate instrumentation
                 process. We implement our technique in the dynamic
                 analysis framework DiSL and evaluate it on a task
                 profiler, achieving speedups of up to 45\% for an
                 analysis with full code coverage.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '17 conference proceedings.",
}

@Article{Rudafshani:2017:LDD,
  author =       "Masoomeh Rudafshani and Paul A. S. Ward",
  title =        "{LeakSpot}: detection and diagnosis of memory leaks in
                 {JavaScript} applications",
  journal =      j-SPE,
  volume =       "47",
  number =       "1",
  pages =        "97--123",
  month =        jan,
  year =         "2017",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2406",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Feb 18 10:00:11 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
}

@Article{Scanniello:2017:FFC,
  author =       "Giuseppe Scanniello and Michele Risi and Porfirio
                 Tramontana and Simone Romano",
  title =        "Fixing Faults in {C} and {Java} Source Code:
                 Abbreviated vs. Full-Word Identifier Names",
  journal =      j-TOSEM,
  volume =       "26",
  number =       "2",
  pages =        "6:1--6:??",
  month =        oct,
  year =         "2017",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/3104029",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Thu Oct 5 18:22:13 MDT 2017",
  bibsource =    "http://www.acm.org/pubs/contents/journals/tosem/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "We carried out a family of controlled experiments to
                 investigate whether the use of abbreviated identifier
                 names, with respect to full-word identifier names,
                 affects fault fixing in C and Java source code. This
                 family consists of an original (or baseline) controlled
                 experiment and three replications. We involved 100
                 participants with different backgrounds and experiences
                 in total. Overall results suggested that there is no
                 difference in terms of effort, effectiveness, and
                 efficiency to fix faults, when source code contains
                 either only abbreviated or only full-word identifier
                 names. We also conducted a qualitative study to
                 understand the values, beliefs, and assumptions that
                 inform and shape fault fixing when identifier names are
                 either abbreviated or full-word. We involved in this
                 qualitative study six professional developers with 1--3
                 years of work experience. A number of insights emerged
                 from this qualitative study and can be considered a
                 useful complement to the quantitative results from our
                 family of experiments. One of the most interesting
                 insights is that developers, when working on source
                 code with abbreviated identifier names, adopt a more
                 methodical approach to identify and fix faults by
                 extending their focus point and only in a few cases do
                 they expand abbreviated identifiers.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Schoeberl:2017:SCJ,
  author =       "Martin Schoeberl and Andreas Engelbredt Dalsgaard and
                 Ren{\'e} Rydhof Hansen and Stephan E. Korsholm and
                 Anders P. Ravn and Juan Ricardo Rios Rivas and
                 T{\'o}rur Biskopst{\o} Str{\o}m and Hans S{\o}ndergaard
                 and Andy Wellings and Shuai Zhao",
  title =        "Safety-critical {Java} for embedded systems",
  journal =      j-CCPE,
  volume =       "29",
  number =       "22",
  pages =        "??--??",
  day =          "25",
  month =        nov,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3963",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Dec 30 09:11:59 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Sharma:2017:VCS,
  author =       "Vaibhav Sharma and Michael W. Whalen and Stephen
                 McCamant and Willem Visser",
  title =        "{Veritesting} Challenges in Symbolic Execution of
                 {Java}",
  journal =      j-SIGSOFT,
  volume =       "42",
  number =       "4",
  pages =        "1--5",
  month =        oct,
  year =         "2017",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3149485.3149491",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:48 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Scaling symbolic execution to industrial-sized
                 programs is an important open research problem.
                 Veritesting is a promising technique that improves
                 scalability by combining the advantages of static
                 symbolic execution with those of dynamic symbolic
                 execution. The goal of veritesting is to reduce the
                 number of paths to explore in symbolic execution by
                 creating formulas describing regions of code using
                 disjunctive formulas. In previous work, veritesting was
                 applied to binary-level symbolic execution. Integrating
                 veritesting with Java bytecode presents unique
                 challenges: notably, incorporating non-local control
                 jumps caused by runtime polymorphism, exceptions,
                 native calls, and dynamic class loading. If these
                 language features are not accounted for, we hypothesize
                 that the static code regions described by veritesting
                 are often small and may not lead to substantial
                 reduction in paths. We examine this hypothesis by
                 running a Soot-based static analysis on six large
                 open-source projects used in the Defects4J collection.
                 We find that while veritesting can be applied in
                 thousands of regions, allowing static symbolic
                 execution involving non-local control jumps amplifies
                 the performance improvement obtained from veritesting.
                 We hope to use these insights to support efficient
                 veritesting in Symbolic PathFinder in the near future.
                 Toward this end, we brie y address some engineering
                 challenges to add veritesting into SPF.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Siek:2017:CPT,
  author =       "Jeremy Siek",
  title =        "Challenges and progress toward efficient gradual
                 typing (invited talk)",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "11",
  pages =        "2--2",
  month =        nov,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3170472.3148570",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:13 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Mixing static and dynamic type checking in the same
                 language is catching on, with the TypeScript and Flow
                 variants of JavaScript, the MyPy and Reticulated
                 variants of Python, the Strongtalk and Gradualtalk
                 variants of Smalltalk, as well as Typed Racket, Typed
                 Clojure, and Perl 6. The gradual typing approach to
                 such mixing seeks to protect the statically typed code
                 from the dynamically typed code, allowing compilers to
                 leverage type information when optimizing the static
                 code. Unfortunately, ensuring soundness requires
                 runtime checking at the boundaries of typed and untyped
                 code, and the cost of this checking can drown out the
                 performance benefits of optimization. For example, in
                 Typed Racket, some partially typed programs are 1000X
                 slower than the untyped or fully typed version of the
                 same program. But all is not lost! In this talk I
                 present the results of ongoing research to tame the
                 runtime overheads of gradual typing in the context of a
                 prototype compiler, named Grift, that we are developing
                 at Indiana University.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "DLS '17 conference proceedings.",
}

@Article{Silva:2017:ICL,
  author =       "Leonardo Humberto Silva and Marco Tulio Valente and
                 Alexandre Bergel and Nicolas Anquetil and Anne Etien",
  title =        "Identifying Classes in Legacy {JavaScript} Code",
  journal =      j-J-SOFTW-EVOL-PROC,
  volume =       "29",
  number =       "8",
  pages =        "??--??",
  month =        aug,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1002/smr.1864",
  ISSN =         "2047-7473 (print), 2047-7481 (electronic)",
  ISSN-L =       "2047-7473",
  bibdate =      "Wed Jan 31 13:48:49 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsoftwevolproc.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Software: Evolution and Process",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)2047-7481",
}

@Article{Sondergaard:2017:CTD,
  author =       "Hans S{\o}ndergaard and Stephan E. Korsholm and Anders
                 P. Ravn",
  title =        "Conformance test development with the {Java} modeling
                 language",
  journal =      j-CCPE,
  volume =       "29",
  number =       "22",
  pages =        "??--??",
  day =          "25",
  month =        nov,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4071",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Dec 30 09:11:59 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Srikanth:2017:CVU,
  author =       "Akhilesh Srikanth and Burak Sahin and William R.
                 Harris",
  title =        "Complexity verification using guided theorem
                 enumeration",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "1",
  pages =        "639--652",
  month =        jan,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093333.3009864",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:14 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Determining if a given program satisfies a given bound
                 on the amount of resources that it may use is a
                 fundamental problem with critical practical
                 applications. Conventional automatic verifiers for
                 safety properties cannot be applied to address this
                 problem directly because such verifiers target
                 properties expressed in decidable theories; however,
                 many practical bounds are expressed in nonlinear
                 theories, which are undecidable. In this work, we
                 introduce an automatic verification algorithm, CAMPY,
                 that determines if a given program P satisfies a given
                 resource bound B, which may be expressed using
                 polynomial, exponential, and logarithmic terms. The key
                 technical contribution behind our verifier is an
                 interpolating theorem prover for non-linear theories
                 that lazily learns a sufficiently accurate
                 approximation of non-linear theories by selectively
                 grounding theorems of the nonlinear theory that are
                 relevant to proving that P satisfies B. To evaluate
                 CAMPY, we implemented it to target Java Virtual Machine
                 bytecode. We applied CAMPY to verify that over 20
                 solutions submitted for programming problems hosted on
                 popular online coding platforms satisfy or do not
                 satisfy expected complexity bounds.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "POPL '17 conference proceedings.",
}

@Article{Steindorfer:2017:TSP,
  author =       "Michael J. Steindorfer and Jurgen J. Vinju",
  title =        "Towards a software product line of trie-based
                 collections",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "168--172",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993251",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Collection data structures in standard libraries of
                 programming languages are designed to excel for the
                 average case by carefully balancing memory footprint
                 and runtime performance. These implicit design
                 decisions and hard-coded trade-offs do constrain users
                 from using an optimal variant for a given problem.
                 Although a wide range of specialized collections is
                 available for the Java Virtual Machine (JVM), they
                 introduce yet another dependency and complicate user
                 adoption by requiring specific Application Program
                 Interfaces (APIs) incompatible with the standard
                 library. A product line for collection data structures
                 would relieve library designers from optimizing for the
                 general case. Furthermore, a product line allows
                 evolving the potentially large code base of a
                 collection family efficiently. The challenge is to find
                 a small core framework for collection data structures
                 which covers all variations without exhaustively
                 listing them, while supporting good performance at the
                 same time. We claim that the concept of Array Mapped
                 Tries (AMTs) embodies a high degree of commonality in
                 the sub-domain of immutable collection data structures.
                 AMTs are flexible enough to cover most of the
                 variability, while minimizing code bloat in the
                 generator and the generated code. We implemented a Data
                 Structure Code Generator (DSCG) that emits immutable
                 collections based on an AMT skeleton foundation. The
                 generated data structures outperform competitive
                 hand-optimized implementations, and the generator still
                 allows for customization towards specific workloads.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Stilkerich:2017:PGU,
  author =       "Isabella Stilkerich and Clemens Lang and Christoph
                 Erhardt and Christian Bay and Michael Stilkerich",
  title =        "The Perfect Getaway: Using Escape Analysis in Embedded
                 Real-Time Systems",
  journal =      j-TECS,
  volume =       "16",
  number =       "4",
  pages =        "99:1--99:30",
  month =        aug,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3035542",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Mon Aug 14 18:53:33 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  abstract =     "The use of a managed, type-safe language such as Java
                 in real-time and embedded systems offers productivity
                 and, in particular, safety and dependability benefits
                 at a reasonable cost. It has been shown for commodity
                 systems that Escape Analysis (EA) enables a set of
                 useful optimizations, and benefits from the properties
                 of a type-safe language. In this article, we explore
                 the application of escape analysis in KESO [Stilkerich
                 et al. 2012], a Java ahead-of-time compiler targeting
                 embedded real-time systems. We present specific
                 applications of EA for embedded programs that go beyond
                 the widely known stack-allocation and synchronization
                 optimizations such as extended remote-procedure-call
                 (RPC) support for software-isolated applications,
                 automated inference of immutable data, or improved
                 upper space and time bounds for worst-case
                 estimations.",
  acknowledgement = ack-nhfb,
  articleno =    "99",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J840",
}

@Article{Strom:2017:HLR,
  author =       "T{\'o}rur Biskopst{\o} Str{\o}m and Wolfgang Puffitsch
                 and Martin Schoeberl",
  title =        "Hardware locks for a real-time {Java} chip
                 multiprocessor",
  journal =      j-CCPE,
  volume =       "29",
  number =       "6",
  pages =        "??--??",
  day =          "25",
  month =        mar,
  year =         "2017",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.3950",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Fri Mar 31 19:12:51 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
}

@Article{Subercaze:2017:UPT,
  author =       "Julien Subercaze and Christophe Gravier and Syed
                 Gillani and Abderrahmen Kammoun and Fr{\'e}d{\'e}rique
                 Laforest",
  title =        "{Upsortable}: programming top-$k$ queries over data
                 streams",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "10",
  number =       "12",
  pages =        "1873--1876",
  month =        aug,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.14778/3137765.3137797",
  ISSN =         "2150-8097",
  bibdate =      "Tue Oct 10 17:16:19 MDT 2017",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Top-$k$ queries over data streams is a well studied
                 problem. There exists numerous systems allowing to
                 process continuous queries over sliding windows. At the
                 opposite, non-append only streams call for ad-hoc
                 solutions, e.g. tailor-made solutions implemented in a
                 mainstream programming language. In the meantime, the
                 Stream API and lambda expressions have been added in
                 Java 8, thus gaining powerful operations for data
                 stream processing. However, the Java Collections
                 Framework does not provide data structures to safely
                 and conveniently support sorted collections of evolving
                 data. In this paper, we demonstrate Upsortable, an
                 annotation-based approach that allows to use existing
                 sorted collections from the standard Java API for
                 dynamic data management. Our approach relies on a
                 combination of pre-compilation abstract syntax tree
                 modifications and runtime analysis of bytecode.
                 Upsortable offers the developer a safe and
                 time-efficient solution for developing top-$k$ queries
                 on data streams while keeping a full compatibility with
                 standard Java.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Sun:2017:AJP,
  author =       "Kwangwon Sun and Sukyoung Ryu",
  title =        "Analysis of {JavaScript} Programs: Challenges and
                 Research Trends",
  journal =      j-COMP-SURV,
  volume =       "50",
  number =       "4",
  pages =        "59:1--59:??",
  month =        nov,
  year =         "2017",
  CODEN =        "CMSVAN",
  DOI =          "https://doi.org/10.1145/3106741",
  ISSN =         "0360-0300 (print), 1557-7341 (electronic)",
  ISSN-L =       "0360-0300",
  bibdate =      "Sat Jan 20 09:25:00 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compsurv.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "JavaScript has been a de facto standard language for
                 client-side web programs, and now it is expanding its
                 territory to general purpose programs. In this article,
                 we classify the client-side JavaScript research for the
                 last decade or so into six topics: static analysis,
                 dynamic analysis, formalization and reasoning, type
                 safety and JIT optimization, security for web
                 applications, and empirical studies. Because the
                 majority of the research has focused on static and
                 dynamic analyses of JavaScript, we evaluate research
                 trends in the analysis of JavaScript first and then the
                 other topics. Finally, we discuss possible future
                 research directions with open challenges.",
  acknowledgement = ack-nhfb,
  articleno =    "59",
  fjournal =     "ACM Computing Surveys",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J204",
}

@Article{Tan:2017:EPP,
  author =       "Tian Tan and Yue Li and Jingling Xue",
  title =        "Efficient and precise points-to analysis: modeling the
                 heap by merging equivalent automata",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "278--291",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062360",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Mainstream points-to analysis techniques for
                 object-oriented languages rely predominantly on the
                 allocation-site abstraction to model heap objects. We
                 present MAHJONG, a novel heap abstraction that is
                 specifically developed to address the needs of an
                 important class of type-dependent clients, such as call
                 graph construction, devirtualization and may-fail
                 casting. By merging equivalent automata representing
                 type-consistent objects that are created by the
                 allocation-site abstraction, MAHJONG enables an
                 allocation-site-based points-to analysis to run
                 significantly faster while achieving nearly the same
                 precision for type-dependent clients. MAHJONG is simple
                 conceptually, efficient, and drops easily on any
                 allocation-site-based points-to analysis. We
                 demonstrate its effectiveness by discussing some
                 insights on why it is a better alternative of the
                 allocation-site abstraction for type-dependent clients
                 and evaluating it extensively on 12 large real-world
                 Java programs with five context-sensitive points-to
                 analyses and three widely used type-dependent clients.
                 MAHJONG is expected to provide significant benefits for
                 many program analyses where call graphs are required.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Thiessen:2017:CTP,
  author =       "Rei Thiessen and Ondrej Lhot{\'a}k",
  title =        "Context transformations for pointer analysis",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "263--277",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062359",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Points-to analysis for Java benefits greatly from
                 context sensitivity. CFL-reachability and k -limited
                 context strings are two approaches to obtaining context
                 sensitivity with different advantages: CFL-reachability
                 allows local reasoning about data-value flow and thus
                 is suitable for demand-driven analyses, whereas k
                 -limited analyses allow object sensitivity which is a
                 superior calling context abstraction for
                 object-oriented languages. We combine the advantages of
                 both approaches to obtain a context-sensitive analysis
                 that is as precise as k -limited context strings, but
                 is more efficient to compute. Our key insight is based
                 on a novel abstraction of contexts adapted from
                 CFL-reachability that represents a relation between two
                 calling contexts as a composition of transformations
                 over contexts. We formulate pointer analysis in an
                 algebraic structure of context transformations, which
                 is a set of functions over calling contexts closed
                 under function composition. We show that the context
                 representation of context-string-based analyses is an
                 explicit enumeration of all input and output values of
                 context transformations. CFL-reachability-based pointer
                 analysis is formulated to use call-strings as contexts,
                 but the context transformations concept can be applied
                 to any context abstraction used in k -limited analyses,
                 including object- and type-sensitive analysis. The
                 result is a more efficient algorithm for computing
                 context-sensitive results for a wide variety of context
                 configurations.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@InProceedings{Tomescu:2017:CEN,
  author =       "A. Tomescu and S. Devadas",
  booktitle =    "2017 IEEE Symposium on Security and Privacy (SP)",
  title =        "{Catena}: Efficient Non-equivocation via {Bitcoin}",
  publisher =    pub-IEEE,
  address =      pub-IEEE:adr,
  pages =        "393--409",
  month =        may,
  year =         "2017",
  DOI =          "https://doi.org/10.1109/SP.2017.19",
  ISSN =         "",
  bibdate =      "Thu Nov 30 15:24:52 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/bitcoin.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  keywords =     "adversarial server; Bandwidth; bitcoinj library;
                 Catena; CONIKS; efficiently-verifiable {Bitcoin}
                 witnessing scheme; file servers; Java; key transparency
                 scheme; nonequivocation; OP_RETURN transaction chain;
                 Prototypes; Public key; public key cryptography;
                 public-key directory; Servers; Software; {Bitcoin};
                 {Bitcoin} blockchain",
}

@Article{Tommasel:2017:SJL,
  author =       "Antonela Tommasel and Daniela Godoy and Alejandro
                 Zunino",
  title =        "{SMArtOp}: a {Java} library for distributing
                 high-dimensional sparse-matrix arithmetic operations",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "150",
  number =       "??",
  pages =        "26--30",
  day =          "15",
  month =        dec,
  year =         "2017",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Mon Oct 30 08:29:26 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642317301260",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Varier:2017:TNJ,
  author =       "K. Muraleedhara Varier and V. Sankar and M. P.
                 Gangadathan",
  title =        "{TrackEtching} --- A {Java} based code for etched
                 track profile calculations in {SSNTDs}",
  journal =      j-COMP-PHYS-COMM,
  volume =       "218",
  number =       "??",
  pages =        "43--47",
  month =        sep,
  year =         "2017",
  CODEN =        "CPHCBZ",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Wed Jul 26 06:22:13 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465517301273",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Viotti:2017:HRH,
  author =       "Paolo Viotti and Dan Dobre and Marko Vukoli{\'c}",
  title =        "{Hybris}: Robust Hybrid Cloud Storage",
  journal =      j-TOS,
  volume =       "13",
  number =       "3",
  pages =        "27:1--27:??",
  month =        oct,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3119896",
  ISSN =         "1553-3077 (print), 1553-3093 (electronic)",
  ISSN-L =       "1553-3077",
  bibdate =      "Mon Oct 30 08:04:10 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tos.bib",
  abstract =     "Besides well-known benefits, commodity cloud storage
                 also raises concerns that include security,
                 reliability, and consistency. We present Hybris
                 key-value store, the first robust hybrid cloud storage
                 system, aiming at addressing these concerns leveraging
                 both private and public cloud resources. Hybris
                 robustly replicates metadata on trusted private
                 premises (private cloud), separately from data, which
                 are dispersed (using replication or erasure coding)
                 across multiple untrusted public clouds. Hybris
                 maintains metadata stored on private premises at the
                 order of few dozens of bytes per key, avoiding the
                 scalability bottleneck at the private cloud. In turn,
                 the hybrid design allows Hybris to efficiently and
                 robustly tolerate cloud outages but also potential
                 malice in clouds without overhead. Namely, to tolerate
                 up to $f$ malicious clouds, in the common case of the
                 Hybris variant with data replication, writes replicate
                 data across $ f + 1$ clouds, whereas reads involve a
                 single cloud. In the worst case, only up to $f$
                 additional clouds are used. This is considerably better
                 than earlier multi-cloud storage systems that required
                 costly $ 3 f + 1$ clouds to mask $f$ potentially
                 malicious clouds. Finally, Hybris leverages strong
                 metadata consistency to guarantee to Hybris
                 applications strong data consistency without any
                 modifications to the eventually consistent public
                 clouds. We implemented Hybris in Java and evaluated it
                 using a series of micro and macro-benchmarks. Our
                 results show that Hybris significantly outperforms
                 comparable multi-cloud storage systems and approaches
                 the performance of bare-bone commodity public cloud
                 storage.",
  acknowledgement = ack-nhfb,
  articleno =    "27",
  fjournal =     "ACM Transactions on Storage",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J960",
}

@Article{Wade:2017:AVJ,
  author =       "April W. Wade and Prasad A. Kulkarni and Michael R.
                 Jantz",
  title =        "{AOT} vs. {JIT}: impact of profile data on code
                 quality",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "4",
  pages =        "1--10",
  month =        may,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140582.3081037",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Just-in-time (JIT) compilation during program
                 execution and ahead-of-time (AOT) compilation during
                 software installation are alternate techniques used by
                 managed language virtual machines (VM) to generate
                 optimized native code while simultaneously achieving
                 binary code portability and high execution performance.
                 Profile data collected by JIT compilers at run-time can
                 enable profile-guided optimizations (PGO) to customize
                 the generated native code to different program inputs.
                 AOT compilation removes the speed and energy overhead
                 of online profile collection and dynamic compilation,
                 but may not be able to achieve the quality and
                 performance of customized native code. The goal of this
                 work is to investigate and quantify the implications of
                 the AOT compilation model on the quality of the
                 generated native code for current VMs. First, we
                 quantify the quality of native code generated by the
                 two compilation models for a state-of-the-art (HotSpot)
                 Java VM. Second, we determine how the amount of profile
                 data collected affects the quality of generated code.
                 Third, we develop a mechanism to determine the accuracy
                 or similarity for different profile data for a given
                 program run, and investigate how the accuracy of
                 profile data affects its ability to effectively guide
                 PGOs. Finally, we categorize the profile data types in
                 our VM and explore the contribution of each such
                 category to performance.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "LCTES '17 conference proceedings.",
}

@Article{Wang:2017:CJ,
  author =       "Yanlin Wang and Haoyuan Zhang and Bruno C. d. S.
                 Oliveira and Marco Servetto",
  title =        "Classless {Java}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "14--24",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993238",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "This paper presents an OO style without classes, which
                 we call interface-based object-oriented programming
                 (IB). IB is a natural extension of closely related
                 ideas such as traits. Abstract state operations provide
                 a new way to deal with state, which allows for
                 flexibility not available in class-based languages. In
                 IB state can be type-refined in subtypes. The
                 combination of a purely IB style and type-refinement
                 enables powerful idioms using multiple inheritance and
                 state. To introduce IB to programmers we created
                 Classless Java: an embedding of IB directly into Java.
                 Classless Java uses annotation processing for code
                 generation and relies on new features of Java 8 for
                 interfaces. The code generation techniques used in
                 Classless Java have interesting properties, including
                 guarantees that the generated code is type-safe and
                 good integration with IDEs. Usefulness of IB and
                 Classless Java is shown with examples and case
                 studies.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Wang:2017:JRJ,
  author =       "Kaiyuan Wang and Sarfraz Khurshid and Milos Gligoric",
  title =        "{JPR}: Replaying {JPF} Traces Using Standard {JVM}",
  journal =      j-SIGSOFT,
  volume =       "42",
  number =       "4",
  pages =        "1--5",
  month =        oct,
  year =         "2017",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3149485.3149494",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Aug 1 17:16:48 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Java PathFinder (JPF) is a backtrackable Java Virtual
                 Machine (JVM), which is implemented in Java and runs on
                 a standard JVM (e.g., Oracle HotSpot). Thus, a JPF
                 developer can use off-the-shelf Java debuggers (e.g.,
                 jdb) when debugging code that makes up JPF. JPF
                 explores all non-deterministic executions of a given
                 target program and monitors for property violations. To
                 facilitate debugging of the target program, JPF can
                 capture and replay the execution trace that leads to a
                 property violation. While the deterministic replay is
                 invaluable, the replay with JPF does not allow the
                 developer to attach an off-the-shelf Java debugger to
                 the target program (e.g., step through the application
                 code, set breakpoints, etc.). We present a technique,
                 dubbed JPR, to improve the debugging experience of the
                 JPF captured traces by migrating the JPF traces to a
                 new format that can be executed using the standard JVM.
                 JPR annotates each JPF trace, during the capture phase,
                 with extra data (e.g., instruction index, instruction
                 count, etc.); the annotated trace is then used to
                 instrument Java bytecode to enforce the same execution
                 trace on a standard JVM. JPR is compatible with various
                 optimizations, e.g., state matching and partial-order
                 reduction. We evaluated JPR on all multithreaded Java
                 programs in the official JPF distribution. Our results
                 show that JPR successfully replayed all JPF traces on
                 the standard JVM with reasonable overhead during both
                 recording and replaying.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Wurthinger:2017:PPE,
  author =       "Thomas W{\"u}rthinger and Christian Wimmer and
                 Christian Humer and Andreas W{\"o}{\ss} and Lukas
                 Stadler and Chris Seaton and Gilles Duboscq and Doug
                 Simon and Matthias Grimmer",
  title =        "Practical partial evaluation for high-performance
                 dynamic language runtimes",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "662--676",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062381",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Most high-performance dynamic language virtual
                 machines duplicate language semantics in the
                 interpreter, compiler, and runtime system. This
                 violates the principle to not repeat yourself. In
                 contrast, we define languages solely by writing an
                 interpreter. The interpreter performs specializations,
                 e.g., augments the interpreted program with type
                 information and profiling information. Compiled code is
                 derived automatically using partial evaluation while
                 incorporating these specializations. This makes partial
                 evaluation practical in the context of dynamic
                 languages: It reduces the size of the compiled code
                 while still compiling all parts of an operation that
                 are relevant for a particular program. When a
                 speculation fails, execution transfers back to the
                 interpreter, the program re-specializes in the
                 interpreter, and later partial evaluation again
                 transforms the new state of the interpreter to compiled
                 code. We evaluate our approach by comparing our
                 implementations of JavaScript, Ruby, and R with
                 best-in-class specialized production implementations.
                 Our general-purpose compilation system is competitive
                 with production systems even when they have been
                 heavily optimized for the one language they support.
                 For our set of benchmarks, our speedup relative to the
                 V8 JavaScript VM is 0.83x, relative to JRuby is 3.8x,
                 and relative to GNU R is 5x.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Xuan:2017:NAR,
  author =       "J. Xuan and M. Martinez and F. DeMarco and M.
                 Cl{\'e}ment and S. L. Marcote and T. Durieux and D. {Le
                 Berre} and M. Monperrus",
  title =        "{Nopol}: Automatic Repair of Conditional Statement
                 Bugs in {Java} Programs",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "43",
  number =       "1",
  pages =        "34--55",
  month =        jan,
  year =         "2017",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2016.2560811",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 1 19:49:24 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7463060",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Yan:2017:AAA,
  author =       "Hua Yan and Yulei Sui and Shiping Chen and Jingling
                 Xue",
  title =        "{AutoFix}: an automated approach to memory leak fixing
                 on value-flow slices for {C} programs",
  journal =      j-SIGAPP,
  volume =       "16",
  number =       "4",
  pages =        "38--50",
  month =        jan,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3040575.3040579",
  ISSN =         "1559-6915 (print), 1931-0161 (electronic)",
  ISSN-L =       "1559-6915",
  bibdate =      "Thu Jan 23 10:25:02 MST 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigapp2010.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3040575.3040579",
  abstract =     "C is the most widely used programming language for
                 developing embedded software, operating systems, and
                 device drivers. Unlike programs written in managed
                 languages like Java, C programs rely on explicit memory
                 management, and are therefore prone to \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGAPP Applied Computing Review",
  journal-URL =  "https://dl.acm.org/loi/sigapp",
}

@Article{Yang:2017:EJV,
  author =       "Byung-Sun Yang and Jae-Yun Kim and Soo-Mook Moon",
  title =        "Exceptionization: a {Java} {VM} Optimization for
                 Non-{Java} Languages",
  journal =      j-TACO,
  volume =       "14",
  number =       "1",
  pages =        "5:1--5:??",
  month =        apr,
  year =         "2017",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3046681",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Mon Jul 24 18:00:58 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Java virtual machine (JVM) has recently evolved into a
                 general-purpose language runtime environment to execute
                 popular programming languages such as JavaScript, Ruby,
                 Python, and Scala. These languages have complex
                 non-Java features, including dynamic typing and
                 first-class function, so additional language runtimes
                 (engines) are provided on top of the JVM to support
                 them with bytecode extensions. Although there are
                 high-performance JVMs with powerful just-in-time (JIT)
                 compilers, running these languages efficiently on the
                 JVM is still a challenge. This article introduces a
                 simple and novel technique for the JVM JIT compiler
                 called exceptionization to improve the performance of
                 JVM-based language runtimes. We observed that the JVM
                 executing some non-Java languages encounters at least 2
                 times more branch bytecodes than Java, most of which
                 are highly biased to take only one target.
                 Exceptionization treats such a highly biased branch as
                 some implicit exception-throwing instruction. This
                 allows the JVM JIT compiler to prune the infrequent
                 target of the branch from the frequent control flow,
                 thus compiling the frequent control flow more
                 aggressively with better optimization. If a pruned path
                 were taken, then it would run like a Java exception
                 handler, that is, a catch block. We also devised
                 de-exceptionization, a mechanism to cope with the case
                 when a pruned path is executed more often than
                 expected. Since exceptionization is a generic JVM
                 optimization, independent of any specific language
                 runtime, it would be generally applicable to other
                 language runtimes on the JVM. Our experimental result
                 shows that exceptionization accelerates the performance
                 of several non-Java languages. For example,
                 JavaScript-on-JVM runs faster by as much as 60\% and by
                 6\% on average, when experimented with the Octane
                 benchmark suite on Oracle's latest Nashorn JavaScript
                 engine and HotSpot 1.9 JVM. Furthermore, the
                 performance of Ruby-on-JVM shows an improvement by as
                 much as 60\% and by 6\% on average, while Python-on-JVM
                 improves by as much as 6\% and by 2\% on average. We
                 found that exceptionization is more effective to apply
                 to the branch bytecode of the language runtime itself
                 than the bytecode corresponding to the application code
                 or the bytecode of the Java class libraries. This
                 implies that the performance benefit of
                 exceptionization comes from better JIT compilation of
                 the language runtime of non-Java languages.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Yessenov:2017:DAD,
  author =       "Kuat Yessenov and Ivan Kuraj and Armando
                 Solar-Lezama",
  title =        "{DemoMatch}: {API} discovery from demonstrations",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "6",
  pages =        "64--78",
  month =        jun,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3140587.3062386",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:17 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "We introduce DemoMatch, a tool for API discovery that
                 allows the user to discover how to implement
                 functionality using a software framework by
                 demonstrating the functionality in existing
                 applications built with the same framework. DemoMatch
                 matches the demonstrations against a database of
                 execution traces called Semeru and generates code
                 snippets explaining how to use the functionality. We
                 evaluated DemoMatch on several case studies involving
                 Java Swing and Eclipse RCP.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '17 conference proceedings.",
}

@Article{Zacharopoulos:2017:EMM,
  author =       "Theologos Zacharopoulos and Pablo Inostroza and Tijs
                 van der Storm",
  title =        "Extensible modeling with managed data in {Java}",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "3",
  pages =        "25--35",
  month =        mar,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3093335.2993240",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Sat Sep 16 10:18:15 MDT 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Many model-driven development (MDD) tools employ
                 specialized frameworks and modeling languages, and
                 assume that the semantics of models is provided by some
                 form of code generation. As a result, programming
                 against models is cumbersome and does not integrate
                 well with ordinary programming languages and IDEs. In
                 this paper we present MD4J, a modeling approach for
                 embedding metamodels directly in Java, using plain
                 interfaces and annotations. The semantics is provided
                 by data managers that create and manipulate models.
                 This architecture enables two kinds of extensibility.
                 First, the data managers can be changed or extended to
                 obtain different base semantics of a model. This allows
                 a kind of aspect-oriented programming. Second, the
                 metamodels themselves can be extended with additional
                 fields and methods to modularly enrich a modeling
                 language. We illustrate our approach using the example
                 of state machines, discuss the implementation, and
                 evaluate it with two case-studies: the execution of UML
                 activity diagrams and an aspect-oriented refactoring of
                 JHotDraw.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "GPCE '16 conference proceedings.",
}

@Article{Zhang:2017:ACE,
  author =       "Minjia Zhang and Swarnendu Biswas and Michael D.
                 Bond",
  title =        "Avoiding consistency exceptions under strong memory
                 models",
  journal =      j-SIGPLAN,
  volume =       "52",
  number =       "9",
  pages =        "115--127",
  month =        sep,
  year =         "2017",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3156685.3092271",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Fri Dec 1 18:56:13 MST 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Shared-memory languages and systems generally provide
                 weak or undefined semantics for executions with data
                 races. Prior work has proposed memory consistency
                 models that ensure well-defined, easy-to-understand
                 semantics based on region serializability (RS), but the
                 resulting system may throw a consistency exception in
                 the presence of a data race. Consistency exceptions can
                 occur unexpectedly even in well-tested programs,
                 hurting availability and thus limiting the practicality
                 of RS-based memory models. To our knowledge, this paper
                 is the first to consider the problem of availability
                 for memory consistency models that throw consistency
                 exceptions. We first extend existing approaches that
                 enforce RSx, a memory model based on serializability of
                 synchronization-free regions (SFRs), to avoid region
                 conflicts and thus consistency exceptions. These new
                 approaches demonstrate both the potential for and
                 limitations of avoiding consistency exceptions under
                 RSx. To improve availability further, we introduce (1)
                 a new memory model called RIx based on isolation of
                 SFRs and (2) a new approach called Avalon that provides
                 RIx. We demonstrate two variants of Avalon that offer
                 different performance--availability tradeoffs for RIx.
                 An evaluation on real Java programs shows that this
                 work's novel approaches are able to reduce consistency
                 exceptions, thereby improving the applicability of
                 strong memory consistency models. Furthermore, the
                 approaches provide compelling points in the
                 performance--availability tradeoff space for memory
                 consistency enforcement. RIx and Avalon thus represent
                 a promising direction for tackling the challenge of
                 availability under strong consistency models that throw
                 consistency exceptions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '17 conference proceedings.",
}

@Article{Acar:2018:PCM,
  author =       "Umut A. Acar and Vitaly Aksenov and Arthur
                 Chargu{\'e}raud and Mike Rainey",
  title =        "Performance challenges in modular parallel programs",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "1",
  pages =        "381--382",
  month =        jan,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3200691.3178516",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:56 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Over the past decade, many programming languages and
                 systems for parallel-computing have been developed,
                 including Cilk, Fork/Join Java, Habanero Java, Parallel
                 Haskell, Parallel ML, and X10. Although these systems
                 raise the level of abstraction at which parallel code
                 are written, performance continues to require the
                 programmer to perform extensive optimizations and
                 tuning, often by taking various architectural details
                 into account. One such key optimization is granularity
                 control, which requires the programmer to determine
                 when and how parallel tasks should be sequentialized.
                 In this paper, we briefly describe some of the
                 challenges associated with automatic granularity
                 control when trying to achieve portable performance for
                 parallel programs with arbitrary nesting of parallel
                 constructs. We consider a result from the
                 functional-programming community, whose starting point
                 is to consider an ``oracle'' that can predict the work
                 of parallel codes, and thereby control granularity. We
                 discuss the challenges in implementing such an oracle
                 and proving that it has the desired theoretical
                 properties under the nested-parallel programming
                 model.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '18 proceedings.",
}

@Article{Accioly:2018:USS,
  author =       "Paola Accioly and Paulo Borba and Guilherme
                 Cavalcanti",
  title =        "Understanding semi-structured merge conflict
                 characteristics in open-source {Java} projects",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "23",
  number =       "4",
  pages =        "2051--2085",
  month =        aug,
  year =         "2018",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-017-9586-1",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Wed Sep 26 14:34:26 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-017-9586-1",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Akram:2018:WRG,
  author =       "Shoaib Akram and Jennifer B. Sartor and Kathryn S.
                 McKinley and Lieven Eeckhout",
  title =        "Write-rationing garbage collection for hybrid
                 memories",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "62--77",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192392",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Emerging Non-Volatile Memory (NVM) technologies offer
                 high capacity and energy efficiency compared to DRAM,
                 but suffer from limited write endurance and longer
                 latencies. Prior work seeks the best of both
                 technologies by combining DRAM and NVM in hybrid
                 memories to attain low latency, high capacity, energy
                 efficiency, and durability. Coarsegrained hardware and
                 OS optimizations then spread writes out (wear-leveling)
                 and place highly mutated pages in DRAM to extend NVM
                 lifetimes. Unfortunately even with these coarse-grained
                 methods, popular Java applications exact impractical
                 NVM lifetimes of 4 years or less. This paper shows how
                 to make hybrid memories practical, without changing the
                 programming model, by enhancing garbage collection in
                 managed language runtimes. We find object write
                 behaviors offer two opportunities: (1) 70\% of writes
                 occur to newly allocated objects, and (2) 2\% of
                 objects capture 81\% of writes to mature objects. We
                 introduce write-rationing garbage collectors that
                 exploit these fine-grained behaviors. They extend NVM
                 lifetimes by placing highly mutated objects in DRAM and
                 read-mostly objects in NVM. We implement two such
                 systems. (1) Kingsguard-nursery places new allocation
                 in DRAM and survivors in NVM, reducing NVM writes by 5$
                 \times $ versus NVM only with wear-leveling. (2)
                 Kingsguard-writers (KG-W) places nursery objects in
                 DRAM and survivors in a DRAM observer space. It
                 monitors all mature object writes and moves unwritten
                 mature objects from DRAM to NVM. Because most mature
                 objects are unwritten, KG-W exploits NVM capacity while
                 increasing NVM lifetimes by 11$ \times $. It reduces
                 the energy-delay product by 32\% over DRAM-only and
                 29\% over NVM-only. This work opens up new avenues for
                 making hybrid memories practical.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Alimadadi:2018:FBP,
  author =       "Saba Alimadadi and Di Zhong and Magnus Madsen and
                 Frank Tip",
  title =        "Finding broken promises in asynchronous {JavaScript}
                 programs",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "162:1--162:26",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276532",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276532",
  abstract =     "Recently, promises were added to ECMAScript 6, the
                 JavaScript standard, in order to provide better support
                 for the asynchrony that arises in user interfaces,
                 network communication, and non-blocking I/O. Using
                 promises, programmers can avoid common pitfalls of
                 event-driven programming such as event races and the
                 deeply nested counterintuitive control ow referred to
                 as ``callback hell''. Unfortunately, promises have
                 complex semantics and the intricate control- and
                 data-flow present in promise-based code hinders program
                 comprehension and can easily lead to bugs. The promise
                 graph was proposed as a graphical aid for understanding
                 and debugging promise-based code. However, it did not
                 cover all promise-related features in ECMAScript 6, and
                 did not present or evaluate any technique for
                 constructing the promise graphs. In this paper, we
                 extend the notion of promise graphs to include all
                 promise-related features in ECMAScript 6, including
                 default reactions, exceptions, and the synchronization
                 operations race and all. Furthermore, we report on the
                 construction and evaluation of PromiseKeeper, which
                 performs a dynamic analysis to create promise graphs
                 and infer common promise anti-patterns. We evaluate
                 PromiseKeeper by applying it to 12 open source
                 promise-based Node.js applications. Our results suggest
                 that the promise graphs constructed by PromiseKeeper
                 can provide developers with valuable information about
                 occurrences of common anti-patterns in their
                 promise-based code, and that promise graphs can be
                 constructed with acceptable run-time overhead.",
  acknowledgement = ack-nhfb,
  articleno =    "162",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Alon:2018:GPB,
  author =       "Uri Alon and Meital Zilberstein and Omer Levy and Eran
                 Yahav",
  title =        "A general path-based representation for predicting
                 program properties",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "404--419",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192412",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Predicting program properties such as names or
                 expression types has a wide range of applications. It
                 can ease the task of programming, and increase
                 programmer productivity. A major challenge when
                 learning from programs is how to represent programs in
                 a way that facilitates effective learning. We present a
                 general path-based representation for learning from
                 programs. Our representation is purely syntactic and
                 extracted automatically. The main idea is to represent
                 a program using paths in its abstract syntax tree
                 (AST). This allows a learning model to leverage the
                 structured nature of code rather than treating it as a
                 flat sequence of tokens. We show that this
                 representation is general and can: (i) cover different
                 prediction tasks, (ii) drive different learning
                 algorithms (for both generative and discriminative
                 models), and (iii) work across different programming
                 languages. We evaluate our approach on the tasks of
                 predicting variable names, method names, and full
                 types. We use our representation to drive both
                 CRF-based and word2vec-based learning, for programs of
                 four languages: JavaScript, Java, Python and C\#. Our
                 evaluation shows that our approach obtains better
                 results than task-specific handcrafted representations
                 across different tasks and programming languages.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Anonymous:2018:BRS,
  author =       "Anonymous",
  title =        "Book Review: {{\booktitle{Simplifying JavaScript}}, by
                 Joe Morgan. Published by Pragmatic Bookshelf. ISBN:
                 978-1-68050-288-6. Price: \$39.95, 282 pgs,
                 paperback}",
  journal =      j-NETWORK-SECURITY,
  volume =       "2018",
  number =       "5",
  pages =        "5--5",
  month =        may,
  year =         "2018",
  CODEN =        "NTSCF5",
  ISSN =         "1353-4858 (print), 1872-9371 (electronic)",
  ISSN-L =       "1353-4858",
  bibdate =      "Thu Sep 12 12:57:51 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/network-security.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1353485818300412",
  acknowledgement = ack-nhfb,
  fjournal =     "Network Security",
  journal-URL =  "https://www.sciencedirect.com/journal/network-security",
}

@Article{Bastani:2018:ALP,
  author =       "Osbert Bastani and Rahul Sharma and Alex Aiken and
                 Percy Liang",
  title =        "Active learning of points-to specifications",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "678--692",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192383",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "When analyzing programs, large libraries pose
                 significant challenges to static points-to analysis. A
                 popular solution is to have a human analyst provide
                 points-to specifications that summarize relevant
                 behaviors of library code, which can substantially
                 improve precision and handle missing code such as
                 native code. We propose Atlas, a tool that
                 automatically infers points-to specifications. Atlas
                 synthesizes unit tests that exercise the library code,
                 and then infers points-to specifications based on
                 observations from these executions. Atlas automatically
                 infers specifications for the Java standard library,
                 and produces better results for a client static
                 information flow analysis on a benchmark of 46 Android
                 apps compared to using existing handwritten
                 specifications.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Baxter:2018:PAS,
  author =       "Samuel Baxter and Rachit Nigam and Joe Gibbs Politz
                 and Shriram Krishnamurthi and Arjun Guha",
  title =        "Putting in all the stops: execution control for
                 {JavaScript}",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "30--45",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192370",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Scores of compilers produce JavaScript, enabling
                 programmers to use many languages on the Web, reuse
                 existing code, and even use Web IDEs. Unfortunately,
                 most compilers inherit the browser's compromised
                 execution model, so long-running programs freeze the
                 browser tab, infinite loops crash IDEs, and so on. The
                 few compilers that avoid these problems suffer poor
                 performance and are difficult to engineer. This paper
                 presents Stopify, a source-to-source compiler that
                 extends JavaScript with debugging abstractions and
                 blocking operations, and easily integrates with
                 existing compilers. We apply Stopify to ten programming
                 languages and develop a Web IDE that supports stopping,
                 single-stepping, breakpointing, and long-running
                 computations. For nine languages, Stopify requires no
                 or trivial compiler changes. For eight, our IDE is the
                 first that provides these features. Two of our subject
                 languages have compilers with similar features.
                 Stopify's performance is competitive with these
                 compilers and it makes them dramatically simpler.
                 Stopify's abstractions rely on first-class
                 continuations, which it provides by compiling
                 JavaScript to JavaScript. We also identify
                 sub-languages of JavaScript that compilers implicitly
                 use, and exploit these to improve performance. Finally,
                 Stopify needs to repeatedly interrupt and resume
                 program execution. We use a sampling-based technique to
                 estimate program speed that outperforms other
                 systems.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Black:2018:NPJ,
  author =       "N. Black",
  title =        "{Nicolai Parlog} on {Java 9} Modules",
  journal =      j-IEEE-SOFTWARE,
  volume =       "35",
  number =       "3",
  pages =        "101--104",
  month =        may # "\slash " # jun,
  year =         "2018",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2018.2141025",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "Interviews; JAR; Java; Java 9; Java archives; Java
                 modules; Java Platform Module System; JPMS; Nicolai
                 Parlog; Runtime; Software development; software
                 development; software engineering; Software Engineering
                 Radio",
}

@Article{Blackshear:2018:RCS,
  author =       "Sam Blackshear and Nikos Gorogiannis and Peter W.
                 O'Hearn and Ilya Sergey",
  title =        "{RacerD}: compositional static race detection",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "144:1--144:28",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276514",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276514",
  abstract =     "Automatic static detection of data races is one of the
                 most basic problems in reasoning about concurrency. We
                 present RacerD-a static program analysis for detecting
                 data races in Java programs which is fast, can scale to
                 large code, and has proven \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "144",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Boldi:2018:BMC,
  author =       "Paolo Boldi and Andrea Marino and Massimo Santini and
                 Sebastiano Vigna",
  title =        "{BUbiNG}: Massive Crawling for the Masses",
  journal =      j-TWEB,
  volume =       "12",
  number =       "2",
  pages =        "12:1--12:26",
  month =        jun,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3160017",
  ISSN =         "1559-1131 (print), 1559-114X (electronic)",
  ISSN-L =       "1559-1131",
  bibdate =      "Thu Jun 28 14:10:01 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pagerank.bib;
                 http://www.math.utah.edu/pub/tex/bib/tweb.bib",
  URL =          "https://dl.acm.org/citation.cfm?doid=3176641.3160017",
  abstract =     "Although web crawlers have been around for twenty
                 years by now, there is virtually no freely available,
                 open-source crawling software that guarantees high
                 throughput, overcomes the limits of single-machine
                 systems, and, at the same time, scales linearly with
                 the amount of resources available. This article aims at
                 filling this gap, through the description of BUbiNG,
                 our next-generation web crawler built upon the authors'
                 experience with UbiCrawler [9] and on the last ten
                 years of research on the topic. BUbiNG is an
                 open-source Java fully distributed crawler; a single
                 BUbiNG agent, using sizeable hardware, can crawl
                 several thousand pages per second respecting strict
                 politeness constraints, both host- and IP-based. Unlike
                 existing open-source distributed crawlers that rely on
                 batch techniques (like MapReduce), BUbiNG job
                 distribution is based on modern high-speed protocols to
                 achieve very high throughput.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on the Web (TWEB)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J1062",
  keywords =     "BUbiNG; centrality measures; distributed systems;
                 Java; PageRank; UbiCrawler; Web crawling",
}

@Article{Bouraqadi:2018:TDD,
  author =       "Noury Bouraqadi and Dave Mason",
  title =        "Test-driven development for generated portable
                 {Javascript} apps",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "161",
  number =       "??",
  pages =        "2--17",
  month =        "????",
  year =         "2018",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2018.02.003",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Tue May 29 05:45:13 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642318300595",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Brachthauser:2018:EHM,
  author =       "Jonathan Immanuel Brachth{\"a}user and Philipp
                 Schuster and Klaus Ostermann",
  title =        "Effect handlers for the masses",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "111:1--111:27",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276481",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276481",
  abstract =     "Effect handlers are a program structuring paradigm
                 with rising popularity in the functional programming
                 language community and can express many advanced
                 control flow abstractions. We present the first
                 implementation of effect handlers for Java --- an
                 \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "111",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Bruno:2018:DVM,
  author =       "Rodrigo Bruno and Paulo Ferreira and Ruslan Synytsky
                 and Tetiana Fydorenchyk and Jia Rao and Hang Huang and
                 Song Wu",
  title =        "Dynamic vertical memory scalability for {OpenJDK}
                 cloud applications",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "5",
  pages =        "59--70",
  month =        may,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3299706.3210567",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:58 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The cloud is an increasingly popular platform to
                 deploy applications as it lets cloud users to provide
                 resources to their applications as needed. Furthermore,
                 cloud providers are now starting to offer a
                 ``pay-as-you-use'' model in which users are only
                 charged for the resources that are really used instead
                 of paying for a statically sized instance. This new
                 model allows cloud users to save money, and cloud
                 providers to better utilize their hardware. However,
                 applications running on top of runtime environments
                 such as the Java Virtual Machine (JVM) cannot benefit
                 from this new model because they cannot dynamically
                 adapt the amount of used resources at runtime. In
                 particular, if an application needs more memory than
                 what was initially predicted at launch time, the JVM
                 will not allow the application to grow its memory
                 beyond the maximum value defined at launch time. In
                 addition, the JVM will hold memory that is no longer
                 being used by the application. This lack of dynamic
                 vertical scalability completely prevents the benefits
                 of the ``pay-as-you-use'' model, and forces users to
                 over-provision resources, and to lose money on unused
                 resources. We propose a new JVM heap sizing strategy
                 that allows the JVM to dynamically scale its memory
                 utilization according to the application's needs.
                 First, we provide a configurable limit on how much the
                 application can grow its memory. This limit is dynamic
                 and can be changed at runtime, as opposed to the
                 current static limit that can only be set at launch
                 time. Second, we adapt current Garbage Collection
                 policies that control how much the heap can grow and
                 shrink to better fit what is currently being used by
                 the application. The proposed solution is implemented
                 in the OpenJDK 9 HotSpot JVM, the new release of
                 OpenJDK. Changes were also introduced inside the
                 Parallel Scavenge collector and the Garbage First
                 collector (the new by-default collector in HotSpot).
                 Evaluation experiments using real workloads and data
                 show that, with negligible throughput and memory
                 overhead, dynamic vertical memory scalability can be
                 achieved. This allows users to save significant amounts
                 of money by not paying for unused resources, and cloud
                 providers to better utilize their physical machines.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ISMM '18 proceedings.",
}

@Article{Bruno:2018:SGC,
  author =       "Rodrigo Bruno and Paulo Ferreira",
  title =        "A Study on Garbage Collection Algorithms for Big Data
                 Environments",
  journal =      j-COMP-SURV,
  volume =       "51",
  number =       "1",
  pages =        "20:1--20:??",
  month =        apr,
  year =         "2018",
  CODEN =        "CMSVAN",
  DOI =          "https://doi.org/10.1145/3156818",
  ISSN =         "0360-0300 (print), 1557-7341 (electronic)",
  ISSN-L =       "0360-0300",
  bibdate =      "Sat Aug 31 09:04:34 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compsurv.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The need to process and store massive amounts of
                 data-Big Data-is a reality. In areas such as scientific
                 experiments, social networks management, credit card
                 fraud detection, targeted advertisement, and financial
                 analysis, massive amounts of information are generated
                 and processed daily to extract valuable, summarized
                 information. Due to its fast development cycle (i.e.,
                 less expensive to develop), mainly because of automatic
                 memory management, and rich community resources,
                 managed object-oriented programming languages (e.g.,
                 Java) are the first choice to develop Big Data
                 platforms (e.g., Cassandra, Spark) on which such Big
                 Data applications are executed. However, automatic
                 memory management comes at a cost. This cost is
                 introduced by the garbage collector, which is
                 responsible for collecting objects that are no longer
                 being used. Although current (classic) garbage
                 collection algorithms may be applicable to small-scale
                 applications, these algorithms are not appropriate for
                 large-scale Big Data environments, as they do not scale
                 in terms of throughput and pause times. In this work,
                 current Big Data platforms and their memory profiles
                 are studied to understand why classic algorithms (which
                 are still the most commonly used) are not appropriate,
                 and also to analyze recently proposed and relevant
                 memory management algorithms, targeted to Big Data
                 environments. The scalability of recent memory
                 management algorithms is characterized in terms of
                 throughput (improves the throughput of the application)
                 and pause time (reduces the latency of the application)
                 when compared to classic algorithms. The study is
                 concluded by presenting a taxonomy of the described
                 works and some open problems, with regard to Big Data
                 memory management, that could be addressed in future
                 works.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Computing Surveys",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J204",
}

@Article{Bultan:2018:SCA,
  author =       "Tevfik Bultan",
  title =        "Side-Channel Analysis via Symbolic Execution and Model
                 Counting",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "55--55",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3302416",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "An important problem in computer security is the
                 detection of side-channel vulnerabilities. Information
                 gained by observing nonfunctional properties of program
                 executions (i.e., sidechannels such as execution time
                 or memory usage) can enable attackers to infer secrets
                 that the program accesses (such as a password). In this
                 talk, I will discuss how symbolic execution, combined
                 with a model counting constraint solver, can be used
                 for quantifying side-channel leakage in Java programs.
                 I will also discuss automata-based model counting
                 techniques. We have implemented these techniques by
                 integrating our model counting constraint solver,
                 called Automata-Based model Counter (ABC), with the
                 symbolic execution tool Symbolic Path Finder (SPF).",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Chadha:2018:JAS,
  author =       "Gaurav Chadha",
  title =        "{JSCore}: architectural support for accelerating
                 {JavaScript} execution (short {WIP} paper)",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "6",
  pages =        "104--108",
  month =        jun,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3299710.3211343",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:58 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "JavaScript has seen meteoric growth in popularity as
                 it has increasingly become the language of choice for
                 developers, both for front-end web development and
                 server code development through various JavaScript
                 frameworks and Node.js. Part of the reason for its wide
                 use is that it is a prototype based language with
                 dynamic types, making it easy to learn and program in.
                 This flexibility and ease of programming comes at the
                 cost of performance. There are two sources of
                 significant slowdown. First, since the number and type
                 of properties of prototypes is dynamic, accessing a
                 property involves a slow dictionary lookup, as opposed
                 to it being present at a fixed offset from the base
                 address. Second, the dynamism in type of values
                 necessitates wrapping and unwrapping of values into
                 objects with a variety of checks including for type of
                 the value. To mitigate these performance problems, this
                 paper proposes JSCore, a core specialized for
                 JavaScript execution, that vastly reduces the
                 performance degradation due to the above two causes. It
                 uses a hardware lookup table to accelerate property
                 access, and extends the data path to store data types
                 with the data, nearly eliminating the second source of
                 slowdown. Combining the two, JSCore accelerates real
                 world JavaScript applications by 23\%.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "LCTES '18 proceedings.",
}

@Article{Christophe:2018:ODA,
  author =       "Laurent Christophe and Coen {De Roover} and Elisa
                 Gonzalez Boix and Wolfgang {De Meuter}",
  title =        "Orchestrating dynamic analyses of distributed
                 processes for full-stack {JavaScript} programs",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "9",
  pages =        "107--118",
  month =        nov,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3393934.3278135",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Apr 8 13:49:51 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3393934.3278135",
  abstract =     "Dynamic analyses are commonly implemented by
                 instrumenting the program under analysis. Examples of
                 such analyses for JavaScript range from checkers of
                 user- defined invariants to concolic testers. For a
                 full-stack JavaScript program, these analyses
                 \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "https://dl.acm.org/loi/sigplan",
}

@Article{Cordeiro:2018:BJV,
  author =       "Lucas C. Cordeiro and Daniel Kroening and Peter
                 Schrammel",
  title =        "Benchmarking of {Java} Verification Tools at the
                 {Software Verification Competition (SV-COMP)}",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "56--56",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3282529",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Empirical evaluation of verification tools by
                 benchmarking is a common method in software
                 verification research. The Competition on Software
                 Verification (SV-COMP) aims at standardization and
                 reproducibility of benchmarking within the software
                 verification community in an annual basis, through
                 comparative evaluation of fully-automatic software
                 verifiers for C programs. Building upon this success,
                 we describe here how to re-use the ecosystem developed
                 around SV-COMP for benchmarking Java verification
                 tools. We provide a detailed description of the rules
                 for benchmark verification tasks, the integration of
                 new tools into SV-COMP's benchmarking framework and
                 also give experimental results of a benchmarking run on
                 three state-of-the-art Java verification tools, JPF-SE,
                 JayHorn and JBMC.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Daloze:2018:PDL,
  author =       "Benoit Daloze and Arie Tal and Stefan Marr and
                 Hanspeter M{\"o}ssenb{\"o}ck and Erez Petrank",
  title =        "Parallelization of dynamic languages: synchronizing
                 built-in collections",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "108:1--108:30",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276478",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/hash.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276478",
  abstract =     "Dynamic programming languages such as Python and Ruby
                 are widely used, and much effort is spent on making
                 them efficient. One substantial research effort in this
                 direction is the enabling of parallel code execution.
                 While there has been significant progress, making
                 dynamic collections efficient, scalable, and
                 thread-safe is an open issue. Typical programs in
                 dynamic languages use few but versatile collection
                 types. Such collections are an important ingredient of
                 dynamic environments, but are difficult to make safe,
                 efficient, and scalable.\par

                 In this paper, we propose an approach for efficient and
                 concurrent collections by gradually increasing
                 synchronization levels according to the dynamic needs
                 of each collection instance. Collections reachable only
                 by a single thread have no synchronization, arrays
                 accessed in bounds have minimal synchronization, and
                 for the general case, we adopt the Layout Lock paradigm
                 and extend its design with a lightweight version that
                 fits the setting of dynamic languages. We apply our
                 approach to Ruby's Array and Hash collections. Our
                 experiments show that our approach has no overhead on
                 single-threaded benchmarks, scales linearly for Array
                 and Hash accesses, achieves the same scalability as
                 Fortran and Java for classic parallel algorithms, and
                 scales better than other Ruby implementations on Ruby
                 workloads",
  acknowledgement = ack-nhfb,
  articleno =    "108",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Book{Dan:2018:LJE,
  author =       "Toomey Dan",
  title =        "Learning {Jupyter 5}: explore interactive computing
                 using {Python}, {Java}, {JavaScript}, {R}, {Julia}, and
                 {JupyterLab}",
  publisher =    pub-PACKT,
  address =      pub-PACKT:adr,
  pages =        "282",
  year =         "2018",
  ISBN =         "1-78913-740-3, 1-78913-744-6",
  ISBN-13 =      "978-1-78913-740-8, 978-1-78913-744-6",
  LCCN =         "Q183.9; QA76.9.I52 .T666 2018",
  bibdate =      "Fri Apr 9 05:38:17 MDT 2021",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/julia.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/s-plus.bib",
  acknowledgement = ack-nhfb,
  tableofcontents = "Preface \\
                 1: Introduction to Jupyter \\
                 First look at Jupyter \\
                 Installing Jupyter \\
                 Notebook structure \\
                 Notebook workflow \\
                 Basic Notebook operations \\
                 File operations \\
                 Duplicate \\
                 Rename \\
                 Delete \\
                 Upload \\
                 New text file \\
                 New folder \\
                 New Python 3 \\
                 Security in Jupyter \\
                 Security digest \\
                 Trust options \\
                 Configuration options for Jupyter \\
                 Summary \\
                 2: Jupyter Python Scripting \\
                 Basic Python in Jupyter \\
                 Python data access in Jupyter \\
                 Python pandas in Jupyter \\
                 Python graphics in Jupyter \\
                 Python random numbers in Jupyter \\
                 Summary \\
                 3: Jupyter R Scripting \\
                 Adding R scripting to your installation \\
                 Adding R scripts to Jupyter on macOS \\
                 Adding R scripts to Jupyter on Windows \\
                 Adding R packages to Jupyter \\
                 R limitations in Jupyter \\
                 Basic R in Jupyter \\
                 R dataset access \\
                 R visualizations in Jupyter \\
                 R 3D graphics in Jupyter \\
                 R 3D scatterplot in Jupyter \\
                 R cluster analysis \\
                 R forecasting \\
                 R machine learning \\
                 Dataset \\
                 Summary \\
                 4: Jupyter Julia Scripting \\
                 Adding Julia scripting to your installation \\
                 Adding Julia scripts to Jupyter \\
                 Adding Julia packages to Jupyter \\
                 Basic Julia in Jupyter \\
                 Julia limitations in Jupyter \\
                 Standard Julia capabilities \\
                 Julia visualizations in Jupyter \\
                 Julia Gadfly scatterplot \\
                 Julia Gadfly histogram \\
                 Julia Winston plotting \\
                 Julia Vega plotting \\
                 Julia PyPlot plotting \\
                 Julia parallel processing \\
                 Julia control flow \\
                 Julia regular expressions \\
                 Julia unit testing \\
                 Summary \\
                 5: Jupyter Java Coding \\
                 Adding the Java kernel to your installation \\
                 Installing Java 9 or later \\
                 A Jupyter environment is required \\
                 Configuring IJava \\
                 Downloading the IJava project from GitHub \\
                 Building and installing the kernel \\
                 Available options \\
                 Jupyter Java console \\
                 Jupyter Java output \\
                 Java Optional \\
                 Java compiler errors \\
                 Java lambdas \\
                 Java Collections \\
                 Java streams \\
                 Java summary statistics \\
                 Summary \\
                 6: Jupyter JavaScript Coding \\
                 Adding JavaScript scripting to your installation \\
                 Adding JavaScript scripts to Jupyter on macOS or
                 Windows \\
                 JavaScript Hello World Jupyter Notebook \\
                 Adding JavaScript packages to Jupyter \\
                 Basic JavaScript in Jupyter \\
                 JavaScript limitations in Jupyter \\
                 Node.js d3 package \\
                 Node.js stats-analysis package \\
                 Node.js JSON handling \\
                 Node.js canvas package \\
                 Node.js plotly package \\
                 Node.js asynchronous threadsNode.js decision-tree
                 package \\
                 Summary \\
                 7: Jupyter Scala \\
                 Installing the Scala kernel \\
                 Scala data access in Jupyter \\
                 Scala array operations \\
                 Scala random numbers in Jupyter \\
                 Scala closures \\
                 Scala higher-order functions \\
                 Scala pattern matching \\
                 Scala case classes \\
                 Scala immutability \\
                 Scala collections \\
                 Named arguments \\
                 Scala traits \\
                 Summary \\
                 8: Jupyter and Big Data \\
                 Apache Spark \\
                 Installing Spark on macOS \\
                 Windows install \\
                 First Spark script \\
                 Spark word count \\
                 Sorted word count \\
                 Estimate pi \\
                 Log file examination \\
                 Spark primes \\
                 Spark text file analysis",
}

@Article{deJong:2018:MJA,
  author =       "Jos de Jong and Eric Mansfield",
  title =        "{Math.Js}: An Advanced Mathematics Library For
                 {JavaScript}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "20",
  number =       "1",
  pages =        "20--32",
  month =        "????",
  year =         "2018",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2018.011111122",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Feb 15 06:20:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/document/8291769/",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Dennis:2018:MFI,
  author =       "Louise A. Dennis",
  title =        "The {MCAPL} Framework including the {Agent
                 Infrastructure Layer} and {Agent Java Pathfinder}",
  journal =      j-J-OPEN-SOURCE-SOFT,
  volume =       "3",
  number =       "24",
  pages =        "617:1--617:2",
  month =        apr,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.21105/joss.00617",
  ISSN =         "2475-9066",
  ISSN-L =       "2475-9066",
  bibdate =      "Thu Sep 13 08:09:35 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/joss.bib",
  URL =          "http://joss.theoj.org/papers/10.21105/joss.00617",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Open Source Software",
  journal-URL =  "http://joss.theoj.org/;
                 https://github.com/openjournals/joss-papers/",
  onlinedate =   "30 April 2018",
}

@Article{DiPierro:2018:RJ,
  author =       "Massimo DiPierro",
  title =        "The Rise of {JavaScript}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "20",
  number =       "1",
  pages =        "9--10",
  month =        "????",
  year =         "2018",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2018.011111120",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Feb 15 06:20:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{DiPierro:2018:TVG,
  author =       "Massimo DiPierro",
  title =        "Toy Vision-Guided {$3$D} Robotic Arm in {JavaScript}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "20",
  number =       "1",
  pages =        "43--49",
  month =        "????",
  year =         "2018",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2018.011111124",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Feb 15 06:20:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/document/8291773/",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Fan:2018:VCJ,
  author =       "Linyu Fan and Jianwei Liao and Junsen Zuo and Kebo
                 Zhang and Chao Li and Hailing Xiong",
  title =        "Version 4.0 of code {Java} for {$3$D} simulation of
                 the {CCA} model",
  journal =      j-COMP-PHYS-COMM,
  volume =       "228",
  number =       "??",
  pages =        "290--292",
  month =        jul,
  year =         "2018",
  CODEN =        "CPHCBZ",
  DOI =          "https://doi.org/10.1016/j.cpc.2018.03.014",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Thu May 31 14:21:46 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465518300869",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Grimmer:2018:CLI,
  author =       "Matthias Grimmer and Roland Schatz and Chris Seaton
                 and Thomas W{\"u}rthinger and Mikel Luj{\'a}n",
  title =        "Cross-Language Interoperability in a Multi-Language
                 Runtime",
  journal =      j-TOPLAS,
  volume =       "40",
  number =       "2",
  pages =        "8:1--8:??",
  month =        jun,
  year =         "2018",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3201898",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Thu Oct 18 12:01:50 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "In large-scale software applications, programmers
                 often combine different programming languages because
                 this allows them to use the most suitable language for
                 a given problem, to gradually migrate existing projects
                 from one language to another, or to reuse existing
                 source code. However, different programming languages
                 have fundamentally different implementations, which are
                 hard to combine. The composition of language
                 implementations often results in complex interfaces
                 between languages, insufficient flexibility, or poor
                 performance. We propose TruffleVM, a virtual machine
                 (VM) that can execute different programming languages
                 and is able to compose them in a seamless way.
                 TruffleVM supports dynamically-typed languages (e.g.,
                 JavaScript and Ruby) as well as statically typed
                 low-level languages (e.g., C). It consists of
                 individual language implementations, which translate
                 source code to an intermediate representation that is
                 executed by a shared VM. TruffleVM composes these
                 different language implementations via generic access.
                 Generic access is a language-agnostic mechanism that
                 language implementations use to access foreign data or
                 call foreign functions. It features language-agnostic
                 messages that the TruffleVM resolves to efficient
                 foreign-language-specific operations at runtime.
                 Generic access supports multiple languages, enables an
                 efficient multi-language development, and ensures high
                 performance. We evaluate generic access with two case
                 studies. The first one explains the transparent
                 composition of JavaScript, Ruby, and C. The second one
                 shows an implementation of the C extensions application
                 programming interface (API) for Ruby. We show that
                 generic access guarantees good runtime performance. It
                 avoids conversion or marshalling of foreign objects at
                 the language boundary and allows the dynamic compiler
                 to perform its optimizations across language
                 boundaries.",
  acknowledgement = ack-nhfb,
  articleno =    "8",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Gupta:2018:HDB,
  author =       "Shashank Gupta and B. B. Gupta and Pooja Chaudhary",
  title =        "Hunting for {DOM}-Based {XSS} vulnerabilities in
                 mobile cloud-based online social network",
  journal =      j-FUT-GEN-COMP-SYS,
  volume =       "79 (part 1)",
  number =       "??",
  pages =        "319--336",
  year =         "2018",
  CODEN =        "FGSEVI",
  DOI =          "https://doi.org/10.1016/j.future.2017.05.038",
  ISSN =         "0167-739X (print), 1872-7115 (electronic)",
  ISSN-L =       "0167-739X",
  bibdate =      "Fri Nov 24 15:16:17 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/futgencompsys.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167739X17311068",
  acknowledgement = ack-nhfb,
  fjournal =     "Future Generation Computer Systems",
  journal-URL =  "http://www.sciencedirect.com/science/journal/0167739X",
  keywords =     "Cross-site scripting (XSS) worms; Document Object
                 Model (DOM) tree; DOM-Based {XSS} attacks; HTML5;
                 JavaScript code injection attacks; Mobile cloud
                 computing",
}

@Article{Herrera:2018:NCW,
  author =       "David Herrera and Hanfeng Chen and Erick Lavoie and
                 Laurie Hendren",
  title =        "Numerical computing on the web: benchmarking for the
                 future",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "8",
  pages =        "88--100",
  month =        oct,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3393673.3276968",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Apr 8 13:49:51 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3393673.3276968",
  abstract =     "Recent advances in execution environments for
                 JavaScript and WebAssembly that run on a broad range of
                 devices, from workstations and mobile phones to IoT
                 devices, provide new opportunities for portable and
                 web-based numerical computing. Indeed, numerous
                 \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "https://dl.acm.org/loi/sigplan",
}

@Article{Insa:2018:AAJ,
  author =       "David Insa and Josep Silva",
  title =        "Automatic assessment of {Java} code",
  journal =      j-COMP-LANGS-SYS-STRUCT,
  volume =       "53",
  number =       "??",
  pages =        "59--72",
  month =        sep,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.cl.2018.01.004",
  ISSN =         "1477-8424 (print), 1873-6866 (electronic)",
  ISSN-L =       "1477-8424",
  bibdate =      "Mon Apr 16 13:30:38 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/complngs.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S1477842417301045",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Languages, Systems and Structures",
  journal-URL =  "http://www.sciencedirect.com/science/journal/14778424/",
}

@Article{Kintis:2018:HEM,
  author =       "Marinos Kintis and Mike Papadakis and Andreas
                 Papadopoulos and Evangelos Valvis and Nicos Malevris
                 and Yves {Le Traon}",
  title =        "How effective are mutation testing tools? {An}
                 empirical analysis of {Java} mutation testing tools
                 with manual analysis and real faults",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "23",
  number =       "4",
  pages =        "2426--2463",
  month =        aug,
  year =         "2018",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-017-9582-5",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Wed Sep 26 14:34:26 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-017-9582-5",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Knoche:2018:UML,
  author =       "H. Knoche and W. Hasselbring",
  title =        "Using Microservices for Legacy Software
                 Modernization",
  journal =      j-IEEE-SOFTWARE,
  volume =       "35",
  number =       "3",
  pages =        "44--49",
  month =        may # "\slash " # jun,
  year =         "2018",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2018.2141035",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "cloud computing; Computer architecture; Databases;
                 Java; legacy modernization project; legacy software
                 modernization; microservices; migration process;
                 scalable applications; Service computing; services
                 modernization; smaller code bases; Software
                 development; software development; Software
                 engineering; software engineering; software
                 maintenance; web services; Web services",
}

@Article{Kouzapas:2018:TPM,
  author =       "Dimitrios Kouzapas and Ornela Dardha and Roly Perera
                 and Simon J. Gay",
  title =        "Typechecking protocols with {Mungo} and {StMungo}: A
                 session type toolchain for {Java}",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "155",
  number =       "??",
  pages =        "52--75",
  month =        "????",
  year =         "2018",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2017.10.006",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Sat Mar 17 18:00:23 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642317302186",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Larrucea:2018:M,
  author =       "X. Larrucea and I. Santamaria and R. Colomo-Palacios
                 and C. Ebert",
  title =        "Microservices",
  journal =      j-IEEE-SOFTWARE,
  volume =       "35",
  number =       "3",
  pages =        "96--100",
  month =        may # "\slash " # jun,
  year =         "2018",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2018.2141030",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "agile delivery mechanisms; Browsers; Computer
                 architecture; CORS; Cross-Origin Resource Sharing;
                 flexible service orientation; function-oriented legacy
                 architectures; Java; microservice technologies;
                 microservices; Service computing; service-oriented
                 architecture; Software development; software
                 development; software engineering; Software Technology;
                 Web services",
}

@Article{Lauinger:2018:TSD,
  author =       "Tobias Lauinger and Abdelberi Chaabane and Christo B.
                 Wilson",
  title =        "Thou shalt not depend on me",
  journal =      j-CACM,
  volume =       "61",
  number =       "6",
  pages =        "41--47",
  month =        jun,
  year =         "2018",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/3190562",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Tue Jun 5 14:47:04 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://cacm.acm.org/magazines/2018/6/228039/fulltext",
  abstract =     "A look at JavaScript libraries in the wild.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Li:2018:ATJ,
  author =       "Bing Li and Xueli Xiao and Yi Pan",
  title =        "Automatic translation from {Java} to {Spark}",
  journal =      j-CCPE,
  volume =       "30",
  number =       "20",
  pages =        "e4459:1--e4459:??",
  day =          "25",
  month =        oct,
  year =         "2018",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4459",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Thu Mar 28 08:07:52 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "28 February 2018",
}

@Article{Li:2018:PGC,
  author =       "Yue Li and Tian Tan and Anders M{\o}ller and Yannis
                 Smaragdakis",
  title =        "Precision-guided context sensitivity for pointer
                 analysis",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "141:1--141:29",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276511",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276511",
  abstract =     "Context sensitivity is an essential technique for
                 ensuring high precision in Java pointer analyses. It
                 has been observed that applying context sensitivity
                 partially, only on a select subset of the methods, can
                 improve the balance between analysis \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "141",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Liu:2018:JIO,
  author =       "Xuanzhe Liu and Meihua Yu and Yun Ma and Gang Huang
                 and Hong Mei and Yunxin Liu",
  title =        "{i-Jacob}: an Internetware-Oriented Approach to
                 Optimizing Computation-Intensive Mobile {Web}
                 Browsing",
  journal =      j-TOIT,
  volume =       "18",
  number =       "2",
  pages =        "14:1--14:??",
  month =        mar,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3093899",
  ISSN =         "1533-5399 (print), 1557-6051 (electronic)",
  ISSN-L =       "1533-5399",
  bibdate =      "Sat Sep 21 07:34:08 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toit.bib",
  abstract =     "Web browsing is always a key requirement of Internet
                 users. Current mobile Web apps can contain
                 computation-intensive JavaScript logics and thus affect
                 browsing performance. Learning from our over-decade
                 research and development experiences of the
                 Internetware paradigm, we present the novel and generic
                 i-Jacob approach to improving the performance of mobile
                 Web browsing with effective JavaScript-code offloading.
                 Our approach proposes a programming abstraction to make
                 mobile Web situational and adaptive to contexts, by
                 specifying the computation-intensive and `` offloadable
                 '' code, and develops a platform-independent
                 lightweight runtime spanning the mobile devices and the
                 cloud. We demonstrate the efficiency of i-Jacob with
                 some typical computation-intensive tasks over various
                 combinations of hardware, operating systems, browsers,
                 and network connections. The improvements can reach up
                 to 49$ \times $ speed-up in response time and 90\%
                 saving in energy.",
  acknowledgement = ack-nhfb,
  articleno =    "14",
  fjournal =     "ACM Transactions on Internet Technology (TOIT)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J780",
}

@Article{Lochbihler:2018:MTS,
  author =       "Andreas Lochbihler",
  title =        "Mechanising a Type-Safe Model of Multithreaded {Java}
                 with a Verified Compiler",
  journal =      j-J-AUTOM-REASON,
  volume =       "61",
  number =       "1--4",
  pages =        "243--332",
  month =        jun,
  year =         "2018",
  CODEN =        "JAREEW",
  DOI =          "https://doi.org/10.1007/s10817-018-9452-x",
  ISSN =         "0168-7433 (print), 1573-0670 (electronic)",
  ISSN-L =       "0168-7433",
  bibdate =      "Sat Aug 4 07:51:41 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/jautomreason.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10817-018-9452-x",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Automated Reasoning",
  journal-URL =  "http://link.springer.com/journal/10817",
}

@Article{Mace:2018:PTD,
  author =       "Jonathan Mace and Ryan Roelke and Rodrigo Fonseca",
  title =        "Pivot Tracing: Dynamic Causal Monitoring for
                 Distributed Systems",
  journal =      j-TOCS,
  volume =       "35",
  number =       "4",
  pages =        "11:1--11:??",
  month =        dec,
  year =         "2018",
  CODEN =        "ACSYEC",
  DOI =          "https://doi.org/10.1145/3208104",
  ISSN =         "0734-2071 (print), 1557-7333 (electronic)",
  ISSN-L =       "0734-2071",
  bibdate =      "Sat Sep 21 11:44:29 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tocs.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3208104",
  abstract =     "Monitoring and troubleshooting distributed systems is
                 notoriously difficult; potential problems are complex,
                 varied, and unpredictable. The monitoring and diagnosis
                 tools commonly used today-logs, counters, and
                 metrics-have two important limitations: what gets
                 recorded is defined a priori, and the information is
                 recorded in a component- or machine-centric way, making
                 it extremely hard to correlate events that cross these
                 boundaries. This article presents Pivot Tracing, a
                 monitoring framework for distributed systems that
                 addresses both limitations by combining dynamic
                 instrumentation with a novel relational operator: the
                 happened-before join. Pivot Tracing gives users, at
                 runtime, the ability to define arbitrary metrics at one
                 point of the system, while being able to select,
                 filter, and group by events meaningful at other parts
                 of the system, even when crossing component or machine
                 boundaries. We have implemented a prototype of Pivot
                 Tracing for Java-based systems and evaluate it on a
                 heterogeneous Hadoop cluster comprising HDFS, HBase,
                 MapReduce, and YARN. We show that Pivot Tracing can
                 effectively identify a diverse range of root causes
                 such as software bugs, misconfiguration, and limping
                 hardware. We show that Pivot Tracing is dynamic,
                 extensible, and enables cross-tier analysis between
                 inter-operating applications, with low execution
                 overhead.",
  acknowledgement = ack-nhfb,
  articleno =    "11",
  fjournal =     "ACM Transactions on Computer Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J774",
}

@Book{Morgan:2018:SJW,
  author =       "Joe Morgan",
  title =        "Simplifying {JavaScript}: writing modern {JavaScript}
                 with {ES5}, {ES6}, and beyond",
  publisher =    "The Pragmatic Bookshelf",
  address =      "Raleigh, North Carolina",
  pages =        "xiv + 260",
  year =         "2018",
  ISBN =         "1-68050-288-3 (paperback), 1-68050-604-8",
  ISBN-13 =      "978-1-68050-288-6 (paperback), 978-1-68050-604-4",
  LCCN =         "????",
  bibdate =      "Fri Sep 13 08:27:58 MDT 2019",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "The best modern JavaScript is simple, readable, and
                 predictable. Learn to write modern JavaScript not by
                 memorizing a list of new syntax, but with practical
                 examples of how syntax changes can make code more
                 expressive. Starting from variable declarations that
                 communicate intention clearly, see how modern
                 principles can improve all parts of code. Incorporate
                 ideas with curried functions, array methods, classes,
                 and more to create code that does more with less while
                 yielding fewer bugs. It's time to write JavaScript code
                 that's clean and expressive. Modern JavaScript is
                 simpler and more predictable and readable than ever.
                 Discover how to write better code with clear examples
                 using principles that show how updated syntax can make
                 code better with fewer bugs. Starting from the ground
                 up, learn new syntax (or how to reuse older syntax) to
                 transform code from clunky bug-susceptible scripts to
                 clear and elegant programs that are easy to read and
                 easy to extend. Create a foundation for readable code
                 with simple variable declarations that reduce side
                 effects and subtle bugs. Select collections with clear
                 goals instead of defaulting to objects or arrays. See
                 how to simplify iterations from complex loops to single
                 line array methods. Master techniques for writing
                 flexible and solid code ranging from high-order
                 functions, to reusable classes, to patterns for
                 architecting large applications creating applications
                 that will last while through rounds of refactoring and
                 changing requirements. The best part is there's no need
                 to read this book straight through. Jump around and
                 incorporate new functionality at will. Most
                 importantly, understand not just what the new syntax
                 is, but when and how to use it. Start writing better
                 code from the first page. What You Need: For the best
                 experience, have the latest version of Node installed
                 (at least version 7). You can test most examples in the
                 console of Chrome or other modern web browser. If you'd
                 like to run the tests, you'll also need to install the
                 latest version of Node Package Manager (npm).",
  acknowledgement = ack-nhfb,
  shorttableofcontents = "Signal intention with variable assignment \\
                 Manage data collections with arrays \\
                 Maximize code clarity with special collections \\
                 Write clear conditionals \\
                 Simplify loops \\
                 Clean up parameters and return statements \\
                 Build flexible functions \\
                 Keep interfaces clear with classes \\
                 Access external data \\
                 Gather related files with component architecture",
  subject =      "JavaScript (Computer program language); Web site
                 development; JavaScript (Computer program language);
                 Web site development.",
  tableofcontents = "Introduction \\
                 How To Use This Book \\
                 Whom This Book Is For \\
                 Online Resources \\
                 Acknowledgments \\
                 1. Signal Intention with Variable Assignment \\
                 Tip 1. Signal Unchanging Values with const \\
                 Tip 2. Reduce Scope Conflicts with let and const \\
                 Tip 3. Isolate Information with Block Scoped Variables
                 \\
                 Tip 4. Convert Variables to Readable Strings with
                 Template Literals \\
                 2. Manage Data Collections with Arrays \\
                 Tip 5. Create Flexible Collections with Arrays \\
                 Tip 6. Check Existence in an Array with Includes() \\
                 Tip 7. Mold Arrays with the Spread Operator \\
                 Tip 8. Avoid Push Mutations with the Spread Operator
                 \\
                 Tip 9. Avoid Sort Confusion with the Spread Operator
                 \\
                 3. Maximize Code Clarity with Special Collections \\
                 Tip 10. Use Objects for Static Key-Value Lookups \\
                 Tip 11. Create Objects Without Mutations Using
                 Object.assign() \\
                 Tip 12. Update Information with Object Spread \\
                 Tip 13. Update Key-Value Data Clearly with Maps \\
                 Tip 14. Iterate Over Key-Value Data with Map and the
                 Spread Operator \\
                 Tip 15. Create Maps Without Side Effects \\
                 Tip 16. Keep Unique Values with Set \\
                 4. Write Clear Conditionals \\
                 Tip 17. Shorten Conditionals with Falsy Values \\
                 Tip 18. Check Data Quickly with the Ternary Operator
                 \\
                 Tip 19. Maximize Efficiency with Short Circuiting \\
                 5. Simplify Loops \\
                 Tip 20. Simplify Looping with Arrow Functions \\
                 Tip 21. Write Shorter Loops with Array Methods \\
                 Tip 22. Create Arrays of a Similar Size with map() \\
                 Tip 23. Pull Out Subsets of Data with filter() and
                 find() \\
                 Tip 24. Apply Consistent Actions with forEach() \\
                 Tip 25. Combine Methods with Chaining \\
                 Tip 26. Transform Array Data with reduce() \\
                 Tip 27. Reduce Loop Clutter with for \ldots{} in and
                 for \ldots{} each \\
                 6. Clean Up Parameters and Return Statements \\
                 Tip 28. Create Default Parameters \\
                 Tip 29. Access Object Properties with Destructuring \\
                 Tip 30. Simplify Key-Value Assignment \\
                 Tip 31. Pass a Variable Number of Arguments with the
                 Rest Operator \\
                 7. Build Flexible Functions \\
                 Tip 32. Write Functions for Testability \\
                 Tip 33. Reduce Complexity with Arrow Functions \\
                 Tip 34. Maintain Single Responsibility Parameters with
                 Partially Applied Functions \\
                 Tip 35. Combine Currying and Array Methods for Partial
                 Application \\
                 Tip 36. Prevent Context Confusion with Arrow Functions
                 \\
                 8. Keep Interfaces Clear with Classes \\
                 Tip 37. Build Readable Classes \\
                 Tip 38. Share Methods with Inheritance \\
                 Tip 39. Extend Existing Prototypes with Class \\
                 Tip 40. Simplify Interfaces with get and set \\
                 Tip 41. Create Iterable Properties with Generators \\
                 Tip 42. Resolve Context Problems with Bind() \\
                 9. Access External Data \\
                 Tip 43. Retrieve Data Asynchronously with Promises \\
                 Tip 44. Create Clean Functions with Async/Await \\
                 Tip 45. Make Simple AJAX Calls with Fetch \\
                 Tip 46. Maintain State Over Time with LocalStorage \\
                 10. Gather Related Files with Component Architecture
                 \\
                 Tip 47. Isolate Functionality with Import and Export
                 \\
                 Tip 48. Leverage Community Knowledge with npm",
}

@Article{Nguyen:2018:SCM,
  author =       "Khanh Nguyen and Lu Fang and Christian Navasca and
                 Guoqing Xu and Brian Demsky and Shan Lu",
  title =        "{Skyway}: Connecting Managed Heaps in Distributed Big
                 Data Systems",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "2",
  pages =        "56--69",
  month =        feb,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296957.3173200",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:56 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Managed languages such as Java and Scala are
                 prevalently used in development of large-scale
                 distributed systems. Under the managed runtime, when
                 performing data transfer across machines, a task
                 frequently conducted in a Big Data system, the system
                 needs to serialize a sea of objects into a byte
                 sequence before sending them over the network. The
                 remote node receiving the bytes then deserializes them
                 back into objects. This process is both
                 performance-inefficient and labor-intensive: (1) object
                 serialization/deserialization makes heavy use of
                 reflection, an expensive runtime operation and/or (2)
                 serialization/deserialization functions need to be
                 hand-written and are error-prone. This paper presents
                 Skyway, a JVM-based technique that can directly connect
                 managed heaps of different (local or remote) JVM
                 processes. Under Skyway, objects in the source heap can
                 be directly written into a remote heap without changing
                 their formats. Skyway provides performance benefits to
                 any JVM-based system by completely eliminating the need
                 (1) of invoking serialization/deserialization
                 functions, thus saving CPU time, and (2) of requiring
                 developers to hand-write serialization functions.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '18 proceedings.",
}

@Article{Nguyen:2018:UCM,
  author =       "Khanh Nguyen and Kai Wang and Yingyi Bu and Lu Fang
                 and Guoqing Xu",
  title =        "Understanding and Combating Memory Bloat in Managed
                 Data-Intensive Systems",
  journal =      j-TOSEM,
  volume =       "26",
  number =       "4",
  pages =        "12:1--12:41",
  month =        feb,
  year =         "2018",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/3162626",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Fri Jun 8 17:20:39 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "The past decade has witnessed increasing demands on
                 data-driven business intelligence that led to the
                 proliferation of data-intensive applications. A managed
                 object-oriented programming language such as Java is
                 often the developer's choice for implementing such
                 applications, due to its quick development cycle and
                 rich suite of libraries and frameworks. While the use
                 of such languages makes programming easier, their
                 automated memory management comes at a cost. When the
                 managed runtime meets large volumes of input data,
                 memory bloat is significantly magnified and becomes a
                 scalability-prohibiting bottleneck. This article first
                 studies, analytically and empirically, the impact of
                 bloat on the performance and scalability of
                 large-scale, real-world data-intensive systems. To
                 combat bloat, we design a novel compiler framework,
                 called F acade, that can generate highly efficient data
                 manipulation code by automatically transforming the
                 data path of an existing data-intensive application.
                 The key treatment is that in the generated code, the
                 number of runtime heap objects created for data classes
                 in each thread is (almost) statically bounded, leading
                 to significantly reduced memory management cost and
                 improved scalability. We have implemented Facade and
                 used it to transform seven common applications on three
                 real-world, already well-optimized data processing
                 frameworks: GraphChi, Hyracks, and GPS. Our
                 experimental results are very positive: the generated
                 programs have (1) achieved a 3\% to 48\% execution time
                 reduction and an up to 88$ \times $ GC time reduction,
                 (2) consumed up to 50\% less memory, and (3) scaled to
                 much larger datasets.",
  acknowledgement = ack-nhfb,
  articleno =    "12",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Nowicki:2018:MPI,
  author =       "Marek Nowicki and Davit Bzhalava and Piotr Ba{\l}a",
  title =        "Massively Parallel Implementation of Sequence
                 Alignment with Basic Local Alignment Search Tool Using
                 Parallel Computing in {Java} Library",
  journal =      j-J-COMPUT-BIOL,
  volume =       "25",
  number =       "8",
  pages =        "871--881",
  month =        aug,
  year =         "2018",
  CODEN =        "JCOBEM",
  DOI =          "https://doi.org/10.1089/cmb.2018.0079",
  ISSN =         "1066-5277 (print), 1557-8666 (electronic)",
  ISSN-L =       "1066-5277",
  bibdate =      "Sat Jun 1 09:53:28 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jcomputbiol.bib",
  URL =          "https://www.liebertpub.com/doi/abs/10.1089/cmb.2018.0079;
                 https://www.liebertpub.com/doi/pdf/10.1089/cmb.2018.0079",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Computational Biology",
  journal-URL =  "https://www.liebertpub.com/loi/cmb/",
  onlinedate =   "13 July 2018",
}

@Article{Obaidellah:2018:SUE,
  author =       "Unaizah Obaidellah and Mohammed {Al Haek} and Peter
                 C.-H. Cheng",
  title =        "A Survey on the Usage of Eye-Tracking in Computer
                 Programming",
  journal =      j-COMP-SURV,
  volume =       "51",
  number =       "1",
  pages =        "5:1--5:??",
  month =        apr,
  year =         "2018",
  CODEN =        "CMSVAN",
  DOI =          "https://doi.org/10.1145/3145904",
  ISSN =         "0360-0300 (print), 1557-7341 (electronic)",
  ISSN-L =       "0360-0300",
  bibdate =      "Sat Aug 31 09:04:34 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compsurv.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  abstract =     "Traditional quantitative research methods of data
                 collection in programming, such as questionnaires and
                 interviews, are the most common approaches for
                 researchers in this field. However, in recent years,
                 eye-tracking has been on the rise as a new method of
                 collecting evidence of visual attention and the
                 cognitive process of programmers. Eye-tracking has been
                 used by researchers in the field of programming to
                 analyze and understand a variety of tasks such as
                 comprehension and debugging. In this article, we will
                 focus on reporting how experiments that used
                 eye-trackers in programming research are conducted, and
                 the information that can be collected from these
                 experiments. In this mapping study, we identify and
                 report on 63 studies, published between 1990 and June
                 2017, collected and gathered via manual search on
                 digital libraries and databases related to computer
                 science and computer engineering. Among the five main
                 areas of research interest are program comprehension
                 and debugging, which received an increased interest in
                 recent years, non-code comprehension, collaborative
                 programming, and requirements traceability research,
                 which had the fewest number of publications due to
                 possible limitations of the eye-tracking technology in
                 this type of experiments. We find that most of the
                 participants in these studies were students and faculty
                 members from institutions of higher learning, and while
                 they performed programming tasks on a range of
                 programming languages and programming representations,
                 we find Java language and Unified Modeling Language
                 (UML) representation to be the most used materials. We
                 also report on a range of eye-trackers and attention
                 tracking tools that have been utilized, and find Tobii
                 eye-trackers to be the most used devices by
                 researchers.",
  acknowledgement = ack-nhfb,
  articleno =    "5",
  fjournal =     "ACM Computing Surveys",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J204",
}

@Article{Olson:2018:CLM,
  author =       "Matthew Benjamin Olson and Joseph T. Teague and
                 Divyani Rao and Michael R. JANTZ and Kshitij A. Doshi
                 and Prasad A. Kulkarni",
  title =        "Cross-Layer Memory Management to Improve {DRAM} Energy
                 Efficiency",
  journal =      j-TACO,
  volume =       "15",
  number =       "2",
  pages =        "20:1--20:??",
  month =        jun,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3196886",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Tue Jan 8 17:19:59 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "Controlling the distribution and usage of memory power
                 is often difficult, because these effects typically
                 depend on activity across multiple layers of the
                 vertical execution stack. To address this challenge, we
                 construct a novel and collaborative framework that
                 employs object placement, cross-layer communication,
                 and page-level management to effectively distribute
                 application objects in the DRAM hardware to achieve
                 desired power/performance goals. This work describes
                 the design and implementation of our framework, which
                 is the first to integrate automatic object profiling
                 and analysis at the application layer with fine-grained
                 management of memory hardware resources in the
                 operating system. We demonstrate the utility of this
                 framework by employing it to control memory power
                 consumption more effectively. First, we design a custom
                 memory-intensive workload to show the potential of this
                 approach to reduce DRAM energy consumption. Next, we
                 develop sampling and profiling-based analyses and
                 modify the code generator in the HotSpot VM to
                 understand object usage patterns and automatically
                 control the placement of hot and cold objects in a
                 partitioned VM heap. This information is communicated
                 to the operating system, which uses it to map the
                 logical application pages to the appropriate DRAM
                 modules according to user-defined provisioning goals.
                 The evaluation shows that our Java VM-based framework
                 achieves our goal of significant DRAM energy savings
                 across a variety of workloads, without any source code
                 modifications or recompilations.",
  acknowledgement = ack-nhfb,
  articleno =    "20",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Ottoni:2018:HJP,
  author =       "Guilherme Ottoni",
  title =        "{HHVM JIT}: a profile-guided, region-based compiler
                 for {PHP} and Hack",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "151--165",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192374",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/python.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic languages such as PHP, JavaScript, Python, and
                 Ruby have been gaining popularity over the last two
                 decades. A very popular domain for these languages is
                 web development, including server-side development of
                 large-scale websites. As a result, improving the
                 performance of these languages has become more
                 important. Efficiently compiling programs in these
                 languages is challenging, and many popular dynamic
                 languages still lack efficient production-quality
                 implementations. This paper describes the design of the
                 second generation of the HHVM JIT and how it addresses
                 the challenges to efficiently execute PHP and Hack
                 programs. This new design uses profiling to build an
                 aggressive region-based JIT compiler. We discuss the
                 benefits of this approach compared to the more popular
                 method-based and trace-based approaches to compile
                 dynamic languages. Our evaluation running a very large
                 PHP-based code base, the Facebook website, demonstrates
                 the effectiveness of the new JIT design.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Ou:2018:TUC,
  author =       "Peizhao Ou and Brian Demsky",
  title =        "Towards understanding the costs of avoiding
                 out-of-thin-air results",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "136:1--136:29",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276506",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276506",
  abstract =     "Eliminating so-called ``out-of-thin-air'' (OOTA)
                 results is an open problem with many existing
                 programming language memory models including Java, C,
                 and C++. OOTA behaviors are problematic in that they
                 break both formal and informal modular reasoning
                 \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "136",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Paletov:2018:ICA,
  author =       "Rumen Paletov and Petar Tsankov and Veselin Raychev
                 and Martin Vechev",
  title =        "Inferring crypto {API} rules from code changes",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "450--464",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192403",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Creating and maintaining an up-to-date set of security
                 rules that match misuses of crypto APIs is challenging,
                 as crypto APIs constantly evolve over time with new
                 cryptographic primitives and settings, making existing
                 ones obsolete. To address this challenge, we present a
                 new approach to extract security fixes from thousands
                 of code changes. Our approach consists of: (i)
                 identifying code changes, which often capture security
                 fixes, (ii) an abstraction that filters irrelevant code
                 changes (such as refactorings), and (iii) a clustering
                 analysis that reveals commonalities between semantic
                 code changes and helps in eliciting security rules. We
                 applied our approach to the Java Crypto API and showed
                 that it is effective: (i) our abstraction effectively
                 filters non-semantic code changes (over 99\% of all
                 changes) without removing security fixes, and (ii) over
                 80\% of the code changes are security fixes identifying
                 security rules. Based on our results, we identified 13
                 rules, including new ones not supported by existing
                 security checkers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Pan:2018:ASJ,
  author =       "Weifeng Pan and Bing Li and Jing Liu and Yutao Ma and
                 Bo Hu",
  title =        "Analyzing the structure of {Java} software systems by
                 weighted {$K$}-core decomposition",
  journal =      j-FUT-GEN-COMP-SYS,
  volume =       "83",
  number =       "??",
  pages =        "431--444",
  month =        jun,
  year =         "2018",
  CODEN =        "FGSEVI",
  ISSN =         "0167-739X (print), 1872-7115 (electronic)",
  ISSN-L =       "0167-739X",
  bibdate =      "Thu Mar 15 17:42:39 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/futgencompsys.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167739X17320940",
  acknowledgement = ack-nhfb,
  fjournal =     "Future Generation Computer Systems",
  journal-URL =  "http://www.sciencedirect.com/science/journal/0167739X",
}

@Article{Pano:2018:FAL,
  author =       "Amantia Pano and Daniel Graziotin and Pekka
                 Abrahamsson",
  title =        "Factors and actors leading to the adoption of a
                 {JavaScript} framework",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "23",
  number =       "6",
  pages =        "3503--3534",
  month =        dec,
  year =         "2018",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-018-9613-x",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Oct 11 07:46:30 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-018-9613-x",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Paquin:2018:AAS,
  author =       "Maria Paquin and Elena Sherman and Amit Jain",
  title =        "Assessing the Adequacy of Synthetic Programs for
                 Learning {SPF's} Configurations",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "55--55",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3282526",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Static program analysis is a powerful technique that
                 reasons about a program's behavior without actually
                 executing the program. To balance between the precision
                 and the efficiency of an analyzer, developers often
                 manually tune-up analyzer's parameters for a specific
                 program. However, this task can be tedious and
                 time-consuming. To automate the search for the optimal
                 parameters for a program, researchers employ machine
                 learning (ML) techniques, that from the existing data
                 learn the relationship between the program and the
                 optimal parameters, which it encodes in an ML model.
                 The existing, or training, data set, plays an important
                 role in the correctness of an ML model. In this work we
                 investigate whether automatically generated programs
                 are adequate for training an ML model, which determines
                 SPF's configurations for a given Java method. To do
                 this, we compare the performance of a model trained on
                 real programs with that of a model trained on synthetic
                 programs. Our results indicate that while synthetic
                 programs are inadequate for training a model alone,
                 adding them to the training set of real programs
                 improves the classification power of the resulting
                 model.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Park:2018:SAJ,
  author =       "Changhee Park and Hongki Lee and Sukyoung Ryu",
  title =        "Static analysis of {JavaScript} libraries in a
                 scalable and precise way using loop sensitivity",
  journal =      j-SPE,
  volume =       "48",
  number =       "4",
  pages =        "911--944",
  month =        apr,
  year =         "2018",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2552",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Aug 4 10:20:32 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  URL =          "https://onlinelibrary.wiley.com/doi/abs/10.1002/spe.2552",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "23 October 2017",
}

@Article{Phan:2018:TIG,
  author =       "Quoc-Sang Phan",
  title =        "Test input generation using separation logic",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "55--55",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3302418",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Unit testing is the practice of testing individual
                 units of a program, where a unit can be a method or a
                 group of methods. Unit testing is important for
                 software development, and automated test case
                 generation is important for reducing the cost and
                 improving the quality of unit testing. When an input of
                 a un is a dynamically allocated data structure, such as
                 list and tree, it has unbounded domain, and strict
                 requirements over the shape or size. This makes test
                 case generation notoriously hard. In this talk, we
                 present Java StarFinder (JSF), a JPF extension for
                 testing units that manipulate data structures. JSF is a
                 symbolic execution engine that uses separation logic
                 specification to capture the constraints over the
                 input, and performs context-sensitive lazy
                 initialization to construct valid test cases.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Porter:2018:PJE,
  author =       "Michael T. Porter",
  title =        "\pkg{js-emass}: A flexible {JavaScript} implementation
                 of the \pkg{emass} algorithm",
  journal =      j-J-OPEN-SOURCE-SOFT,
  volume =       "3",
  number =       "28",
  pages =        "869:1--869:1",
  month =        aug,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.21105/joss.00869",
  ISSN =         "2475-9066",
  ISSN-L =       "2475-9066",
  bibdate =      "Thu Sep 13 08:09:35 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/joss.bib",
  URL =          "http://joss.theoj.org/papers/10.21105/joss.00869",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Open Source Software",
  journal-URL =  "http://joss.theoj.org/;
                 https://github.com/openjournals/joss-papers/",
  onlinedate =   "22 August 2018",
  ORCID-numbers = "Michael T. Porter / 0000-0002-1148-6603",
}

@Article{Raghothaman:2018:UGP,
  author =       "Mukund Raghothaman and Sulekha Kulkarni and Kihong Heo
                 and Mayur Naik",
  title =        "User-guided program reasoning using {Bayesian}
                 inference",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "722--735",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192417",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Program analyses necessarily make approximations that
                 often lead them to report true alarms interspersed with
                 many false alarms. We propose a new approach to
                 leverage user feedback to guide program analyses
                 towards true alarms and away from false alarms. Our
                 approach associates each alarm with a confidence value
                 by performing Bayesian inference on a probabilistic
                 model derived from the analysis rules. In each
                 iteration, the user inspects the alarm with the highest
                 confidence and labels its ground truth, and the
                 approach recomputes the confidences of the remaining
                 alarms given this feedback. It thereby maximizes the
                 return on the effort by the user in inspecting each
                 alarm. We have implemented our approach in a tool named
                 Bingo for program analyses expressed in Datalog.
                 Experiments with real users and two sophisticated
                 analyses---a static datarace analysis for Java programs
                 and a static taint analysis for Android apps---show
                 significant improvements on a range of metrics,
                 including false alarm rates and number of bugs found.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Ramos:2018:APS,
  author =       "M. Ramos and M. T. Valente and R. Terra",
  title =        "{AngularJS} Performance: A Survey Study",
  journal =      j-IEEE-SOFTWARE,
  volume =       "35",
  number =       "2",
  pages =        "72--79",
  month =        mar # "\slash " # apr,
  year =         "2018",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2017.265100610",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "AngularJS; AngularJS applications; AngularJS
                 performance; Computer applications; Computer
                 architecture; custom components; development
                 experience; Internet; Java; JavaScript framework;
                 Mobile handsets; model-view-controller pattern; Object
                 recognition; Performance evaluation; performance
                 problems; single-page Web apps; software development;
                 Software development management; Software engineering;
                 software engineering; software performance; software
                 performance evaluation; Software reliability; web
                 apps",
}

@Article{Rodchenko:2018:TIE,
  author =       "Andrey Rodchenko and Christos Kotselidis and Andy
                 Nisbet and Antoniu Pop and Mikel Luj{\'a}n",
  title =        "Type Information Elimination from Objects on
                 Architectures with Tagged Pointers Support",
  journal =      j-IEEE-TRANS-COMPUT,
  volume =       "67",
  number =       "1",
  pages =        "130--143",
  month =        jan,
  year =         "2018",
  CODEN =        "ITCOB4",
  DOI =          "https://doi.org/10.1109/TC.2017.2709739",
  ISSN =         "0018-9340 (print), 1557-9956 (electronic)",
  ISSN-L =       "0018-9340",
  bibdate =      "Thu Dec 14 07:11:27 2017",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranscomput2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/document/7962268/",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Computers",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=12",
  keywords =     "Hardware; high-level language architectures; Java;
                 Layout; Memory management; Metadata; Object oriented
                 modeling; Runtime environments; simulation",
}

@Article{Roemer:2018:HCU,
  author =       "Jake Roemer and Kaan Gen{\c{c}} and Michael D. Bond",
  title =        "High-coverage, unbounded sound predictive race
                 detection",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "374--389",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192385",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic program analysis can predict data races
                 knowable from an observed execution, but existing
                 predictive analyses either miss races or cannot analyze
                 full program executions. This paper presents
                 Vindicator, a novel, sound (no false races) predictive
                 approach that finds more data races than existing
                 predictive approaches. Vindicator achieves high
                 coverage by using a new, efficient analysis that finds
                 all possible predictable races but may detect false
                 races. Vindicator ensures soundness using a novel
                 algorithm that checks each potential race to determine
                 whether it is a true predictable race. An evaluation
                 using large Java programs shows that Vindicator finds
                 hard-to-detect predictable races that existing sound
                 predictive analyses miss, at a comparable performance
                 cost.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Saini:2018:CNC,
  author =       "Vaibhav Saini and Hitesh Sajnani and Cristina Lopes",
  title =        "Cloned and non-cloned {Java} methods: a comparative
                 study",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "23",
  number =       "4",
  pages =        "2232--2278",
  month =        aug,
  year =         "2018",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-017-9572-7",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Wed Sep 26 14:34:26 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-017-9572-7",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Santos:2018:JJV,
  author =       "Jos{\'e} Fragoso Santos and Petar Maksimovi{\'c} and
                 Daiva Naud{\v{z}}i{\=u}nien{\.e} and Thomas Wood and
                 Philippa Gardner",
  title =        "{JaVerT}: {JavaScript} verification toolchain",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "POPL",
  pages =        "50:1--50:??",
  month =        jan,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3158138",
  ISSN =         "2475-1421",
  bibdate =      "Wed Jan 10 09:45:26 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  acknowledgement = ack-nhfb,
  articleno =    "50",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Sawant:2018:RDC,
  author =       "Anand Ashok Sawant and Romain Robbes and Alberto
                 Bacchelli",
  title =        "On the reaction to deprecation of clients of $ 4 + 1 $
                 popular {Java APIs} and the {JDK}",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "23",
  number =       "4",
  pages =        "2158--2197",
  month =        aug,
  year =         "2018",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-017-9554-9",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Wed Sep 26 14:34:26 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-017-9554-9;
                 http://link.springer.com/content/pdf/10.1007/s10664-017-9554-9.pdf",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Sayed:2018:ITI,
  author =       "Bassam Sayed and Issa Traor{\'e} and Amany
                 Abdelhalim",
  title =        "{If-transpiler}: Inlining of hybrid flow-sensitive
                 security monitor for {JavaScript}",
  journal =      j-COMPUT-SECUR,
  volume =       "75",
  number =       "??",
  pages =        "92--117",
  month =        jun,
  year =         "2018",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:54 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167404818300397",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Selakovic:2018:TGH,
  author =       "Marija Selakovic and Michael Pradel and Rezwana Karim
                 and Frank Tip",
  title =        "Test generation for higher-order functions in dynamic
                 languages",
  journal =      j-PACMPL,
  volume =       "2",
  number =       "OOPSLA",
  pages =        "161:1--161:27",
  month =        oct,
  year =         "2018",
  DOI =          "https://doi.org/10.1145/3276531",
  bibdate =      "Sat Aug 8 07:56:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3276531",
  abstract =     "Test generation has proven to provide an effective way
                 of identifying programming errors. Unfortunately,
                 current test generation techniques are challenged by
                 higher-order functions in dynamic languages, such as
                 JavaScript functions that receive \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "161",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Serrano:2018:JAC,
  author =       "Manuel Serrano",
  title =        "{JavaScript AOT} compilation",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "8",
  pages =        "50--63",
  month =        oct,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3393673.3276950",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Apr 8 13:49:51 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3393673.3276950",
  abstract =     "Static compilation, a.k.a., ahead-of-time (AOT)
                 compilation, is an alternative approach to JIT
                 compilation that can combine good speed and lightweight
                 memory footprint, and that can accommodate read-only
                 memory constraints that are imposed by some devices and
                 some operating systems. Unfortunately the highly
                 dynamic nature of JavaScript makes it hard to compile
                 statically and all existing AOT compilers have either
                 gave up on good performance or full language support.
                 We have designed and implemented an AOT compiler that
                 aims at satisfying both. It supports full unrestricted
                 ECMAScript 5.1 plus many ECMAScript 2017 features and
                 the majority of benchmarks are within 50\% of the
                 performance of one of the fastest JIT compilers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "https://dl.acm.org/loi/sigplan",
}

@Article{Steindorfer:2018:MOA,
  author =       "Michael J. Steindorfer and Jurgen J. Vinju",
  title =        "To-many or to-one? {All}-in-one! {Efficient} purely
                 functional multi-maps with type-heterogeneous
                 hash-tries",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "283--295",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192420",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/hash.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "An immutable multi-map is a many-to-many map data
                 structure with expected fast insert and lookup
                 operations. This data structure is used for
                 applications processing graphs or many-to-many
                 relations as applied in compilers, runtimes of
                 programming languages, or in static analysis of
                 object-oriented systems. Collection data structures are
                 assumed to carefully balance execution time of
                 operations with memory consumption characteristics and
                 need to scale gracefully from a few elements to
                 multiple gigabytes at least. When processing larger
                 in-memory data sets the overhead of the data structure
                 encoding itself becomes a memory usage bottleneck,
                 dominating the overall performance. In this paper we
                 propose AXIOM, a novel hash-trie data structure that
                 allows for a highly efficient and type-safe multi-map
                 encoding by distinguishing inlined values of singleton
                 sets from nested sets of multi-mappings. AXIOM strictly
                 generalizes over previous hash-trie data structures by
                 supporting the processing of fine-grained
                 type-heterogeneous content on the implementation level
                 (while API and language support for type-heterogeneity
                 are not scope of this paper). We detail the design and
                 optimizations of AXIOM and further compare it against
                 state-of-the-art immutable maps and multi-maps in Java,
                 Scala and Clojure. We isolate key differences using
                 microbenchmarks and validate the resulting conclusions
                 on a case study in static analysis. AXIOM reduces the
                 key-value storage overhead by 1.87x; with specializing
                 and inlining across collection boundaries it improves
                 by 5.1x.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Sun:2018:RAR,
  author =       "Yu-Shan Sun",
  title =        "Reasoning About Reference Behavior with {RESOLVE}",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "3",
  pages =        "18--19",
  month =        jul,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3229783.3229800",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "As an alternative to reasoning about references
                 explicitly and ACM SIGSOFT Software Engineering Notes
                 Page 18 July 2018 Volume 43 Number 3 routinely as
                 needed for Java-like programs, this paper summarizes
                 the RESOLVE approach in reasoning via reference-hiding
                 data abstractions for the majority of programs and only
                 reasoning about references when they are unavoidable.
                 Furthermore, this paper raises discussion topics for
                 reasoning about various implementation classifications
                 and to explore when there is a need to be concerned
                 about establishing the frame property",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Tanyalcin:2018:LVL,
  author =       "Ibrahim Tanyalcin and Carla {Al Assaf} and Julien
                 Ferte and Fran{\c{c}}ois Ancien and Taushif Khan and
                 Guillaume Smits and Marianne Rooman and Wim Vranken",
  title =        "Lexicon Visualization Library and {JavaScript} for
                 Scientific Data Visualization",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "20",
  number =       "1",
  pages =        "50--65",
  month =        "????",
  year =         "2018",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2018.011111125",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Feb 15 06:20:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/document/8291800/",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Tran-Jorgensen:2018:ATV,
  author =       "Peter W. V. Tran-J{\o}rgensen and Peter Gorm Larsen
                 and Gary T. Leavens",
  title =        "Automated translation of {VDM} to {JML}-annotated
                 {Java}",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "20",
  number =       "2",
  pages =        "211--235",
  month =        apr,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10009-017-0448-3",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Sat Jan 19 15:00:13 MST 2019",
  bibsource =    "http://link.springer.com/journal/10009/20/2;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sttt.bib",
  URL =          "https://link.springer.com/article/10.1007/s10009-017-0448-3",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer (STTT)",
  journal-URL =  "http://link.springer.com/journal/10009",
}

@Article{Ugawa:2018:TSL,
  author =       "Tomoharu Ugawa and Carl G. Ritson and Richard E.
                 Jones",
  title =        "Transactional {Sapphire}: Lessons in High-Performance,
                 On-the-fly Garbage Collection",
  journal =      j-TOPLAS,
  volume =       "40",
  number =       "4",
  pages =        "15:1--15:??",
  month =        dec,
  year =         "2018",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3226225",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 4 08:35:09 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "Constructing a high-performance garbage collector is
                 hard. Constructing a fully concurrent `on-the-fly'
                 compacting collector is much more so. We describe our
                 experience of implementing the Sapphire algorithm as
                 the first on-the-fly, parallel, replication copying,
                 garbage collector for the Jikes RVM Java virtual
                 machine (JVM). In part, we explain our innovations such
                 as copying with hardware and software transactions,
                 on-the-fly management of Java's reference types, and
                 simple, yet correct, lock-free management of volatile
                 fields in a replicating collector. We fully evaluate,
                 for the first time, and using realistic benchmarks,
                 Sapphire's performance and suitability as a low latency
                 collector. An important contribution of this work is a
                 detailed description of our experience of building an
                 on-the-fly copying collector for a complete JVM with
                 some assurance that it is correct. A key aspect of this
                 is model checking of critical components of this
                 complicated and highly concurrent system.",
  acknowledgement = ack-nhfb,
  articleno =    "15",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Uva:2018:AWJ,
  author =       "Marcelo Uva and Pablo Ponzio and Germ{\'a}n Regis and
                 Nazareno Aguirre and Marcelo F. Frias",
  title =        "Automated workarounds from {Java} program
                 specifications based on {SAT} solving",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "20",
  number =       "6",
  pages =        "665--688",
  month =        nov,
  year =         "2018",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10009-018-0503-8",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Sat Jan 19 15:00:15 MST 2019",
  bibsource =    "http://link.springer.com/journal/10009/20/6;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sttt.bib",
  URL =          "https://link.springer.com/article/10.1007/s10009-018-0503-8",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer (STTT)",
  journal-URL =  "http://link.springer.com/journal/10009",
}

@Article{Vidal:2018:ARB,
  author =       "Santiago Vidal and I{\~n}aki Berra and Santiago
                 Zulliani and Claudia Marcos and J. Andr{\'e}s
                 {D{\'\i}az Pace}",
  title =        "Assessing the Refactoring of Brain Methods",
  journal =      j-TOSEM,
  volume =       "27",
  number =       "1",
  pages =        "2:1--2:??",
  month =        jun,
  year =         "2018",
  CODEN =        "ATSMER",
  DOI =          "https://doi.org/10.1145/3191314",
  ISSN =         "1049-331X (print), 1557-7392 (electronic)",
  ISSN-L =       "1049-331X",
  bibdate =      "Fri Jun 8 17:20:40 MDT 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tosem.bib",
  abstract =     "Code smells are a popular mechanism for identifying
                 structural design problems in software systems. Several
                 tools have emerged to support the detection of code
                 smells and propose some refactorings. However, existing
                 tools do not guarantee that a smell will be
                 automatically fixed by means of refactorings. This
                 article presents Bandago, an automated approach to fix
                 a specific type of code smell called Brain Method. A
                 Brain Method centralizes the intelligence of a class
                 and manifests itself as a long and complex method that
                 is difficult to understand and maintain by developers.
                 For each Brain Method, Bandago recommends several
                 refactoring solutions to remove the smell using a
                 search strategy based on simulated annealing. Our
                 approach has been evaluated with several open-source
                 Java applications, and the results show that Bandago
                 can automatically fix more than 60\% of Brain Methods.
                 Furthermore, we conducted a survey with 35 industrial
                 developers that showed evidence about the usefulness of
                 the refactorings proposed by Bandago. Also, we compared
                 the performance of the Bandago against that of a
                 third-party refactoring tool.",
  acknowledgement = ack-nhfb,
  articleno =    "2",
  fjournal =     "ACM Transactions on Software Engineering and
                 Methodology",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J790",
}

@Article{Vilk:2018:BAD,
  author =       "John Vilk and Emery D. Berger",
  title =        "{BLeak}: automatically debugging memory leaks in web
                 applications",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "4",
  pages =        "15--29",
  month =        apr,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296979.3192376",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Despite the presence of garbage collection in managed
                 languages like JavaScript, memory leaks remain a
                 serious problem. In the context of web applications,
                 these leaks are especially pervasive and difficult to
                 debug. Web application memory leaks can take many
                 forms, including failing to dispose of unneeded event
                 listeners, repeatedly injecting iframes and CSS files,
                 and failing to call cleanup routines in third-party
                 libraries. Leaks degrade responsiveness by increasing
                 GC frequency and overhead, and can even lead to browser
                 tab crashes by exhausting available memory. Because
                 previous leak detection approaches designed for
                 conventional C, C++ or Java applications are
                 ineffective in the browser environment, tracking down
                 leaks currently requires intensive manual effort by web
                 developers. This paper introduces BLeak (Browser Leak
                 debugger), the first system for automatically debugging
                 memory leaks in web applications. BLeak's algorithms
                 leverage the observation that in modern web
                 applications, users often repeatedly return to the same
                 (approximate) visual state (e.g., the inbox view in
                 Gmail). Sustained growth between round trips is a
                 strong indicator of a memory leak. To use BLeak, a
                 developer writes a short script (17-73 LOC on our
                 benchmarks) to drive a web application in round trips
                 to the same visual state. BLeak then automatically
                 generates a list of leaks found along with their root
                 causes, ranked by return on investment. Guided by
                 BLeak, we identify and fix over 50 memory leaks in
                 popular libraries and apps including Airbnb, AngularJS,
                 Google Analytics, Google Maps SDK, and jQuery. BLeak's
                 median precision is 100\%; fixing the leaks it
                 identifies reduces heap growth by an average of 94\%,
                 saving from 0.5 MB to 8 MB per round trip. We believe
                 BLeak's approach to be broadly applicable beyond web
                 applications, including to GUI applications on desktop
                 and mobile platforms.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PLDI '18 proceedings.",
}

@Article{Wang:2018:HSA,
  author =       "Kunshan Wang and Stephen M. Blackburn and Antony L.
                 Hosking and Michael Norrish",
  title =        "Hop, Skip, \& Jump: Practical On-Stack Replacement for
                 a Cross-Platform Language-Neutral {VM}",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "3",
  pages =        "1--16",
  month =        mar,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296975.3186412",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  abstract =     "On-stack replacement (OSR) is a performance-critical
                 technology for many languages, especially dynamic
                 languages. Conventional wisdom, apparent in JavaScript
                 engines such as V8 and SpiderMonkey, is that OSR must
                 be implemented in a low-level (i.e., in assembly) and
                 language-specific way. This paper presents an OSR
                 abstraction based on Swapstack, materialized as the API
                 for a low-level virtual machine, and shows how the
                 abstraction of resumption protocols facilitates an
                 elegant implementation of this API on real hardware.
                 Using an experimental JavaScript implementation, we
                 demonstrate that this API enables the language
                 implementation to perform OSR without the need to deal
                 with machine-level details. We also show that the API
                 itself is implementable on concrete hardware. This work
                 helps crystallize OSR abstractions and, by providing a
                 reusable implementation, brings OSR within reach for
                 more language implementers.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '18 proceedings.",
}

@Article{Wang:2018:IDG,
  author =       "Wenwen Wang and Jiacheng Wu and Xiaoli Gong and Tao Li
                 and Pen-Chung Yew",
  title =        "Improving Dynamically-Generated Code Performance on
                 Dynamic Binary Translators",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "3",
  pages =        "17--30",
  month =        mar,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296975.3186413",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "The recent transition in the software industry toward
                 dynamically generated code poses a new challenge to
                 existing dynamic binary translation (DBT) systems. A
                 significant re-translation overhead could be introduced
                 due to the maintenance of the consistency between the
                 dynamically-generated guest code and the corresponding
                 translated host code. To address this issue, this paper
                 presents a novel approach to optimize DBT systems for
                 guest applications with dynamically-generated code. The
                 proposed approach can maximize the reuse of previously
                 translated host code to mitigate the re-translation
                 overhead. A prototype based on such an approach has
                 been implemented on an existing DBT system HQEMU.
                 Experimental results on a set of JavaScript
                 applications show that it can achieve a 1.24X
                 performance speedup on average compared to the original
                 HQEMU.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "VEE '18 proceedings.",
}

@Article{Wang:2018:PBJ,
  author =       "Kaiyuan Wang and Hayes Converse and Milos Gligoric and
                 Sasa Misailovic and Sarfraz Khurshid",
  title =        "A Progress Bar for the {JPF} Search Using Program
                 Executions",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "55--55",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3282525",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Software model checkers, such as JPF, are routinely
                 used to explore executions of programs that have very
                 large state spaces. Sometimes the exploration can take
                 a significant amount of time before a bug is found or
                 the checking is complete, in which case the user must
                 patiently wait, possibly for quite some time, to learn
                 the result of checking. A progress bar that accurately
                 shows the status of the search provides the user useful
                 feedback about the time expected for the search to
                 complete. This paper introduces JPFBar, a novel
                 technique to estimate the percentage of work done by
                 the JPF search by computing weights for the execution
                 paths it explores and summing up the weights. JPFBar is
                 embodied into a listener that prints a progress bar
                 during JPF execution. An experimental evaluation using
                 a variety of Java subjects shows that JPFBar provides
                 accurate information about the search's progress and
                 fares well in comparison with a state-based progress
                 estimator that is part of the standard JPF
                 distribution.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Article{Wilcox:2018:VVH,
  author =       "James R. Wilcox and Cormac Flanagan and Stephen N.
                 Freund",
  title =        "{VerifiedFT}: a verified, high-performance precise
                 dynamic race detector",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "1",
  pages =        "354--367",
  month =        jan,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3200691.3178514",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:56 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Dynamic data race detectors are valuable tools for
                 testing and validating concurrent software, but to
                 achieve good performance they are typically implemented
                 using sophisticated concurrent algorithms. Thus, they
                 are ironically prone to the exact same kind of
                 concurrency bugs they are designed to detect. To
                 address these problems, we have developed VerifiedFT, a
                 clean slate redesign of the FastTrack race detector
                 [19]. The VerifiedFT analysis provides the same
                 precision guarantee as FastTrack, but is simpler to
                 implement correctly and efficiently, enabling us to
                 mechanically verify an implementation of its core
                 algorithm using CIVL [27]. Moreover, VerifiedFT
                 provides these correctness guarantees without
                 sacrificing any performance over current
                 state-of-the-art (but complex and unverified) FastTrack
                 implementations for Java.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "PPoPP '18 proceedings.",
}

@Article{Wu:2018:EBJ,
  author =       "Mingyu Wu and Ziming Zhao and Haoyu Li and Heting Li
                 and Haibo Chen and Binyu Zang and Haibing Guan",
  title =        "{Espresso}: Brewing {Java} For More Non-Volatility
                 with Non-volatile Memory",
  journal =      j-SIGPLAN,
  volume =       "53",
  number =       "2",
  pages =        "70--83",
  month =        feb,
  year =         "2018",
  CODEN =        "SINODQ",
  DOI =          "https://doi.org/10.1145/3296957.3173201",
  ISSN =         "0362-1340 (print), 1523-2867 (print), 1558-1160
                 (electronic)",
  ISSN-L =       "0362-1340",
  bibdate =      "Wed Oct 16 14:12:56 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib",
  abstract =     "Fast, byte-addressable non-volatile memory (NVM)
                 embraces both near-DRAM latency and disk-like
                 persistence, which has generated considerable interests
                 to revolutionize system software stack and programming
                 models. However, it is less understood how NVM can be
                 combined with managed runtime like Java virtual machine
                 (JVM) to ease persistence management. This paper
                 proposes Espresso, a holistic extension to Java and its
                 runtime, to enable Java programmers to exploit NVM for
                 persistence management with high performance. Espresso
                 first provides a general persistent heap design called
                 Persistent Java Heap (PJH) to manage persistent data as
                 normal Java objects. The heap is then strengthened with
                 a recoverable mechanism to provide crash consistency
                 for heap metadata. Espresso further provides a new
                 abstraction called Persistent Java Object (PJO) to
                 provide an easy-to-use but safe persistence programming
                 model for programmers to persist application data.
                 Evaluation confirms that Espresso significantly
                 outperforms state-of-art NVM support for Java (i.e.,
                 JPA and PCJ) while being compatible to data structures
                 in existing Java programs.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGPLAN Notices",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J706",
  remark =       "ASPLOS '18 proceedings.",
}

@Article{Yu:2018:NFN,
  author =       "Chunjiang Yu and Wentao Wu and Jing Wang and Yuxin Lin
                 and Yang and Jiajia Chen and Fei Zhu and Bairong Shen",
  title =        "{NGS-FC}: a Next-Generation Sequencing Data Format
                 Converter",
  journal =      j-TCBB,
  volume =       "15",
  number =       "5",
  pages =        "1683--1691",
  month =        sep,
  year =         "2018",
  CODEN =        "ITCBCY",
  DOI =          "https://doi.org/10.1109/TCBB.2017.2722442",
  ISSN =         "1545-5963 (print), 1557-9964 (electronic)",
  ISSN-L =       "1545-5963",
  bibdate =      "Thu Nov 8 06:18:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tcbb.bib",
  abstract =     "With the widespread implementation of next-generation
                 sequencing NGS technologies, millions of sequences have
                 been produced. A lot of databases were created to store
                 and organize the high-throughput sequencing data.
                 Numerous analysis software programs and tools have been
                 developed over the past years. Most of them use
                 specific formats for data representation and storage.
                 Data interoperability becomes a crucial challenge and
                 many tools have been developed to convert NGS data from
                 one format to another. However, most of them were
                 developed for specific and limited formats. Here, we
                 present NGS-FC Next-Generation Sequencing Format
                 Converter, which provides a framework to support the
                 conversion between several formats. It supports 14
                 formats now and provides interfaces to enable users to
                 improve the existing converters and add new ones.
                 Moreover, NGS-FC achieved the overall competitive
                 performance in comparison with some existing converters
                 in terms of RAM usage and running time. The software is
                 written in Java and can be executed standalone. The
                 source code and documentation are freely available at
                 http://sysbio.suda.edu.cn/NGS-FC.",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE/ACM Transactions on Computational Biology and
                 Bioinformatics",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J954",
}

@Article{Zakai:2018:FPW,
  author =       "Alon Zakai",
  title =        "Fast Physics on the {Web} Using {C++}, {JavaScript},
                 and {Emscripten}",
  journal =      j-COMPUT-SCI-ENG,
  volume =       "20",
  number =       "1",
  pages =        "11--19",
  month =        "????",
  year =         "2018",
  CODEN =        "CSENFA",
  DOI =          "https://doi.org/10.1109/MCSE.2018.110150345",
  ISSN =         "1521-9615 (print), 1558-366X (electronic)",
  ISSN-L =       "1521-9615",
  bibdate =      "Thu Feb 15 06:20:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computscieng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://ieeexplore.ieee.org/document/8254329/",
  acknowledgement = ack-nhfb,
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992",
}

@Article{Zheng:2018:ADS,
  author =       "Guolong Zheng and Quang Loc Le and ThanhVu Nguyen and
                 Quoc-Sang Phan",
  title =        "Automatic Data Structure Repair using Separation
                 Logic",
  journal =      j-SIGSOFT,
  volume =       "43",
  number =       "4",
  pages =        "66--66",
  month =        oct,
  year =         "2018",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3282517.3282528",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Sat Oct 19 18:11:10 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  abstract =     "Software systems are often shipped and deployed with
                 both known and unknown bugs. On-the-fly program
                 repairs, which handle runtime errors and allow programs
                 to continue successfully, can help software
                 reliability, e.g., by dealing with inconsistent or
                 corrupted data without interrupting the running
                 program. We report on our work-in-progress that repairs
                 data structure using separation logic. Our technique,
                 inspired by existing works on specification-based
                 repair, takes as input specification written in a
                 separation logic formula and a concrete data structure
                 that fails that specification, and performs on-the-fly
                 repair to make the data conforms with the
                 specification. The use of separation logic allows us to
                 compactly and precisely represent desired properties of
                 data structures and use existing analyses in separation
                 logic to detect and repair bugs in complex data
                 structures. We have developed a prototype, called
                 STARFIX, to repair invalid Java data structures
                 violating given specifications in separation logic.
                 Preliminary results show that tool can efficiently
                 detect and repair inconsistent data structures
                 including lists and trees.",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/citation.cfm?id=J728",
}

@Misc{Adams:2019:URP,
  author =       "Ulf Adams and Stephan T. Lavavej and Alexander Bolz
                 and Vinnie Falco and David Tolnay and Mitchell {Blank,
                 Jr.} and Mara Bos and Caleb Spare and Alexander Iljin",
  title =        "{ulfjack/ryu}: Printf Support",
  howpublished = "Web site",
  day =          "12",
  month =        aug,
  year =         "2019",
  DOI =          "https://doi.org/10.5281/zenodo.3366212",
  bibdate =      "Sun Aug 16 18:37:00 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/fparith.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://github.com/ulfjack/ryu/tree/v2.0;
                 https://zenodo.org/record/3366212",
  abstract =     "This project contains C and Java implementation of
                 Ryu, as well as a C implementation of Ryu Printf. Ryu
                 converts a floating point number to its shortest
                 decimal representation, whereas Ryu Printf converts a
                 floating point number according to the printf \%f or
                 \%e format. At the time of this writing, these are the
                 fastest known float-to-string conversion algorithms. We
                 have tested the code on Ubuntu 19.04, MacOS Mojave, and
                 Windows 10.",
  acknowledgement = ack-nhfb,
}

@Article{Allyson:2019:SOI,
  author =       "F. B. Allyson and M. L. Danilo and S. M. Jos{\'e} and
                 B. C. Giovanni",
  title =        "{Sherlock} {$N$}-overlap: Invasive Normalization and
                 Overlap Coefficient for the Similarity Analysis Between
                 Source Code",
  journal =      j-IEEE-TRANS-COMPUT,
  volume =       "68",
  number =       "5",
  pages =        "740--751",
  month =        may,
  year =         "2019",
  CODEN =        "ITCOB4",
  DOI =          "https://doi.org/10.1109/TC.2018.2881449",
  ISSN =         "0018-9340 (print), 1557-9956 (electronic)",
  ISSN-L =       "0018-9340",
  bibdate =      "Thu Jul 11 09:46:20 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranscomput2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Computers",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=12",
  keywords =     "computer aided instruction; computer science
                 education; data preprocessing; educational courses;
                 Indexes; invasive normalization; Java; JPlag; method of
                 conformity; MOSS; normalization; overlap coefficient;
                 Plagiarism; Programming; Sherlock N-overlap; Sherlock
                 performance; SIM; similarity analysis; similarity
                 index; similarity investigation tool; source code
                 (software); source code files; Source code similarity
                 detection; source coding; Syntactics; textual
                 documents; Tools",
}

@Article{Almeida:2019:GPD,
  author =       "Andr{\'e} Lu{\'\i}s Barroso Almeida and Leonardo de
                 Souza Cimino and Jos{\'e} Estev{\~a}o Eug{\^e}nio de
                 Resende and Lucas Henrique Moreira Silva and Samuel
                 Queiroz Souza Rocha and Guilherme Aparecido Gregorio
                 and Gustavo Silva Paiva and Saul Delabrida and Haroldo
                 Gambini Santos and Marco Antonio Moreira de Carvalho
                 and Andre Luiz Lins Aquino and Joubert de Castro Lima",
  title =        "A general-purpose distributed computing {Java}
                 middleware",
  journal =      j-CCPE,
  volume =       "31",
  number =       "7",
  pages =        "e4967:1--e4967:??",
  day =          "10",
  month =        apr,
  year =         "2019",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4967",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Thu Mar 28 08:07:56 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "03 October 2018",
}

@Article{Bender:2019:FJC,
  author =       "John Bender and Jens Palsberg",
  title =        "A formalization of {Java}'s concurrent access modes",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "142:1--142:28",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360568",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360568",
  abstract =     "Java's memory model was recently updated and expanded
                 with new access modes. The accompanying documentation
                 for these access modes is intended to make strong
                 guarantees about program behavior that the Java
                 compiler must enforce, yet the documentation is
                 frequently unclear. This makes the intended program
                 behavior ambiguous, impedes discussion of key design
                 decisions, and makes it impossible to prove general
                 properties about the semantics of the access
                 modes.\par

                 In this paper we present the first formalization of
                 Java's access modes. We have constructed an axiomatic
                 model for all of the modes using the Herd modeling
                 tool. This allows us to give precise answers to
                 questions about the behavior of example programs,
                 called litmus tests. We have validated our model using
                 a large suite of litmus tests from existing research
                 which helps to shed light on the relationship with
                 other memory models. We have also modeled the semantics
                 in Coq and proven several general theorems including a
                 DRF guarantee, which says that if a program is properly
                 synchronized then it will exhibit sequentially
                 consistent behavior. Finally, we use our model to prove
                 that the unusual design choice of a partial order among
                 writes to the same location is unobservable in any
                 program.",
  acknowledgement = ack-nhfb,
  articleno =    "142",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Berglund:2019:MSJ,
  author =       "Lasse Berglund and Cyrille Artho",
  title =        "Method summaries for {JPF}",
  journal =      j-SIGSOFT,
  volume =       "44",
  number =       "4",
  pages =        "16--16",
  month =        dec,
  year =         "2019",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3364452.33644560",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Mar 24 14:07:40 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  URL =          "https://dl.acm.org/doi/10.1145/3364452.33644560",
  abstract =     "Java Pathfinder (JPF) is a virtual machine executing
                 Java byte-code that is able to perform model checking
                 using backtracking execution. Due to backtracking,
                 parts of a program may be executed multiple times
                 during model checking. Hence, we explore \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/loi/sigsoft",
}

@Article{Candel:2019:DMD,
  author =       "Carlos Javier {Fern{\'a}ndez Candel} and Jes{\'u}s
                 {Garc{\'\i}a Molina} and Francisco Javier {Berm{\'u}dez
                 Ruiz} and Jose Ram{\'o}n {Hoyos Barcel{\'o}} and Diego
                 {Sevilla Ruiz} and Benito Jos{\'e} {Cuesta Viera}",
  title =        "Developing a model-driven reengineering approach for
                 migrating {PL\slash SQL} triggers to {Java}: a
                 practical experience",
  journal =      j-J-SYST-SOFTW,
  volume =       "151",
  number =       "??",
  pages =        "38--64",
  month =        may,
  year =         "2019",
  CODEN =        "JSSODM",
  DOI =          "https://doi.org/10.1016/j.jss.2019.01.068",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Tue Mar 12 06:58:51 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121219300214",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Celik:2019:DIA,
  author =       "Ahmet Celik and Pengyu Nie and Christopher J. Rossbach
                 and Milos Gligoric",
  title =        "Design, implementation, and application of {GPU}-based
                 {Java} bytecode interpreters",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "177:1--177:28",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360603",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360603",
  abstract =     "We present the design and implementation of GVM, the
                 first system for executing Java bytecode entirely on
                 GPUs. GVM is ideal for applications that execute a
                 large number of short-living tasks, which share a
                 significant fraction of their codebase and have similar
                 execution time. GVM uses novel algorithms, scheduling,
                 and data layout techniques to adapt to the massively
                 parallel programming and execution model of GPUs. We
                 apply GVM to generate and execute tests for Java
                 projects. First, we implement a sequence-based test
                 generation on top of GVM and design novel algorithms to
                 avoid redundant test sequences. Second, we use GVM to
                 execute randomly generated test cases. We evaluate GVM
                 by comparing it with two existing Java bytecode
                 interpreters (Oracle JVM and Java Pathfinder), as well
                 as with the Oracle JVM with just-in-time (JIT)
                 compiler, which has been engineered and optimized for
                 over twenty years. Our evaluation shows that
                 sequence-based test generation on GVM outperforms both
                 Java Pathfinder and Oracle JVM interpreter.
                 Additionally, our results show that GVM performs as
                 well as running our parallel sequence-based test
                 generation algorithm using JVM with JIT with many CPU
                 threads. Furthermore, our evaluation on several classes
                 from open-source projects shows that executing randomly
                 generated tests on GVM outperforms sequential execution
                 on JVM interpreter and JVM with JIT.",
  acknowledgement = ack-nhfb,
  articleno =    "177",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Chen:2019:ESL,
  author =       "Boyuan Chen and Zhen Ming (Jack) Jiang",
  title =        "Extracting and studying the
                 Logging--Code-Issue-Introducing changes in {Java}-based
                 large-scale open source software systems",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "24",
  number =       "4",
  pages =        "2285--2322",
  month =        aug,
  year =         "2019",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-019-09690-0",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Oct 11 07:46:32 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-019-09690-0",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Chen:2019:SVR,
  author =       "Zhenbang Chen and Hengbiao Yu and Ji Wang and Wei
                 Dong",
  title =        "Symbolic Verification of Regular Properties for {Java}
                 Programs",
  journal =      j-SIGSOFT,
  volume =       "44",
  number =       "4",
  pages =        "17--17",
  month =        dec,
  year =         "2019",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3364452.33644561",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Mar 24 14:07:40 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  URL =          "https://dl.acm.org/doi/10.1145/3364452.33644561",
  abstract =     "Verifying the regular properties of a program is
                 challenging. In this extended abstract, we report our
                 recent progress of verifying regular properties based
                 on dynamic symbolic execution (DSE). We propose two
                 algorithms for DSE to improve the \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/loi/sigsoft",
}

@Article{Cogumbreiro:2019:DDV,
  author =       "Tiago Cogumbreiro and Raymond Hu and Francisco Martins
                 and Nobuko Yoshida",
  title =        "Dynamic Deadlock Verification for General Barrier
                 Synchronisation",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "1",
  pages =        "1:1--1:??",
  month =        mar,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3229060",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 4 08:35:09 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3229060",
  abstract =     "We present Armus, a verification tool for dynamically
                 detecting or avoiding barrier deadlocks. The core
                 design of Armus is based on phasers, a generalisation
                 of barriers that supports split-phase synchronisation,
                 dynamic membership, and optional-waits. This allows
                 Armus to handle the key barrier synchronisation
                 patterns found in modern languages and libraries. We
                 implement Armus for X10 and Java, giving the first
                 sound and complete barrier deadlock verification tools
                 in these settings. Armus introduces a novel event-based
                 graph model of barrier concurrency constraints that
                 distinguishes task-event and event-task dependencies.
                 Decoupling these two kinds of dependencies facilitates
                 the verification of distributed barriers with dynamic
                 membership, a challenging feature of X10. Further, our
                 base graph representation can be dynamically switched
                 between a task-to-task model, Wait-for Graph (WFG), and
                 an event-to-event model, State Graph (SG), to improve
                 the scalability of the analysis. Formally, we show that
                 the verification is sound and complete with respect to
                 the occurrence of deadlock in our core phaser language,
                 and that switching graph representations preserves the
                 soundness and completeness properties. These results
                 are machine checked with the Coq proof assistant.
                 Practically, we evaluate the runtime overhead of our
                 implementations using three benchmark suites in local
                 and distributed scenarios. Regarding deadlock
                 detection, distributed scenarios show negligible
                 overheads and local scenarios show overheads below
                 1.15$ \times $. Deadlock avoidance is more demanding,
                 and highlights the potential gains from dynamic graph
                 selection. In one benchmark scenario, the runtime
                 overheads vary from 1.8$ \times $ for dynamic
                 selection, 2.6$ \times $ for SG-static selection, and
                 5.9$ \times $ for WFG-static selection.",
  acknowledgement = ack-nhfb,
  articleno =    "1",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Coppolino:2019:CAE,
  author =       "Luigi Coppolino and Salvatore D'Antonio and Giovanni
                 Mazzeo and Luigi Romano",
  title =        "A comparative analysis of emerging approaches for
                 securing {Java} software with {Intel SGX}",
  journal =      j-FUT-GEN-COMP-SYS,
  volume =       "97",
  number =       "??",
  pages =        "620--633",
  month =        aug,
  year =         "2019",
  CODEN =        "FGSEVI",
  ISSN =         "0167-739X (print), 1872-7115 (electronic)",
  ISSN-L =       "0167-739X",
  bibdate =      "Mon Oct 14 16:09:57 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/futgencompsys.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167739X18315942",
  acknowledgement = ack-nhfb,
  fjournal =     "Future Generation Computer Systems",
  journal-URL =  "http://www.sciencedirect.com/science/journal/0167739X",
}

@InProceedings{Gabaruk:2019:TJO,
  author =       "J. Gabaruk and D. Logofatu and D. Gro{\ss}kreutz and
                 C. Andersson",
  booktitle =    "{2019 IEEE Global Engineering Education Conference
                 (EDUCON)}",
  title =        "On Teaching {Java} and Object Oriented Programming by
                 Using Children Board Games",
  publisher =    pub-IEEE,
  address =      pub-IEEE:adr,
  pages =        "601--606",
  year =         "2019",
  DOI =          "https://doi.org/10.1109/EDUCON.2019.8725264",
  bibdate =      "Thu Apr 8 07:17:08 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  keywords =     "Julia programming language",
}

@Article{Gupta:2019:CSJ,
  author =       "Shashank Gupta and B. B. Gupta and Pooja Chaudhary",
  title =        "A client-server {JavaScript} code rewriting-based
                 framework to detect the {XSS} worms from online social
                 network",
  journal =      j-CCPE,
  volume =       "31",
  number =       "21",
  pages =        "e4646:1--e4646:??",
  day =          "10",
  month =        nov,
  year =         "2019",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4646",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Wed Mar 31 07:52:09 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  ajournal =     "Concurr. Comput.",
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "31 May 2018",
}

@Article{Hua:2019:EED,
  author =       "Jinru Hua and Yushan Zhang and Yuqun Zhang and Sarfraz
                 Khurshid",
  title =        "{EdSketch}: execution-driven sketching for {Java}",
  journal =      j-INT-J-SOFTW-TOOLS-TECHNOL-TRANSFER,
  volume =       "21",
  number =       "3",
  pages =        "249--265",
  month =        jun,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10009-019-00512-8",
  ISSN =         "1433-2779 (print), 1433-2787 (electronic)",
  ISSN-L =       "1433-2779",
  bibdate =      "Fri Oct 11 15:05:00 MDT 2019",
  bibsource =    "http://link.springer.com/journal/10009/21/3;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sttt.bib",
  URL =          "https://link.springer.com/article/10.1007/s10009-019-00512-8",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal on Software Tools for Technology
                 Transfer (STTT)",
  journal-URL =  "http://link.springer.com/journal/10009",
}

@Article{Jacek:2019:OCW,
  author =       "Nicholas Jacek and Meng-Chieh Chiu and Benjamin M.
                 Marlin and J. Eliot B. Moss",
  title =        "Optimal Choice of When to Garbage Collect",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "1",
  pages =        "3:1--3:??",
  month =        mar,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3282438",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 4 08:35:09 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "We consider the ultimate limits of program-specific
                 garbage collector (GC) performance for real programs.
                 We first characterize the GC schedule optimization
                 problem. Based on this characterization, we develop a
                 linear-time dynamic programming solution that, given a
                 program run and heap size, computes an optimal schedule
                 of collections for a non-generational collector. Using
                 an analysis of a heap object graph of the program, we
                 compute a property of heap objects that we call their
                 pre-birth time. This information enables us to extend
                 the non-generational GC schedule problem to the
                 generational GC case in a way that also admits a
                 dynamic programming solution with cost quadratic in the
                 length of the trace (number of objects allocated). This
                 improves our previously reported approximately optimal
                 result. We further extend the two-generation dynamic
                 program to any number of generations, allowing other
                 generalizations as well. Our experimental results for
                 two generations on traces from Java programs of the
                 DaCapo benchmark suite show that there is considerable
                 promise to reduce garbage collection costs for some
                 programs by developing program-specific collection
                 policies. For a given space budget, optimal schedules
                 often obtain modest but useful time savings, and for a
                 given time budget, optimal schedules can obtain
                 considerable space savings.",
  acknowledgement = ack-nhfb,
  articleno =    "3",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Jeon:2019:MLA,
  author =       "Minseok Jeon and Sehun Jeong and Sungdeok Cha and
                 Hakjoo Oh",
  title =        "A Machine-Learning Algorithm with Disjunctive Model
                 for Data-Driven Program Analysis",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "2",
  pages =        "13:1--13:??",
  month =        jun,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3293607",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 23 07:18:01 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3293607",
  abstract =     "We present a new machine-learning algorithm with
                 disjunctive model for data-driven program analysis. One
                 major challenge in static program analysis is a
                 substantial amount of manual effort required for tuning
                 the analysis performance. Recently, data-driven program
                 analysis has emerged to address this challenge by
                 automatically adjusting the analysis based on data
                 through a learning algorithm. Although this new
                 approach has proven promising for various program
                 analysis tasks, its effectiveness has been limited due
                 to simple-minded learning models and algorithms that
                 are unable to capture sophisticated, in particular
                 disjunctive, program properties. To overcome this
                 shortcoming, this article presents a new disjunctive
                 model for data-driven program analysis as well as a
                 learning algorithm to find the model parameters. Our
                 model uses Boolean formulas over atomic features and
                 therefore is able to express nonlinear combinations of
                 program properties. A key technical challenge is to
                 efficiently determine a set of good Boolean formulas,
                 as brute-force search would simply be impractical. We
                 present a stepwise and greedy algorithm that
                 efficiently learns Boolean formulas. We show the
                 effectiveness and generality of our algorithm with two
                 static analyzers: context-sensitive points-to analysis
                 for Java and flow-sensitive interval analysis for C.
                 Experimental results show that our automated technique
                 significantly improves the performance of the
                 state-of-the-art techniques including ones hand-crafted
                 by human experts.",
  acknowledgement = ack-nhfb,
  articleno =    "13",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Ko:2019:WSA,
  author =       "Yoonseok Ko and Xavier Rival and Sukyoung Ryu",
  title =        "Weakly sensitive analysis for {JavaScript}
                 object-manipulating programs",
  journal =      j-SPE,
  volume =       "49",
  number =       "5",
  pages =        "840--884",
  month =        may,
  year =         "2019",
  CODEN =        "SPEXBL",
  DOI =          "https://doi.org/10.1002/spe.2676",
  ISSN =         "0038-0644 (print), 1097-024X (electronic)",
  ISSN-L =       "0038-0644",
  bibdate =      "Sat Oct 12 09:43:46 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/spe.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Software --- Practice and Experience",
  journal-URL =  "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X",
  onlinedate =   "07 January 2019",
}

@Article{Liu:2019:RIP,
  author =       "Bozhen Liu and Jeff Huang and Lawrence Rauchwerger",
  title =        "Rethinking Incremental and Parallel Pointer Analysis",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "1",
  pages =        "6:1--6:??",
  month =        mar,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3293606",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Mon Mar 4 08:35:09 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  abstract =     "Pointer analysis is at the heart of most
                 interprocedural program analyses. However, scaling
                 pointer analysis to large programs is extremely
                 challenging. In this article, we study incremental
                 pointer analysis and present a new algorithm for
                 computing the points-to information incrementally
                 (i.e., upon code insertion, deletion, and
                 modification). Underpinned by new observations of
                 incremental pointer analysis, our algorithm
                 significantly advances the state of the art in that it
                 avoids redundant computations and the expensive graph
                 reachability analysis, and preserves precision as the
                 corresponding whole program exhaustive analysis.
                 Moreover, it is parallel within each iteration of
                 fixed-point computation. We have implemented our
                 algorithm, IPA, for Java based on the WALA framework
                 and evaluated its performance extensively on real-world
                 large, complex applications. Experimental results show
                 that IPA achieves more than 200X speedups over existing
                 incremental algorithms, two to five orders of magnitude
                 faster than whole program pointer analysis, and also
                 improves the performance of an incremental data race
                 detector by orders of magnitude. Our IPA implementation
                 is open source and has been adopted by WALA.",
  acknowledgement = ack-nhfb,
  articleno =    "6",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Liva:2019:SDE,
  author =       "Giovanni Liva and Muhammad Taimoor Khan and Martin
                 Pinzger",
  title =        "Semantics-driven extraction of timed automata from
                 {Java} programs",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "24",
  number =       "5",
  pages =        "3114--3150",
  month =        oct,
  year =         "2019",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-019-09699-5",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Oct 11 07:46:32 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-019-09699-5;
                 http://link.springer.com/content/pdf/10.1007/s10664-019-09699-5.pdf",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Lu:2019:PPY,
  author =       "Jingbo Lu and Jingling Xue",
  title =        "Precision-preserving yet fast object-sensitive pointer
                 analysis with partial context sensitivity",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "148:1--148:29",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360574",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360574",
  abstract =     "Object-sensitivity is widely used as a context
                 abstraction for computing the points-to information
                 context-sensitively for object-oriented languages like
                 Java. Due to the combinatorial explosion of contexts in
                 large programs, k -object-sensitive pointer \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "148",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Luo:2019:HDS,
  author =       "Q. Luo and K. Moran and L. Zhang and D. Poshyvanyk",
  title =        "How Do Static and Dynamic Test Case Prioritization
                 Techniques Perform on Modern Software Systems? {An}
                 Extensive Study on {GitHub} Projects",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "11",
  pages =        "1054--1080",
  month =        nov,
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2018.2822270",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Dec 12 06:35:49 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
  keywords =     "Computer bugs; dynamic; dynamic TCP techniques;
                 dynamic test case prioritization techniques; Fault
                 detection; fault diagnosis; GitHub projects; Java;
                 Measurement; mutation analysis; program testing;
                 quality metrics; real-word Java programs; regression
                 analysis; Regression testing; regression testing
                 technique; Software systems; software systems; static;
                 static TCP techniques; static techniques; static test
                 case prioritization techniques; TCP effectiveness; test
                 case prioritization; test-class granularity;
                 test-method granularity; Testing",
}

@Article{Maas:2019:HAT,
  author =       "M. Maas and K. Asanovic and J. Kubiatowicz",
  title =        "A Hardware Accelerator for Tracing Garbage
                 Collection",
  journal =      j-IEEE-MICRO,
  volume =       "39",
  number =       "3",
  pages =        "38--46",
  month =        may # "\slash " # jun,
  year =         "2019",
  CODEN =        "IEMIDZ",
  DOI =          "https://doi.org/10.1109/MM.2019.2910509",
  ISSN =         "0272-1732 (print), 1937-4143 (electronic)",
  ISSN-L =       "0272-1732",
  bibdate =      "Thu Jul 25 15:33:44 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeemicro.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Micro",
  journal-URL =  "http://www.computer.org/csdl/mags/mi/index.html",
  keywords =     "end-to-end RTL prototype; field programmable gate
                 arrays; garbage collection; garbage-collected
                 languages; GC accelerator; Hardware; hardware
                 accelerator; in-order CPU; Java; Linux; memory
                 controller; Memory management; Object recognition;
                 pause-free garbage collectors; reduced instruction set
                 computing; Servers; SoC; Software; stop-the-world
                 garbage collector; storage management; System-on-chip;
                 system-on-chip",
}

@Article{Marchetto:2019:CCR,
  author =       "A. Marchetto and G. Scanniello and A. Susi",
  title =        "Combining Code and Requirements Coverage with
                 Execution Cost for Test Suite Reduction",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "4",
  pages =        "363--390",
  month =        apr,
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2017.2777831",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Aug 29 15:46:23 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
  keywords =     "Business; Java; Large scale integration;
                 Multi-objective approach; MultiObjective test suites
                 REduction; original test suites; program testing;
                 regression analysis; regression testing; Software;
                 Software engineering; software fault tolerance;
                 software maintenance; Space exploration; suite
                 exercise; test cases; test suite reduction; testing;
                 Testing; under-test application",
}

@Article{Mastrangelo:2019:CAD,
  author =       "Luis Mastrangelo and Matthias Hauswirth and Nathaniel
                 Nystrom",
  title =        "Casting about in the dark: an empirical study of cast
                 operations in {Java} programs",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "158:1--158:31",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360584",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360584",
  abstract =     "The main goal of a static type system is to prevent
                 certain kinds of errors from happening at run time. A
                 type system is formulated as a set of constraints that
                 gives any expression or term in a program a
                 well-defined type. Yet mainstream programming languages
                 are endowed with type systems that provide the means to
                 circumvent their constraints through casting.\par

                 We want to understand how and when developers escape
                 the static type system to use dynamic typing. We
                 empirically study how casting is used by developers in
                 more than seven thousand Java projects. We find that
                 casts are widely used (8.7\% of methods contain at
                 least one cast) and that 50\% of casts we inspected are
                 not guarded locally to ensure against potential
                 run-time errors.\par

                 To help us better categorize use cases and thus
                 understand how casts are used in practice, we identify
                 25 cast-usage patterns---recurrent programming idioms
                 using casts to solve a specific issue. This knowledge
                 can be: (a) a recommendation for current and future
                 language designers to make informed decisions (b) a
                 reference for tool builders, e.g., by providing more
                 precise or new refactoring analyses, (c) a guide for
                 researchers to test new language features, or to carry
                 out controlled programming experiments, and (d) a guide
                 for developers for better practices.",
  acknowledgement = ack-nhfb,
  articleno =    "158",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Book{McNerney:2019:BBB,
  author =       "P. J. McNerney",
  title =        "Beginning {Bazel}: Building and Testing for {Java},
                 {Go}, and More",
  publisher =    pub-APRESS,
  address =      pub-APRESS:adr,
  pages =        "xi + 192",
  year =         "2019",
  ISBN =         "1-4842-5194-6",
  ISBN-13 =      "978-1-4842-5193-5, 978-1-4842-5194-2",
  LCCN =         "QA75.5-76.95",
  bibdate =      "Thu Apr 22 10:09:52 MDT 2021",
  bibsource =    "fsz3950.oclc.org:210/WorldCat;
                 http://www.math.utah.edu/pub/tex/bib/go.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.vlebooks.com/vleweb/product/openreader?id=none\%26isbn=9781484251942",
  abstract =     "Discover Bazel, a new build and software test set of
                 tools for today's programmers and developers. This book
                 shows you how to speed up your builds and tests, and
                 how to use Bazel in the context of your favorite
                 programming language. You'll see that the languages and
                 SDKs supported include Java, Android, iOS, and Go. What
                 You Will Learn Use Bazel as a build tool Test software
                 with Bazel Work with Java, C++, Android, iOS, Go, and
                 other programming languages Run Bazel on Linux, macOS,
                 and Windows Scale and extend Bazel to other languages
                 and platforms Who This Book Is For Experienced
                 programmers looking for alternative build/test tools.",
  acknowledgement = ack-nhfb,
  remark =       "Referencing Build Targets Outside of the Current
                 Package.",
  subject =      "Computer software; Development; Testing",
  tableofcontents = "About the Author \\
                 About the Technical Reviewer \\
                 1: Introduction \\
                 What This Book Is \\
                 What This Book Is Not \\
                 Features of Bazel \\
                 High-Level Build Language \\
                 Explicit Dependency Management \\
                 Advanced Visibility Features \\
                 Explicit Workspace Management \\
                 Remote Build Execution and Caching \\
                 Build Dependency Analysis \\
                 Fast, Correct Builds (and Tests) \\
                 Who This Book Is For (and Possibly Not For) \\
                 2: Setup and Installation \\
                 MacOS \\
                 Installing Xcode \\
                 Installing Bazel \\
                 Installing Java \\
                 Verifying Your Python Version \\
                 Ubuntu Linux \\
                 Installing Required Packages \\
                 Installing Bazel \\
                 Installing Java \\
                 Windows \\
                 Setting Up Your System \\
                 Installing Required Applications \\
                 Visual C++ Redistributable for Visual Studio 2015 \\
                 MSYS2 \\
                 Bazel Installation \\
                 Installing Language Support \\
                 C++ \\
                 Java \\
                 Python \\
                 Final Word \\
                 3: Your First Bazel Project \\
                 Setting Up Your Workspace \\
                 Adding Source Code \\
                 Hello World, Java Style \\
                 Specifying the BUILD Targets \\
                 Building Your Targets \\
                 Build the Binary \\
                 Running the Binary \\
                 Creating and Using Dependencies \\
                 Adding IntMulitplier.java to java\_binary \\
                 Creating a java\_library Dependency \\
                 Depending on Build Targets \\
                 Testing Your Build Targets \\
                 Setting Up Testing Dependencies \\
                 Creating the java\_test Build Target \\
                 Build (and Clean) the World \\
                 Build Everything (In a Directory) \\
                 Build Everything (At This Directory and Below) \\
                 Clean (Mostly) Everything \\
                 Final Word \\
                 4: WORKSPACE File Functionality \\
                 WORKSPACE Files \\
                 Adding New Rules to WORKSPACE \\
                 A Deeper Dive into the Load Path \\
                 Finding the bazel\_tools Repository \\
                 Loading Multiple Rules at the Same Time \\
                 Referencing Other Dependencies \\
                 http\_archive \\
                 git\_repository \\
                 Retrieving a Git Repository \\
                 Fine Print on git\_repository \\
                 http\_archive vs. git\_repository \\
                 Employing a New Language \\
                 Locating the Go Language Rules Repository \\
                 5: A Simple Echo Client/Server Program \\
                 Setting Up Your Workspace \\
                 Go Echo Server \\
                 Java Echo Client \\
                 Naming the Echo Client and Server \\
                 Echoing Between Programs \\
                 Upgrading to JSON \\
                 JSON in Go \\
                 JSON in Java \\
                 GSON Setup \\
                 Adding the Transmission Object to EchoClient \\
                 Executing the Echo Client/Server with JSONFinal Word:
                 Duplication of Effort \\
                 6: Protocol Buffers and Bazel \\
                 Setting Up Your Workspace \\
                 Creating Your First Protocol Buffer \\
                 Using the Protocol Buffer in Java \\
                 Creating the Java Proto Library Target \\
                 Using Your Java Protocol Buffer Target \\
                 Using the Protocol Buffer in Go \\
                 Creating the Go Proto Library Target \\
                 Using Your Go Protocol Buffer Target \\
                 Echo Using Protocol Buffers \\
                 Dependency Tracking and Management \\
                 Change Management in Action \\
                 Final Word \\
                 7: Code Organization and Bazel \\
                 Setup \\
                 Separating the Protocol Buffers",
}

@Article{Mehrabi:2019:PUP,
  author =       "Mostafa Mehrabi and Nasser Giacaman and Oliver
                 Sinnen",
  title =        "{@PT}: Unobtrusive parallel programming with {Java}
                 annotations",
  journal =      j-CCPE,
  volume =       "31",
  number =       "1",
  pages =        "e4831:1--e4831:??",
  day =          "10",
  month =        jan,
  year =         "2019",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.4831",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Thu Mar 28 08:07:54 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "27 July 2018",
}

@Article{Mesbah:2019:REJ,
  author =       "Abdelhak Mesbah and Jean-Louis Lanet and Mohamed
                 Mezghiche",
  title =        "Reverse engineering {Java Card} and vulnerability
                 exploitation: a shortcut to {ROM}",
  journal =      j-INT-J-INFO-SEC,
  volume =       "18",
  number =       "1",
  pages =        "85--100",
  month =        feb,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1007/s10207-018-0401-9",
  ISSN =         "1615-5262 (print), 1615-5270 (electronic)",
  ISSN-L =       "1615-5262",
  bibdate =      "Tue Jan 22 17:04:47 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/intjinfosec.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10207-018-0401-9",
  acknowledgement = ack-nhfb,
  fjournal =     "International Journal of Information Security",
  journal-URL =  "https://link.springer.com/journal/10207",
}

@Article{Miyazawa:2019:SCS,
  author =       "Alvaro Miyazawa and Ana Cavalcanti and Andy Wellings",
  title =        "{SCJ-Circus}: Specification and refinement of
                 Safety-Critical {Java} programs",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "181",
  number =       "??",
  pages =        "140--176",
  day =          "15",
  month =        jul,
  year =         "2019",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Sep 6 06:29:36 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167642319300012",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Noller:2019:CSS,
  author =       "Yannic Noller and Hoang Lam Nguyen and Minxing Tang
                 and Timo Kehrer and Lars Grunske",
  title =        "Complete Shadow Symbolic Execution with {Java
                 PathFinder}",
  journal =      j-SIGSOFT,
  volume =       "44",
  number =       "4",
  pages =        "15--16",
  month =        dec,
  year =         "2019",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3364452.33644558",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Mar 24 14:07:40 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  URL =          "https://dl.acm.org/doi/10.1145/3364452.33644558",
  abstract =     "Regression testing ensures the correctness of the
                 software during its evolution, with special attention
                 on the absence of unintended side-effects that might be
                 introduced by changes. However, the manual creation of
                 regression test cases, which expose \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/loi/sigsoft",
}

@Article{Pan:2019:GCF,
  author =       "Yao Pan and Jules White and Yu Sun and Jeff Gray",
  title =        "Gray Computing: A Framework for Computing with
                 Background {JavaScript} Tasks",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "??",
  pages =        "171--193",
  month =        "????",
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2017.2772812",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Feb 14 06:26:38 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://ieeexplore.ieee.org/document/8105894/",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
}

@Article{Park:2019:ROC,
  author =       "Hyukwoo Park and Sungkook Kim and Jung-Geun Park and
                 Soo-Mook Moon",
  title =        "Reusing the Optimized Code for {JavaScript}
                 Ahead-of-Time Compilation",
  journal =      j-TACO,
  volume =       "15",
  number =       "4",
  pages =        "54:1--54:??",
  month =        jan,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3291056",
  ISSN =         "1544-3566 (print), 1544-3973 (electronic)",
  ISSN-L =       "1544-3566",
  bibdate =      "Tue Jan 8 17:20:00 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/taco.bib",
  abstract =     "As web pages and web apps increasingly include heavy
                 JavaScript code, JavaScript performance has been a
                 critical issue. Modern JavaScript engines achieve a
                 remarkable performance by employing tiered-execution
                 architecture based on interpreter, baseline
                 just-in-time compiler (JITC), and optimizing JITC.
                 Unfortunately, they suffer from a substantial
                 compilation overhead, which can take more than 50\% of
                 the whole running time. A simple idea to reduce the
                 compilation overhead is ahead-of-time compilation
                 (AOTC), which reuses the code generated in the previous
                 run. In fact, existing studies that reuse the bytecode
                 generated by the interpreter or the machine code
                 generated by the baseline JITC have shown tangible
                 performance benefits [12, 31, 41]. However, there has
                 been no study to reuse the machine code generated by
                 the optimizing JITC, which heavily uses profile-based
                 optimizations, thus not easily reusable. We propose a
                 novel AOTC that can reuse the optimized machine code
                 for high-performance JavaScript engines. Unlike
                 previous AOTCs, we need to resolve a few challenging
                 issues related to reusing profile-based optimized code
                 and relocating dynamic addresses. Our AOTC improves the
                 performance of a commercial JavaScript engine by 6.36
                 times (max) and 1.99 times (average) for Octane
                 benchmarks, by reducing the compilation overhead and by
                 running the optimized code from the first invocation of
                 functions. It also improves the loading time of six web
                 apps by 1.28 times, on average.",
  acknowledgement = ack-nhfb,
  articleno =    "54",
  fjournal =     "ACM Transactions on Architecture and Code Optimization
                 (TACO)",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J924",
}

@Article{Pascarella:2019:CCC,
  author =       "Luca Pascarella and Magiel Bruntink and Alberto
                 Bacchelli",
  title =        "Classifying code comments in {Java} software systems",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "24",
  number =       "3",
  pages =        "1499--1537",
  month =        jun,
  year =         "2019",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-019-09694-w",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Oct 11 07:46:31 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-019-09694-w;
                 http://link.springer.com/content/pdf/10.1007/s10664-019-09694-w.pdf",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Ponzanelli:2019:AIC,
  author =       "L. Ponzanelli and G. Bavota and A. Mocci and R.
                 Oliveto and M. D. Penta and S. Haiduc and B. Russo and
                 M. Lanza",
  title =        "Automatic Identification and Classification of
                 Software Development Video Tutorial Fragments",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "5",
  pages =        "464--488",
  month =        may,
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2017.2779479",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Aug 29 15:46:23 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
  keywords =     "Androids; automatic identification; CodeTube; computer
                 aided instruction; data mining; Humanoid robots;
                 Indexes; Internet; Java; meta data; mining unstructured
                 data; pattern classification; query processing;
                 Recommender systems; Software; software development
                 video tutorials; software engineering; Tutorials; video
                 fragment; video signal processing; video tutorials;
                 video tutorials mining; YouTube",
}

@Article{Poslavsky:2019:REJ,
  author =       "Stanislav Poslavsky",
  title =        "{Rings}: an efficient {Java\slash Scala} library for
                 polynomial rings",
  journal =      j-COMP-PHYS-COMM,
  volume =       "235",
  number =       "??",
  pages =        "400--413",
  month =        feb,
  year =         "2019",
  CODEN =        "CPHCBZ",
  DOI =          "https://doi.org/10.1016/j.cpc.2018.09.005",
  ISSN =         "0010-4655 (print), 1879-2944 (electronic)",
  ISSN-L =       "0010-4655",
  bibdate =      "Sat Nov 24 07:45:46 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0010465518303199",
  acknowledgement = ack-nhfb,
  fjournal =     "Computer Physics Communications",
  journal-URL =  "http://www.sciencedirect.com/science/journal/00104655",
}

@Article{Raychev:2019:PPP,
  author =       "Veselin Raychev and Martin Vechev and Andreas Krause",
  title =        "Predicting program properties from `big code'",
  journal =      j-CACM,
  volume =       "62",
  number =       "3",
  pages =        "99--107",
  month =        mar,
  year =         "2019",
  CODEN =        "CACMA2",
  DOI =          "https://doi.org/10.1145/3306204",
  ISSN =         "0001-0782 (print), 1557-7317 (electronic)",
  ISSN-L =       "0001-0782",
  bibdate =      "Mon Mar 4 14:30:18 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/cacm2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://cacm.acm.org/magazines/2019/3/234932/fulltext",
  abstract =     "We present a new approach for predicting program
                 properties from large codebases (aka ``Big Code''). Our
                 approach learns a probabilistic model from ``Big Code''
                 and uses this model to predict properties of new,
                 unseen programs. The key idea of our work is to
                 transform the program into a representation that allows
                 us to formulate the problem of inferring program
                 properties as structured prediction in machine
                 learning. This enables us to leverage powerful
                 probabilistic models such as Conditional Random Fields
                 (CRFs) and perform joint prediction of program
                 properties. As an example of our approach, we built a
                 scalable prediction engine called JSNICE for solving
                 two kinds of tasks in the context of JavaScript:
                 predicting (syntactic) names of identifiers and
                 predicting (semantic) type annotations of variables.
                 Experimentally, JSNICE predicts correct names for 63\%
                 of name identifiers and its type annotation predictions
                 are correct in 81\% of cases. Since its public release
                 at http://jsnice.org, JSNice has become a popular
                 system with hundreds of thousands of uses. By
                 formulating the problem of inferring program properties
                 as structured prediction, our work opens up the
                 possibility for a range of new ``Big Code''
                 applications such as de-obfuscators, decompilers,
                 invariant generators, and others.",
  acknowledgement = ack-nhfb,
  fjournal =     "Communications of the ACM",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J79",
}

@Article{Resenes:2019:JJM,
  author =       "Jonas de Abreu Resenes and Willingthon Pavan and
                 Carlos Amaral H{\"o}lbig and Jos{\'e} Maur{\'{\i}}cio
                 Cunha Fernandes and Vakhtang Shelia and Cheryl Porter
                 and Gerrit Hoogenboom",
  title =        "\pkg{jDSSAT}: a {JavaScript} module for {DSSAT-CSM}
                 integration",
  journal =      j-SOFTWAREX,
  volume =       "10",
  number =       "??",
  pages =        "Article 100271",
  month =        jul # "\slash " # dec,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1016/j.softx.2019.100271",
  ISSN =         "2352-7110",
  ISSN-L =       "2352-7110",
  bibdate =      "Fri Apr 9 16:04:36 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/softwarex.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S235271101930158X",
  acknowledgement = ack-nhfb,
  fjournal =     "SoftwareX",
  journal-URL =  "https://www.sciencedirect.com/journal/softwarex/issues",
}

@Article{Roohitavaf:2019:AAF,
  author =       "Mohammad Roohitavaf and Sandeep Kulkarni",
  title =        "Automatic Addition of Fault-Tolerance in Presence of
                 Unchangeable Environment Actions",
  journal =      j-FUTURE-INTERNET,
  volume =       "11",
  number =       "7",
  pages =        "144",
  day =          "04",
  month =        jul,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.3390/fi11070144",
  ISSN =         "1999-5903",
  bibdate =      "Thu Nov 21 16:51:06 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/future-internet.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.mdpi.com/1999-5903/11/7/144",
  abstract =     "We focus on the problem of adding fault-tolerance to
                 an existing concurrent protocol in the presence of
                 unchangeable environment actions. Such unchangeable
                 actions occur in cases where a subset of
                 components/processes cannot be modified since they
                 represent third-party components or are constrained by
                 physical laws. These actions differ from faults in that
                 they are (1) simultaneously collaborative and
                 disruptive, (2) essential for satisfying the
                 specification and (3) possibly non-terminating. Hence,
                 if these actions are modeled as faults while adding
                 fault-tolerance, it causes existing model repair
                 algorithms to declare failure to add fault-tolerance.
                 We present a set of algorithms for adding stabilization
                 and fault-tolerance for programs that run in the
                 presence of environment actions. We prove the
                 soundness, completeness and the complexity of our
                 algorithms. We have implemented all of our algorithms
                 using symbolic techniques in Java. The experimental
                 results of our algorithms for various examples are also
                 provided.",
  acknowledgement = ack-nhfb,
  remark =       "Special Issue Dependable Cyber Physical Systems.",
}

@Article{Rosa:2019:AOT,
  author =       "Andrea Ros{\`a} and Eduardo Rosales and Walter
                 Binder",
  title =        "Analysis and Optimization of Task Granularity on the
                 {Java Virtual Machine}",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "3",
  pages =        "19:1--19:??",
  month =        jul,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3338497",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 23 07:18:02 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3338497",
  abstract =     "Task granularity, i.e., the amount of work performed
                 by parallel tasks, is a key performance attribute of
                 parallel applications. On the one hand, fine-grained
                 tasks (i.e., small tasks carrying out few computations)
                 may introduce considerable parallelization overheads.
                 On the other hand, coarse-grained tasks (i.e., large
                 tasks performing substantial computations) may not
                 fully utilize the available CPU cores, leading to
                 missed parallelization opportunities. In this article,
                 we provide a better understanding of task granularity
                 for task-parallel applications running on a single Java
                 Virtual Machine in a shared-memory multicore. We
                 present a new methodology to accurately and efficiently
                 collect the granularity of each executed task,
                 implemented in a novel profiler (available open-source)
                 that collects carefully selected metrics from the whole
                 system stack with low overhead, and helps developers
                 locate performance and scalability problems. We analyze
                 task granularity in the DaCapo, ScalaBench, and Spark
                 Perf benchmark suites, revealing inefficiencies related
                 to fine-grained and coarse-grained tasks in several
                 applications. We demonstrate that the collected
                 task-granularity profiles are actionable by optimizing
                 task granularity in several applications, achieving
                 speedups up to a factor of $ 5.90 \times $. Our results
                 highlight the importance of analyzing and optimizing
                 task granularity on the Java Virtual Machine.",
  acknowledgement = ack-nhfb,
  articleno =    "19",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Ryu:2019:TAB,
  author =       "S. Ryu and J. Park and J. Park",
  title =        "Toward Analysis and Bug Finding in {JavaScript} {Web}
                 Applications in the Wild",
  journal =      j-IEEE-SOFTWARE,
  volume =       "36",
  number =       "3",
  pages =        "74--82",
  month =        may # "\slash " # jun,
  year =         "2019",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2018.110113408",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "Browsers; bug finding; Computer applications; Computer
                 bugs; ECMAScript family; Electronic publishing;
                 Internet; Java; JavaScript web applications; logics and
                 meanings of programs; Object recognition; open source
                 analysis frameworks; program analysis; program
                 debugging; public domain software; SAFE; scalable
                 analysis framework; semantics of programming languages;
                 software; software engineering; technical challenges;
                 testing and debugging; theory of computation",
}

@Article{Shen:2019:IRA,
  author =       "Bo Shen and Wei Zhang and Haiyan Zhao and Guangtai
                 Liang and Zhi Jin and Qianxiang Wang",
  title =        "{IntelliMerge}: a refactoring-aware software merging
                 technique",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "170:1--170:28",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360596",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360596",
  abstract =     "In modern software development, developers rely on
                 version control systems like Git to collaborate in the
                 branch-based development workflow. One downside of this
                 workflow is the conflicts occurred when merging
                 contributions from different developers: these
                 conflicts are tedious and error-prone to be correctly
                 resolved, reducing the efficiency of collaboration and
                 introducing potential bugs. The situation becomes even
                 worse, with the popularity of refactorings in software
                 development and evolution, because current merging
                 tools (usually based on the text or tree structures of
                 source code) are unaware of refactorings. In this
                 paper, we present IntelliMerge, a graph-based
                 refactoring-aware merging algorithm for Java programs.
                 We explicitly enhance this algorithm's ability in
                 detecting and resolving refactoring-related conflicts.
                 Through the evaluation on 1,070 merge scenarios from 10
                 popular open-source Java projects, we show that
                 IntelliMerge reduces the number of merge conflicts by
                 58.90\% comparing with GitMerge (the prevalent
                 unstructured merging tool) and 11.84\% comparing with
                 jFSTMerge (the state-of-the-art semi-structured merging
                 tool) without sacrificing the auto-merging precision
                 (88.48\%) and recall (90.22\%). Besides, the evaluation
                 of performance shows that IntelliMerge takes 539
                 milliseconds to process one merge scenario on the
                 median, which indicates its feasibility in real-world
                 applications.",
  acknowledgement = ack-nhfb,
  articleno =    "170",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Simao:2019:GWS,
  author =       "J. Sim{\~a}o and S. Esteves and Andr{\'e} Pires and L.
                 Veiga",
  title =        "{{\em GC-Wise}}: a Self-adaptive approach for
                 memory-performance efficiency in {Java VMs}",
  journal =      j-FUT-GEN-COMP-SYS,
  volume =       "100",
  number =       "??",
  pages =        "674--688",
  month =        nov,
  year =         "2019",
  CODEN =        "FGSEVI",
  DOI =          "https://doi.org/10.1016/j.future.2019.05.027",
  ISSN =         "0167-739X (print), 1872-7115 (electronic)",
  ISSN-L =       "0167-739X",
  bibdate =      "Mon Feb 10 12:55:01 MST 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/futgencompsys.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167739X18304898",
  acknowledgement = ack-nhfb,
  fjournal =     "Future Generation Computer Systems",
  journal-URL =  "http://www.sciencedirect.com/science/journal/0167739X",
}

@Article{Spadini:2019:MOT,
  author =       "Davide Spadini and Maur{\'{\i}}cio Aniche and Magiel
                 Bruntink and Alberto Bacchelli",
  title =        "{Mock} objects for testing {Java} systems",
  journal =      j-EMPIR-SOFTWARE-ENG,
  volume =       "24",
  number =       "3",
  pages =        "1461--1498",
  month =        jun,
  year =         "2019",
  CODEN =        "ESENFW",
  DOI =          "https://doi.org/10.1007/s10664-018-9663-0",
  ISSN =         "1382-3256 (print), 1573-7616 (electronic)",
  ISSN-L =       "1382-3256",
  bibdate =      "Fri Oct 11 07:46:31 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/empir-software-eng.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "http://link.springer.com/article/10.1007/s10664-018-9663-0;
                 http://link.springer.com/content/pdf/10.1007/s10664-018-9663-0.pdf",
  acknowledgement = ack-nhfb,
  fjournal =     "Empirical Software Engineering",
  journal-URL =  "http://link.springer.com/journal/10664",
}

@Article{Spoto:2019:SII,
  author =       "Fausto Spoto and Elisa Burato and Michael D. Ernst and
                 Pietro Ferrara and Alberto Lovato and Damiano Macedonio
                 and Ciprian Spiridon",
  title =        "Static Identification of Injection Attacks in {Java}",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "3",
  pages =        "18:1--18:??",
  month =        jul,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3332371",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 23 07:18:02 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/multithreading.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3332371",
  abstract =     "The most dangerous security-related software errors,
                 according to the OWASP Top Ten 2017 list, affect web
                 applications. They are potential injection attacks that
                 exploit user-provided data to execute undesired
                 operations: database access and updates ( SQL injection
                 ); generation of malicious web pages ( cross-site
                 scripting injection ); redirection to user-specified
                 web pages ( redirect injection ); execution of OS
                 commands and arbitrary scripts ( command injection );
                 loading of user-specified, possibly heavy or dangerous
                 classes at run time ( reflection injection ); access to
                 arbitrary files on the file system ( path-traversal );
                 and storing user-provided data into heap regions
                 normally assumed to be shielded from the outside world
                 ( trust boundary violation ). All these attacks exploit
                 the same weakness: unconstrained propagation of data
                 from sources that the user of a web application
                 controls into sinks whose activation might trigger
                 dangerous operations. Although web applications are
                 written in a variety of languages, Java remains a
                 frequent choice, in particular for banking
                 applications, where security has tangible relevance.
                 This article defines a unified, sound protection
                 mechanism against such attacks, based on the
                 identification of all possible explicit flows of
                 tainted data in Java code. Such flows can be
                 arbitrarily complex, passing through dynamically
                 allocated data structures in the heap. The analysis is
                 based on abstract interpretation and is
                 interprocedural, flow-sensitive, and context-sensitive.
                 Its notion of taint applies to reference
                 (non-primitive) types dynamically allocated in the heap
                 and is object-sensitive and field-sensitive. The
                 analysis works by translating the program into Boolean
                 formulas that model all possible data flows. Its
                 implementation, within the Julia analyzer for Java and
                 Android, found injection security vulnerabilities in
                 the Internet banking service and in the customer
                 relationship management of large Italian banks, as well
                 as in a set of open-source third-party applications. It
                 found the command injection, which is at the origin of
                 the 2017 Equifax data breach, one of the worst data
                 breaches ever. For objective, repeatable results, this
                 article also evaluates the implementation on two
                 open-source security benchmarks: the Juliet Suite and
                 the OWASP Benchmark for the automatic comparison of
                 static analyzers for cybersecurity. We compared this
                 technique against more than 10 other static analyzers,
                 both free and commercial. The result of these
                 experiments is that ours is the only analysis for
                 injection that is sound (up to well-stated limitations
                 such as multithreading and native code) and works on
                 industrial code, and it is also much more precise than
                 other tools.",
  acknowledgement = ack-nhfb,
  articleno =    "18",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Staples:2019:SAB,
  author =       "J. Staples and C. Endicott and L. Krause and P. Pal
                 and P. Samouelian and R. Schantz and A. Wellman",
  title =        "A Semi-Autonomic Bytecode Repair Framework",
  journal =      j-IEEE-SOFTWARE,
  volume =       "36",
  number =       "2",
  pages =        "97--102",
  month =        mar # "\slash " # apr,
  year =         "2019",
  CODEN =        "IESOEG",
  DOI =          "https://doi.org/10.1109/MS.2018.2886829",
  ISSN =         "0740-7459 (print), 1937-4194 (electronic)",
  ISSN-L =       "0740-7459",
  bibdate =      "Fri Aug 2 09:25:48 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ieeesoft.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Software",
  journal-URL =  "http://www.computer.org/portal/web/csdl/magazines/software",
  keywords =     "Cryptography; Ecosystems; Java; Java virtual machine
                 languages; Maintenance engineering; SABRE;
                 semiautonomic bytecode repair engine framework;
                 Servers; Software development; Software maintenance",
}

@Article{Stein:2019:SAD,
  author =       "Benno Stein and Benjamin Barslev Nielsen and Bor-Yuh
                 Evan Chang and Anders M{\o}ller",
  title =        "Static analysis with demand-driven value refinement",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "140:1--140:29",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360566",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360566",
  abstract =     "Static analysis tools for JavaScript must strike a
                 delicate balance, achieving the level of precision
                 required by the most complex features of target
                 programs without incurring prohibitively high analysis
                 time. For example, reasoning about dynamic \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "140",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Storey:2019:SDP,
  author =       "Kyle Storey and Eric Mercer and Pavel Parizek",
  title =        "A Sound Dynamic Partial Order Reduction Engine for
                 {Java Pathfinder}",
  journal =      j-SIGSOFT,
  volume =       "44",
  number =       "4",
  pages =        "15--15",
  month =        dec,
  year =         "2019",
  CODEN =        "SFENDP",
  DOI =          "https://doi.org/10.1145/3364452.3364457",
  ISSN =         "0163-5948 (print), 1943-5843 (electronic)",
  ISSN-L =       "0163-5948",
  bibdate =      "Wed Mar 24 14:07:40 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/sigsoft2010.bib",
  URL =          "https://dl.acm.org/doi/10.1145/3364452.3364457",
  abstract =     "When model checking a multi-threaded program, it is
                 often necessary to enumerate the possible ordering of
                 concurrent events to evaluate the behavior of the
                 program. However, enumerating every possible order of
                 events quickly leads to state-space \ldots{}",
  acknowledgement = ack-nhfb,
  fjournal =     "ACM SIGSOFT Software Engineering Notes",
  journal-URL =  "https://dl.acm.org/loi/sigsoft",
}

@Article{Sudarsan:2019:BDK,
  author =       "V. Sudarsan and R. Sugumar",
  title =        "Building a distributed {$K$}-Means model for {Weka}
                 using remote method invocation {(RMI)} feature of
                 {Java}",
  journal =      j-CCPE,
  volume =       "31",
  number =       "14",
  pages =        "e5313:1--e5313:??",
  day =          "25",
  month =        jul,
  year =         "2019",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.5313",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Oct 12 11:00:03 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "09 May 2019",
}

@Article{Thakur:2019:PFP,
  author =       "Manas Thakur and V. Krishna Nandivada",
  title =        "{PYE}: a Framework for Precise-Yet-Efficient
                 Just-In-Time Analyses for {Java} Programs",
  journal =      j-TOPLAS,
  volume =       "41",
  number =       "3",
  pages =        "16:1--16:??",
  month =        jul,
  year =         "2019",
  CODEN =        "ATPSDT",
  DOI =          "https://doi.org/10.1145/3337794",
  ISSN =         "0164-0925 (print), 1558-4593 (electronic)",
  ISSN-L =       "0164-0925",
  bibdate =      "Sat Nov 23 07:18:02 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/toplas.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3337794",
  abstract =     "Languages like Java and C\# follow a two-step process
                 of compilation: static compilation and just-in-time
                 (JIT) compilation. As the time spent in JIT compilation
                 gets added to the execution-time of the application,
                 JIT compilers typically sacrifice the precision of
                 program analyses for efficiency. The alternative of
                 performing the analysis for the whole program
                 statically ignores the analysis of libraries (available
                 only at runtime), and thereby generates imprecise
                 results. To address these issues, in this article, we
                 propose a two-step (static+JIT) analysis framework
                 called precise-yet-efficient (PYE) that helps generate
                 precise analysis-results at runtime at a very low cost.
                 PYE achieves the twin objectives of precision and
                 performance during JIT compilation by using a
                 two-pronged approach: (i) It performs expensive
                 analyses during static compilation, while accounting
                 for the unavailability of the runtime libraries by
                 generating partial results, in terms of conditional
                 values, for the input application. (ii) During JIT
                 compilation, PYE resolves the conditions associated
                 with these values, using the pre-computed conditional
                 values for the libraries, to generate the final
                 results. We have implemented the static and the runtime
                 components of PYE in the Soot optimization framework
                 and the OpenJDK HotSpot Server Compiler (C2),
                 respectively. We demonstrate the usability of PYE by
                 instantiating it to perform two context-, flow-, and
                 field-sensitive heap-based analyses: (i) points-to
                 analysis for null-dereference-check elimination; and
                 (ii) escape analysis for synchronization elimination.
                 We evaluate these instantiations against their
                 corresponding state-of-the-art implementations in C2
                 over a wide range of benchmarks. The extensive
                 evaluation results show that our strategy works quite
                 well and fulfills both the promises it makes: enhanced
                 precision while maintaining efficiency during JIT
                 compilation.",
  acknowledgement = ack-nhfb,
  articleno =    "16",
  fjournal =     "ACM Transactions on Programming Languages and
                 Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J783",
}

@Article{Wang:2019:DEJ,
  author =       "Yuchen Wang and Kwok Sun Cheng and Myoungkyu Song and
                 Eli Tilevich",
  title =        "A declarative enhancement of {JavaScript} programs by
                 leveraging the {Java} metadata infrastructure",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "181",
  number =       "??",
  pages =        "27--46",
  day =          "15",
  month =        jul,
  year =         "2019",
  CODEN =        "SCPGD4",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Fri Sep 6 06:29:36 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167642319300723",
  acknowledgement = ack-nhfb,
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Wang:2019:OTA,
  author =       "Qingyang Wang and Shungeng Zhang and Yasuhiko Kanemasa
                 and Calton Pu and Balaji Palanisamy and Lilian Harada
                 and Motoyuki Kawaba",
  title =        "Optimizing {$N$}-Tier Application Scalability in the
                 Cloud: A Study of Soft Resource Allocation",
  journal =      j-TOMPECS,
  volume =       "4",
  number =       "2",
  pages =        "10:1--10:??",
  month =        jun,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3326120",
  ISSN =         "2376-3639",
  bibdate =      "Sat Sep 21 07:21:17 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tompecs.bib",
  URL =          "https://dl.acm.org/citation.cfm?id=3326120",
  abstract =     "An effective cloud computing environment requires both
                 good performance and high efficiency of computing
                 resources. Through extensive experiments using a
                 representative n-tier benchmark application (Rice
                 University Bulletin Board System (RUBBoS)), we show
                 that the soft resource allocation (e.g., thread pool
                 size and database connection pool size) in component
                 servers has a significant impact on the overall system
                 performance, especially at high system utilization
                 scenarios. Concretely, the same software resource
                 allocation can be a good setting in one hardware
                 configuration and then becomes an either under- or
                 over-allocation in a slightly different hardware
                 configuration, causing a significant performance drop.
                 We have also observed some interesting phenomena that
                 were caused by the non-trivial dependencies between the
                 soft resources of servers in different tiers. For
                 instance, the thread pool size in an Apache web server
                 can limit the total number of concurrent requests to
                 the downstream servers, which surprisingly decreases
                 the Central Processing Unit (CPU) utilization of the
                 Clustered Java Database Connectivity (C-JDBC)
                 clustering middleware as the workload increases. To
                 provide a globally optimal (or near-optimal) soft
                 resource allocation of each tier in the system, we
                 propose a practical iterative solution approach by
                 combining a soft resource aware queuing network model
                 and the fine-grained measurement data of every
                 component server. Our results show that to truly scale
                 complex distributed systems such as n-tier web
                 applications with expected performance in the cloud, we
                 need to carefully manage soft resource allocation in
                 the system.",
  acknowledgement = ack-nhfb,
  articleno =    "10",
  fjournal =     "ACM Transactions on Modeling and Performance
                 Evaluation of Computing Systems (TOMPECS)",
  journal-URL =  "http://dl.acm.org/pub.cfm?id=J1525",
}

@Article{Wang:2019:TRC,
  author =       "Lulu Wang and Jingyue Li and Bixin Li",
  title =        "Tracking runtime concurrent dependences in {Java}
                 threads using thread control profiling",
  journal =      j-J-SYST-SOFTW,
  volume =       "148",
  number =       "??",
  pages =        "116--131",
  month =        feb,
  year =         "2019",
  CODEN =        "JSSODM",
  DOI =          "https://doi.org/10.1016/j.jss.2018.11.003",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Wed Dec 5 10:20:00 MST 2018",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121218302395",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

@Article{Watt:2019:WW,
  author =       "Conrad Watt and Andreas Rossberg and Jean
                 Pichon-Pharabod",
  title =        "Weakening {WebAssembly}",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "133:1--133:28",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360559",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360559",
  abstract =     "WebAssembly (Wasm) is a safe, portable virtual
                 instruction set that can be hosted in a wide range of
                 environments, such as a Web browser. It is a low-level
                 language whose instructions are intended to compile
                 directly to bare hardware. While the initial version of
                 Wasm focussed on single-threaded computation, a recent
                 proposal extends it with low-level support for multiple
                 threads and atomic instructions for synchronised access
                 to shared memory. To support the correct compilation of
                 concurrent programs, it is necessary to give a suitable
                 specification of its memory model.\par

                 Wasm's language definition is based on a fully
                 formalised specification that carefully avoids
                 undefined behaviour. We present a substantial extension
                 to this semantics, incorporating a relaxed memory
                 model, along with a few proposed extensions. Wasm's
                 memory model is unique in that its linear address space
                 can be dynamically grown during execution, while all
                 accesses are bounds-checked. This leads to the novel
                 problem of specifying how observations about the size
                 of the memory can propagate between threads. We argue
                 that, considering desirable compilation schemes, we
                 cannot give a sequentially consistent semantics to
                 memory growth.\par

                 We show that our model provides sequential consistency
                 for data-race-free executions (SC-DRF). However,
                 because Wasm is to run on the Web, we must also
                 consider interoperability of its model with that of
                 JavaScript. We show, by counter-example, that
                 JavaScript's memory model is not SC-DRF, in contrast to
                 what is claimed in its specification. We propose two
                 axiomatic conditions that should be added to the
                 JavaScript model to correct this difference.\par

                 We also describe a prototype SMT-based litmus tool
                 which acts as an oracle for our axiomatic model,
                 visualising its behaviours, including memory
                 resizing.",
  acknowledgement = ack-nhfb,
  articleno =    "133",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Wijayarathna:2019:WJC,
  author =       "Chamila Wijayarathna and Nalin Asanka Gamagedara
                 Arachchilage",
  title =        "Why {Johnny} can't develop a secure application? {A}
                 usability analysis of {Java Secure Socket Extension
                 API}",
  journal =      j-COMPUT-SECUR,
  volume =       "80",
  number =       "??",
  pages =        "54--73",
  month =        jan,
  year =         "2019",
  CODEN =        "CPSEDU",
  ISSN =         "0167-4048 (print), 1872-6208 (electronic)",
  ISSN-L =       "0167-4048",
  bibdate =      "Mon Sep 23 09:46:58 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/computsecur2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  URL =          "https://www.sciencedirect.com/science/article/pii/S0167404818304887",
  acknowledgement = ack-nhfb,
  fjournal =     "Computers \& Security",
  journal-URL =  "https://www.sciencedirect.com/science/journal/01674048",
}

@Article{Wimmer:2019:IOS,
  author =       "Christian Wimmer and Codrut Stancu and Peter Hofer and
                 Vojin Jovanovic and Paul W{\"o}gerer and Peter B.
                 Kessler and Oleg Pliss and Thomas W{\"u}rthinger",
  title =        "Initialize once, start fast: application
                 initialization at build time",
  journal =      j-PACMPL,
  volume =       "3",
  number =       "OOPSLA",
  pages =        "184:1--184:29",
  month =        oct,
  year =         "2019",
  DOI =          "https://doi.org/10.1145/3360610",
  bibdate =      "Fri Aug 7 19:22:30 MDT 2020",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/pacmpl.bib",
  URL =          "https://dl.acm.org/doi/abs/10.1145/3360610",
  abstract =     "Arbitrary program extension at run time in
                 language-based VMs, e.g., Java's dynamic class loading,
                 comes at a startup cost: high memory footprint and slow
                 warmup. Cloud computing amplifies the startup overhead.
                 Microservices and serverless cloud \ldots{}",
  acknowledgement = ack-nhfb,
  articleno =    "184",
  fjournal =     "Proceedings of the ACM on Programming Languages",
  journal-URL =  "https://pacmpl.acm.org/",
}

@Article{Xu:2019:EEG,
  author =       "Lijie Xu and Tian Guo and Wensheng Dou and Wei Wang
                 and Jun Wei",
  title =        "An experimental evaluation of garbage collectors on
                 big data applications",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "12",
  number =       "5",
  pages =        "570--583",
  month =        jan,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.14778/3303753.3303762",
  ISSN =         "2150-8097",
  bibdate =      "Wed Feb 27 14:03:31 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Popular big data frameworks, ranging from Hadoop
                 MapReduce to Spark, rely on garbage-collected
                 languages, such as Java and Scala. Big data
                 applications are especially sensitive to the
                 effectiveness of garbage collection (i.e., GC), because
                 they usually process a large volume of data objects
                 that lead to heavy GC overhead. Lacking in-depth
                 understanding of GC performance has impeded performance
                 improvement in big data applications. In this paper, we
                 conduct the first comprehensive evaluation on three
                 popular garbage collectors, i.e., Parallel, CMS, and
                 G1, using four representative Spark applications. By
                 thoroughly investigating the correlation between these
                 big data applications' memory usage patterns and the
                 collectors' GC patterns, we obtain many findings about
                 GC inefficiencies. We further propose empirical
                 guidelines for application developers, and insightful
                 optimization strategies for designing big-data-friendly
                 garbage collectors.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Xue:2019:ASC,
  author =       "Y. Xue and Z. Xu and M. Chandramohan and Y. Liu",
  title =        "Accurate and Scalable Cross-Architecture Cross-{OS}
                 Binary Code Search with Emulation",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "11",
  pages =        "1125--1149",
  month =        nov,
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2018.2827379",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Dec 12 06:35:49 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
  keywords =     "3D-CFG; binary clone detection; binary code clones;
                 Binary code search; Binary codes; binary codes; binary
                 executables; BinGo tool; BinGo-E; CFG structures;
                 Cloning; compilation scenario; cross-architecture
                 cross-OS binary code search; cross-architecture
                 matching; cross-compiler matching; cross-OS matching;
                 emulation; Emulation; Feature extraction; high-level
                 semantic features; intra-compiler matching; Java;
                 program compilers; program diagnostics; public domain
                 software; selective inlining technique; Semantics;
                 similar code search; source code clone detection;
                 structural features; Syntactics; Tools; vulnerability
                 matching",
}

@Article{Yan:2019:ACL,
  author =       "M. Yan and X. Xia and E. Shihab and D. Lo and J. Yin
                 and X. Yang",
  title =        "Automating Change-Level Self-Admitted Technical Debt
                 Determination",
  journal =      j-IEEE-TRANS-SOFTW-ENG,
  volume =       "45",
  number =       "12",
  pages =        "1211--1229",
  month =        dec,
  year =         "2019",
  CODEN =        "IESEDJ",
  DOI =          "https://doi.org/10.1109/TSE.2018.2831232",
  ISSN =         "0098-5589 (print), 1939-3520 (electronic)",
  ISSN-L =       "0098-5589",
  bibdate =      "Thu Dec 12 06:35:49 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/gnu.bib;
                 http://www.math.utah.edu/pub/tex/bib/ieeetranssoftweng2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "IEEE Transactions on Software Engineering",
  journal-URL =  "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32",
  keywords =     "change-level determination; Feature extraction;
                 History; Java; Labeling; Measurement; self-admitted
                 technical debt; software change; Software quality;
                 Technical debt",
}

@Article{Yang:2019:MGL,
  author =       "Bing Yang and Kenneth B. Kent and Eric Aubanel and
                 Stephen MacKay and Tobi Agila",
  title =        "A multi-granularity locking scheme for {Java}
                 {PackedObjects} based on a concurrent multiway tree",
  journal =      j-CCPE,
  volume =       "31",
  number =       "11",
  pages =        "e5024:1--e5024:??",
  day =          "10",
  month =        jun,
  year =         "2019",
  CODEN =        "CCPEBO",
  DOI =          "https://doi.org/10.1002/cpe.5024",
  ISSN =         "1532-0626 (print), 1532-0634 (electronic)",
  ISSN-L =       "1532-0626",
  bibdate =      "Sat Oct 12 11:00:02 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/ccpe.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib",
  acknowledgement = ack-nhfb,
  fjournal =     "Concurrency and Computation: Practice and Experience",
  journal-URL =  "http://www.interscience.wiley.com/jpages/1532-0626",
  onlinedate =   "15 October 2018",
}

@Article{Yim:2019:TFS,
  author =       "Keun Soo Yim and Iliyan Malchev and Andrew Hsieh and
                 Dave Burke",
  title =        "{Treble}: Fast Software Updates by Creating an
                 Equilibrium in an Active Software Ecosystem of Globally
                 Distributed Stakeholders",
  journal =      j-TECS,
  volume =       "18",
  number =       "5s",
  pages =        "104:1--104:??",
  month =        oct,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.1145/3358237",
  ISSN =         "1539-9087 (print), 1558-3465 (electronic)",
  ISSN-L =       "1539-9087",
  bibdate =      "Thu Oct 17 18:16:44 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/tecs.bib",
  URL =          "https://dl.acm.org/ft_gateway.cfm?id=3358237",
  abstract =     "This paper presents our experience with Treble, a
                 two-year initiative to build the modular base in
                 Android, a Java-based mobile platform running on the
                 Linux kernel. Our Treble architecture splits the
                 hardware independent core framework written in Java
                 from the hardware dependent vendor implementations
                 (e.g., user space device drivers, vendor native
                 libraries, and kernel written in C/C++). Cross-layer
                 communications between them are done via versioned,
                 stable inter-process communication interfaces whose
                 backward compatibility is tested by using two API
                 compliance suites. Based on this architecture, we
                 repackage the key Android software components that
                 suffered from crucial post-launch security bugs as
                 separate images. That not only enables separate
                 ownerships but also independent updates of each image
                 by interested ecosystem entities. We discuss our
                 experience of delivering Treble architectural changes
                 to silicon vendors and device makers using a yearly
                 release model. Our experiments and industry rollouts
                 support our hypothesis that giving more freedom to all
                 ecosystem entities and creating an equilibrium are a
                 transformation necessary to further scale the world
                 largest open source ecosystem with over two billion
                 active devices.",
  acknowledgement = ack-nhfb,
  articleno =    "104",
  fjournal =     "ACM Transactions on Embedded Computing Systems",
  journal-URL =  "http://portal.acm.org/browse_dl.cfm?idx=J840",
}

@Article{Zeuch:2019:AES,
  author =       "Steffen Zeuch and Bonaventura {Del Monte} and Jeyhun
                 Karimov and Clemens Lutz and Manuel Renz and Jonas
                 Traub and Sebastian Bre{\ss} and Tilmann Rabl and
                 Volker Markl",
  title =        "Analyzing efficient stream processing on modern
                 hardware",
  journal =      j-PROC-VLDB-ENDOWMENT,
  volume =       "12",
  number =       "5",
  pages =        "516--530",
  month =        jan,
  year =         "2019",
  CODEN =        "????",
  DOI =          "https://doi.org/10.14778/3303753.3303758",
  ISSN =         "2150-8097",
  bibdate =      "Wed Feb 27 14:03:31 MST 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib;
                 http://www.math.utah.edu/pub/tex/bib/vldbe.bib",
  abstract =     "Modern Stream Processing Engines (SPEs) process large
                 data volumes under tight latency constraints. Many SPEs
                 execute processing pipelines using message passing on
                 shared-nothing architectures and apply a
                 partition-based scale-out strategy to handle
                 high-velocity input streams. Furthermore, many
                 state-of-the-art SPEs rely on a Java Virtual Machine to
                 achieve platform independence and speed up system
                 development by abstracting from the underlying
                 hardware. In this paper, we show that taking the
                 underlying hardware into account is essential to
                 exploit modern hardware efficiently. To this end, we
                 conduct an extensive experimental analysis of current
                 SPEs and SPE design alternatives optimized for modern
                 hardware. Our analysis highlights potential bottlenecks
                 and reveals that state-of-the-art SPEs are not capable
                 of fully exploiting current and emerging hardware
                 trends, such as multi-core processors and high-speed
                 networks. Based on our analysis, we describe a set of
                 design changes to the common architecture of SPEs to
                 scale-up on modern hardware. We show that the
                 single-node throughput can be increased by up to two
                 orders of magnitude compared to state-of-the-art SPEs
                 by applying specialized code generation, fusing
                 operators, batch-style parallelization strategies, and
                 optimized windowing. This speedup allows for deploying
                 typical streaming applications on a single or a few
                 nodes instead of large clusters.",
  acknowledgement = ack-nhfb,
  fjournal =     "Proceedings of the VLDB Endowment",
  journal-URL =  "http://portal.acm.org/citation.cfm?id=J1174",
}

@Article{Zhang:2019:DSJ,
  author =       "Dan Zhang and Dragan Bo{\v{s}}na{\v{c}}ki and Mark van
                 den Brand and Cornelis Huizing and Bart Jacobs and
                 Ruurd Kuiper and Anton Wijs",
  title =        "Dependency safety for {Java} --- {Implementing} and
                 testing failboxes",
  journal =      j-SCI-COMPUT-PROGRAM,
  volume =       "184",
  number =       "??",
  pages =        "??--??",
  day =          "1",
  month =        oct,
  year =         "2019",
  CODEN =        "SCPGD4",
  DOI =          "https://doi.org/10.1016/j.scico.2019.102316",
  ISSN =         "0167-6423 (print), 1872-7964 (electronic)",
  ISSN-L =       "0167-6423",
  bibdate =      "Wed May 26 13:33:17 MDT 2021",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/scicomputprogram.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0167642319301145",
  acknowledgement = ack-nhfb,
  articleno =    "102316",
  fjournal =     "Science of Computer Programming",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01676423",
}

@Article{Zhou:2019:AJM,
  author =       "Yu Zhou and Xin Yan and Wenhua Yang and Taolue Chen
                 and Zhiqiu Huang",
  title =        "Augmenting {Java} method comments generation with
                 context information based on neural networks",
  journal =      j-J-SYST-SOFTW,
  volume =       "156",
  number =       "??",
  pages =        "328--340",
  month =        oct,
  year =         "2019",
  CODEN =        "JSSODM",
  ISSN =         "0164-1212 (print), 1873-1228 (electronic)",
  ISSN-L =       "0164-1212",
  bibdate =      "Wed Oct 16 06:54:20 MDT 2019",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/jsystsoftw.bib",
  URL =          "http://www.sciencedirect.com/science/article/pii/S0164121219301529",
  acknowledgement = ack-nhfb,
  fjournal =     "Journal of Systems and Software",
  journal-URL =  "http://www.sciencedirect.com/science/journal/01641212",
}

%%% ====================================================================
%%% Cross-referenced entries must come last; entries are sorted by year,
%%% and then by citation label, with `bibsort --byyear':
@Proceedings{Forth:2012:RAA,
  editor =       "Shaun Forth and Paul Hovland and Eric Phipps and Jean
                 Utke and Andrea Walther",
  booktitle =    "Recent Advances in Algorithmic Differentiation",
  title =        "Recent Advances in Algorithmic Differentiation",
  volume =       "87",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "xvii + 353",
  year =         "2012",
  CODEN =        "LNCSA6",
  DOI =          "https://doi.org/10.1007/978-3-642-30023-3",
  ISBN =         "3-642-30022-7 (print), 3-642-30023-5 (e-book)",
  ISBN-13 =      "978-3-642-30022-6 (print), 978-3-642-30023-3
                 (e-book)",
  ISSN =         "1439-7358",
  ISSN-L =       "1439-7358",
  LCCN =         "????",
  bibdate =      "Thu Dec 20 14:35:56 MST 2012",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncse.bib",
  note =         "Proceedings of the Sixth International Conference on
                 Automatic Differentiation (AD2012) held July 23--27,
                 2012, in Fort Collins, Colorado, USA.",
  series =       ser-LNCSE,
  URL =          "http://link.springer.com/book/10.1007/978-3-642-30023-3;
                 http://www.springerlink.com/content/978-3-642-30023-3",
  acknowledgement = ack-nhfb,
  bookpages =    "xvii + 353",
  series-URL =   "http://link.springer.com/bookseries/3527",
  tableofcontents = "Leibniz Notation for Automatic Differentiation /
                 Bruce Christianson \\
                 Sparse Jacobian Construction for Mapped Grid
                 Visco-Resistive Magnetohydrodynamics / Daniel R.
                 Reynolds and Ravi Samtaney \\
                 Combining Automatic Differentiation Methods for
                 High-Dimensional Nonlinear Models / James A. Reed, Jean
                 Utke and Hany S. Abdel-Khalik \\
                 Application of Automatic Differentiation to an
                 Incompressible URANS Solver / Emre {\"O}zkaya, Anil
                 Nemili and Nicolas R. Gauger \\
                 Applying Automatic Differentiation to the Community
                 Land Model / Azamat Mametjanov, Boyana Norris, Xiaoyan
                 Zeng, Beth Drewniak and Jean Utke, et al \\
                 Using Automatic Differentiation to Study the
                 Sensitivity of a Crop Model / Claire Lauvernet, Laurent
                 Hasco{\"e}t, Fran{\c{c}}ois-Xavier Le Dimet and
                 Fr{\'e}d{\'e}ric Baret \\
                 Efficient Automatic Differentiation of Matrix Functions
                 / Peder A. Olsen, Steven J. Rennie and Vaibhava Goel
                 \\
                 Native Handling of Message-Passing Communication in
                 Data-Flow Analysis / Val{\'e}rie Pascual and Laurent
                 Hasco{\"e}t \\
                 Increasing Memory Locality by Executing Several Model
                 Instances Simultaneously / Ralf Giering and Michael
                 V{\"o}szligbeck \\
                 Adjoint Mode Computation of Subgradients for McCormick
                 Relaxations / Markus Beckers, Viktor Mosenkis and Uwe
                 Naumann \\
                 Evaluating an Element of the Clarke Generalized
                 Jacobian of a Piecewise Differentiable Function / Kamil
                 A. Khan and Paul I. Barton \\
                 The Impact of Dynamic Data Reshaping on Adjoint Code
                 Generation for Weakly-Typed Languages Such as Matlab /
                 Johannes Willkomm, Christian H. Bischof and H. Martin
                 B{\"u}cker \\
                 On the Efficient Computation of Sparsity Patterns for
                 Hessians / Andrea Walther \\
                 Exploiting Sparsity in Automatic Differentiation on
                 Multicore Architectures / Benjamin Letschert, Kshitij
                 Kulshreshtha, Andrea Walther, Duc Nguyen and Assefaw
                 Gebremedhin, et al \\
                 Automatic Differentiation Through the Use of Hyper-Dual
                 Numbers for Second Derivatives / Jeffrey A. Fike and
                 Juan J. Alonso \\
                 Connections Between Power Series Methods and Automatic
                 Differentiation",
  xxbookpages =  "xvii + 361",
  xxpages =      "xvii + 361",
}

@Proceedings{Hollingsworth:2012:SPI,
  editor =       "Jeffrey Hollingsworth",
  booktitle =    "{SC '12: Proceedings of the International Conference
                 on High Performance Computing, Networking, Storage and
                 Analysis, Salt Lake Convention Center, Salt Lake City,
                 UT, USA, November 10--16, 2012}",
  title =        "{SC '12: Proceedings of the International Conference
                 on High Performance Computing, Networking, Storage and
                 Analysis, Salt Lake Convention Center, Salt Lake City,
                 UT, USA, November 10--16, 2012}",
  publisher =    pub-IEEE,
  address =      pub-IEEE:adr,
  year =         "2012",
  ISBN =         "1-4673-0804-8",
  ISBN-13 =      "978-1-4673-0804-5",
  bibdate =      "Thu Nov 15 07:35:55 2012",
  bibsource =    "http://portal.acm.org/;
                 http://www.math.utah.edu/pub/bibnet/authors/d/dongarra-jack-j.bib;
                 http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/supercomputing2012.bib",
  acknowledgement = ack-nhfb,
}

@Proceedings{Kroening:2015:CAV,
  editor =       "Daniel Kroening and Corina S. P{\u{a}}s{\u{a}}reanu",
  booktitle =    "{Computer Aided Verification: 27th International
                 Conference, CAV 2015, San Francisco, CA, USA, July
                 18--24, 2015, Proceedings, Part I}",
  title =        "{Computer Aided Verification: 27th International
                 Conference, CAV 2015, San Francisco, CA, USA, July
                 18--24, 2015, Proceedings, Part I}",
  volume =       "9206",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  bookpages =    "xxiii + 677 + 141",
  pages =        "xxiii + 677 + 141",
  year =         "2015",
  DOI =          "https://doi.org/10.1007/978-3-319-21690-4",
  ISBN =         "3-319-21689-9",
  ISBN-13 =      "978-3-319-21689-8",
  bibdate =      "Sat Jan 9 11:36:57 2016",
  bibsource =    "http://www.math.utah.edu/pub/tex/bib/java2010.bib;
                 http://www.math.utah.edu/pub/tex/bib/lncs.bib;
                 http://www.math.utah.edu/pub/tex/bib/string-matching.bib",
  series =       ser-LNCS,
  URL =          "http://link.springer.com/book/10.1007/978-3-319-21690-4",
  acknowledgement = ack-nhfb,
}