Я пишу плагин для приложения Java. Я мог бы запутать плагин, но его все равно было бы легко реконструировать.
Я считаю, что если бы я мог скомпилировать этот плагин в разделяемую библиотеку, которая интенсивно использует JNI для связи с основным приложением, было бы намного труднее перепроектировать. Я готов пожертвовать некоторой производительностью ради JNI, а приложение, для которого я кодирую, поддерживает загрузку разделяемой библиотеки. Единственная проблема заключается в том, что я не знаю инструмента, который выполняет эту работу: похоже, что gcj зависит от собственной среды выполнения, а IKVM.NET - на .NET
Если быть точным:
public class PluginImpl implements Plugin {
@Override
public void startPlugin(PluginContext ctx) {
ctx.helloWorld();
}
}
следует преобразовать в
public class PluginImpl implements Plugin {
@Override
public native void startPlugin(PluginContext ctx);
}
а тело моего метода startPlugin скомпилировано в общую библиотеку.
(ну да, я знаю, я мог бы написать этот плагин в первую очередь на C)