A Practical Approach for Improving Startup Latency in Java Applications

In emerging application domains, such as thin client computing and hypertext systems with embedded objects (e.g. the World Wide Web), the process of downloading application code is in the critical path of users. We observe that in these domains, compliance with existing standards and minimizing the impact on the clients is crucial. We argue that the fundamental problem for mobile code is that the units of code distribution in networked object systems, such as Java, are not suited for efficient utilization of network bottlenecks. In this paper, we propose a separate optimization step, between compilation and loading, whereby application code is restructured to more effectively use the available network bandwidth for program download. We have designed and implemented such an optimization step as a binary rewriting service for Java applets and applications. Our implementation does not require any modifications to existing Java virtual machines, compilers or clients. We have found that restructuring of Java applications can improve program startup times by up to 30%.

[1]  Michael Franz,et al.  Slim binaries , 1997, CACM.

[2]  J. Bradley Chen,et al.  Improving instruction locality with just-in-time code layout , 1997 .

[3]  Dan S. Wallach,et al.  Java security: Web browsers and beyond , 1997 .

[4]  Karl Pettis,et al.  Profile guided code positioning , 1990, PLDI '90.

[5]  Chandra Krintz,et al.  Overlapping execution with transfer using non-strict execution for mobile programs , 1998, ASPLOS VIII.

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  Robert Wahbe,et al.  Efficient and language-independent mobile programs , 1996, PLDI '96.

[8]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[9]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.1 , 1997, RFC.

[10]  Martín Abadi,et al.  A type system for Java bytecode subroutines , 1999, TOPL.

[11]  Lars Clausen,et al.  Java Bytecode Compression for Embedded Systems , 1988 .

[12]  Helen Custer,et al.  Inside Windows NT , 1992 .

[13]  Emin Gün Sirer,et al.  Distributed virtual machines: a system architecture for network computing , 1998, ACM SIGOPS European Workshop.

[14]  Brian N. Bershad,et al.  Reducing startup latency in web and desktop applications , 1999 .

[15]  Christopher W. Fraser,et al.  Custom Instruction Sets for Code Compression , 1995 .

[16]  George Eckel Inside Windows NT , 1993 .

[17]  Roy Fielding RFC 2068 : Hypertext Transfer Protocol-HTTP/1.1 , 1997 .

[18]  James A. Gosling,et al.  The Java application programming interface , 1996 .