Можно ли использовать Java для создания dll?

Хотите создать анимационную dll для Window XP Можно ли создавать анимацию Java2d и экспортировать как DLL?

Ответ 1

Да. Вам нужно написать код на С++, чтобы запустить JVM с интерфейсом вызова JNI и вызвать его. Однако вам может быть сложно создать окна таким образом, чтобы легко интегрировать приложение среды Windows для отображения вашей анимации. Это довольно продвинутое использование JNI, и я бы рекомендовал прочитать JNI-книгу, прежде чем даже попробовать ее немного.

Ответ 2

Я так сомневаюсь, если там нет сторонних инструментов. Для вашего случая, когда графика задействована, шансы еще ниже.

Ответ 3

Нет, IIRC вы не можете. DLL связаны непосредственно при загрузке. Java-код нуждается в jvm, поэтому вы можете предоставить только DLL, которая запускает jvm и запускает там код, но не все обязательно вписываются в dll.

Вы не должны этого делать. Похоже, вы пытаетесь использовать неправильный подход для своей проблемы.

Ответ 4

Я уверен, что вы можете создавать только файлы .Jar из java и dll

Ответ 5

Есть "мосты", которые позволяют Java и не-Java-код звонить друг другу. В зависимости от того, что вы пытаетесь выполнить, они могут быть полезны, поскольку вы могли бы написать свой Java-код, а затем вызвать его из С++ или С# DLL, в зависимости от того, на каком языке вы создаете свою DLL, что также определит, мост вам нужно. Однако я никогда не видел свободно предоставленного моста. Все, что я нашел при поиске, нужно было купить.

Ответ 6

Собственно, то, что сказал Квентин, должно работать.
Когда вы скомпилируете java для native с помощью GCJ, вы сначала скомпилируете файлы .java в специфические для платформы файлы .o (object). Предположительно, вы скомпилируете файлы .o в dll, а не в exe. GCJ также включает такие компоненты, как сборщик мусора, и базовые java-библиотеки. Ни один из них не требует выполнения JVM. Самое меньшее, что dll будет огромным. Простым приложением" Hello World" при компиляции с GCJ является ~35MB, благодаря всем файлам по умолчанию и сборщику мусора. Аналогично ваш dll будет огромным.

Ответ 7

Я согласен с bmargulies. Вероятно, это возможно для эксперта, но это была бы большая DLL, и вы бы смешивали технологии, которые никогда не были созданы для совместной работы. На мой взгляд, не имеет смысла попробовать это.