On Tue, 17 Apr 2001 07:27:54 +0900, Dave Thomas
<Dave / PragmaticProgrammer.com> wrote:

>How would you handle singleton methods efficiently: [...]

I think, for the start, we should try to simply interpret Ruby code on
a JVM, that is create a Ruby interpreter which sits on a JVM.  This
isn't very fast, but much easier to implement.  That Ruby interpreter
can easily implement all needed features, as it wouldn't work with
java.lang.Method objects but with RubyClasses and RubyMethods.

I implemented such an approach for Smalltalk (actually little
Smalltalk) once and it worked surprisingly well.

Later, one can study how JPython and Kawa (a Scheme, CommonLisp
wannabe for the JVM) automatically generate class files.  For the
latter, there're ready to use classes available (with a GPL license)
which help in creating class files and generating Java methods.

>call have to go through a java Method? I'm not a classloader expert,
>but are there also issues with things like:
>
>   def labelIfZeroLength(param)
>     if param.length.zero?
>        def param.to_s
>          "zero"
>        end
>     end
>   end

In such cases, you probably have to #perform (to use the Smalltalk
terms) every method and have a combined approach of Java-compiled
Ruby-methods and Java-interpreted Ruby-methods.  Using advanced
features of JDK 1.3 and 1.4 (which shall improve class loaders) might
help here.  This is another reason to delay classfile-compiling.

>I agree that a Java version of Ruby would be wonderful, though.

So I'm correct if I subsume the statements that a JRuby would be a
good idea?  Great.


bye
--
Stefan Matthias Aust \/ Truth Until Paradox