Anuncio

sábado, 20 de abril de 2013

Convertir una aplicación Java en un .EXE de Windows


Tomando como base el ejemplo de Servidor y Cliente TCP en Java vamos a crear un archivo ejecutable de Windows .EXE con el Servidor.
Bien sabemos, que Java no genera código de máquina, sinó un bytecode (.class) que luego es interpretado por la Máquina Virtual. Lo que haremos, en principio será generar un archivo .jar donde introducir todos los archivos necesarios para ejecutar nuestra aplicación y luego crear una aplicación que lance ese .jar.
  • En principio, dentro del .jar también deberemos incluir un “manifest file” donde se añadirá información como el nombre de la clase donde se encuentra el método main() y el path donde se encuentran los.class:
[CODE]
Main-Class: Servidor
Class-Path: Servidor.jar
[/CODE]
  • Para generar el .jar utilizaremos el programa jar incluido en el JDK. Para ello, en principio agregamos a nuestra variable de entorno Path la ruta de los binarios del JDK:
[CODE]
set Path=%Path%;”C:\Program Files\Java\jdk1.6.0_03\bin”
[/CODE]
  • Luego, en el directorio donde está nuestros .class, ejecutamos:
[CODE]
jar vcfm Servidor.jar Servidor.mf Servidor.class
[/CODE]
  • Para probar nuestra aplicación, ejecutamos:
[CODE]
java -jar Servidor.jar
[/CODE]
  • Finalmente, para generar nuestro .exe, podemos:
    • Compilar un programa en C que ejecute un system(“java -jar Servidor.jar”)
    • Utilizar jStart32, que básicamente hace lo mismo
Pongo, a disposición para la descarga, el proyecto completo sockets_demo (Servidor y Cliente TCP), que incluye los .java, los .class, el mf, el jar y el .exe.


viernes, 5 de abril de 2013

Game Loops

There are a lot of different sorts of game loops you can use. In general, you can think of a game loop as having 3 different pieces:

1) Some sort of, well... loop. From timer calls to while loops to recursive function calls. (the loop)
2) A way to delay the length of each loop iteration so you get a frame rate you like. (the timing mechanism)
3) A way to make the game speed remain independent of the speed of the loop. (the interpolation)


Fuente: http://www.java-gaming.org/index.php?topic=24220.0