Talk:Other JVM Languages
"Support for languages which don't have a compiler will require changes to Robocode which nobody has yet volunteered to implement." I don't think this is entirely correct. Pavel has been hard at work adding support for .NET to Robocode, which I believe would add support for some other languages. Someone who knows more about it should add a note about that, though. --Voidious 16:22, 24 January 2010 (UTC)
I haven't been following his work on that front, but if his work is concentrated on loading .NET assemblies, then the comment is still valid. For non-compiled languages, you would still need some custom code for each language to load the interpreter and parse each source file to find classes which extend Robot.--Duyn 02:35, 25 January 2010 (UTC)
- No, basic Scala has already been implemented, as I write below. Sorry =) --Nat Pavasant 10:35, 25 January 2010 (UTC)
Robocode in Other Languages
- .NET Robocode is almost completed. I was just reqested by Pavel to do QA on it. It should be beta release soon. For those who is interested in, Pavel has created jni4net library that connect .NET CLR and JVM through JNI. Earlier he code it just for Robocode, but he and Fnl decided to separated the project for other to use it too.
- I've requested PHP for Robocode too. Take a time search, PHP-Java bridge seems to do well.
- Python and Ruby can be implemented via Jython and JRuby, but nothing has done yet.
Note that people have tried to use Python for Robocode before too, but experience problem. And those robot cannot run in Competition until it make official. --Nat Pavasant 10:35, 25 January 2010 (UTC)
- I think the information is useful even if people can't enter their robots into any official leagues. Robocode gives a nice practical way to learn a new language, and this page can help people get up and running quickly. The alternative would be having people find this stuff out themselves (the clojure stuff was especially unpleasant).
- Scala robots run fine. I have coded a basic guess factor targeting bot (similar to the algorithm used in the GuessFactor Targeting Tutorial) in Scala which is putting my pattern matchers to shame. I have not yet encountered a feature blocked by Robocode, though I don't use structural types because they require reflection and are thus slow.
There was a time when Scala robots required specific changes to Robocode, back in the days when Robocode would only let you load classes from the CLASSPATH if they were in the java.* or robocode.* packages. That is no longer true now that Robocode seems to let you load any class you want from the CLASSPATH. —Duyn 13:53, 25 January 2010 (UTC)
- Well, you could have help us in Scala implementation. Contact me if you interested.
- What I was worry at is when Robocode released plug-in which implement those languages, and if some newbie who are coding in, for example, Scala come across this page too, they might confused. --Nat Pavasant 14:06, 25 January 2010 (UTC)
- For Scala, you don't need any extra effort. The Scala library just has to be on the CLASSPATH that Robocode is run with. Once that is done, everything just works (tested on Robocode 184.108.40.206).
- Clojure requires disabling the security manager because (on Windows) it tries to read the file
\C:\...\clojure.jarwhen the correct path to its runtime is
C:\...\clojure.jar(no initial slash). I'm guessing the problem is with Clojure, since Scala doesn't have the same issue.
- As for any upcoming plugin, we can update the information when that happens. Until then, this page can help them get a start now.—Duyn 01:30, 26 January 2010 (UTC)
- If you change the startup script so it doesn't clobber the system CLASSPATH, i.e. (on Windows):
java -Xmx512M -Dsun.io.useCanonCaches=false -cp libs/robocode.jar;%CLASSPATH% robocode.Robocode %*
- then Robocode will automatically pick up language runtimes on the CLASSPATH and enable robots compiled in those languages. After that, you can just tell users to add their (compiled) language's runtime to their CLASSPATH if they want to use it with Robocode.—duyn 02:10, 27 January 2010 (UTC)