{"title":"Scala对象通信","authors":"B. Sufrin","doi":"10.3233/978-1-58603-907-3-35","DOIUrl":null,"url":null,"abstract":"In this paper we introduce the core features of CSO (Communicating Scala Objects) - a notationally convenient embedding of the essence of occam in a mod- ern, generically typed, object-oriented programming language that is compiled to Java Virtual Machine (JVM) code. Initially inspired by an early release of JCSP, CSO goes beyond JCSP expressively in some respects, including the provision of a unitary ex- tended rendezvous notation and appropriate treatment of subtype variance in channels and ports. Similarities with recent versions of JCSP include the treatment of channel ends (we call them ports) as parameterized types. Ports and channels may be trans- mitted on channels (including inter-JVM channels), provided that an obvious design rule - the ownership rule - is obeyed. Significant differences with recent versions of JCSP include a treatment of network termination that is significantly simpler than the \"poisoning\" approach (perhaps at the cost of reduced programming convenience), and the provision of a family of type-parameterized channel implementations with perfor- mance that obviates the need for the special-purpose scalar-typed channel implemen- tations provided by JCSP. On standard benchmarks such as Commstime, CSO com- munication performance is close to or better than that of JCSP and Scala's Actors library.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"16 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"20","resultStr":"{\"title\":\"Communicating Scala Objects\",\"authors\":\"B. Sufrin\",\"doi\":\"10.3233/978-1-58603-907-3-35\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"In this paper we introduce the core features of CSO (Communicating Scala Objects) - a notationally convenient embedding of the essence of occam in a mod- ern, generically typed, object-oriented programming language that is compiled to Java Virtual Machine (JVM) code. Initially inspired by an early release of JCSP, CSO goes beyond JCSP expressively in some respects, including the provision of a unitary ex- tended rendezvous notation and appropriate treatment of subtype variance in channels and ports. Similarities with recent versions of JCSP include the treatment of channel ends (we call them ports) as parameterized types. Ports and channels may be trans- mitted on channels (including inter-JVM channels), provided that an obvious design rule - the ownership rule - is obeyed. Significant differences with recent versions of JCSP include a treatment of network termination that is significantly simpler than the \\\"poisoning\\\" approach (perhaps at the cost of reduced programming convenience), and the provision of a family of type-parameterized channel implementations with perfor- mance that obviates the need for the special-purpose scalar-typed channel implemen- tations provided by JCSP. On standard benchmarks such as Commstime, CSO com- munication performance is close to or better than that of JCSP and Scala's Actors library.\",\"PeriodicalId\":246267,\"journal\":{\"name\":\"Communicating Process Architectures Conference\",\"volume\":\"16 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1900-01-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"20\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Communicating Process Architectures Conference\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.3233/978-1-58603-907-3-35\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Communicating Process Architectures Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.3233/978-1-58603-907-3-35","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
In this paper we introduce the core features of CSO (Communicating Scala Objects) - a notationally convenient embedding of the essence of occam in a mod- ern, generically typed, object-oriented programming language that is compiled to Java Virtual Machine (JVM) code. Initially inspired by an early release of JCSP, CSO goes beyond JCSP expressively in some respects, including the provision of a unitary ex- tended rendezvous notation and appropriate treatment of subtype variance in channels and ports. Similarities with recent versions of JCSP include the treatment of channel ends (we call them ports) as parameterized types. Ports and channels may be trans- mitted on channels (including inter-JVM channels), provided that an obvious design rule - the ownership rule - is obeyed. Significant differences with recent versions of JCSP include a treatment of network termination that is significantly simpler than the "poisoning" approach (perhaps at the cost of reduced programming convenience), and the provision of a family of type-parameterized channel implementations with perfor- mance that obviates the need for the special-purpose scalar-typed channel implemen- tations provided by JCSP. On standard benchmarks such as Commstime, CSO com- munication performance is close to or better than that of JCSP and Scala's Actors library.