Tuesday, February 24, 2009

Domo Arigato, Mr. Ruboto

# cat test.rb
require 'java'
import java.lang.System

class Ruboto
def greet(who)
puts "Hello, #{who}!"
end
end

name = System.get_property('java.runtime.name')
Ruboto.new.greet(name)

# dalvikvm -classpath ruboto.jar org.jruby.Main -X-C test.rb
Hello, Android Runtime!




Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 2.5 Attribution License.

21 comments:

  1. so Jruby comes to android platform thats wonderful :)

    ReplyDelete
  2. newbie question:
    does this mean that jruby can be used to develop applications on the android plattform?

    ReplyDelete
  3. Last week I fought with CRuby to cross-compile miniruby for Android. Damn, should have waited a week :-) Thank you for the effort. When/where do we get more details?

    ReplyDelete
  4. uh, me likey!

    ReplyDelete
  5. Your posting tempted me to try the same for Rhino - and it worked! Thanks a lot!

    ReplyDelete
  6. I guess last night's RUM inspired you.

    ReplyDelete
  7. so ... where is Project Ruboto hosted so that we all may participate in the fun?

    ReplyDelete
  8. mmm, I can't wait to play! Code?

    ReplyDelete
  9. That's pretty cool. Now I want to get an Android phone.

    ReplyDelete
  10. yay!

    source?

    ReplyDelete
  11. Wow. Now that the fastest turn around I have ever seen. Very cool Charlie. Sweet!

    ReplyDelete
  12. Hey, if you need any particular help with Android support in JRuby, drop me a line. I was planning on doing Android/JRuby experiments in a couple of months, but if you're starting sooner, that's cool too!

    ReplyDelete
  13. looks like MRI [can] run on android.
    http://otype.net/2009/01/static-ruby-miniruby-187-on-android-dev-phone-1/

    ?
    -=r

    ReplyDelete
  14. I thought that JRuby does quite a bit of dynamic Java byte code generation, and that Dalvik doesn't support dynamic byte code generation. Am I wrong on one of those two points? Would you mind giving a brief description of how you've gotten a dynamic language working on Dalvik? Thanks, and exciting work!

    ReplyDelete
  15. appears that it disables its just in time compilation http://www.infoq.com/news/2009/02/jruby12rc1-android-support

    ReplyDelete
  16. I just succeeded in running jruby code from an 'Activity'. the android SDK generates a R class with static inner classes that have lower case names and again there own static fields eg in java R.layout.main (layout being the static class). this seems to create problems. Also code like this:

    btn = $activity.find_view_by_id(0x7f050000)
    txt = $activity.find_view_by_id(0x7f050001)

    class RunScriptListener
    include View::OnClickListener

    def onClick(view)
    src = txt.text.to_s
    eval(src)
    end

    end

    btn.on_click_listener = RunScriptListener.new


    seems to create the same problem with classloading: Exception: java.lang.UnsupportedOperationException: can't load this type of class file.
    But of course you can't pass arguments to an activity for the davlikvm.

    ReplyDelete