scispace - formally typeset
Search or ask a question

Showing papers on "Java annotation published in 2009"


Book ChapterDOI
23 Aug 2009
TL;DR: This paper presents a programming interface called JCUDA that can be used by Java programmers to invoke CUDA kernels, and shows that this interface can deliver significant performance improvements to Java programmers.
Abstract: A recent trend in mainstream desktop systems is the use of general-purpose graphics processor units (GPGPUs) to obtain order-of-magnitude performance improvements. CUDA has emerged as a popular programming model for GPGPUs for use by C/C++ programmers. Given the widespread use of modern object-oriented languages with managed runtimes like Java and C#, it is natural to explore how CUDA-like capabilities can be made accessible to those programmers as well. In this paper, we present a programming interface called JCUDA that can be used by Java programmers to invoke CUDA kernels. Using this interface, programmers can write Java codes that directly call CUDA kernels, and delegate the responsibility of generating the Java-CUDA bridge codes and host-device data transfer calls to the compiler. Our preliminary performance results show that this interface can deliver significant performance improvements to Java programmers. For future work, we plan to use the JCUDA interface as a target language for supporting higher level parallel programming languages like X10 and Habanero-Java.

163 citations


Journal ArticleDOI
TL;DR: The main technical issues that J-Orchestra addresses, including its mechanism for program transformation in the presence of unmodifiable code and the translation of concurrency and synchronization constructs to work correctly over the network are detailed.
Abstract: J-Orchestra is a system that enhances centralized Java programs with distribution capabilities. Operating at the bytecode level, J-Orchestra transforms a centralized Java program (i.e., running on a single Java Virtual Machine (JVM)) into a distributed one (i.e., running across multiple JVMs). This transformation effectively separates distribution concerns from the core functionality of a program. J-Orchestra follows a semiautomatic transformation process. Through a GUI, the user selects program elements (at class granularity) and assigns them to network locations. Based on the user's input, the J-Orchestra backend automatically partitions the program through compiler-level techniques, without changes to the JVM or to the Java Runtime Environment (JRE) classes. By means of bytecode engineering and code generation, J-Orchestra substitutes method calls with remote method calls, direct object references with proxy references, etc. It also translates Java language features (e.g., static methods and fields, inheritance, inner classes, new object construction, etc.) for efficient distributed execution.We detail the main technical issues that J-Orchestra addresses, including its mechanism for program transformation in the presence of unmodifiable code (e.g., in JRE classes) and the translation of concurrency and synchronization constructs to work correctly over the network. We further discuss a case study of transforming a large, commercial, third-party application for efficient execution in a client server environment and outline the architectural characteristics of centralized programs that are amenable to automated distribution with J-Orchestra.

112 citations


Book ChapterDOI
30 Jul 2009
TL;DR: The implementation of EventJava is presented, based on a compiler transforming specific primitives to Java, along with a reference implementation of the framework, and it is shown that EventJava compares favorably to a highly tuned database-backed event correlation engine as well as to a comparably lightweight concurrency mechanism.
Abstract: Event correlation has become the cornerstone of many reactive applications, particularly in distributed systems. However, support for programming with complex events is still rather specific and rudimentary. This paper presents EventJava, an extension of Java with generic support for event-based distributed programming. EventJava seamlessly integrates events with methods, and broadcasting with unicasting of events; it supports reactions to combinations of events, and predicates guarding those reactions. EventJava is implemented as a framework to allow for customization of event semantics, matching, and dispatching. We present its implementation, based on a compiler transforming specific primitives to Java, along with a reference implementation of the framework. We discuss ordering properties of EventJava through a formalization of its core as an extension of Featherweight Java. In a performance evaluation, we show that EventJava compares favorably to a highly tuned database-backed event correlation engine as well as to a comparably lightweight concurrency mechanism.

96 citations


Book ChapterDOI
05 Oct 2009
TL;DR: This paper defines a full metamodel and text syntax specification for Java, from which a parser and a printer are generated, and through this, Java code can be handled like any other model.
Abstract: Model-Driven Software Development is based on standardised models that are refined, transformed and eventually translated into executable code using code generators. However, creating plain text from well-structured models creates a gap that implies several drawbacks: Developers cannot continue to use their model-based tool machinery, relations between model elements and code fragments are hard to track and there is no easy way to rebuild models from their respective code. This paper presents an approach to bridge this gap for the Java programming language. It defines a full metamodel and text syntax specification for Java, from which a parser and a printer are generated. Through this, Java code can be handled like any other model. The implementation is validated with large test sets, example applications are shown, and future directions of research are discussed.

87 citations


Journal ArticleDOI
TL;DR: This paper presents a new Java messaging system called MPJ Express, and introduces nested parallelism in the Java version of the simulation code and is the first time this kind of hybrid parallelism is demonstrated in a high performance Java application.

86 citations


Proceedings ArticleDOI
13 Nov 2009
TL;DR: An efficient character-level taint tracking system for Java web applications is presented and it is argued that it can be used to defend against command injection vulnerabilities and adds 0-15% runtime overhead.
Abstract: Over 80% of web services are vulnerable to attack, and much of the danger arises from command injection vulnerabilities. We present an efficient character-level taint tracking system for Java web applications and argue that it can be used to defend against command injection vulnerabilities. Our approach involves modification only to Java library classes and the implementation of the Java servlets framework, so it requires only a one-time modification to the server without any subsequent modifications to a web application's bytecode or access to the web application's source code. This makes it easy to deploy our technique and easy to secure legacy web software. Our preliminary experiments with the JForum web application suggest that character-level taint tracking adds 0-15% runtime overhead.

84 citations


Proceedings ArticleDOI
29 Sep 2009
TL;DR: This paper presents I-JVM, a Java Virtual Machine that provides a lightweight approach to isolation while preserving compatibility with legacy OSGi applications and shows that it solves the 8 known OSGi vulnerabilities that are due to the Java Virtual machine.
Abstract: The OSGi framework is a Java-based, centralized, component oriented platform. It is being widely adopted as an execution environment for the development of extensible applications. However, current Java Virtual Machines are unable to isolate components from each other. For instance, a malicious component can freeze the complete platform by allocating too much memory or alter the behavior of other components by modifying shared variables. This paper presents I-JVM, a Java Virtual Machine that provides a lightweight approach to isolation while preserving compatibility with legacy OSGi applications. Our evaluation of I-JVM shows that it solves the 8 known OSGi vulnerabilities that are due to the Java Virtual Machine and that the overhead of I-JVM compared to the JVM on which it is based is below 20%.

75 citations


01 Jan 2009
TL;DR: Some of the primary goals, challenges, and proposed solutions for safety-critical Java and its relationship with the Real-time Specification for Java are introduced.
Abstract: In recent years, various approaches to real-time execution of Java have proven their worth in numerous commercial and defense applications. The Real-time Specification for Java has extended the Java platform with a range of features needed for real-time computing. As the use of real-time Java has become more widespread, the demand for Java in real-time applications with safety requirements has led to an eort to define a new standard—JSR-302 Safety-Critical Java (SCJ). The goal of this standard is to facilitate the creation of safety-critical Java applications capable of certification under standards such as DO 178B level A or IEC61508 for SIL 4. JSR-302 is nearing completion and will soon be released for public review. This paper introduces some of the primary goals, challenges, and proposed solutions for safety-critical Java and its relationship with the Real-time Specification for Java.

71 citations


Proceedings ArticleDOI
23 Sep 2009
TL;DR: The architecture of the Fiji VM is described, which enables vanilla Java applications to run in very hard environments, including booting on bare hardware with only very rudimentary operating system support, and it is shown that the minimalistic approach delivers comparable performance to that of server-class production Java Virtual Machine implementations.
Abstract: Real-time Java is quickly emerging as a platform for building safety-critical embedded systems. The real-time variants of Java, including [8, 15], are attractive alternatives to Ada and C since they provide a cleaner, simpler, and safer programming model. Unfortunately, current real-time Java implementations have trouble scaling down to very hard real-time embedded settings, where memory is scarce and processing power is limited. In this paper, we describe the architecture of the Fiji VM, which enables vanilla Java applications to run in very hard environments, including booting on bare hardware with only very rudimentary operating system support. We also show that our minimalistic approach delivers comparable performance to that of server-class production Java Virtual Machine implementations.

60 citations


Proceedings ArticleDOI
Siliang Li1, Gang Tan1
09 Nov 2009
TL;DR: A novel static analysis framework to examine exceptions and report errors in JNI programs, consisting of exception analysis, static taint analysis, and warning recovery, which can be easily applied to analyzing software written in other foreign function interfaces.
Abstract: Software flaws in native methods may defeat Java's guarantees of safety and security. One common kind of flaws in native methods results from the discrepancy on how exceptions are handled in Java and in native methods. Unlike exceptions in Java, exceptions raised in the native code through the Java Native Interface (JNI) are not controlled by the Java Virtual Machine (JVM). Only after the native code finishes execution will the JVM's mechanism for exceptions take over. This discrepancy makes handling of JNI exceptions an error prone process and can cause serious security flaws in software written using the JNI.We propose a novel static analysis framework to examine exceptions and report errors in JNI programs. We have built a complete tool consisting of exception analysis, static taint analysis, and warning recovery. Experimental results demonstrated this tool allows finding of mishandling of exceptions with high accuracy (15.4% false-positive rate on over 260k lines of code). Our framework can be easily applied to analyzing software written in other foreign function interfaces, including the Python/C interface and the OCaml/C interface.

59 citations


Book
07 Dec 2009
TL;DR: RESTful Java with Jax-RS includes a technical guide that explains REST and JAX-RS, how they work, and when to use them, and the RESTEasy workbook that follows, gets step-by-step instructions for installing, configuring, and running several working JAX
Abstract: Learn how to design and develop distributed web services in Java using RESTful architectural principals and the JAX-RS specification in Java EE 6. With this hands-on reference, you'll focus on implementation rather than theory, and discover why the RESTful method is far better than technologies like CORBA and SOAP. It's easy to get started with services based on the REST architecture. RESTful Java with JAX-RS includes a technical guide that explains REST and JAX-RS, how they work, and when to use them. With the RESTEasy workbook that follows, you get step-by-step instructions for installing, configuring, and running several working JAX-RS examples using the JBoss RESTEasy implementation of JAX-RS. Work on the design of a distributed RESTful interface, and develop it in Java as a JAX-RS service Dispatch HTTP requests in JAX-RS, and learn how to extract information from them Deploy your web services within Java Enterprise Edition using the Application class, Default Component Model, EJB Integration, Spring Integration, and JPA Discover several options for securing your web services Learn how to implement RESTful design patterns using JAX-RS Write RESTful clients in Java using libraries and frameworks such as java.net.URL, Apache HTTP Client, and RESTEasy Proxy

Book ChapterDOI
28 Apr 2009
TL;DR: The open source platform Android, which uses a Linux kernel and a stripped-down userland with a custom Java VM set on top, was presented by the Open Handset Alliance hosting members like Google, Motorola, and HTC.
Abstract: Smartphones get increasingly popular where more and more smartphone platforms emerge. Special attention was gained by the open source platform Android which was presented by the Open Handset Alliance (OHA) hosting members like Google, Motorola, and HTC. Android uses a Linux kernel and a stripped-down userland with a custom Java VM set on top. The resulting system joins the advantages of both environments, while third-parties are intended to develop only Java applications at the moment.

Proceedings ArticleDOI
04 Oct 2009
TL;DR: This paper introduces HotWave, an AOP framework based on AspectJ for standard Java Virtual Machines (JVMs), and it ensures that all classes loaded in a JVM can be (re)woven, including the classes of the standard Java class library.
Abstract: Dynamic aspect-oriented programming (AOP) enables runtime adaptation of aspects, which is important for building sophisticated, aspect-based software engineering tools, such as adaptive profilers or debuggers that dynamically modify instrumentation code in response to user interactions. Today, many AOP frameworks for Java, notably AspectJ, focus on aspect weaving at compile-time or at load-time, and offer only limited support for aspect adaptation and reweaving at runtime. In this paper, we introduce HotWave, an AOP framework based on AspectJ for standard Java Virtual Machines (JVMs). HotWave supports dynamic (re)weaving of previously loaded classes, and it ensures that all classes loaded in a JVM can be (re)woven, including the classes of the standard Java class library. HotWave features a novel mechanism for inter-advice communication, enabling efficient data passing between advices that are woven into the same method. We explain HotWave's programming model and discuss our implementation techniques. As case study, we present an adaptive, aspect-based profiler that leverages HotWave's distinguishing features.

Book ChapterDOI
Tobias Wrigstad1, Filip Pizlo1, Fadi Meawad1, Lei Zhao1, Jan Vitek1 
30 Jul 2009
TL;DR: A simple type system for thread-local data in Java that is minimal, modular and compatible with legacy code and that the annotation overhead is light thanks to a judicious choice of defaults.
Abstract: This paper presents a simple type system for thread-local data in Java. Classes and types are annotated to express thread-locality and unintended leaks are detected at compile-time. The system, called Loci, is minimal, modular and compatible with legacy code. The only change to the language is the addition of two new metadata annotations. We implemented Loci as an Eclipse plug-in and used it to evaluate our design on a number of benchmarks. We found that Loci is compatible with how Java programs are written and that the annotation overhead is light thanks to a judicious choice of defaults.

Book
01 Jun 2009
TL;DR: The Definitive Guide to Java RTS for Developers and Architects as discussed by the authors walks through start-to-finish case study applications, identifying their constraints and discussing the APIs and design patterns used to address them.
Abstract: The Definitive Guide to Java RTS for Developers and Architects For Java developers and architects moving to real-time, and real-time developers moving to Java Walks through start-to-finish case study applications, identifying their constraints and discussing the APIs and design patterns used to address them Written by the former leader of the real-time Java standards process and one of Wall Streets top real-time developers Sun Microsystems Java Real-Time System (Java RTS) is proving itself in numerous, wide-ranging environments, including finance, control systems, manufacturing, and defense. Java RTS and the RTSJ standard (JSR-001) eliminate the need for complicated, specialized, real-time languages and operating environments, saving money by leveraging Javas exceptional productivity and familiarity. In Real-Time Java Programming, two of Suns top real-time programming experts present the deep knowledge and realistic code examples that developers need to succeed with Java RTS and its APIs. As they do so, the authors also illuminate the foundations of real-time programming in any RTSJ-compatible environment. Key topics include Real-time principles and concepts, and the unique requirements of real-time application design and development How Java has been adapted to real-time environments A complete chapter on garbage collection concepts and Java SE collectors Using the Java RTS APIs to solve actual real-time system problems as efficiently as possible Utilizing todays leading Java RTS development and debugging tools Understanding real-time garbage collection, threads, scheduling, and dispatching Programming new RTSJ memory models Dealing with asynchronous event handling and asynchronous transfer of control

Proceedings ArticleDOI
08 Jul 2009
TL;DR: The approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-, local variables-, and control flow-based compatibility checks on source and destination bytecode sections.
Abstract: We describe a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Bytecode is evolved directly, without any intermediate genomic representation. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-, local variables-, and control flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. Given the huge universe of unrestricted Java bytecode, as is programs, our work enables the applications of evolution within this realm. We experimentally validate our methodology by both extensively testing the correctness of compatible crossover on arbitrary bytecode, and by running evolution on a program that exploits the richness of the Java virtual machine architecture and type system.

Proceedings ArticleDOI
23 Sep 2009
TL;DR: A Java profile suitable for development of high integrity embedded systems is presented, based on event handlers which are grouped in missions and equipped with respectively private handler memory and shared mission memory.
Abstract: A Java profile suitable for development of high integrity embedded systems is presented. It is based on event handlers which are grouped in missions and equipped with respectively private handler memory and shared mission memory. This is a result of our previous work on developing a Java profile, and is directly inspired by interactions with the Open Group on their on-going work on a safety critical Java profile (JSR-302). The main contribution is an arrangement of the class hierarchy such that the proposal is a generalization of Real-Time Specification for Java (RTSJ). A further contribution is to integrate the mission concept as a handler, such that mission memory becomes a handler private memory and such that mission initialization and finalization are scheduled activities. Two implementations are presented: one directly on an open source JVM using Xenomai and another, based on delegation, on an RTSJ platform.

Book
17 Mar 2009
TL;DR: The recipes in Java SOA Cookbook will equip you with the knowledge you need to approach SOA as an integration challenge, not an obstacle.
Abstract: Java SOA Cookbook offers practical solutions and advice to programmers charged with implementing a service-oriented architecture (SOA) in their organization. Instead of providing another conceptual, high-level view of SOA, this cookbook shows you how to make SOA work. It's full of Java and XML code you can insert directly into your applications and recipes you can apply right away. The book focuses primarily on the use of free and open source Java Web Services technologies -- including Java SE 6 and Java EE 5 tools -- but you'll find tips for using commercially available tools as well. Java SOA Cookbook will help you: Construct XML vocabularies and data models appropriate to SOA applications Build real-world web services using the latest Java standards, including JAX-WS 2.1 and JAX-RS 1.0 for RESTful web services Integrate applications from popular service providers using SOAP, POX, and Atom Create service orchestrations with complete coverage of the WS-BPEL (Business Process Execution Language) 2.0 standard Improve the reliability of SOAP-based services with specifications such as WS-Reliable Messaging Deal with governance, interoperability, and quality-of-service issues The recipes in Java SOA Cookbook will equip you with the knowledge you need to approach SOA as an integration challenge, not an obstacle.

Journal IssueDOI
TL;DR: This paper evaluates and compares the performance of the Java and C versions of these two scientific applications, and demonstrates that the Java codes can achieve performance comparable with legacy applications written in conventional HPC languages.
Abstract: In the 1990s the Message Passing Interface Forum defined MPI bindings for Fortran, C, and C++. With the success of MPI these relatively conservative languages have continued to dominate in the parallel computing community. There are compelling arguments in favour of more modern languages like Java. These include portability, better runtime error checking, modularity, and multi-threading. But these arguments have not converted many HPC programmers, perhaps due to the scarcity of full-scale scientific Java codes, and the lack of evidence for performance competitive with C or Fortran. This paper tries to redress this situation by porting two scientific applications to Java. Both of these applications are parallelized using our thread-safe Java messaging system—MPJ Express. The first application is the Gadget-2 code, which is a massively parallel structure formation code for cosmological simulations. The second application uses the finite-domain time-difference method for simulations in the area of computational electromagnetics. We evaluate and compare the performance of the Java and C versions of these two scientific applications, and demonstrate that the Java codes can achieve performance comparable with legacy applications written in conventional HPC languages. Copyright © 2009 John Wiley & Sons, Ltd.

Journal ArticleDOI
TL;DR: Preliminary measurements indicate that there is little difference in execution time between the declarative data-flow analysis and an imperative implementation of the JastAdd Extensible Java Compiler.

Proceedings ArticleDOI
20 Jul 2009
TL;DR: The Universal Java Matrix Package (UJMP), an innovative software architecture in Java to store and process matrices with interfaces to external data sources such as Excel files or SQL-databases, allowing to handle data which would not fit into main memory.
Abstract: Matrices are essential in many fields of computer science, especially when large amounts of data must be handled efficiently. Despite this demand for matrix software, we were unable to find a Java library which was flexible enough to match all our needs. In this paper, we present the Universal Java Matrix Package (UJMP), an innovative software architecture in Java to store and process matrices with interfaces to external data sources such as Excel files or SQL-databases, allowing to handle data which would not fit into main memory.In contrast to all other approaches which we are aware of, our package is the only one to support very large matrices with up to 2^63 rows or columns. In addition, the use of variable argument lists provides a convenient way for accessing multi-dimensional data without the need to specify dimensionality at compile time. Arbitrary data types be handled through the use of Java Generics. Another key feature is the strict separation of interfaces and classes, making data storage implementation and math engine exchangeable, at runtime. This flexible architecture allows the user to decide whether operations should be optimized for speed or memory usage and makes the system easily extendable through existing libraries, incorporating their individual strengths.

Proceedings ArticleDOI
27 Aug 2009
TL;DR: This work proposes an implementation of continuations in the Java virtual machine with a lazy or on-demand approach, which imposes zero run-time overhead as long as no activations need to be saved and restored and performs well when continuations are used.
Abstract: Continuations, or 'the rest of the computation', are a concept that is most often used in the context of functional and dynamic programming languages. Implementations of such languages that work on top of the Java virtual machine (JVM) have traditionally been complicated by the lack of continuations because they must be simulated.We propose an implementation of continuations in the Java virtual machine with a lazy or on-demand approach. Our system imposes zero run-time overhead as long as no activations need to be saved and restored and performs well when continuations are used. Although our implementation can be used from Java code directly, it is mainly intended to facilitate the creation of frameworks that allow other functional or dynamic languages to be executed on a Java virtual machine.As there are no widely used benchmarks for continuation functionality on JVMs, we developed synthetical benchmarks that show the expected costs of the most important operations depending on various parameters.

Proceedings ArticleDOI
20 Sep 2009
TL;DR: This paper evaluates the currently available Java bytecode decompilers using an extension of the criteria that were used in the original study, found that none passed all the tests, each of which were designed to target different problem areas.
Abstract: Decompilation of Java bytecode is the act of transforming Java bytecode to Java source code. Although easier than that of decompilation of machine code, problems still arise in Java bytecode decompilation. These include type inference of local variables and exception-handling. Since the last such evaluation (2003) several new commercial, free and open-source Java decompilers have appeared and some of the older ones have been updated. In this paper, we evaluate the currently available Java bytecode decompilers using an extension of the criteria that were used in the original study. Although there has been a slight improvement since this study, it was found that none passed all the tests, each of which were designed to target different problem areas. We give reasons for this lack of success and suggest methods by which future Java bytecode decompilers could be improved.

Proceedings ArticleDOI
18 Feb 2009
TL;DR: NPB-MPJ is presented, the first extensive implementation of the NAS Parallel Benchmarks (NPB), the standard parallel benchmark suite, for Message-Passing in Java (MPJ) libraries, whose comparative analysis of current Java and native parallel solutions confirms that MPJ is an alternative for parallel programming multi-core systems.
Abstract: Java is a valuable and emerging alternative for the development of parallel applications, thanks to the availability of several Java message-passing libraries and its full multithreading support. The combination of both shared and distributed memory programming is an interesting option for parallel programming multi-core systems. However, the concerns about Java performance are hindering its adoption in this field, although it is difficult to evaluate accurately its performance due to the lack of standard benchmarks in Java.This paper presents NPB-MPJ, the first extensive implementation of the NAS Parallel Benchmarks (NPB), the standard parallel benchmark suite, for Message-Passing in Java (MPJ) libraries. Together with the design and implementation details of NPB-MPJ, this paper gathers several optimization techniques that can serve as a guide for the development of more efficient Java applications for High Performance Computing (HPC). NPB-MPJ has been used in the performance evaluation of Java against C/Fortran parallel libraries on two representative multi-core clusters. Thus, NPB-MPJ provides an up-to-date snapshot of MPJ performance, whose comparative analysis of current Java and native parallel solutions confirms that MPJ is an alternative for parallel programming multi-core systems.

Book
01 Jan 2009
TL;DR: Pro JPA 2 introduces, explains, and demonstrates how to use the new Java Persistence API (JPA), and introduces some background information and introduces readers to the basic persistence concepts to bring them up to speed.
Abstract: Pro JPA 2 introduces, explains, and demonstrates how to use the new Java Persistence API (JPA). JPA provides Java developers with both the knowledge and insight needed to write Java applications that access relational databases through JPA. Authors Mike Keith and Merrick Schincariol take a handson approach to teaching by giving examples to illustrate each new concept of the API and showing how it is used in practice.All of the examples use a common model from an overriding sample application, giving readers a context from which to start and helping them to understand the examples within an already familiar domain. After completing the book, you will have a full understanding and be able to successfully code applications using JPA. The book also serves as a reference guide during initial and later JPA application experiences. Hands-on examples for all the aspects of the JPA specification, based on the reference implementation of this specification A special section on migration to JPA Expert insight about various aspects of the API and when they are useful Portability hints to provide increased awareness of the potential for nonportable JPA code What youll learn Get started with enterprise applications using JPA 2. Get up to speed with ObjectRelational Mapping and Entity Manager. Learn and use queries and the query language (JP QL). Employ advanced ObjectRelational Mapping techniques. Use XML mapping files and learn other advanced techniques. Package and deploy your Java persistence applications. Test your Java persistence applications. Migrate your Java persistence applications. Who is this book for? The book generally targets enterprise and persistence developers who fall in one of three categories: Those who are new to persistence; we will present some background information and introduce these readers to the basic persistence concepts to bring them up to speed. Those who know and/or use existing ORM persistence products such as Hibernate or TopLink. Those who have already used JPA and want to learn about the new features that JPA 2 introduces, or have a good reference book to turn to when they develop JPA applications. In general, we assume that the reader is knowledgeable with Java, SQL, and JDBC, and has a little knowledge of J2EE About the Apress Pro Series The Apress Pro series books are practical, professional tutorials to keep you on and moving up the professional ladder. You have gotten the job, now you need to hone your skills in these tough competitive times. The Apress Pro series expands your skills and expertise in exactly the areas you need. Master the content of a Pro book, and you will always be able to get the job done in a professional development project. Written by experts in their field, Pro series books from Apress give you the hardwon solutions to problems you will face in your professional programming career.

Dissertation
20 May 2009
TL;DR: A rhetorical figure annotation tool dubbed JANTOR (Java ANnotation Tool Of Rhetoric), which enables manual and automated annotation of files in HTML format, and a method for finding pairs of words which are ordinarily contradictory, which is crucial for detecting the interesting figure of speech: oxymoron.
Abstract: Linguistic annotation provides additional information asserted with a particular purpose in a document or other piece of information. It is widely used in various fields, from computing and bioinformatics, through imaging, to law and linguistics. There is also a clear distinction between what is communicated through the written/spoken natural language and how this is passed on. A new problem of linguistic annotation is the annotation of classical rhetorical figures – patterns of text in which a characteristic syntactic form modifies the standard meanings of words, and leads to a change or an extension of meaning. Rhetoric studies the effectiveness of language comprehensively, including its emotional impact, as much as its propositional content. The annotation of rhetorical figures is therefore important not only for the linguistic point of view, but also for discovering different styles of writing, purpose and effect of written documents, and for better natural language understanding in general. The purpose of this thesis is the automated annotation of rhetorical figures. In the thesis we primarily focus on the figures of repetition, which include the repetition of words, phrases, and clauses. Additionally, we also describe the work we have done on the detection and annotation of figures of parallelism, as well as those that pertain more to the semantics than to the syntax, or positioning. We have developed a rhetorical figure annotation tool dubbed JANTOR (Java ANnotation Tool Of Rhetoric), which enables manual and automated annotation of files in HTML format. We have applied a lexicalized probabilistic context-free grammar parser for the recognition of the figures of repetition. We also describe a simple parse tree distance used for calculating the difference between similarly structured phrases, which is necessary for the recognition of some of the figures of parallelism. Moreover, we have applied the semantic relationships contained in the WordNet lexical database and extended Porter stemmer algorithm for finding derivationally related words. Finally, we present a method for finding pairs of words which are ordinarily contradictory, which is crucial for detecting the interesting figure of speech: oxymoron. For this purpose typed dependency grammars together with WordNet are used. The experiments we have conducted on the detection of selected subset of rhetorical figures have yielded very promising results. Lastly, we present the visualization of the occurrences of the figures and comparison between 14 American presidents' inaugural addresses including the most recent one by President Barack Obama. The provocative results of this comparison show that a) automated analysis of meaningful rhetorical information is possible and tractable, and b) help us with understanding what creates a successful orator.

Proceedings ArticleDOI
07 Jul 2009
TL;DR: It is argued that the approach for dynamic updates of component-based Java applications complements the new module system planned for upcoming Java releases and concludes that simple extensions to an existing JVM can bring full flexibility and transparency to dynamic updates in Java.
Abstract: This paper advocates that de facto dynamic updates of Java applications will eventually require a dynamic-update-enabled Java virtual machine. We argue that our approach for dynamic updates of component-based Java applications complements the new module system planned for upcoming Java releases. We conclude that simple extensions to an existing JVM can bring full flexibility and transparency to dynamic updates in Java.

Proceedings ArticleDOI
04 Oct 2009
TL;DR: HotWave provides support for runtime adaptation of aspects and reweaving of previously loaded code, as well as the ability to weave aspects into all methods executing in a Java Virtual Machine, including methods in the standard Java class library.
Abstract: Developing tools for profiling, debugging, testing, and reverse engineering is error-prone, time-consuming, and therefore costly when using low-level techniques, such as bytecode instrumentation. As a solution to these problems, we promote tool development in Java using high-level aspect-oriented programming (AOP). We demonstrate that the use of aspects yields compact tools that are easy to develop and extend. As enabling technology, we rely on HotWave, a new tool for dynamic and comprehensive aspect weaving. HotWave reconciles compatibility with existing virtual machine and AOP technologies. It provides support for runtime adaptation of aspects and reweaving of previously loaded code, as well as the ability to weave aspects into all methods executing in a Java Virtual Machine, including methods in the standard Java class library. HotWave also features a new mechanism for efficiently passing data between advices that are woven into the same method. We demonstrate the benefits of HotWave's distinguishing features with two case studies in the area of profiling.

Book ChapterDOI
30 Sep 2009
TL;DR: An interface specification language designed in the LIME project (LIME ISL) and the supporting runtime monitoring tool which is an open source implementation of runtime monitoring for the interface specifications implemented using AspectJ.
Abstract: This paper describes an interface specification language designed in the LIME project (LIME ISL) and the supporting runtime monitoring tool. The interface specification language is tailored for the Java programming language and supports two kinds of specifications: (i) call specifications that specify requirements for the allowed call sequences to a Java object instance and (ii) return specifications that specify the allowed behaviors of the Java object instance. Both the call and return specifications can be expressed with Java annotations in several different ways: as past time LTL formulas, as (safety) future LTL formulas, as regular expressions, and as nondeterministic finite automata. We also describe the supporting LIME interface monitoring tool which is an open source implementation of runtime monitoring for the interface specifications implemented using AspectJ.

Patent
17 Mar 2009
TL;DR: In this paper, a JAVASCRIPT Object Notation (JSON) bridge during JAVA-based composite application development can begin with the receipt of a command to present the wiring diagram of the JAVAsCRIPT composite application.
Abstract: Utilizing a JAVASCRIPT Object Notation (JSON) bridge during JAVA-based composite application development can begin with the receipt of a command to present the wiring diagram of a JAVA-based composite application by an enhanced JAVA-based composite application development tool. The JAVA-based composite application can consist of one or more JAVA-based components and non-JAVA-based components, with one property of a JAVA-based component being communicatively wired to a non-JAVA-based component. A JSON bridge can acknowledge the accessing of the JAVA-based composite application. The wiring diagram of the JAVA-based composite application can then be visually rendered. For the property of the JAVA-based component communicatively wired to the non-JAVA-based component, a user-selectable option to utilize the JSON bridge for communication can be presented. With the JSON bridge option selected, user-entered changes to this property can automatically invoke the JSON bridge to communicate related data to the communicatively wired non-JAVA-based component.