[ 
https://issues.apache.org/jira/browse/SLING-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12704400#action_12704400
 ] 

Michael Dürig commented on SLING-945:
-------------------------------------

Java 1.6 introduces JavaFileManager [1] for compilation. Something along these 
lines is what I think is needed for scripting in Sling. 

[1] http://java.sun.com/javase/6/docs/api/javax/tools/JavaFileManager.html

> Introduce a ClassReader for scripts which need to do symbol resolution at 
> compile time
> --------------------------------------------------------------------------------------
>
>                 Key: SLING-945
>                 URL: https://issues.apache.org/jira/browse/SLING-945
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>            Reporter: Michael Dürig
>
> As mentioned in [1] scripts (which compile to byte code) should not use the 
> class loader for loading class files to resolve external symbols. Class 
> loaders are designed to load binary representations of classes into the JVM 
> at runtime. Using them for scripting languages which need to resolve symbols 
> at compile time is a hack. In fact all languages which I looked at and which 
> do symbol resolution at compile time use the same 
> 'classloader.getResource("foo.class")' hack to get access to a class file. 
> Languages which require to browse the classes available to them at compile 
> time need to resort to even more esoteric hacks. 
> I faced this issue when I implemented support for Scala. To work around it I 
> implemented a (Scala specific) file system abstraction on top of Felix's 
> bundles. While this works ATM, the approach might not be too stable since it 
> partially relies on implementation details of the underlying classloaders. 
> Since other scripting languages have the same problem (i.e. JSP AFAIK) I 
> suggest to factor the hacks into a separate ClassReader service. Scripts can 
> then use this at compile time to resolve external symbols. 
> [1] http://sling.markmail.org/message/ly3yhlmqufpugjly

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to