使用Java类时JRuby的局限性

Jak*_*old 7 ruby java jruby

据我了解JRuby,完全可以在JRuby代码中使用Java类,反之亦然,但是,我仍然不了解一些东西.

  • JRuby可以使用Java Annotations吗?
  • 是否有可能在Java类上使用来自JRuby的反射?
  • 是否有可能在JRuby类上使用Java的反射?
  • 在JRuby中有可执行类吗?
  • 是否有可能在JRuby脚本中重新定义Java类?(和我重新定义的方式相同,例如C Ruby中的Integer)
  • 是否有任何其他限制,阻止使用JRuby作为任何Java应用程序的一部分?

Pes*_*sto 9

  • JRuby可以使用Java Annotations吗?

不,Ruby没有注释.但是,ruby2java编译器将允许您添加在编译为类文件时使用的注释.

  • 是否有可能在Java类上使用来自JRuby的反射?

是:

java.util.Vector.methods.include? '[]'  #  => true
Run Code Online (Sandbox Code Playgroud)
  • 是否有可能在JRuby类上使用Java的反射?

使用BSF或JSR223嵌入JRuby时?仅在这些技术允许的范围内.使用ruby2java时?是.它生成普通的Java .class文件.

  • 在JRuby中有可执行类吗?

我不确定你在问什么.

  • 是否有可能在JRuby脚本中重新定义Java类?(和我重新定义的方式相同,例如C Ruby中的Integer)

是的,您可以在JRuby中修补补丁,但是从Java端看不到更改,只有JRuby:

import java.util.Vector
class Vector
  def foo
    "foo!"
  end
end
v = java.util.Vector.new
v.foo                       #  => "foo!"
Run Code Online (Sandbox Code Playgroud)
  • 是否有任何其他限制,阻止使用JRuby作为任何Java应用程序的一部分?

从JRuby使用Java时,有很多小问题.ruby2java还处于起步阶段,我不确定它是否已经为生产环境做好了准备.除此之外,重点更多的是使用BSF和JSR223编写脚本,这可能适合您的目的,也可能不适合您的目的.