scispace - formally typeset
Search or ask a question

Showing papers on "Java annotation published in 2011"


Proceedings ArticleDOI
06 Nov 2011
TL;DR: MAJOR, a fault seeding and mutation analysis tool that is integrated into the Java Standard Edition compiler as a non-invasive enhancement for use in any Java-based development environment, reduces the mutant generation time and enables efficient mutation analysis.
Abstract: Mutation analysis is an effective, yet often time-consuming and difficult-to-use method for the evaluation of testing strategies. In response to these and other challenges, this paper presents MAJOR, a fault seeding and mutation analysis tool that is integrated into the Java Standard Edition compiler as a non-invasive enhancement for use in any Java-based development environment. MAJOR reduces the mutant generation time and enables efficient mutation analysis. It has already been successfully applied to large applications with up to 373,000 lines of code and 406,000 mutants. Moreover, MAJOR's domain specific language for specifying and adapting mutation operators also makes it extensible. Due to its ease-of-use, efficiency, and extensibility, MAJOR is an ideal platform for the study and application of mutation analysis.

122 citations


Book ChapterDOI
David R. Cok1
18 Apr 2011
TL;DR: OpenJML is described, an implementation of JML tools built by extending the OpenJDK Java tool set that provides static analysis, specification documentation, and runtime checking, an API that is used for other tools, uses Eclipse as an IDE, and can be extended for further research.
Abstract: The Java Modeling Language is a widely used specification language for Java. However, the tool support has not kept pace with advances in the Java language. This paper describes OpenJML, an implementation of JML tools built by extending the OpenJDK Java tool set. OpenJDK has a readily extendible architecture, though its details could be revised to further facilitate extension. The result is a suite of JML tools for Java 7 that provides static analysis, specification documentation, and runtime checking, an API that is used for other tools, uses Eclipse as an IDE, and can be extended for further research. In addition, OpenJML can leverage the community effort devoted to OpenJDK.

101 citations


Journal ArticleDOI
TL;DR: Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Javabytecode, is described.
Abstract: We describe Fertile Darwinian Bytecode Harvester (FINCH), a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-based, local variables-based, 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. We demonstrate FINCH's unqualified success at solving a host of problems, including simple and complex regression, trail navigation, image classification, array sum, and tic-tac-toe. FINCH exploits the richness of the Java virtual machine architecture and type system, ultimately evolving human-readable solutions in the form of Java programs. The ability to evolve Java programs will hopefully lead to a valuable new tool in the software engineer's toolkit.

99 citations


Proceedings ArticleDOI
22 Oct 2011
TL;DR: The design and analysis of the first full-fledged benchmark suite for Scala is presented and the benchmarks contained therein are compared with those from the well-known DaCapo 9.12 benchmark suite to show where the differences are between Scala and Java code---and where not.
Abstract: Originally conceived as the target platform for Java alone, the Java Virtual Machine (JVM) has since been targeted by other languages, one of which is Scala. This trend, however, is not yet reflected by the benchmark suites commonly used in JVM research. In this paper, we thus present the design and analysis of the first full-fledged benchmark suite for Scala. We furthermore compare the benchmarks contained therein with those from the well-known DaCapo 9.12 benchmark suite and show where the differences are between Scala and Java code---and where not.

99 citations


Book
06 Sep 2011
TL;DR: The CERT Oracle Secure Coding Standard for Java provides rules designed to eliminate insecure coding practices that can lead to exploitable vulnerabilities and provides secure coding rules for the Java SE 6 Platform including the Java programming language and libraries, and also addresses new features of the JavaSE 7 Platform.
Abstract: In the Java world, security is not viewed as an add-on a feature. It is a pervasive way of thinking. Those who forget to think in a secure mindset end up in trouble. But just because the facilities are there doesnt mean that security is assured automatically. A set of standard practices has evolved over the years. The Secure Coding Standard for Java is a compendium of these practices. These are not theoretical research papers or product marketing blurbs. This is all serious, mission-critical, battle-tested, enterprise-scale stuff. James A. Gosling, Father of the Java Programming Language An essential element of secure coding in the Java programming language is a well-documented and enforceable coding standard. Coding standards encourage programmers to follow a uniform set of rules determined by the requirements of the project and organization, rather than by the programmers familiarity or preference. Once established, these standards can be used as a metric to evaluate source code (using manual or automated processes). The CERT Oracle Secure Coding Standard for Java provides rules designed to eliminate insecure coding practices that can lead to exploitable vulnerabilities. Application of the standards guidelines will lead to higher-quality systemsrobust systems that are more resistant to attack. Such guidelines are required for the wide range of products coded in Javafor devices such as PCs, game players, mobile phones, home appliances, and automotive electronics. After a high-level introduction to Java application security, seventeen consistently organized chapters detail specific rules for key areas of Java development. For each area, the authors present noncompliant examples and corresponding compliant solutions, show how to assess risk, and offer references for further information. Each rule is prioritized based on the severity of consequences, likelihood of introducing exploitable vulnerabilities, and cost of remediation. The standard provides secure coding rules for the Java SE 6 Platform including the Java programming language and libraries, and also addresses new features of the Java SE 7 Platform. It describes language behaviors left to the discretion of JVM and compiler implementers, guides developers in the proper use of Javas APIs and security architecture, and considers security concerns pertaining to standard extension APIs (from the javax package hierarchy).The standard covers security issues applicable to these libraries: lang, util, Collections, Concurrency Utilities, Logging, Management, Reflection, Regular Expressions, Zip, I/O, JMX, JNI, Math, Serialization, and JAXP.

57 citations


Proceedings ArticleDOI
21 May 2011
TL;DR: This paper reports on the first empirical investigation into how Java generics have been integrated into open source software by automatically mining the history of 20 popular open source Java programs, traversing more than 500 million lines of code in the process.
Abstract: Support for generic programming was added to the Java language in 2004, representing perhaps the most significant change to one of the most widely used programming languages today. Researchers and language designers anticipated this addition would relieve many long-standing problems plaguing developers, but surprisingly, no one has yet measured whether generics actually provide such relief. In this paper, we report on the first empirical investigation into how Java generics have been integrated into open source software by automatically mining the history of 20 popular open source Java programs, traversing more than 500 million lines of code in the process. We evaluate five hypotheses, each based on assertions made by prior researchers, about how Java developers use generics. For example, our results suggest that generics do not significantly reduce the number of type casts and that generics are usually adopted by a single champion in a project, rather than all committers.

57 citations


Proceedings ArticleDOI
25 Sep 2011
TL;DR: A novel method of file-level code clone detection that is scalable to millions of files is developed and found the most commonly cloned files to be Java extension classes and popular third-party libraries, both large and small.
Abstract: We present a study of the extent to which developers copy entire files or sets of files into their applications with little or no modification. Our aim is to determine the prevalence of such activity within open source Java development, and to identify the circumstances under which files are reused in this manner. To accomplish this aim, we developed a novel method of file-level code clone detection that is scalable to millions of files. We applied our method to the Sourcerer Repository, which contains over 13,000 Java projects aggregated from multiple open source repositories. Our method detected that in excess of 10% of files are clones, and that over 15% of all projects contain at least one cloned file. In addition to computing these raw numbers, we manually examined a large number of the reported clones. We found the most commonly cloned files to be Java extension classes and popular third-party libraries, both large and small. We also discovered a number of projects that occur in multiple online repositories, have been forked, or were divided into multiple subprojects.

55 citations


Patent
19 Apr 2011
TL;DR: In this article, the Java classes referenced in a continuous query can be loaded based on a class space defined for an application considered to be in scope for the query, which includes all exported classes visible to the event processing system executing the query.
Abstract: Techniques for loading Java classes referenced in a continuous query. In one set of embodiments, the Java classes can be loaded based on a class space defined for an application considered to be in scope for the query. In another set of embodiments, the Java classes can be loaded based on a server class space that includes all exported classes visible to the event processing system executing the query.

53 citations


Journal ArticleDOI
TL;DR: This article proposes a proposal for Java packages with hardware objects and interrupt handlers that interface to a Java Virtual Machine (JVM) without an underlying middleware and provides implementations directly in hardware, as extensions of standard interpreters, and finally with an operating system middleware.
Abstract: Embedded systems use specialized hardware devices to interact with their environment, and since they have to be dependable, it is attractive to use a modern, type-safe programming language like Java to develop programs for them. Standard Java, as a platform-independent language, delegates access to devices, direct memory access, and interrupt handling to some underlying operating system or kernel, but in the embedded systems domain resources are scarce and a Java Virtual Machine (JVM) without an underlying middleware is an attractive architecture. The contribution of this article is a proposal for Java packages with hardware objects and interrupt handlers that interface to such a JVM. We provide implementations of the proposal directly in hardware, as extensions of standard interpreters, and finally with an operating system middleware. The latter solution is mainly seen as a migration path allowing Java programs to coexist with legacy system components. An important aspect of the proposal is that it is compatible with the Real-Time Specification for Java (RTSJ).

44 citations


Journal ArticleDOI
TL;DR: This paper presents JavaSPI, a "model-driven" development framework that allows the user to reliably develop security protocol implementations in Java, starting from abstract models that can be verified formally.
Abstract: This paper presents JavaSPI, a "model-driven" development framework that allows the user to reliably develop security protocol implementations in Java, starting from abstract models that can be verified formally. The main novelty of this approach stands in the use of Java as both a modeling language and the implementation language. The JavaSPI framework is validated by implementing a scenario of the SSL protocol. The JavaSPI implementation can successfully interoperate with OpenSSL, and has comparable execution time with the standard Java JSSE library.

37 citations


Proceedings ArticleDOI
23 May 2011
TL;DR: A formal method-based approach in detecting source code clones by means of analysing and comparing the Java Bytecode that is produced when the source code is compiled is presented.
Abstract: In this paper we present a formal method-based approach in detecting source code clones by means of analysing and comparing the Java Bytecode that is produced when the source code is compiled. A preliminary investigation has been also conducted to assess the validity of the proposed approach.

Book ChapterDOI
27 Sep 2011
TL;DR: The technique makes use of Java annotations, which link the concrete implementation to its formal model, without enriching the code with behavioral information contained only in the abstract specification, and allows the reuse of specifications for other purposes.
Abstract: We present CoMA (Conformance Monitoring by Abstract State Machines), a specification-based approach and its supporting tool for runtime monitoring of Java software. Based on the information obtained from code execution and model simulation, the conformance of the concrete implementation is checked with respect to its formal specification given in terms of Abstract State Machines. At runtime, undesirable behaviors of the implementation, as well as incorrect specifications of the system behavior are recognized. The technique we propose makes use of Java annotations, which link the concrete implementation to its formal model, without enriching the code with behavioral information contained only in the abstract specification. The approach fosters the separation between implementation and specification, and allows the reuse of specifications for other purposes (formal verification, simulation, model-based testing, etc.).

Book ChapterDOI
05 Oct 2011
TL;DR: An extension of the Java Modeling Language (JML) that significantly goes beyond previous approaches is defined and the JML specification clauses are translated into proof obligations in Dynamic Logic.
Abstract: In this paper we propose a methodology for the specification and verification of information flow properties for sequential Java programs. This proposal also covers declassification. We define an extension of the Java Modeling Language (JML) that significantly goes beyond previous approaches. The JML specification clauses are translated into proof obligations in Dynamic Logic. An experimental implementation within the KeY-system shows the feasibility of the approach.

Proceedings Article
01 Jan 2011
TL;DR: An empirical study on how annotations are used on a corpus of 106 open-source Java systems, which has evaluated more than 160,000 annotations that have been applied to the source code of such systems.
Abstract: Since 2004, Java provides support to general purpose annotations (also known as metadata) that allows developers to define their your own annotation types. However, seven years after their inception in the Java language, we still do not have empirical evidence on how software developers are effectively using annotations in their systems. Therefore, this paper presents an empirical study on how annotations are used on a corpus of 106 open-source Java systems. On total, we have evaluated more than 160,000 annotations that have been applied to the source code of such systems. Our main findings can be summarized as follows: (a) the so-called annotation-hell phenomena affects many of the evaluated systems; (b) developers are using both pre-defined annotations and annotations defined by external frameworks, mostly annotations dedicated to persistence and testing; (c) most of the evaluated annotations have been employed to annotate methods (more than 90%); (d) although Java does provide not support to annotations for anonymous classes, several programs from our corpus have applied annotations to such classes.

Journal ArticleDOI
TL;DR: JRebel extends the Java Virtual Machine with a mechanism that allows seamless class reloading and uses bytecode manipulation extensively, both for the just-in-time class translator and numerous integrations with the Java SE and EE APIs.

Patent
Ying Li1, Qiming Teng1, Haichuan Wang1, Xiao Zhong1
14 Apr 2011
TL;DR: In this article, the authors propose a method and an apparatus to locate a bottleneck of a Java program by inserting a prober into an operating system kernel and sending a signal to the helper thread in response to detect that a Java thread is blocked.
Abstract: A method and an apparatus to locate a bottleneck of a Java program. The method to locate a bottleneck of a Java program includes the steps of: creating a helper thread in a Java process corresponding to the Java program, and attaching the helper thread to a Java virtual machine (JVM) created in the Java process; inserting a prober into an operating system kernel; monitoring states in the operating system kernel of Java threads in the Java process and sending a signal to the helper thread in response to detect that a Java thread is blocked; and retrieving call stack information from the JVM in response to receive the signal from the operating system kernel and locating the position in source code of the Java program that causes the block using the retrieved call stack information.

Journal ArticleDOI
TL;DR: Experiments show that the detection capability of the proposed birthmark is much higher than that of other static birthmarks despite obfuscations by Smokescreen and ZKM.
Abstract: A software birthmark means inherent characteristics that can be used to identify a program. In this paper, we propose a birthmark technique based on object traces of Java programs. Java is an object-oriented programming language that provides various predefined class libraries that help programmers to produce software easily. In order to utilize Java class libraries, we have to use Java object instructions. The Java object instructions are hard to replace or remove, and so a set of sequences of object instructions is a proper candidate to represent inherent characteristics of a program. We propose a new birthmark using the sequences of object instructions. We evaluate the proposed birthmark with open source programs and compare it with previous static birthmarks. Experiments show that the detection capability of our birthmark is much higher than that of other static birthmarks despite obfuscations by Smokescreen and ZKM.

Proceedings ArticleDOI
16 Nov 2011
TL;DR: This paper proposes to cache class, field, and method information obtained from reflection for subsequent usage in the JNI, and provides a function to pin objects to their memory locations such that they can be accesses through the known reference.
Abstract: Java has been making its way into the embedded systems and mobile devices like Android. The Java platform specifies the Java Native Interface (JNI) which allows Java code that runs within a JVM to interoperate with applications or libraries that are written in other languages and compiled to the host CPU. JNI plays an important role in embedded system as it provides a mechanism to interact with libraries specific to the platform and to take the advantage of fast execution of native programs. To address the overhead incurred in the JNI due to reflection and serialization, this paper proposes to cache class, field, and method information obtained from reflection for subsequent usage. It also provides a function to pin objects to their memory locations such that they can be accesses through the known reference. The Android emulator is used to evaluate the performance of these techniques and we observed that there was 10-30 % performance gain in the Java Native Interface for two Android applications.

Proceedings ArticleDOI
Siliang Li1, Gang Tan1
22 Oct 2011
TL;DR: A complete static-analysis framework called JET is proposed to extend exception-checking rules even on native code, and has a two-stage design where the first stage throws away a large portion of irrelevant code so that the second stage, a fine-grained analysis, can concentrate on a small set of code for accurate bug finding.
Abstract: Java's type system enforces exception-checking rules that stipulate a checked exception thrown by a method must be declared in the throws clause of the method. Software written in Java often invokes native methods through the use of the Java Native Interface (JNI). Java's type system, however, cannot enforce the same exception-checking rules on Java exceptions raised in native methods. This gap makes Java software potentially buggy and often difficult to debug when an exception is raised in native code. In this paper, we propose a complete static-analysis framework called JET to extend exception-checking rules even on native code. The framework has a two-stage design where the first stage throws away a large portion of irrelevant code so that the second stage, a fine-grained analysis, can concentrate on a small set of code for accurate bug finding. This design achieves both high efficiency and accuracy. We have applied JET on a set of benchmark programs with a total over 227K lines of source code and identified 12 inconsistent native-method exception declarations.

Book
07 Feb 2011
TL;DR: Using JRuby lets you merge the best of several possible worlds, so you can create unique software using the best tools available, and is your definitive guide.
Abstract: In Using JRuby you'll venture into the wide world of open-source Ruby and Java libraries. Write Ruby on Rails web applications that run on Java servers like Tomcat. Use Java's JDBC or Hibernate to easily connect Ruby to industry-standard databases. Test your Java program using Ruby's elegant Cucumber and RSpec frameworks. Create dazzling desktop user interfaces with frameworks like Limelight and Monkeybars. Package a Rails or plain Ruby project for easy deployment to any Java environment. JRuby lets you merge the best of several possible worlds, so you can create unique software using the best tools available. This book is your definitive guide.

Proceedings ArticleDOI
05 Dec 2011
TL;DR: This paper proposes a solution based on aspect-orientation that makes aspects and application classes independent of each other, while connecting code is used to concisely express the role played by classes within design patterns.
Abstract: Design patterns are an invaluable resource for developers. Yet, for some of them the implementation of an application concern and the code needed to enforce the design pattern solution can be tangled within the same class. This potent ially makes classes more complex, more prone to changes and less reusable. In order to keep the complexity of classes under manageable levels, this paper proposes a solution based on aspect-orientation. Our solution makes aspects and application classes independent of each other, while connecting code is used to concisely express the role played by classes within design patterns. Developers needing to modify the role of an application class should only update such connecting code, thus keeping changes to application code to a minimum. The performance overhead of such an approach is evaluated and compared with the standard implementation.

Journal ArticleDOI
01 Jun 2011
TL;DR: This work describes how to adapt the type inference process of Java to obtain better error diagnostics for generic method invocations and paves the way for further heuristics can provide additional diagnostic information.
Abstract: Since version 15, generics (parametric polymorphism) are part of the Java language However, the combination of parametric polymorphism and inclusion polymorphism is complicated, particularly so for Generic Java Indeed, the main Java compilers, Eclipse's ejc and Sun's javac, do not even accept the same set of programs Moreover, experience with these compilers shows that the error messages provided by them leave more than a little to be desired To alleviate the latter problem, we describe how to adapt the type inference process of Java to obtain better error diagnostics for generic method invocations Although the extension by itself already helps to improve type error messages to some extent, another major advantage of the new type inference process is that it also paves the way for further heuristics can provide additional diagnostic information The extension has been implemented into the JastAdd Extensible Java Compiler

Proceedings ArticleDOI
22 Oct 2011
TL;DR: The Habanero-Java language extends sequential Java with a simple but powerful set of constructs for multicore parallelism and includes a compiler that generates standard Java classfiles and an IDE that extends DrJava.
Abstract: The Habanero-Java language extends sequential Java with a simple but powerful set of constructs for multicore parallelism. Its implementation includes a compiler that generates standard Java classfiles, a runtime system that builds on the java.util.concurrent library, an IDE (DrHJ) that extends DrJava, and a new data-race detection tool.

Book
04 Oct 2011
TL;DR: Using this book, you can squeeze maximum performance and value from all your Java applications no matter how complex they are, what platforms theyre running on, or how long youve been running them.
Abstract: The definitive master class in performance tuning Java applicationsif you love all the gory details, this is the book for you James Gosling, creator of the Java Programming Language Improvements in the Java platform and new multicore/multiprocessor hardware have made it possible to dramatically improve the performance and scalability of Java software Java Performance covers the latest Oracle and third-party tools for monitoring and measuring performance on a wide variety of hardware architectures and operating systems The authors present dozens of tips and tricks youll find nowhere else Youll learn how to construct experiments that identify opportunities for optimization, interpret the results, and take effective action Youll also find powerful insights into microbenchmarkingincluding how to avoid common mistakes that can mislead you into writing poorly performing software Then, building on this foundation, youll walk through optimizing the Java HotSpot VM, standard and multitiered applications; Web applications, and more Coverage includes Taking a proactive approach to meeting application performance and scalability goals Monitoring Java performance at the OS level in Windows, Linux, and Oracle Solaris environmentsUsing modern Java Virtual Machine (JVM) and OS observability tools to profile running systems, with almost no performance penaltyGaining under the hood knowledge of the Java HotSpot VM that can help you address most Java performance issues Integrating JVM-level and application monitoringMastering Java method and heap (memory) profilingTuning the Java HotSpot VM for startup, memory footprint, response time, and latencyDetermining when Java applications require rework to meet performance goalsSystematically profiling and tuning performance in both Java SE and Java EE applicationsOptimizing the performance of the Java HotSpot VM Using this book, you can squeeze maximum performance and value from all your Java applicationsno matter how complex they are, what platforms theyre running on, or how long youve been running them

Proceedings ArticleDOI
27 Jun 2011
TL;DR: Infandango1 is an open source web-based system for automated grading of Java code submitted by students that gains near-instant feedback on the correctness of their code, and instructors are able to monitor the progress of students in the class.
Abstract: Infandango1 is an open source web-based system for automated grading of Java code submitted by students. Uploaded Java files are compiled and run against a set of unit tests on a central server, with results being stored in a database. Students gain near-instant feedback on the correctness of their code, and instructors are able to monitor the progress of students in the class.

Proceedings ArticleDOI
26 Sep 2011
TL;DR: It is possible to unify the three memory area types and provide a single class to represent all three memory areas of SCJ and the knowledge of the maximum storage requirements allows using nested backing stores in the implementation of the memory area representation.
Abstract: Safety-Critical Java (SCJ) is based on the Real-Time Specification for Java. To simplify the certification of Java programs, SCJ supports only a restricted scoped memory model. Individual threads share only immortal memory and the newly introduced mission memory. All other scoped memories are thread private. Furthermore, the notation of a maximum backing store requirement enables implementation of the scoped memories without fragmentation issues. In this paper we explore the implications of this new scoped memory model and possible simplifications in the implementation. It is possible to unify the three memory area types and provide a single class to represent all three memory areas of SCJ. The knowledge of the maximum storage requirements allows using nested backing stores in the implementation of the memory area representation. The proposed design of an SCJ compliant scope implementation is evaluated on an embedded Java processor.

Journal ArticleDOI
TL;DR: MAJOR is presented, a new tool for comprehensive aspect weaving, which ensures that aspects are woven into all classes loaded in a Java Virtual Machine, including those in the standard Java class library.

Proceedings ArticleDOI
04 Jun 2011
TL;DR: By using appropriate implementations, sequential execution performance has been improved by about 5 times making it comparable to native Java and the gap from Java Fork/Join performance is about 3 times when run at a single place.
Abstract: X10 is a new programming language for improving the software productivity in the multicore era by making parallel/distributed programming easier. X10 programs are compiled into C++ or Java source code, but X10 supports various features not supported directly in Java. To implement them efficiently in Java, new compilation techniques are needed.This paper discusses problems in translating X10-specific functions to Java and provides our solutions. By using appropriate implementations, sequential execution performance has been improved by about 5 times making it comparable to native Java. The parallel execution performance has also been improved and the gap from Java Fork/Join performance is about 3 times when run at a single place. Initial evaluation of distributed execution shows good scalability. Most of the results in this paper have already been incorporated in X10 release 2.1.2.Many of the compilation techniques described in this paper can be useful for implementing other programming languages targeted for Java or other managed environments.

Book
05 Dec 2011
TL;DR: This book shows how using Java can significantly improve MATLAB program appearance and functionality, and that this can be done easily and even without any prior Java knowledge.
Abstract: For a variety of reasons, the MATLAB-Java interface was never fully documented. This is really quite unfortunate: Java is one of the most widely used programming languages, having many times the number of programmers and programming resources as MATLAB. Also unfortunate is the popular claim that while MATLAB is a fine programming platform for prototyping, it is not suitable for real-world, modern-looking applications. Undocumented Secrets of MATLAB-Java Programming aims to correct this misconception. This book shows how using Java can significantly improve MATLAB program appearance and functionality, and that this can be done easily and even without any prior Java knowledge. Readers are led step-by-step from simple to complex customizations. Code snippets, screenshots and numerous online references are provided to enable the utilization of this book as both a sequential tutorial and as a random-access reference suited for immediate use. Java-savvy readers will find it easy to tailor code samples for their particular needs; for Java newcomers, an introduction to Java and numerous online references are provided. This book demonstrates how The MATLAB programming environment relies on Java for numerous tasks, including networking, data-processing algorithms and graphical user-interface (GUI) We can use MATLAB for easy access to external Java functionality, either third-party or user-created Using Java, we can extensively customize the MATLAB environment and application GUI, enabling the creation of visually appealing and usable applications

Journal ArticleDOI
TL;DR: The proposed model offers two choices for developing distributed real-time Java applications (one based on R.I., and another on distributed events), which may be used to develop applications, and includes an additional support for asynchronism in communications, a feature that may speed up their communication performance.
Abstract: More-and-more, the use of Java as a programming language for real-time applications is becoming of interest in industrial middleware. This is mainly because it offers advantages for the programmer as reduced deployment times, increased portability, and a number of APIs that may be integrated in large distributed applications. This paper contributes a dual communication model for distributed real-time Java applications. Current efforts in distributed real-time Java [e.g., The Distributed Real Time Specification for Java (DRTSJ)] are mainly focused on remote invocations (R.I.) and set aside other valuable approaches such as distributed events. The proposed model offers two choices for developing distributed real-time Java applications (one based on R.I., and another on distributed events), which may be used to develop applications. Both models include an additional support for asynchronism in communications, a feature that may speed up their communication performance. This paper includes a description for the two models, the changes that are required in the current API to accommodate them, and an empirical evaluation of their performance on a reference implementation.