Thanks! I forgot about the CLDC, and for pinpointing the dates. :-) I am thinking I could write my own serializable without too much problem. The java.lang.reflect is a major hurdle. I was thinking about getting all the JDK sources needed to support the reflect classes rhino uses and compile them with retroweaver to a jar and see how big it was. Maybe I could just add it to the Rhino build. If I have to get rid of the Java bridge, maybe I could have some type of custom bridge where you pass a string in the form of a JSON object to the Java side and then have an API to convert that and do its thing. Not sure how that passing would work. Just a theory.
Tony Z On Tue, Feb 1, 2011 at 2:41 PM, Jürg Lehni <[email protected]> wrote: > I imagine this is due to the Blackberry using the CLDC vs the CDC that I > tested with? The L stands fro Limited, after all... > > This will be quite a bit of work to implement, and it will not offer some of > the nice bits such as the Java bridge, which is only made possible by > reflection. > > But once you remove the dependency of Serializable and the java.lang.reflect > package, it does not seem too crazy actually. > > And at least you will not have to struggle with all the changes introduced by > converting Rhino to Java 5 / generics, etc. > > Looking here, the Generics changes seemed to have happened around March 12 > 2008: > > http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=HEAD&branchtype=match&dir=mozilla%2Fjs%2Frhino%2Fsrc&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2008-01-01&cvsroot=%2Fcvsroot > > (e.g: > "We no longer support JDKs older than JDK 1.4, so remove this class." > "Massive fix of warnings, mostly supplying type parameters for generics. Also > switched to modern collections classes." > "Fix many warnings, mostly adding @Override, a few Class<?>." > "Fix warnings, mainly @Override and generics." > "Add @Override" > ) > > So I would pick the state of Rhino right before these changes and start from > there. > > Jürg > > On 1 Feb 2011, at 19:46, Tony Zakula wrote: > >> I am trying to compile this on Blackberry 4.5 JDE. I added the Jar >> file to the project with a simple Hello World BB app that does not use >> Rhino. So basically, it is just verifying the small Jar. I get the >> errors below using the version of Rhino you did. Are you using the >> latest J2ME? I see java.lang.reflect and java.lang.ClassLoader as the >> major hurdles here. The other classes I may be able to pull out of >> the JDK sources, but those two depend on a lot of other classes. >> >> Tony Z >> >> Building Rhino >> C:\BlackBerryJDE4.5.0\bin\rapc.exe -quiet >> import=..\..\lib\net_rim_api.jar library=Rhino Rhino.rapc >> warnkey=0x52424200;0x52525400;0x52435200 "C:\Documents and >> Settings\mtzakula\My Documents\NetBeansProjects\smalljs.jar" >> java.io.Serializable: Warning!: No definition found >> org.mozilla.javascript.ScriptableObject: Warning!: Implements >> undefined interface: java.io.Serializable >> java.lang.ClassLoader: Warning!: No definition found >> java.util.Locale: Warning!: No definition found >> java.lang.reflect.Field: Warning!: No definition found >> org.mozilla.javascript.IdScriptableObject$PrototypeValues: Warning!: >> Implements undefined interface: java.io.Serializable >> java.lang.reflect.Method: Warning!: No definition found >> java.lang.Cloneable: Warning!: No definition found >> org.mozilla.javascript.Interpreter$CallFrame: Warning!: Implements >> undefined interface: java.lang.Cloneable >> org.mozilla.javascript.Interpreter$CallFrame: Warning!: Implements >> undefined interface: java.io.Serializable >> org.mozilla.javascript.Interpreter$ContinuationJump: Warning!: >> Implements undefined interface: java.io.Serializable >> org.mozilla.javascript.InterpreterData: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.MemberBox: Warning!: Implements undefined >> interface: java.io.Serializable >> java.lang.reflect.Member: Warning!: No definition found >> java.text.DateFormat: Warning!: No definition found >> org.mozilla.javascript.NativeGlobal: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.NativeJavaObject: Warning!: Implements >> undefined interface: java.io.Serializable >> org.mozilla.javascript.NativeWith: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.ObjArray: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.ObjToIntMap: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.Ref: Warning!: Implements undefined interface: >> java.io.Serializable >> org.mozilla.javascript.ScriptableObject$Slot: Warning!: Implements >> undefined interface: java.io.Serializable >> org.mozilla.javascript.UintMap: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.Undefined: Warning!: Implements undefined >> interface: java.io.Serializable >> org.mozilla.javascript.UniqueTag: Warning!: Implements undefined >> interface: java.io.Serializable >> java.lang.ThreadLocal: Warning!: No definition found >> java.lang.reflect.InvocationHandler: Warning!: No definition found >> org.mozilla.javascript.jdk13.VMBridge_jdk13$1: Warning!: Implements >> undefined interface: java.lang.reflect.InvocationHandler >> org.mozilla.javascript.regexp.RECharSet: Warning!: Implements >> undefined interface: java.io.Serializable >> org.mozilla.javascript.regexp.RECompiled: Warning!: Implements >> undefined interface: java.io.Serializable >> org.mozilla.javascript.Arguments: Error!: Missing stack map at label: 88 >> Error while building project >> >> >> On Tue, Feb 1, 2011 at 10:59 AM, Jürg Lehni <[email protected]> wrote: >>> I can confirm this works, at least it seems to: >>> >>> I just did tried this code on a device running J2ME CDC: >>> >>> Context cx = Context.enter(); >>> Scriptable scope = cx.initStandardObjects(); >>> Object result = cx.evaluateString(scope, "10 + 10", "<test>", 1, null); >>> System.out.println(Context.toString(result)); >>> >>> And I got 20 on the console. >>> >>> The Rhino.jar I produced on Mac, using the following commands in the >>> Rhino1_6R5 folder: >>> >>> ant clean >>> ant -Ddebug=off -Dno-e4x=true smalljar >>> >>> The resulting smalljs.jar has RegExp support built in and is only 266 kb in >>> size. >>> >>> I am now trying to find out what the latest version of Rhino is that is >>> still compatible. >>> >>> More on this soon. >>> >>> Jürg >>> >>> On 1 Feb 2011, at 15:39, Tony Zakula wrote: >>> >>>> I will download that and try importing it into a J2ME project and see >>>> what happens. >>>> >>>> Tony Z >>>> >>>> >>>> On Mon, Jan 31, 2011 at 5:09 PM, Jürg Lehni <[email protected]> wrote: >>>>> I am interested in a Rhino that works on J2ME CDC as well and just looked >>>>> into this. >>>>> >>>>> It appears that the Orbit project did not have to make any modifications >>>>> to Rhino. At the time, Rhino 1.6 R5 seemed to be compatible with CDC. >>>>> >>>>> I think Generics and other Java 5 modifications were added at a later >>>>> point, thus breaking compatibility with CDC. >>>>> >>>>> Jürg >>>>> >>>>> On 31 Jan 2011, at 19:05, Raju Bitter wrote: >>>>> >>>>>> Sun did a project with Laszlo Systems (OpenLaszlo platform) in >>>>>> 2006/2007, where they used Rhino to load an OpenLaszlo >>>>>> DHTML/JavaScript application into J2ME app. I remember that the >>>>>> engineer working on the project said that you'd have to at least use >>>>>> the CDC/PBP profile to get Rhino running. But I don't know what the >>>>>> requirements were for the functionality within J2ME (class loading, >>>>>> ...) You can check the source code of the project at >>>>>> http://java.net/projects/orbit/sources/svn/show >>>>>> >>>>>> Project Orbit announcement >>>>>> http://weblog.openlaszlo.org/archives/2007/05/sun-launches-project-orbit/ >>>>>> Personal Basis Profile http://java.sun.com/products/personalbasis/ >>>>>> J2ME CDC >>>>>> http://www.oracle.com/technetwork/java/javame/tech/index-jsp-139293.html >>>>>> >>>>>> Don't know if this will help you. Good luck! >>>>>> >>>>>> - Raju >>>>>> >>>>>> On Sat, Jan 29, 2011 at 5:29 PM, Tony Zakula <[email protected]> >>>>>> wrote: >>>>>>> Hi, >>>>>>> >>>>>>> I am looking at possibly attempting to port Rhino to J2ME. J2ME is >>>>>>> basically a very stripped down version of J2SE and it is compatible >>>>>>> with Java 1.3. >>>>>>> >>>>>>> The port would really only need basic JS functionality. I need to >>>>>>> only run in interpreted mode so no class compiles are needed, no >>>>>>> inheritance, and no implementing interfaces, no security controller, >>>>>>> etc. >>>>>>> >>>>>>> After looking through the Rhino source code, I have a short list of >>>>>>> the issues I see. >>>>>>> >>>>>>> 1. There is no reflection in 1.3. I do need access to Java objects, >>>>>>> but I was thinking I could maybe write a simple bridge where instead >>>>>>> of putting Java objects into JS, one method was called with some >>>>>>> parameters and then the Java side would take those and do what it >>>>>>> needs to do and just return a string result that the task was done. >>>>>>> >>>>>>> 2. ClassLoader is a problem for 1.3. Maybe that can just be >>>>>>> eliminated because I do not need compiles? >>>>>>> >>>>>>> 3. Generics, there is none in 1.3. I would have to rewrite the Rhino >>>>>>> classes to take care of that? >>>>>>> >>>>>>> 4. Missing JDK classes. I would have to try to bring those in from SE >>>>>>> or write replacements. >>>>>>> >>>>>>> I saw where I could compile the small to jar to prune some things I >>>>>>> would not need, and in a Rhino Ant Script, it looks like maybe you can >>>>>>> target 1.3 with a retrotranslater? >>>>>>> >>>>>>> Even with that, I would manually need to prune those things because I >>>>>>> still need to know what I have to provide from SE. >>>>>>> >>>>>>> It is likely, I will be able to open source this when and if it is >>>>>>> done. I would appreciate any thoughts, comments, or advice. >>>>>>> >>>>>>> Thanks! >>>>>>> >>>>>>> Tony Z >>>>>>> _______________________________________________ >>>>>>> dev-tech-js-engine-rhino mailing list >>>>>>> [email protected] >>>>>>> https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino >>>>>>> >>>>>> _______________________________________________ >>>>>> dev-tech-js-engine-rhino mailing list >>>>>> [email protected] >>>>>> https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino >>>>> >>>>> >>> >>> > > _______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
