Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Does not support continuations/bindings.
    • These features are simply missing. There is nothing which prevents them from existing short of programmer effort.
    *
  • Fine-grained timer.
    • Benchmarking code depends on finer grained timings than the JVM supports. This may be solved in a future JVM as there is a JSR on this (which JSR?).
    *
  • Identical thread behavior
    • Ruby uses green threads to implement the languages threading library. JRuby uses Java threads to implement Thread and friends. Without actually implementing green threads ourselves, we will not have identical thread behavior. Hopefully, any sane multi-threaded ruby script will work ok in spite of this
    *
    • .
  • Missing File operations
    • The JVM is missing some file operations needed by File and friends in Ruby. Some JSRs exist which may fix some of these and we could perhaps call external scripts to perform the rest. This is an area we have not spent any time looking at.

Java Limitations

  • Cannot extend abstract classes
    Even though we can implement interfaces, we cannot extend abstract classes. This is for two reasons:
    • Javas Proxy (which we use to pull in java classes) does not allow proxying an abstract class
    • Java consumers cannot see what we are extending (see next item on list)
      This feature will work once we have a compiler

...

  • Extended Java Classes in Ruby will not be visible to Java consumers
    Consider the following code:

include_class 'java.util.ArrayList'

...