This paper reports our experience using AspectJ, a general-purpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally imp...
详细信息
This paper reports our experience using AspectJ, a general-purpose aspect-oriented extension to Java, to implement distribution and persistence aspects in a web-based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence and distribution concerns in the application considered, and other similar applications. We have also identified a few drawbacks in the language and suggest some minor modifications that could significantly improve similar implementations. Despite the drawbacks, we argue that the AspectJ implementation is superior to the pure Java implementation. Some of the aspects implemented in our experiment are abstract and constitute a simple aspect framework. The other aspects are application specific but we suggest that different implementations might follow the same aspect pattern. The framework and the pattern allow us to propose architecture-specific guidelines that provide practical advice for both restructuring and implementing certain kinds of persistent and distributed applications with AspectJ.
Mainstream object-oriented languages such as C# and Java provide an initialization model for objects that does not guarantee programmer controlled initialization of fields. Instead, all fields are initialized to defau...
详细信息
ISBN:
(纸本)1595937862
Mainstream object-oriented languages such as C# and Java provide an initialization model for objects that does not guarantee programmer controlled initialization of fields. Instead, all fields are initialized to default values (0 for scalars and null for non-scalars) on allocation. This is in stark contrast to functional languages, where all parts of an allocation are initialized to programmer-provided values. These choices have a direct impact on two main issues: 1) the prevalence of null in objectoriented languages (and its general absence in functional languages), and 2) the ability to initialize circular data structures. This paper explores connections between these differing approaches and proposes a fresh look at initialization. Delayed types are introduced to express and formalize prevalent initialization patterns in object-oriented languages.
When a database is shared in different database applications, it is helpful for data-independence and program readability to screen off the implementation details of a schema class from the programs other than the met...
详细信息
When a database is shared in different database applications, it is helpful for data-independence and program readability to screen off the implementation details of a schema class from the programs other than the method implementation code. This makes some systems allow their users to define the schema class in two parts-the interface and the implementation. In this paper, we propose a preprocessing-based approach with the object model for OODBPLs (objectoriented database programming languages) with interface/implementation separation.
Most of the applications that are currently being developed use object-orientedprogramming technology, as is the case of those applications built with the Java or C# languages. Data management has not kept out of thi...
详细信息
Most of the applications that are currently being developed use object-orientedprogramming technology, as is the case of those applications built with the Java or C# languages. Data management has not kept out of this trend, and object-oriented and object-relational database management systems have arisen as a result. Soft-computing applications need to manage imperfect data and Fuzzy Sets Theory has proven to be a good choice for accomplishing the task of imperfect data management. In this article we present a framework that allows the programmers of soft-computing applications to deal with fuzzy objects in a transparent and intuitive way. This framework can be used to develop an object-oriented code in those systems that conform with current hip object-oriented languages, so that imperfect information can be managed. (c) 2005 Wiley Periodicals, Inc.
What\'\'s up and coming in the programming language arena? A rudimentary analysis of the 200+ sessions\'\' titles and abstracts at OOPSLA 07 (22nd Int\'\'l Conf. object-orientedprogramming, Sy...
详细信息
What\'\'s up and coming in the programming language arena? A rudimentary analysis of the 200+ sessions\'\' titles and abstracts at OOPSLA 07 (22nd Int\'\'l Conf. object-orientedprogramming, systems, languages, and applications) provides a rough idea of what\'\'s happening with object-oriented, functional, dynamic, and domain-specific languages.
Java provides a clean object-orientedprogramming model and allows for inherently system-independent programs. Unfortunately, Java has a limited concurrency model, providing only threads and remote method invocation (...
详细信息
Java provides a clean object-orientedprogramming model and allows for inherently system-independent programs. Unfortunately, Java has a limited concurrency model, providing only threads and remote method invocation (RMI). The JR programming language extends Java to provide a rich concurrency model, based on that of SR. JR provides dynamic remote virtual machine creation, dynamic remote object creation, remote method invocation, asynchronous communication, rendezvous, and dynamic process creation. JR's concurrency model stems from the addition of operations ( a generalization of procedures) and JR supports the redefinition of operations through inheritance. JR programs are written in an extended Java and then translated into standard Java programs. The JR run-time support system is also written in standard Java. This paper describes the JR programming language and its implementation. Some initial measurements of the performance of the implementation are also included.
Hybrid partial evaluation (HPE) is a pragmatic approach to partial evaluation that borrows ideas from both online and offline partial evaluation. HPE performs offline-style specialization using an online approach with...
详细信息
ISBN:
(纸本)9781450309400
Hybrid partial evaluation (HPE) is a pragmatic approach to partial evaluation that borrows ideas from both online and offline partial evaluation. HPE performs offline-style specialization using an online approach without static binding time analysis. The goal of HPE is to provide a practical and predictable level of optimization for programmers, with an implementation strategy that fits well within existing compilers or interpreters. HPE requires the programmer to specify where partial evaluation should be applied. It provides no termination guarantee and reports errors in situations that violate simple binding time rules, or have incorrect use of side effects in compile-time code. We formalize HPE for a small imperative object-oriented language and describe Civet, a straightforward implementation of HPE as a relatively simple extension of a Java compiler. Code optimized by Civet performs as well as the output of a state-of-the-art offline partial evaluator.
Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are...
详细信息
ISBN:
(纸本)1581138318
Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are designed for extensibility and reuse, the language constructs are often sufficient for expressing domain abstractions at the semantic level. However, they do not provide the right abstractions at the syntactic level. In this paper we describe META BORG, a method for providing concrete syntax for domain abstractions to application programmers. The method consists of embedding domain-specific languages in a general purpose host language and assimilating the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed, META-BORG can be considered a method for promoting APIs to the language level. The method is supported by proven and available technology, i.e. the syntax definition formalism SDF and the program transformation language and toolset Stratego/XT. We illustrate the method with applications in three domains: code generation, XML generation, and user-interface construction.
Achieving static typing in an object-oriented context requires careful consideration of all the mechanisms needed and their interaction with the rest of the language. This presentation discusses the facilities which, ...
详细信息
ISBN:
(纸本)0897915399
Achieving static typing in an object-oriented context requires careful consideration of all the mechanisms needed and their interaction with the rest of the language. This presentation discusses the facilities which, in the author's opinion and experience, are needed to make static typing possible and realistic for an object-oriented language (and whose combination constitutes the Eiffel type system).
This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify wr...
详细信息
ISBN:
(纸本)9781605587660
This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides event streams, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those dataflows. This allows developers to write reactive interfaces in a declarative and compositional style. Flapjax is built on top of JavaScript. It runs on unmodified browsers and readily interoperates with existing JavaScript code. It is usable as either a programming language ( that is compiled to JavaScript) or as a JavaScript library, and is designed for both uses. This paper presents the language, its design decisions, and illustrative examples drawn from several working Flapjax applications.
暂无评论