On 07 Jul 2015, at 22:24, John Pallister john@synchromesh.com wrote:
[…]
Some of the tutorials have code like:
context.addServlet(HelloServlet.class, "/");
Is it possible to get Class objects for Java classes I've made with JNEW-RUNTIME-CLASS (or indeed for any other Java class)?
Since all Java references to non-primitive types descend from java.lang.Object, one may always get a reference to the class object by [calling the “getClass()” method][1].
[1]: http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--
I've been using "raw" JCLASS & JMETHOD etc. calls to experience just how painful that really is, but I'm apprehensive about using JSS and paying the runtime dynamic dispatch penalty, given that on GAE time is money. Something more like a SLIME plug-in that looked up & cached classes, methods & fields at editing time (perhaps also parsing Java expressions) and generated "statically typed" code would be nice (possibly using code from e.g. JDEE and/or CEDET) - has anyone else thought about this?
I wouldn’t necessarily be afraid of the “penalty" for using JSS, or at least, I might benchmark the difference in performance before shying away from JSS at the outset.
JSS [already creates a cache of all classes that on the classpath][2]. JSS:JAVA-CLASS-METHOD-NAMES provides a listing of all methods of a class, which is not currently cached, but could be. Extending this to java fields would be useful. I would welcome patches to JSS which extends these introspection facilities as the basis for the tooling you wish to build.
[2]: http://abcl.org/trac/browser/trunk/abcl/contrib/jss/invoke.lisp#L299 [3]: http://abcl.org/trac/browser/trunk/abcl/contrib/jss/invoke.lisp#L469