Academic Journal
Expressive and Modular Predicate Dispatch for Java.
| Τίτλος: | Expressive and Modular Predicate Dispatch for Java. |
|---|---|
| Συγγραφείς: | MILLSTEIN, TODD, FROST, CHRISTOPHER, RYDER, JASON, WARTH, ALESSANDRO |
| Πηγή: | ACM Transactions on Programming Languages & Systems; Feb2009, Vol. 31 Issue 2, p7:1-7:54, 54p, 43 Diagrams, 2 Charts |
| Θεματικοί όροι: | Java programming language, Object-oriented programming, Modular programming, Algorithms, Case studies, Equality, Functional programming (Computer science) |
| Περίληψη: | Predicate dispatch is an object-oriented (OO) language mechanism for determining the method implementation to be invoked upon a message send. With predicate dispatch, each method implementation includes a predicate guard specifying the conditions under which the method should be invoked, and logical implication of predicates determines the method overriding relation. Predicate dispatch naturally unifies and generalizes several common forms of dynamic dispatch, including traditional OO dispatch, multimethod dispatch, and functional-style pattern matching. Unfortunately, prior languages supporting predicate dispatch have had several deficiencies that limit the practical utility of this language feature. We describe JPred, a backward-compatible extension to Java supporting predicate dispatch. While prior languages with predicate dispatch have been extensions to toy or nonmainstream languages, we show how predicate dispatch can be naturally added to a traditional OO language. While prior languages with predicate dispatch have required the whole program to be available for typechecking and compilation, JPred retains Java's modular typechecking and compilation strategies. While prior languages with predicate dispatch have included special-purpose algorithms for reasoning about predicates, JPred employs general-purpose, off-the-shelf decision procedures. As a result, JPred's type system is more flexible, allowing several useful programming idioms that are spuriously rejected by those other languages. After describing the JPred language informally, we present an extension to Featherweight Java that formalizes the language and its modular type system, which we have proven sound. Finally, we discuss two case studies that illustrate the practical utility of JPred, including its use in the detection of several errors. [ABSTRACT FROM AUTHOR] |
| Copyright of ACM Transactions on Programming Languages & Systems is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract. (Copyright applies to all Abstracts.) | |
| Βάση Δεδομένων: | Complementary Index |
| FullText | Links: – Type: other Text: Availability: 0 |
|---|---|
| Header | DbId: edb DbLabel: Complementary Index An: 37593890 RelevancyScore: 833 AccessLevel: 6 PubType: Academic Journal PubTypeId: academicJournal PreciseRelevancyScore: 833.471557617188 |
| IllustrationInfo | |
| Items | – Name: Title Label: Title Group: Ti Data: Expressive and Modular Predicate Dispatch for Java. – Name: Author Label: Authors Group: Au Data: <searchLink fieldCode="AR" term="%22MILLSTEIN%2C+TODD%22">MILLSTEIN, TODD</searchLink><br /><searchLink fieldCode="AR" term="%22FROST%2C+CHRISTOPHER%22">FROST, CHRISTOPHER</searchLink><br /><searchLink fieldCode="AR" term="%22RYDER%2C+JASON%22">RYDER, JASON</searchLink><br /><searchLink fieldCode="AR" term="%22WARTH%2C+ALESSANDRO%22">WARTH, ALESSANDRO</searchLink> – Name: TitleSource Label: Source Group: Src Data: ACM Transactions on Programming Languages & Systems; Feb2009, Vol. 31 Issue 2, p7:1-7:54, 54p, 43 Diagrams, 2 Charts – Name: Subject Label: Subject Terms Group: Su Data: <searchLink fieldCode="DE" term="%22Java+programming+language%22">Java programming language</searchLink><br /><searchLink fieldCode="DE" term="%22Object-oriented+programming%22">Object-oriented programming</searchLink><br /><searchLink fieldCode="DE" term="%22Modular+programming%22">Modular programming</searchLink><br /><searchLink fieldCode="DE" term="%22Algorithms%22">Algorithms</searchLink><br /><searchLink fieldCode="DE" term="%22Case+studies%22">Case studies</searchLink><br /><searchLink fieldCode="DE" term="%22Equality%22">Equality</searchLink><br /><searchLink fieldCode="DE" term="%22Functional+programming+%28Computer+science%29%22">Functional programming (Computer science)</searchLink> – Name: Abstract Label: Abstract Group: Ab Data: Predicate dispatch is an object-oriented (OO) language mechanism for determining the method implementation to be invoked upon a message send. With predicate dispatch, each method implementation includes a predicate guard specifying the conditions under which the method should be invoked, and logical implication of predicates determines the method overriding relation. Predicate dispatch naturally unifies and generalizes several common forms of dynamic dispatch, including traditional OO dispatch, multimethod dispatch, and functional-style pattern matching. Unfortunately, prior languages supporting predicate dispatch have had several deficiencies that limit the practical utility of this language feature. We describe JPred, a backward-compatible extension to Java supporting predicate dispatch. While prior languages with predicate dispatch have been extensions to toy or nonmainstream languages, we show how predicate dispatch can be naturally added to a traditional OO language. While prior languages with predicate dispatch have required the whole program to be available for typechecking and compilation, JPred retains Java's modular typechecking and compilation strategies. While prior languages with predicate dispatch have included special-purpose algorithms for reasoning about predicates, JPred employs general-purpose, off-the-shelf decision procedures. As a result, JPred's type system is more flexible, allowing several useful programming idioms that are spuriously rejected by those other languages. After describing the JPred language informally, we present an extension to Featherweight Java that formalizes the language and its modular type system, which we have proven sound. Finally, we discuss two case studies that illustrate the practical utility of JPred, including its use in the detection of several errors. [ABSTRACT FROM AUTHOR] – Name: Abstract Label: Group: Ab Data: <i>Copyright of ACM Transactions on Programming Languages & Systems is the property of Association for Computing Machinery and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract.</i> (Copyright applies to all Abstracts.) |
| PLink | https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edb&AN=37593890 |
| RecordInfo | BibRecord: BibEntity: Identifiers: – Type: doi Value: 10.1145/1462166.1462168 Languages: – Code: eng Text: English PhysicalDescription: Pagination: PageCount: 54 StartPage: 7:1 Subjects: – SubjectFull: Java programming language Type: general – SubjectFull: Object-oriented programming Type: general – SubjectFull: Modular programming Type: general – SubjectFull: Algorithms Type: general – SubjectFull: Case studies Type: general – SubjectFull: Equality Type: general – SubjectFull: Functional programming (Computer science) Type: general Titles: – TitleFull: Expressive and Modular Predicate Dispatch for Java. Type: main BibRelationships: HasContributorRelationships: – PersonEntity: Name: NameFull: MILLSTEIN, TODD – PersonEntity: Name: NameFull: FROST, CHRISTOPHER – PersonEntity: Name: NameFull: RYDER, JASON – PersonEntity: Name: NameFull: WARTH, ALESSANDRO IsPartOfRelationships: – BibEntity: Dates: – D: 01 M: 02 Text: Feb2009 Type: published Y: 2009 Identifiers: – Type: issn-print Value: 01640925 Numbering: – Type: volume Value: 31 – Type: issue Value: 2 Titles: – TitleFull: ACM Transactions on Programming Languages & Systems Type: main |
| ResultId | 1 |