{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,9,4]],"date-time":"2023-09-04T19:11:06Z","timestamp":1693854666306},"reference-count":50,"publisher":"Elsevier BV","issue":"1","license":[{"start":{"date-parts":[[2011,12,1]],"date-time":"2011-12-01T00:00:00Z","timestamp":1322697600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"},{"start":{"date-parts":[[2013,7,29]],"date-time":"2013-07-29T00:00:00Z","timestamp":1375056000000},"content-version":"vor","delay-in-days":606,"URL":"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/3.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Electronic Notes in Theoretical Computer Science"],"published-print":{"date-parts":[[2011,12]]},"DOI":"10.1016\/j.entcs.2011.11.005","type":"journal-article","created":{"date-parts":[[2011,11,30]],"date-time":"2011-11-30T22:11:34Z","timestamp":1322691094000},"page":"47-59","source":"Crossref","is-referenced-by-count":8,"title":["Implementing a Language with Flow-Sensitive and Structural Typing on the JVM"],"prefix":"10.1016","volume":"279","author":[{"given":"David J.","family":"Pearce","sequence":"first","affiliation":[]},{"given":"James","family":"Noble","sequence":"additional","affiliation":[]}],"member":"78","reference":[{"key":"10.1016\/j.entcs.2011.11.005_br0010","doi-asserted-by":"crossref","unstructured":"J. Aldrich, V. Kostadinov, and C. Chambers. Alias Annotations for Program Understanding. In Proc. OOPSLA, pages 311\u2013330, 2002.","DOI":"10.1145\/582419.582448"},{"key":"10.1016\/j.entcs.2011.11.005_br0020","series-title":"Proc. DLS","first-page":"53","article-title":"RPython: a step towards reconciling dynamically and statically typed OO languages","author":"Ancona","year":"2007"},{"key":"10.1016\/j.entcs.2011.11.005_br0030","series-title":"Proc. ECOOP","first-page":"428","article-title":"Towards type inference for javascript","volume":"vol. 3586","author":"Anderson","year":"2005"},{"key":"10.1016\/j.entcs.2011.11.005_br0040","series-title":"Proc. OOPSLA","first-page":"57","article-title":"A framework for implementing pluggable type systems","author":"Andreae","year":"2006"},{"key":"10.1016\/j.entcs.2011.11.005_br0050","series-title":"Proc. of TACS","first-page":"651","article-title":"Intersection and union types","volume":"vol. 526","author":"Barbanera","year":"1991"},{"key":"10.1016\/j.entcs.2011.11.005_br0060","doi-asserted-by":"crossref","unstructured":"G. Bierman, E. Meijer, and M. Torgersen. Lost in translation: formalizing proposed extensions to C#. In Proc. OOPSLA, pages 479\u2013498, 2007.","DOI":"10.1145\/1297027.1297063"},{"key":"10.1016\/j.entcs.2011.11.005_br0070","doi-asserted-by":"crossref","unstructured":"B. Bloom, J. Field, N. Nystrom, J. \u00d6stlund, G. Richards, R. Strnisa, J. Vitek, and T. Wrigstad. Thorn: robust, concurrent, extensible scripting on the JVM. In Proc. OOPSLA, pages 117\u2013136, 2009.","DOI":"10.1145\/1640089.1640098"},{"key":"10.1016\/j.entcs.2011.11.005_br0080","doi-asserted-by":"crossref","unstructured":"E. Bodden. Efficient hybrid typestate analysis by determining continuation-equivalent states. In Proc. ICSE, pages 5\u201314, 2010.","DOI":"10.1145\/1806799.1806805"},{"key":"10.1016\/j.entcs.2011.11.005_br0090","series-title":"Proc. ESEC\/FSE","first-page":"36","article-title":"Finding programming errors earlier by evaluating runtime monitors ahead-of-time","author":"Bodden","year":"2008"},{"key":"10.1016\/j.entcs.2011.11.005_br0100","series-title":"Proc. POPL","first-page":"70","article-title":"Structural subtyping and the notion of power type","author":"Cardelli","year":"1988"},{"key":"10.1016\/j.entcs.2011.11.005_br0110","series-title":"Proc. PLDI","first-page":"278","article-title":"Soft typing","author":"Cartwright","year":"1991"},{"key":"10.1016\/j.entcs.2011.11.005_br0120","series-title":"Proc. PLDI","first-page":"85","article-title":"Semantic type qualifiers","author":"Chin","year":"2005"},{"key":"10.1016\/j.entcs.2011.11.005_br0130","doi-asserted-by":"crossref","unstructured":"B. Chin, S. Markstrum, T. Millstein, and J. Palsberg. Inference of user-defined type qualifiers and qualifier rules. In Proc. ESOP, 2006.","DOI":"10.1007\/11693024_18"},{"key":"10.1016\/j.entcs.2011.11.005_br0140","series-title":"Proc. POPL","first-page":"232","article-title":"Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects","author":"Choi","year":"1993"},{"key":"10.1016\/j.entcs.2011.11.005_br0150","doi-asserted-by":"crossref","unstructured":"R. Chugh, J. A. Meister, R. Jhala, and S. Lerner. Staged information flow for javascript. In Proc. PLDI, pages 50\u201362, 2009.","DOI":"10.1145\/1542476.1542483"},{"key":"10.1016\/j.entcs.2011.11.005_br0160","doi-asserted-by":"crossref","unstructured":"G. Dubochet and M. Odersky. Compiling structural types on the JVM. In ECOOP 2009 Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICLOOPS), 2009.","DOI":"10.1145\/1565824.1565829"},{"issue":"9","key":"10.1016\/j.entcs.2011.11.005_br0170","doi-asserted-by":"crossref","first-page":"455","DOI":"10.5381\/jot.2007.6.9.a23","article-title":"Pluggable checking and inferencing of non-null types for Java","volume":"6","author":"Ekman","year":"2007","journal-title":"JOT"},{"key":"10.1016\/j.entcs.2011.11.005_br0180","series-title":"Proc. OOPSLA","first-page":"302","article-title":"Declaring and checking non-null types in an object-oriented language","author":"F\u00e4hndrich","year":"2003"},{"issue":"2","key":"10.1016\/j.entcs.2011.11.005_br0190","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/1348250.1348255","article-title":"Effective typestate verification in the presence of aliasing","volume":"17","author":"Fink","year":"2008","journal-title":"ACM TOSEM"},{"key":"10.1016\/j.entcs.2011.11.005_br0200","series-title":"Proc. POPL","first-page":"245","article-title":"Hybrid type checking","author":"Flanagan","year":"2006"},{"key":"10.1016\/j.entcs.2011.11.005_br0210","series-title":"Proc. PLDI","first-page":"192","article-title":"A theory of type qualifiers","author":"Foster","year":"1999"},{"key":"10.1016\/j.entcs.2011.11.005_br0220","series-title":"Proc. PLDI","first-page":"1","article-title":"Flow-sensitive type qualifiers","author":"Foster","year":"2002"},{"key":"10.1016\/j.entcs.2011.11.005_br0230","series-title":"Proc. SAC","first-page":"1859","article-title":"Static type inference for Ruby","author":"Furr","year":"2009"},{"key":"10.1016\/j.entcs.2011.11.005_br0240","doi-asserted-by":"crossref","unstructured":"E. Gagnon, L. Hendren, and G. Marceau. Efficient inference of static types for java bytecode. In Proc. SAS, pages 199\u2013219, 2000.","DOI":"10.1007\/978-3-540-45099-3_11"},{"key":"10.1016\/j.entcs.2011.11.005_br0250","doi-asserted-by":"crossref","unstructured":"A. Goldberg. A specification of java loading and bytecode verification. In Proc. CCS, pages 49\u201358, 1998.","DOI":"10.1145\/288090.288104"},{"key":"10.1016\/j.entcs.2011.11.005_br0260","series-title":"The Java Language Specification","author":"Gosling","year":"2005"},{"key":"10.1016\/j.entcs.2011.11.005_br0270","series-title":"Proc. OOPSLA","first-page":"321","article-title":"Type qualifier inference for java","author":"Greenfieldboyce","year":"2007"},{"key":"10.1016\/j.entcs.2011.11.005_br0280","series-title":"Programming Clojure","author":"Halloway","year":"2009"},{"key":"10.1016\/j.entcs.2011.11.005_br0290","unstructured":"T. Hoare. Null references: The billion dollar mistake, presentation at qcon, 2009."},{"key":"10.1016\/j.entcs.2011.11.005_br0300","series-title":"Proc. POPL","first-page":"79","article-title":"On flow-sensitive security types","author":"Hunt","year":"2006"},{"issue":"2","key":"10.1016\/j.entcs.2011.11.005_br0310","doi-asserted-by":"crossref","DOI":"10.5381\/jot.2007.6.2.a3","article-title":"Union types for object-oriented programming","volume":"6","author":"Igarashi","year":"2007","journal-title":"JOT"},{"issue":"3\/4","key":"10.1016\/j.entcs.2011.11.005_br0320","doi-asserted-by":"crossref","first-page":"235","DOI":"10.1023\/A:1025055424017","article-title":"Java bytecode verification: algorithms and formalizations","volume":"30","author":"Leroy","year":"2003","journal-title":"Journal of Automated Reasoning"},{"key":"10.1016\/j.entcs.2011.11.005_br0330","series-title":"The Java Virtual Machine Specification","author":"Lindholm","year":"1999"},{"issue":"7","key":"10.1016\/j.entcs.2011.11.005_br0340","doi-asserted-by":"crossref","first-page":"22","DOI":"10.1109\/MC.2008.228","article-title":"In praise of scripting: Real programming pragmatism","volume":"41","author":"Loui","year":"2008","journal-title":"IEEE Computer"},{"key":"10.1016\/j.entcs.2011.11.005_br0350","doi-asserted-by":"crossref","unstructured":"C. Male, D. J. Pearce, A. Potanin, and C. Dymnikov. Java bytecode verification for @NonNull types. In Proc. CC, pages 229\u2013244, 2008.","DOI":"10.1007\/978-3-540-78791-4_16"},{"key":"10.1016\/j.entcs.2011.11.005_br0360","doi-asserted-by":"crossref","unstructured":"A. C. Myers. JFlow: Practical mostly-static information flow control. In Proc. POPL, pages 228\u2013241, 1999.","DOI":"10.1145\/292540.292561"},{"issue":"3","key":"10.1016\/j.entcs.2011.11.005_br0370","doi-asserted-by":"crossref","first-page":"23","DOI":"10.1109\/2.660187","article-title":"Scripting: Higher-level programming for the 21st century","volume":"31","author":"Ousterhout","year":"1998","journal-title":"IEEE Computer"},{"issue":"2","key":"10.1016\/j.entcs.2011.11.005_br0380","doi-asserted-by":"crossref","first-page":"12","DOI":"10.1109\/MC.2007.53","article-title":"Developers shift to dynamic programming languages","volume":"40","author":"Paulson","year":"2007","journal-title":"IEEE Computer"},{"key":"10.1016\/j.entcs.2011.11.005_br0390","unstructured":"D. J. Pearce and J. Noble. Flow-sensitive types for whiley. Technical Report ECSTR10-23, Victoria University of Wellington, 2010."},{"key":"10.1016\/j.entcs.2011.11.005_br0400","series-title":"Types and Programming Languages","author":"Pierce","year":"2002"},{"key":"10.1016\/j.entcs.2011.11.005_br0410","doi-asserted-by":"crossref","unstructured":"P. Pominville, F. Qian, R. Vall\u00e9e-Rai, L. Hendren, and C. Verbrugge. A framework for optimizing Java using attributes. In Proc. CC, pages 334\u2013554, 2001.","DOI":"10.1007\/3-540-45306-7_23"},{"key":"10.1016\/j.entcs.2011.11.005_br0420","doi-asserted-by":"crossref","unstructured":"C. Pusch. Proving the soundness of a java bytecode verifier specification in isabelle\/hol. In Proc. TACAS, pages 89\u2013103, 1999.","DOI":"10.1007\/3-540-49059-0_7"},{"issue":"1","key":"10.1016\/j.entcs.2011.11.005_br0430","doi-asserted-by":"crossref","first-page":"27","DOI":"10.1002\/(SICI)1096-9942(1998)4:1<27::AID-TAPO3>3.0.CO;2-4","article-title":"Objective ML: An effective object-oriented extension to ML","volume":"4","author":"Remy","year":"1998","journal-title":"Theory and Practice of Object Systems"},{"key":"10.1016\/j.entcs.2011.11.005_br0440","doi-asserted-by":"crossref","unstructured":"A. Russo and A. Sabelfeld. Dynamic vs. static flow-sensitive security analysis. In Proc. CSF, pages 186\u2013199, 2010.","DOI":"10.1109\/CSF.2010.20"},{"key":"10.1016\/j.entcs.2011.11.005_br0450","unstructured":"The scala programming language. http:\/\/lamp.epfl.ch\/scala\/."},{"key":"10.1016\/j.entcs.2011.11.005_br0460","series-title":"Proc. ECOOP","first-page":"151","article-title":"Gradual typing for objects","volume":"vol. 4609","author":"Siek","year":"2007"},{"issue":"3","key":"10.1016\/j.entcs.2011.11.005_br0470","doi-asserted-by":"crossref","first-page":"70","DOI":"10.1109\/MS.2005.67","article-title":"Java makes scripting languages irrelevant?","volume":"22","author":"Spinellis","year":"2005","journal-title":"IEEE Software"},{"issue":"1","key":"10.1016\/j.entcs.2011.11.005_br0480","first-page":"157","article-title":"Typestate: A programming language concept for enhancing software reliability","volume":"12","author":"Strom","year":"1986","journal-title":"IEEE TSE"},{"issue":"5","key":"10.1016\/j.entcs.2011.11.005_br0490","first-page":"478","article-title":"Extending typestate checking using conditional liveness analysis","volume":"19","author":"Strom","year":"1993","journal-title":"IEEE TSE"},{"key":"10.1016\/j.entcs.2011.11.005_br0500","series-title":"Proc. POPL","first-page":"377","article-title":"Integrating typed and untyped code in a scripting language","author":"Wrigstad","year":"2010"}],"container-title":["Electronic Notes in Theoretical Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S157106611100154X?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S157106611100154X?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2019,6,20]],"date-time":"2019-06-20T04:25:41Z","timestamp":1561004741000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S157106611100154X"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,12]]},"references-count":50,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2011,12]]}},"alternative-id":["S157106611100154X"],"URL":"https:\/\/doi.org\/10.1016\/j.entcs.2011.11.005","relation":{},"ISSN":["1571-0661"],"issn-type":[{"value":"1571-0661","type":"print"}],"subject":[],"published":{"date-parts":[[2011,12]]}}}