Charlie, So, I see the semantic mismatch, but what is the technical reason for having a separate extension?
I see some benefits of using the standard .class extension, such as being able to compile JRuby compiled bytecode into native code (e.g. using the JET compiler), or to run an obfuscator on the class files (imagine how confused if someone were to try to decompile JRuby code to Java...). Besides, wouldn't this require a separate classloader to load the byte code? Granted, we may have some confusion when someone open up the Type Editor in Eclipse and see a org.jruby.compiled.lower_case_class_name, but it seems like a small price to pay. Peter -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Charles Oliver Nutter Sent: Thursday, October 18, 2007 6:02 PM To: dev@jruby.codehaus.org Subject: [jruby-dev] Compile to .rbj instead of .class? So yeah, the compiler's done, it can compile ahead-of-time to binary files you can load and run and all that. Currently the extension for those files is .class, but that's started to bother me a bit. Here's the deal...it's not "really" a Java class file. You can't load the class it contains and instantiate it normally and start calling methods. It's just a bag of methods and runtime junk for the compiled code. There will be an eventual compiler that can produce things more like normal class files, but this isn't it. I'm also planning a modification to the load sequence that will allow loading these compiled format files directly out of load path, rather than requiring classpath changes. So if you compile some/dir/foo.rb to some/dir/foo.class, the load sequence will see the compiled version and load that. Because the loading of these compiled files requires a JRuby runtime and extra logic to launch them correctly, I'm starting to think that naming them .class isn't appropriate. They're really a custom format/layout for JRuby that just happens to use the Java class file format and bytecode. Beyond that, they're JRuby-specific. So what would you all say to having the compiler produce a different extension, like .rbj for "ruby compiled to Java bytecode"? I think it better reflects the actual format and the way the files should be used, and it would basically eliminate the chance of someone confusing this for a normal Java class and intentionally (or accidentally) using it in their own Java code. Thoughts? - Charlie --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email