{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,6]],"date-time":"2025-08-06T12:06:39Z","timestamp":1754481999977,"version":"3.41.2"},"reference-count":51,"publisher":"Wiley","issue":"1","license":[{"start":{"date-parts":[[2018,7,27]],"date-time":"2018-07-27T00:00:00Z","timestamp":1532649600000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":["onlinelibrary.wiley.com"],"crossmark-restriction":true},"short-container-title":["Concurrency and Computation"],"published-print":{"date-parts":[[2019,1,10]]},"abstract":"<jats:title>Summary<\/jats:title><jats:p>Parallel computing techniques have been supported by programming languages in two major ways: either library\u2010based APIs or extended language constructs. Library\u2010based features are portable and offer fine\u2010grained control on parallelization details. However, they rely on individual programmer skills; thus, they may lead to inconsistent implementations and considerable code restructurings. On the contrary, language constructs promote environments that largely conceal the details of parallel programming techniques. However, they normally reduce programmer control over the granularity of parallelization and impose additional development concepts and compilation requirements that may sacrifice ease of use and portability. Therefore, approaches that balance between programmer control on parallelization details, intuitiveness of concepts, and portability can gain priority over other paradigms. In this paper, we discuss @PT (Annotation Parallel Task), a parallel computing framework that proposes Java annotations, standard Java components, as its language constructs. @PT takes an object\u2010oriented approach on efficient execution and management of asynchronous tasks, with a special focus on GUI\u2010responsive applications. This paper presents the annotation\u2010based programming interface of the framework and its fundamental parallelization concepts. Furthermore, it studies the usability and performance of @PT by comparisons with other Java parallelization approaches in a set of standard benchmarks. The observations suggest that @PT maintains a simple programming interface, whereas it performs efficiently in different parallel computing domains.<\/jats:p>","DOI":"10.1002\/cpe.4831","type":"journal-article","created":{"date-parts":[[2018,7,27]],"date-time":"2018-07-27T11:51:49Z","timestamp":1532692309000},"update-policy":"https:\/\/doi.org\/10.1002\/crossmark_policy","source":"Crossref","is-referenced-by-count":2,"title":["@PT: Unobtrusive parallel programming with Java annotations"],"prefix":"10.1002","volume":"31","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7331-4535","authenticated-orcid":false,"given":"Mostafa","family":"Mehrabi","sequence":"first","affiliation":[{"name":"Department of Electrical and Computer Engineering, University of Auckland Parallel and Reconfigurable Computing Lab  Auckland New Zealand"}]},{"given":"Nasser","family":"Giacaman","sequence":"additional","affiliation":[{"name":"Department of Electrical and Computer Engineering, University of Auckland Parallel and Reconfigurable Computing Lab  Auckland New Zealand"}]},{"given":"Oliver","family":"Sinnen","sequence":"additional","affiliation":[{"name":"Department of Electrical and Computer Engineering, University of Auckland Parallel and Reconfigurable Computing Lab  Auckland New Zealand"}]}],"member":"311","published-online":{"date-parts":[[2018,7,27]]},"reference":[{"key":"e_1_2_8_2_1","unstructured":"Microsoft.Parallel Processing Concurrency and Async Programming in .NET.2015.https:\/\/docs.microsoft.com\/en-us\/dotnet\/standard\/parallel-processing-and-concurrency"},{"key":"e_1_2_8_3_1","unstructured":"OpenMP.OpenMP Application Program Interface. Version 4.0 edn;2013."},{"key":"e_1_2_8_4_1","unstructured":"Microsoft.Parallel Pattern Library (PPL).2017.https:\/\/docs.microsoft.com\/en-us\/cpp\/parallel\/concrt\/parallel-patterns-library-ppl"},{"key":"e_1_2_8_5_1","unstructured":"Oracle.Java Documentations \u2010 Interface Stream.2015.https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/stream\/package-summary.html"},{"key":"e_1_2_8_6_1","doi-asserted-by":"crossref","unstructured":"EnmyrenJ KesslerCW.SKePU: a multi\u2010backend skeleton programming library for multi\u2010GPU systems. In: Proceedings of the Fourth International Workshop on High\u2010Level Parallel Programming and Applications (HLPP);2010;Baltimore MD.","DOI":"10.1145\/1863482.1863487"},{"volume-title":"Programming Multicore and Many\u2010core Computing Systems","year":"2011","author":"Aldinucci M","key":"e_1_2_8_7_1"},{"key":"e_1_2_8_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3132710"},{"issue":"4","key":"e_1_2_8_9_1","first-page":"298","article-title":"Intel\u00ae threading building blocks","volume":"23","author":"Pheatt C","year":"2008","journal-title":"J Comput Sci Coll"},{"key":"e_1_2_8_10_1","doi-asserted-by":"crossref","unstructured":"LinY RadoiC DigD.Retrofitting concurrency for Android applications through refactoring. In: Proceedings of the 22nd ACM SIGOFT International Symposium on Foundation of Software Engineering;2014;Hong Kong.","DOI":"10.1145\/2635868.2635903"},{"key":"e_1_2_8_11_1","doi-asserted-by":"crossref","unstructured":"DigD.Improving responsiveness in mobile apps via refactoring for asynchrony. In: Proceedings of the 2nd International Workshop on Software Development Lifecycle for Mobile;2014;Hong Kong.","DOI":"10.1145\/2661694.2661700"},{"key":"e_1_2_8_12_1","doi-asserted-by":"publisher","DOI":"10.1142\/S0129626411000151"},{"key":"e_1_2_8_13_1","first-page":"1","article-title":"Data stream processing via code annotations","author":"Danelutto M","year":"2016","journal-title":"J Supercomput"},{"key":"e_1_2_8_14_1","unstructured":"RobisonAD.Cilk plus: language support for thread and vector parallelism. Talk at HP\u2010CAST.2012;18:25."},{"key":"e_1_2_8_15_1","doi-asserted-by":"crossref","unstructured":"Cav\u00e9V ZhaoJ ShirakoJ SarkarV.Habanero\u2010Java: the new adventures of old X10. In: Proceedings of the 9th International Conference on Principles and Practice of Programming in Java;2011;Kongens Lyngby Denmark.","DOI":"10.1145\/2093157.2093165"},{"key":"e_1_2_8_16_1","doi-asserted-by":"crossref","unstructured":"BullJM KambitesME.JOMP\u2014an OpenMP\u2010like Interface for Java. In: Proceedings of the ACM 2000 Conference on Java Grande;2000;San Francisco CA.","DOI":"10.1145\/337449.337466"},{"key":"e_1_2_8_17_1","doi-asserted-by":"crossref","unstructured":"Vikas GiacamanN SinnenO.PyJama: OpenMP\u2010like implementation for Java with GUI extensions. In: Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores;2013;Shenzhen China.","DOI":"10.1145\/2442992.2442997"},{"key":"e_1_2_8_18_1","doi-asserted-by":"crossref","unstructured":"CharlesP GrothoffC SaraswatV et al.X10: an object\u2010oriented approach to non\u2010uniform cluster computing. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object\u2010Oriented Programming Systems Languages and Applications.2005;San Diego CA.","DOI":"10.1145\/1094811.1094852"},{"key":"e_1_2_8_19_1","unstructured":"Apache Spark.Lightning\u2010fast Cluster Computingwebsite.2015.https:\/\/spark.apache.org"},{"key":"e_1_2_8_20_1","unstructured":"ShneiderRD.Hadoop Buyer's Guide. Ubuntu.2014."},{"volume-title":"EJB 3 in action","year":"2014","author":"Panda D","key":"e_1_2_8_21_1"},{"key":"e_1_2_8_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-0-387-72812-4_7"},{"key":"e_1_2_8_23_1","doi-asserted-by":"crossref","unstructured":"GiacamanN SinnenO.Parallel Task for Parallelizing Object\u2010Oriented Desktop Applications. Paper presented at: 2010 IEEE International Symposium on Parallel & Distributed Processing Workshops and Phd Forum (IPDPSW);2010;Atlanta GA.","DOI":"10.1109\/IPDPSW.2010.5470765"},{"volume-title":"Fundamentals of Parallel Processing","year":"2003","author":"Jordan HF","key":"e_1_2_8_24_1"},{"key":"e_1_2_8_25_1","unstructured":"Microsoft.Exception Handling (Task Parallel Library)website.2015.https:\/\/docs.microsoft.com\/en-us\/dotnet\/standard\/parallel-programming\/exception-handling-task-parallel-library"},{"key":"e_1_2_8_26_1","doi-asserted-by":"crossref","unstructured":"BurtonFW SleepMR.Executing functional programs on a virtual tree of processors. In: Proceedings of the 1981 Conference on Functional Programming Languages and Computer Architecture (FPCA);1981;Portsmouth NH.","DOI":"10.1145\/800223.806778"},{"key":"e_1_2_8_27_1","doi-asserted-by":"crossref","unstructured":"LuW GannonD.Parallel XML processing by work stealing. In: Proceedings of the 2007 Workshop on Service\u2010Oriented Computing Performance: Aspects Issues and Approaches (SOCP);2007;Monterey CA.","DOI":"10.1145\/1272457.1272462"},{"volume-title":"Advanced Java Programming","year":"2015","author":"Roy UK","key":"e_1_2_8_28_1"},{"key":"e_1_2_8_29_1","unstructured":"Lombok Project.Lombok Featureswebsite.2016.https:\/\/projectlombok.org\/features\/index.html"},{"volume-title":"Java: How to Program","year":"2012","author":"Deitel P","key":"e_1_2_8_30_1"},{"key":"e_1_2_8_31_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.2346"},{"key":"e_1_2_8_32_1","doi-asserted-by":"crossref","unstructured":"MehrabiM FanX GiacamanN SinnenO.RedLib: nestable reductions for collections in Java. Paper presented at: IEEE 18th International Conference on High Performance Computing and Communications;2016;Australia Sydney.","DOI":"10.1109\/HPCC-SmartCity-DSS.2016.0127"},{"key":"e_1_2_8_33_1","doi-asserted-by":"crossref","unstructured":"SmithLA BullJM ObdrizalekJ.A parallel java grande benchmark suite. In: Proceedings of the 2001 ACM\/IEEE Conference on Supercomputing;2001;Denver CO.","DOI":"10.1145\/582034.582042"},{"key":"e_1_2_8_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167515.1167488"},{"key":"e_1_2_8_35_1","unstructured":"PouchetLN.Polybench: The polyhedral benchmark suitewebsite.2012.http:\/\/www.cs.ucla.edu\/pouchet\/software\/polybench"},{"key":"e_1_2_8_36_1","unstructured":"Wikipedia.List of Intel Xeon microprocessorswebsite.2016.https:\/\/en.wikipedia.org\/wiki\/List_of_Intel_Xeon_microprocessors#Haswell-based_Xeons"},{"key":"e_1_2_8_37_1","unstructured":"SEMATECH Engineering Statistics e\u2010Handbook.2018.https:\/\/www.itl.nist.gov\/div898\/handbook\/"},{"key":"e_1_2_8_38_1","unstructured":"Micorsoft.Measuring Complexity and Maintainability of Managed Codewebsite.2016.https:\/\/docs.microsoft.com\/en-us\/visualstudio\/code-quality\/measuring-complexity-and-maintainability-of-managed-code"},{"key":"e_1_2_8_39_1","unstructured":"Aparapi.Open\u2010source Framework for Executing Native Java Code on the GPUwebsite.2017.https:\/\/www.aparapi.com"},{"key":"e_1_2_8_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03869-3_82"},{"key":"e_1_2_8_41_1","unstructured":"The Boost C++ Libraries.Chapter 44. Boost.Threadwebsite.2017.https:\/\/theboostcpplibraries.com\/boost.thread"},{"key":"e_1_2_8_42_1","unstructured":"DanaherJS LeeITA LeisersonCE.The JCilk language for multithreaded computing. In: Proceedings of the Synchronization and Concurrency in Object\u2010Oriented Languages (SCOOL);2005;San Diego CA."},{"key":"e_1_2_8_43_1","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.1178"},{"key":"e_1_2_8_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4842-2790-9"},{"key":"e_1_2_8_45_1","doi-asserted-by":"crossref","unstructured":"NigulL MahE.Software maintainability benefits from annotation\u2010driven code. Paper presented at: IEEE International Conference on Software Maintenance;2009;Edmonton Canada.","DOI":"10.1109\/ICSM.2009.5306295"},{"key":"e_1_2_8_46_1","unstructured":"DietC.Android annotations\u2010fast Android Development Easy Maintenance.2017.http:\/\/androidannotations.org\/"},{"key":"e_1_2_8_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2014.2329494"},{"key":"e_1_2_8_48_1","doi-asserted-by":"crossref","unstructured":"JoyMM BeckerM MuellerW MathewsE.Automated source code annotation for timing analysis of embedded software. Paper presented at: 18th International Conference on Advanced Computing and Communications (ADCOM);2012;Bangalore India.","DOI":"10.1109\/ADCOM.2012.6563578"},{"key":"e_1_2_8_49_1","doi-asserted-by":"crossref","unstructured":"BollaR SambolinoL TiganoD RepettoM.Enhancing energy\u2010efficient cloud management through code annotations and greed abstraction layer. Paper presented at: IEEE\/ACM 8th International Conference on Utility and Cloud Computing (UCC);2015;Limassol Cyprus.","DOI":"10.1109\/UCC.2015.95"},{"key":"e_1_2_8_50_1","doi-asserted-by":"crossref","unstructured":"SulirM Nos\u00e1l'M.Sharing developers' mental models through source code annotations. Paper presented at: Federated Conference on Computer Science and Information Systems (FedCSIS);2015;Lodz Poland.","DOI":"10.15439\/2015F301"},{"key":"e_1_2_8_51_1","doi-asserted-by":"crossref","unstructured":"ThomasT.Exploring the usability and effectiveness of interactive annotation and code review for the detection ofsecuity vulnerabilities. Paper presented at: IEEE Symposium on Visual Languages and Human\u2010Centric Computing (VL\/HCC);2015;Atlanta GA.","DOI":"10.1109\/VLHCC.2015.7357234"},{"key":"e_1_2_8_52_1","doi-asserted-by":"crossref","unstructured":"SuzukiR.interactive and collaborative source code annotation. In: Proceedings of the 37th International Conference on Software Engineering.2015;Florence Italy.","DOI":"10.1109\/ICSE.2015.254"}],"container-title":["Concurrency and Computation: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fcpe.4831","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/cpe.4831","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,9,15]],"date-time":"2023-09-15T15:13:54Z","timestamp":1694790834000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/cpe.4831"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,7,27]]},"references-count":51,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2019,1,10]]}},"alternative-id":["10.1002\/cpe.4831"],"URL":"https:\/\/doi.org\/10.1002\/cpe.4831","archive":["Portico"],"relation":{},"ISSN":["1532-0626","1532-0634"],"issn-type":[{"type":"print","value":"1532-0626"},{"type":"electronic","value":"1532-0634"}],"subject":[],"published":{"date-parts":[[2018,7,27]]},"assertion":[{"value":"2017-06-22","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-06-07","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-07-27","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}],"article-number":"e4831"}}