Monday, September 6, 2010

Programming For The Java Virtual Machine












Programming for the Java™ Virtual Machine
By Joshua Engel

Publisher : Addison Wesley
Pub Date : June 22, 1999
ISBN : 0-201-30972-6
Pages : 512


The core of Java technology, the Java virtual machine is an abstract computing machine that enables the Java platform to host applications on any computer or operating system without rewriting or recompiling. Anyone interested in designing a language or writing a compiler for the Java virtual machine must have an in-depth understanding of its binary class format and instruction set. If you are programming with the Java programming language, knowledge of the Java virtual machine will give you valuable insight into the Java platform's security capabilities and cross-platform portability. It will increase your understanding of the Java programming language, enabling you to improve the security and performance of your programs.

The author employs a tutorial approach that provides a detailed look into the central workings of the technology and teaches the reader how to write real programs for the Java virtual machine. He describes methods for becoming a better programmer through an advanced understanding of the Java virtual machine and Java technology. Programming for the Java Virtual Machine offers comprehensive coverage of all the major elements of the Java virtual machine--classes and objects, control instructions, debugging, class loaders, compiling the Java programming language, performance issues, security, and threads and synchronization. The book provides an introduction to the Java Virtual Machine Specification (JVMS), with a collection of topics that help programmers understand the Java virtual machine and the JVMS better. In addition, the book features implementations of Prolog and Scheme, a language that runs on top of the Java virtual machine, generating Java virtual machine code as it runs and using a Java virtual machine class loader to load the generated code into the system.

You will find detailed information on such topics as:

*

The Java virtual machine verification algorithm
*

How Java virtual machine security works, and what it can and can't do
*

Using class loaders to incorporate code and dynamically generated code from the Internet, the Java Foundation Classes, database queries, and other languages
*

The mechanics of compiling the Java programming language for the Java virtual machine
*

Implementing other languages using the Java virtual machine, including Scheme, Prolog, Sather, Eiffel, and regular expressions

Copyright
Preface
Prerequisites
Books
Acknowledgments

Chapter 1. Introduction to the Java Virtual Machine
Section 1.1. Java Virtual Machine and Java
Section 1.2. What Is the Java Virtual Machine?
Section 1.3. Java Platform
Section 1.4. Organization of the Java Virtual Machine
Section 1.5. Garbage Collection
Section 1.6. JVM Implementations
Section 1.7. Versions of the Virtual Machine
Section 1.8. Future of the Java Virtual Machine

Chapter 2. Oolong
Section 2.1. Hello, World
Section 2.2. Structure of an Oolong Program
Section 2.3. Defining the Class
Section 2.4. Superclasses
Section 2.5. Declaring Fields
Section 2.6. Declaring Methods
Section 2.7. Interfaces

Chapter 3. Writing Methods
Section 3.1. Some Definitions
Section 3.2. Types
Section 3.3. Mnemonic Naming Conventions
Section 3.4. Testing Code Examples
Section 3.5. Returns
Section 3.6. Constants
Section 3.7. Local Variables
Section 3.8. Math
Section 3.9. Type Conversions
Section 3.10. Stack Manipulations
Section 3.11. Arrays of Numbers
Section 3.12. Just Biding Your Time

Chapter 4. Classes and Objects
Section 4.1. What Is an Object?
Section 4.2. Creating Objects
Section 4.3. Constructors
Section 4.4. Using Fields
Section 4.5. Invoking Methods on Objects
Section 4.6. Casting
Section 4.7. Casting, Fields, Methods, and Java
Section 4.8. Returning Objects
Section 4.9. Interfaces
Section 4.10. Static Fields and Methods
Section 4.11. Class Initialization
Section 4.12. Arrays

Chapter 5. Control Instructions
Section 5.1. Comparing Integers
Section 5.2. Comparing References
Section 5.3. Other Comparisons
Section 5.4. Switches
Section 5.5. Subroutines
Section 5.6. Exceptions
Section 5.7. A Gentler Way of Checking Type

Chapter 6. Verification Process
Section 6.1. How the Verification Algorithm Works
Section 6.2. Is It a Structurally Valid class File?
Section 6.3. Are All Constant References Correct?
Section 6.4. Are All the Instructions Valid?
Section 6.5. Will Each Instruction Always Find a Correctly Formed Stack and Local Variable Array?
Section 6.6. Do External References Check Out?
Section 6.7. Java Language and Verification Algorithm
Section 6.8. Other Safety Requirements
Section 6.9. Checking Verification

Chapter 7. Debugging
Section 7.1. Debugging Directives in Oolong
Section 7.2. Debugging Oolong Programs
Section 7.3. Runtime Tracing

Chapter 8. Class Loaders
Section 8.1. How Classes Are Loaded
Section 8.2. Loading Classes without a Class Loader
Section 8.3. Making Your Own Class Loader
Section 8.4. Working with Class Objects
Section 8.5. Reflection

Chapter 9. Inside a Java class File
Section 9.1. class File Header
Section 9.2. Constant Pool
Section 9.3. Class Information
Section 9.4. Fields and Methods
Section 9.5. Class Attributes
Section 9.6. Other Attributes

Chapter 10. Compiling Java
Section 10.1. Expressions and Statements
Section 10.2. Expression Types
Section 10.3. Compiling Statements and Expressions
Section 10.4. Local Variable Declarations
Section 10.5. Fields and Variables
Section 10.6. Creating New Objects
Section 10.7. Class Name Abbreviations
Section 10.8. Arithmetic Expressions
Section 10.9. Method Calls
Section 10.10. Expressions as Statements
Section 10.11. Ifs and Booleans
Section 10.12. Other Control Structures
Section 10.13. Returns
Section 10.14. Field Declarations
Section 10.15. Method Declarations
Section 10.16. Constructors
Section 10.17. Conclusion

Chapter 11. Compiling Other Languages
Section 11.1. Java Version 1.1
Section 11.2. Regular Expressions
Section 11.3. Iterators
Section 11.4. Parameterized Types
Section 11.5. Multiple Inheritance
Section 11.6. Conclusion

Chapter 12. Implementing Scheme
Section 12.1. Scheme Concepts
Section 12.2. Compiling Scheme into Bytecodes
Section 12.3. Compiling Lambda Expressions
Section 12.4. Example
Section 12.5. Scheme Library
Section 12.6. Optimizing Scheme

Chapter 13. Implementing Prolog
Section 13.1. Introduction to Prolog
Section 13.2. Implementation Basics
Section 13.3. Unification
Section 13.4. Rules as Programs
Section 13.5. Implementing Rules
Section 13.6. Compiling Facts
Section 13.7. Case Study

Chapter 14. Performance
Section 14.1. Fast Virtual Machines
Section 14.2. Bytecode Optimization Techniques
Section 14.3. Inlining

Chapter 15. Security and the Virtual Machine
Section 15.1. Java Platform and Need for Security
Section 15.2. Security Promises of the JVM
Section 15.3. Security Architecture and Security Policy
Section 15.4. Some Potential Attacks
Section 15.5. Conclusion

Chapter 16. Threads and Synchronization
Section 16.1. Threads
Section 16.2. Sharing State Between Threads
Section 16.3. Monitors and Object Locks
Section 16.4. Scheduling
Section 16.5. Conclusion

Appendix A. Tables
Section A.1. Instructions by Opcode
Section A.2. Instructions Alphabetically
Section A.3. Instructions by Category

Appendix B. Oolong Reference
Section B.1. Using the Oolong Assembler
Section B.2. Gnoloo
Section B.3. DumpClass
Section B.4. Oolong Language
Section B.5. Instructions

Appendix C. Answers to Selected Exercises
Further Reading
Java and the JVM
Newsgroup
Other Languages
Compilers

Download
Another Java books

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!