Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
PostScript language reference manual (2nd ed.)
PostScript language reference manual (2nd ed.)
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
Clarity MCode: a retargetable intermediate representation for compilation
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
Efficient and language-independent mobile programs
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Java bytecode to native code translation: the caffeine prototype and preliminary results
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
ASHs: Application-specific handlers for high-performance messaging
Conference proceedings on Applications, technologies, architectures, and protocols for computer communications
ASHs: application-specific handlers for high-performance messaging
IEEE/ACM Transactions on Networking (TON)
Garbage collection and local variable type-precision and liveness in Java virtual machines
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Design, implementation, and evaluation of optimizations in a just-in-time compiler
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Procedure Based Program Compression
International Journal of Parallel Programming - Special issue on the 30th annual ACM/IEEE international symposium on microarchitecture, part II
Type-preserving garbage collectors
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
EW 7 Proceedings of the 7th workshop on ACM SIGOPS European workshop: Systems support for worldwide applications
Flexible distributed programming using mobile code
EW 7 Proceedings of the 7th workshop on ACM SIGOPS European workshop: Systems support for worldwide applications
Bytecode verification on Java smart cards
Software—Practice & Experience
JN: OS for an Embedded Java Network Computer
IEEE Micro
Practical Experiences with Java Compilation
HiPC '00 Proceedings of the 7th International Conference on High Performance Computing
Towards an Algebraic Specification of the Java Virtual Machine
Proceedings of the ESPRIT Working Group 8533 on Prospects for Hardware Foundations: NADA - New Hardware Design Methods, Survey Chapters
Embedded Processor Design Challenges: Systems, Architectures, Modeling, and Simulation - SAMOS
On-Card Bytecode Verification for Java Card
E-SMART '01 Proceedings of the International Conference on Research in Smart Cards: Smart Card Programming and Security
Java Bytecode Verification: An Overview
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Embedded processor design challenges
Coordination technology for the WWW
WET-ICE '96 Proceedings of the 5th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises (WET ICE'96)
Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Virtual machine showdown: stack versus registers
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Introducing the hydra parallel programming system
Proceedings of the eighteenth annual ACM symposium on Parallelism in algorithms and architectures
Transient variable caching in Java’s stack-based intermediate representation
Scientific Programming
Mostly accurate stack scanning
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Towards an active network architecture
ACM SIGCOMM Computer Communication Review
Virtual machine showdown: Stack versus registers
ACM Transactions on Architecture and Code Optimization (TACO)
Byte code level cross-compilation for developing web applications
Science of Computer Programming
Towards an XML-based Bytecode Level Transformation Framework
Electronic Notes in Theoretical Computer Science (ENTCS)
Efficient off-board deployment and customization of virtual machine-based embedded systems
ACM Transactions on Embedded Computing Systems (TECS)
A Verifier for Region-Annotated Java Bytecodes
Electronic Notes in Theoretical Computer Science (ENTCS)
Bytecodes meet combinators: invokedynamic on the JVM
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
Computer security from a programming language and static analysis perspective
ESOP'03 Proceedings of the 12th European conference on Programming
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Swift: a register-based JIT compiler for embedded JVMs
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
SAMOS'05 Proceedings of the 5th international conference on Embedded Computer Systems: architectures, Modeling, and Simulation
Memory-efficient on-card byte code verification for Java cards
Proceedings of the First Workshop on Cryptography and Security in Computing Systems
Hi-index | 0.01 |
Java is a programming language loosely related to C++. Java originated in a project to produce a software development environment for small distributed embedded systems. Programs needed to be small, fast, “safe” and portable. These needs led to a design that is rather different from standard practice. In particular, the form of compiled programs is machine independent bytecodes. But we needed to manipulate programs in ways usually associated with higher level, more abstract intermediate representations. This lets us build systems that are safer, less fragile, more portable, and yet show little performance penalty while still being simple.