I’ve had some discussion with colleagues who chose to go with JRuby along the following line of argumentation:
JRuby can make use of anything that is available in Java, ergo such programs are more portable bc Java is more portable.
Arguably, the breadth, capability and speed of C/C++ libraries that have been wrapped for Python is still better than what is available in Java. But since this is C/C++, all the problems with portability reappear this way – or so their argument went.
Have you ever had such a problem? that is, problem with portability of Python’s extensions?
Personally, I have never found this to be a problem, but YMMV, while theoretically and potentially this is a problem. I’m curious of your experiences.
5
This is almost an impossible question to answer in the abstract. It depends on what type of programming your doing (systems, enterprise, application) and your definition of portability.
At my current job they did try JRuby precisely because it had the promise of playing nicely with the JVM (before I got there). They ditched because, practically speaking, they found coding calls to Java somewhat cumbersome and switched to Groovy. I’ve also, anecdotally, had problems running pure Ruby libraries in JRuby – for whatever reason. But writing portable C is not easy. I used to run MRI Ruby on Solaris and there were some native libraries that required a lot of tweaking before they compiled.
You might find more libraries for interfacing with “enterprise” software and “enterprise” crap… err… systems in Java than in C/C++. But as @MrFox pointed out – Java ain’t no systems language. If your definition of portable is runs on Linux and Mac OSX, a lot of Python wrappers have worked for me with little or no problem (except for some SciPy related stuff). (I will admit I am a python dilettante and if I were more hard core I might run into more edge cases). If your definition of portable includes OpenVMS and zVM, then Java is your best bet.