The next approach is perhaps the most traditional one: to provide a compiler that targets the source language directly to the JVM. This can be done either by writing a compiler from scratch (as was done for Scheme  and (of course) Java), or by retargeting an existing compiler to the JVM (as was done for Eiffel).
The former method will cause code divergence, which is appropriate for Scheme and Java, since these languages have detailed written specifications. As has been established, such code divergence is not reasonable for Perl, at least not at the current time. The later method of retargeting a compiler to the JVM is reasonable for Perl, yet there is a risk.
As was discussed in Section 1.2.3, a useful feature of a proper JVM port is to permit the source language to use the JVM to communicate smoothly with other languages. When the Eiffel compiler was retargeted to the JVM, the port was not made ``aware'' of the JVM's object model. Thus, it has been a difficult road to use Eiffel's JVM port to integrate Eiffel and Java, since the compiler treats JVM bytecode as just another assembler syntax--not as a rich object architecture. Plans to modify the Eiffel port to support integration with Java exist; however, the design of Perl's port to the JVM must not inherently contain this limitation.
Copyright © 2000, 2001 Bradley M. Kuhn.
Verbatim copying and distribution of this entire thesis is permitted in any medium, provided this notice is preserved.