2009-11-20 20 views
11

¿Desea crear dll de animación para Windows XP ¿Está bien crear animaciones Java2d y exportarlas como dll?¿Es posible usar Java para crear dll?

+0

¿Por qué el voto a favor? Creo que esta pregunta es bastante simple. –

+1

Supongo, y lo enfatizo, que el dv vino de alguien que deseaba que la pregunta fuera más específica acerca de los objetivos de mayor nivel del OP. Personalmente, creo que en este caso un comentario habría sido suficiente, pero los gustos varían. – bmargulies

Respuesta

12

Sí. Necesita escribir código en C++ para iniciar la JVM con la interfaz de invocación a JNI y llamar a ella. Sin embargo, puede que le resulte difícil crear ventanas de esta manera que se integren a la perfección con su aplicación de entorno Windows para mostrar su animación. Este es un uso bastante avanzado de JNI, y recomendaría leer el libro de JNI incluso antes de probar un poco.

+1

Si bien es técnicamente correcto, no es una buena idea (moderadamente) usar Java para el trabajo descrito en la pregunta anterior. –

+0

Es cierto. Tendría que haber una razón terriblemente especial. Solo prefiriendo codificar en java2d versus native no lo haría. – bmargulies

+0

En mi caso, podría intentarlo, porque no hay nada como JavaFX. Qt tiene un código obsoleto, muchas macros y tantas cosas innecesarias, mientras que cualquier otra biblioteca de C++ ui con las mismas capacidades es básicamente un motor de diseño HTML que usa el estrafalario estándar HTML .... – Johannes

1

Estoy bastante seguro de que sólo se puede crear archivos .jar de Java no dlls

+1

Uno de nosotros está respondiendo la pregunta que quiere hacer, pero no tengo idea de cuál de nosotros :-) – bmargulies

+0

Estoy bastante seguro de que es usted +1 por la respuesta :) – James

+0

@bmargulies: +1 para usted también: P –

2

Lo dudo, a menos que haya algunas herramientas de terceros por ahí. Para su caso donde los gráficos están involucrados, las posibilidades son aún menores.

0

Estoy de acuerdo con bmargulies. Probablemente sea factible para un experto, pero sería una DLL grande y estaría mezclando tecnologías que nunca se hicieron para trabajar juntas. No tiene sentido probar esto, en mi opinión.

2

No, IIRC no puede. Las DLL se vinculan directamente cuando se cargan. El código Java necesita un jvm, por lo que solo puede proporcionar un dll que inicie un jvm e inicie el código allí, pero no necesariamente todo lo que cabe en el dll.

No debe hacer esto. Parece que estás tratando de utilizar el enfoque equivocado para tu problema.

1

Existen "bridges" que permiten que los códigos Java y no Java se llamen el uno al otro. Dependiendo de lo que intente lograr, estos podrían ser útiles ya que podría escribir su código Java y luego invocarlo desde una DLL C++ o C#, dependiendo de con qué idioma esté creando su DLL, lo que también determinará qué tipo de puente que necesitas Nunca he visto un puente proporcionado libremente. Todos los que encontré al mirar tuvieron que ser comprados.

0

Bueno ...

  1. GCJ is available for Windows.
  2. GCJ es parte de GCC.
  3. GCC can create dlls.

Podría ser posible juntar eso para construir archivos DLL usando GCJ.

+0

Pero GCJ todavía produce archivos de clase ¿no? Y eso significa que necesitan una JVM –

+0

de acuerdo con http://www.autexier.de/jmau/dev/gcj.html gcj aún produce archivos de clase –

1

En realidad, lo que dijo Quentin debería funcionar.
Cuando compila java en native con GCJ primero compila los archivos .java en archivos específicos de la plataforma .o (objeto). Es de suponer que compilaría los archivos .o en un dll en lugar de un exe. GCJ también incluye componentes como el recolector de elementos no utilizados y las bibliotecas base de Java. Ninguno de los cuales requiere un JVM para ejecutarse. La desventaja es que el dll sería enorme. Una simple aplicación "Hello World" cuando se compila con GCJ es ~35MB, gracias a todas las libs predeterminadas y al recolector de elementos no utilizados. Del mismo modo, su dll sería enorme.

Cuestiones relacionadas