expose custome object or function to script environement
A. Sundararajan
sundararajan.athijegannathan at oracle.com
Mon Jan 13 03:31:54 PST 2014
You could use any of the following options:
1) Write a Java object with bean-style getters and getters - which can
be used by scripts 'as is'. This is the most direct and simple way.
Users can use "new" to create objects and use "obj.prop" to access/write
to bean-properties and call public Java methods. If there are 'event'
callback methods accepting interfaces, scripts can pass a script
implementation of interfaces or just pass a script function if the
interface is a SAM interface.
2) You could implement jdk.nashorn.api.scripting.JSObject interface in
your class and expose the objects of the same. You could it make your
object behave like function by implementing call and newObject methods.
And implement getMember and putMember methods to expose properties to
scripts.
3) You could have a script object whose properties are bound to a Java
object. Example:
var obj = {};
Object.bindProperties(obj, myJavaObject);
print(obj.foo); // calls myJavaObject.getFoo() bean getter
The above 'binds' bean-style properties of your Java object to the
script object "obj". The script object could have usual proto and so
on. This flexible option allows your script object to behave as normal
script object -- but some properties being implemented in Java.
All these are documented in
https://wiki.openjdk.java.net/display/Nashorn/Nashorn+jsr223+engine+notes
https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions
-Sundar
On Monday 13 January 2014 03:19 PM, buddhi mihara wrote:
> hi,
> i am writing a server side js language just like node.jswhat is the proper way to expose custom object just like NativeMath or custom constructor function just like Native Date to the script environment
> thank you
More information about the nashorn-dev
mailing list