Relacionado con: Is there a way to obtain the bytecode for a class at runtime?Java: Obtener código de bytes de la clase en tiempo de ejecución desde el interior de la misma JVM
estoy añadiendo durabilidad a Clojure, y estoy finalmente en el punto en que estoy listo para agregar funciones. En Clojure, las funciones se compilan en bytes en clases con métodos de invocación (entre otros). De esta manera, las funciones son de primera clase. Para que sean duraderos, necesito serializar y deserializar estas clases. ¿Cómo obtengo el bytecode para la clase sin tener acceso al archivo .class?
Corrígeme si me equivoco, pero usar un agente requiere generar una VM separada con el agente que se conecta a la primera VM. Necesito hacerlo desde la misma máquina virtual.
No es suficiente utilizar Serializable para establecer y obtener el objeto Class. Al deserializar, necesito cargar la clase, y en instancias posteriores de VM, puede haber una colisión de nombre de clase. Necesito modificar el bytecode para cambiar el nombre de la clase a algo único en el tiempo de deserialización/carga de clase.
No soy de ninguna manera un experto en el tema, pero podría valer la pena tratar de persistir la función * definiciones * en lugar del bytecode subyacente. a continuación, puede simplemente recompilar las funciones a bytecode cuando las vuelva a cargar. – mikera