У меня есть какое-то Java-приложение и клиент с каким-то UWP-приложением, реализованным на C #, распространяемый через Магазин Windows и т. Д., Который хочет использовать некоторые части моего приложения. Эти части не зависят от ОС, они разбирают только некоторые специальные двоичные форматы файлов, применяя некоторую бизнес-логику, настроенную с использованием файлов YAML и прочего. Нет сети, графический интерфейс, только некоторые доступы к файлам и т. Д.
В настоящее время мы используем IKVM , чтобы сделать интересующий код для C #, но столкнулся с другими проблемами. Кто-то поддерживал .NET Core , кто-то имел отношение к native toolchain в Release и т. Д. Хотя сейчас, похоже, все работаетпосле применения некоторых обходных путей я уже немного ищу альтернативы IKVM.
Единственное, что я сейчас использую в IKVM, - это просто создание DLL моего кода с использованием ikvmc , что можетзатем быть упомянутым в UWP-проекте. Суммируется компилятор следующим образом:
Инструмент ikvmc преобразует байт-код Java в .NET DLL и EXE-файлы.
Вот где поддержка для создания собственных образов Windows GraalVMпришло мне в голову. Другие, кажется, уже собирают собственные двоичные файлы для Windows и в соответствии с документами , GraalVM может создавать общие библиотеки, используя "--shared". Насколько я понимаю, IKVM реализует JVM в .NET и отображает вещи по мере необходимости и возможности. Это очень похоже на то, что делает «Substrate VM» в случае нативного образа, не так ли?
Этот исполняемый файл включает в себя приложение, библиотеки, JDK и не работает на JavaVM, но включает в себя необходимые компоненты, такие как управление памятью и планирование потоков с другой виртуальной машины, которая называется «Substrate VM». Substrate VM - это имя для компонентов среды выполнения (таких как деоптимизатор, сборщик мусора, планирование потоков и т. Д.).
https://www.graalvm.org/docs/reference-manual/native-image/
Итак, есть ли шанс, что нативныйизображение в форме DLL может заменить DLL, созданную ikvmc
в настоящее время? Кто-нибудь пробовал это уже и есть опыт? Кто-нибудь уже пытался создать собственную DLL и использовать ее в каком-то другом приложении Windows? Насколько я понимаю, UWP «только» применяет дополнительные ограничения, которые можно обойти снова. Или этот подход по каким-то причинам совершенно невозможен?
Спасибо всем за ваш вклад!