| ![]() |
CERC Technical Report Series
Technical Memoranda
CERC-TR-TM-97-001
JAVA AND BEYOND: EXECUTABLE CONTENT
Kankanahalli Srinivas, V. ?Juggy? Jagannathan, Y. V. Ramana Reddy, Raghu Karinithi*
Guest Editors' Introduction. IEEE Computer, Special Issue, Vol. 30, No. 6, June 1997, p. 49-52.
*Silicon Graphics, Inc.
Concurrent Engineering Research Center
West Virginia University
P.O. Box 6506, Morgantown, WV 26506
Guest Editors' Introduction
Computer, Vol. 30, No. 6, June 1997
Java and Beyond: Executable Content
Kankanahalli Srinivas
V. ?Juggy? Jagannathan
Y.V. Ramana Reddy
Raghu Karinthi
West Virginia University
The notion of executable content is an extremely powerful idea with far-reaching consequences. Its basic premise is that content need not be static, but can contain programs that will facilitate information sharing and dissemination in unheard-of ways. While the notion of executable content has been in existence for a while, the combination of the rise of the World Wide Web and the development of new technologies has opened new and exciting avenues that will lead to a new computing landscape.
Postscript was the first language that popularized the notion of executable content. Since then there have been numerous other attempts to provide similar functionalities, including Telescript, Inferno, Safe-Tcl, and Python. However, none of these languages have enjoyed the success of Java, which has benefited from a combination of technical and commercial factors.
JAVA AS A PROGRAMMING LANGUAGE
Although Java owes part of its success to the popularity of the WWW, its widespread acceptance
is also due to the many features and facilities it provides as a programming language.1 As Bruce
MacLennan describes, languages are like sports cars:2 High-performance driving machines invite
their drivers to drive them and make the experience of driving a pleasure. High-performance
languages invite software engineers not only to program but also to create elegant, efficient
designs and implementations.
Java has become the lingua franca of the Internet not only because it is secure, robust, and safe but also because it is a pleasure to program with. Although in many respects Java is orientation, multithreading, interfaces, garbage collection, Unicode support, object serialization, and exceptions necessary for programming complex, high-performance, distributed applications.
JAVA AS A FRAMEWORK
Java is more than a language?it is a framework that comprises many components. It includes
picoJava, a hardware implementation of the Java Virtual Machine; the JavaOS, an operating
system implementation; and many application programming interfaces for programming a broad
range of applications, as described in the ?Java APIs? sidebar.
JAVA BEANS AS A COMPONENT ARCHITECTURE
A hot research area in software engineering is the development of reusable component
architectures that will allow large software systems to be designed by combining components
from possibly different sources. While many problems still need resolution, the Java Beans
component architecture is a step in the right direction.
Java Beans provides mechanisms to define components in Java and specify interactions among the various components. Java Beans components provide support (through Introspection and the Reflection API) wherein component assemblers can discover properties about the components. One of the other advantages of the Java Beans architecture is that it also accommodates other component architectures such as OpenDoc, ActiveX, and LiveConnect. So by writing Java Beans components, the developer is assured that the component can also be used in these and other component architectures.
As Edward Yourdon points out, Java has profound implications on the future of software development and distribution and has the potential to eliminate fatware or software bloat, which is predominant in current software.3 Java can facilitate the creation of a cottage industry focused on designing and implementing Java components that can then be delivered across the Internet on demand, using distribution channels such as Marimba?s Castanet.
JAVA AND DISTRIBUTED OBJECT COMPUTING
Even the initial release of the Java Development Kit had primitives to support distributed object
computing. Java provides a number of options for exploiting the Internet and intranets in
developing client-server solutions. The initial releases supported TCP/IP socket programming, but
the support was primitive. Several commercial companies provide support for remote data
retrieval and distributed-object computing. JavaSoft later released its own support for this, called
the remote method invocation, described in the ?Java APIs? sidebar.
The Java Database Connectivity (JDBC) interface may be used to support relational database connectivity in a distributed enterprise. Java-based object request brokers (see the ?Java and CORBA? sidebar) support general-purpose client-server development, which emphasizes threetiered architectures and middleware services.
JAVA AND MOBILE CODE
Mobile code (or ?function shipping?) refers to the ability to transfer executable binaries to
wherever they need to be executed. Telescript was an early example that accomplished this with
proprietary technology (Telescript is now available on mobile personal digital assistants running
the Magic Cap operating system). Other examples of mobile code have been implemented with
Python, Scheme48, Safe-Tcl, and Oblique.
Though the basic Java support for bytecode migration implies Java code mobility, this capability did not really represent mobility per se. Java does not have intrinsic support to ship execution state to different locations and resume execution in new locations?as implied by the Telescript architecture. IBM Tokyo Research Laboratory in Japan has recently released a Java environment
that precisely supports this capability for Java, the Aglet API described in the ?Java APIs? sidebar.
Java?s performance is an important concern. Its interpreted nature, its use of dynamic binding, and the overheads associated with garbage collection, array bounds checking, and polymorphism all contribute to Java?s performance problems. Recently, Javasoft as well as other vendors supporting Java have adequately addressed performance. The steps taken to improve Java performance include generational garbage collectors with better performance, just-in-time compilers, and native-code compilers, among other optimizations. Javasoft also promises to deliver a new generation of Java interpreters (code-named HotSpot) that can perform adaptive optimization and improve performance while retaining portability.
The other concern that is often expressed is the lack of good tools and development environments for Java. Borland, Symantec, Sun, Microsoft, and others have recently released development tools that alleviate this problem to some extent. At the Concurrent Engineering Research Center, we are developing development tools such as Chicory (www.cerc.wvu.edu/~chicory), which will facilitate the creation of large software systems in Java by teams of software engineers.
We hope you enjoy the spectrum of articles that deal with various aspects of Java, from techniques to improve Java runtime performance to innovative applications.
References
1 K. Arnold and J.Gosling, The Java Programming Language, Addison-Wesley, Reading, Mass.,
1996.
2 B. MacLennan, ?Who Cares about Elegance? The Role of Aesthetics in Programming
Languages,? SIGPlan Notices Mar. 1997.
3 E. Yourdon, ?Java, the Web, and Software Development,? Computer Aug. 1996, pp. 25-30.
Kankanahalli Srinivas is an assistant professor of computer science at West Virginia University, where he is involved with the Artemis project and the Chicory projects, which aim to build a visual programming framework supporting the entire software application development life cycle. Srinivas received a BSEE (with distinction) from Bangalore University, an MTech from the Indian Institute of Technology, Kanpur, and a PhD in computer science from New Mexico State University.
V. ?Juggy? Jagannathan is the associate director of research at the Concurrent Engineering Research Center, an associate professor of computer science at West Virginia University, and the overseer of a startup company based on technology licensed from CERC. He has been coprincipal investigator of the Artemis project and two National Library of Medicine projects. He has edited a book on blackboard systems and lectured widely on distributed object systems, Web, CORBA, and health care. Jagannathan received a PhD in electrical and biomedical engineering from Vanderbilt University.
Y.V. Ramana Reddy is a professor of computer science and director of CERC. He has been a principal investigator on a variety of research projects, overseeing commercialization of laboratory research by the Bell Atlantic Corporation as the chief scientist of a knowledge-based systems company. Reddy is also the founder of Software Valley, a nonprofit membership organization dedicated to promoting the growth of high-technology jobs throughout West Virginia. Reddy received a PhD in industrial engineering from West Virginia University. He is a member of AMIA.
Raghu Karinthi is a member of the technical staff at Silicon Graphics, Inc. His current research interests include computer graphics, Java, and Web technology. Karinthi received a BTech in electrical engineering from the Indian Institute of Technology, Madras, and an MS and a PhD in computer science, both from the University of Maryland at College Park.
Contact the editors at the Concurrent Engineering Research Center, West Virginia University, PO Box 6506, Morgantown, WV 26506-6506; {sriniv, juggy} @cerc.wvu.edu.
Copyright ? 1997 Institute of Electrical and Electronics Engineers, Inc. All rights reserved.
Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution must be obtained from the IEEE. By choosing to view this document, you agree to all provisions of the copyright laws protecting it.