Programming for the Java™ Virtual Machine |
By Joshua Engel |
| |
Publisher | : Addison Wesley |
Pub Date | : June 22, 1999 |
ISBN | : 0-201-30972-6 |
Pages | : 512 |
| 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 |
|