![]() |
|||
![]() ![]() |
![]() |
![]()
|
![]() |
Various JVM ImplementationsEach JVM is a little different. Knowing the various nuances is vital to development and required knowledge for the Certified Programmer Examination. Not all computers are created equal. Likewise, not all JVMs are created equal. You have seen, through the discussion of the JVM and the Class file execution, that the JVM specification leaves room for implementation characteristics. An example is the issue of garbage collection. The JVM makes no assumptions about how unused memory resources are reallocated and placed for reuse. Issues such as these are responsible for differences in cross-JVM operation characteristics. Garbage collection, threads, and GUI characteristics are, for Java developers, the things that go bump in the night. In later chapters, you will look at the threads and GUI cross-JVM implementation issues. This chapter has discussed the concept of garbage collection, but the intrinsic scheduling problem of garbage collection might not be obvious. For example, say your applications are providing some sort of real-time information, but you are having a problem. Every so often, your application stops responding for a period of time, and then comes back to life. This problem is the direct responsibility of JVM-implementation garbage collection. Not all JVM-implementation characteristics are as obvious as your application not working. Fortunately, the JDK test suite has eliminated a large number of problem spots that plagued earlier Java development. JDK Test SuiteBeginning with JDK 1.1, Sun has required Java runtime environment implementations to conform to the JDK Test Suite. That is, in order for a product to claim that it is Java-enabled, it must first pass the JDK Test Suite. This initiative by Sun provides a standardization of the various Java runtime environment implementations. Before JDK 1.1, all vendors that offered Java runtime environment support took it upon themselves to broadly interpret the JVM specifications. Specifically, issues like cross-platform thread support and GUI presentation were areas with high degrees of variation. The result was non-predictable class execution on the various runtime implementations. A quick example of this is exemplified in Windows 3.1 thread support: there is none! The JDK Test Suite has done wonders for cross-platform implementations. Sun has also stated their dedication to ensuring conformity through licensing restrictions. If you dont conform, you dont get to use the word Java in your product. This is not to say that now all JVMs will be created equal, but at least they will be from the same planet. Cross-Platform IssuesMaintaining a list of all cross-platform issues is impossible for a couple of reasons. The first reason lies in the fact that the list of platforms is in a constant state of flux. It seems as if every day news of a new Java-enabled device is hitting the streets, with no end in sight. The second reason for being unable to provide a complete list has to do with the rate of change in the Java world. New technologies are added and others deleted almost daily. This being the case, knowledge of platform-specific issues is not required on either certification exam. Nevertheless, it is invaluable information. The following list provides some basic Java execution characteristics for a handful of platforms. Platforms excluded from this list are no less important than included entries. Rather, the included platforms simply provide the largest range of Java-enabled platforms.
|
![]() |
|