2011-12-03 25 views
14

He escrito una aplicación en Java usando Eclipse IDE y ahora necesito conocer la versión mínima de JRE que se requiere para ejecutar la aplicación. Sé que ciertos métodos solo están disponibles en JRE posteriores, pero me preguntaba cuál sería la forma más sencilla de conocer el requisito más alto de mi aplicación, así que cualquier sugerencia sería apreciada ...Cómo determinar la versión mínima de JRE y los requisitos del sistema para mi aplicación Java

También mientras estoy en el tema de los requisitos, le agradecería cualquier consejo o métodos para determinar los requisitos mínimos del sistema para mi software en general - es decir, la cantidad mínima de RAM ...

Gracias de antemano

+3

¿Sabes cómo los ingenieros averiguan cuánto peso puede soportar un puente? Conducen camiones cada vez más pesados ​​hasta que se derrumba, y luego lo reconstruyen. Haga eso al revés ... comience a compilar su aplicación con JDK 7 y use JDK anteriores hasta que no se compile. Lo mismo con la memoria ... use cada vez menos hasta que se rompa. Sí, semi irónico :) – Paul

+2

La compilación sola no es suficiente, casi doy esa respuesta también. Debido a que las versiones anteriores de JDK/JRE pueden incluir errores que no están en la versión que usa la mayoría del tiempo, simplemente compilar no garantiza la ejecución correcta del programa. Realmente lo necesita para (1) compilar y (2) hacer pasar su suite de pruebas completa contra un JRE determinado. Si no tiene un banco de pruebas, respaldar versiones anteriores del JRE será mucho más complicado. – jefflunt

+0

@Paul De alguna manera sospeché que recibiría una respuesta de alguien sobre esa línea, y creo que hay una buena razón; parece que no hay una manera fácil de calcular estos requisitos. Gracias por su respuesta Paul, pero por favor vea mis comentarios sobre la respuesta de normalocity, quien, creo que hace una buena observación, y estoy de acuerdo en que debería ser, debería desalentar el uso de JREs anteriores – Andy

Respuesta

7
  • Método 1: Para la versión mínima de JRE, va a ser difícil. La forma más sencilla es simplemente requerir la misma versión contra la que está compilando o más tarde, p. JRE 6.x.xo superior.
  • Método 2: Instale varios JDK, ponlos a disposición en Eclipse, y simplemente cambie la versión contra la que está compilando, ejecute el conjunto de pruebas de su aplicación cada vez y asegúrese de que todos pasen. La versión más antigua del JDK que permite que pasen todas tus pruebas es el JRE más bajo contra el que se puede ejecutar. Simplemente haciendo que su aplicación compile correctamente no es suficiente, porque las versiones anteriores de JRE/JDK pueden tener errores que permitan la compilación exitosa, pero no permiten la ejecución adecuada del programa.
  • Método 3: Siempre requiere lo último en el lado del cliente, porque Oracle está constantemente parcheando agujeros de seguridad, y finalmente, puede ser mejor requerir las últimas versiones, si tiene ese tipo de control, en el lado del cliente .

En cuanto a la RAM, es fácil. Cuando la JVM se inicia, establece una cantidad "máxima" de RAM (creo que el valor predeterminado puede ser de 128 MB), y ese es un límite estricto que su aplicación no puede superar sin fallar. Perfile su aplicación a lo largo del tiempo, ajuste la configuración de la memoria en la JVM y descubra cuál es la cantidad mínima de memoria RAM que necesitará para que su aplicación funcione tanto (a) con un rendimiento aceptable, y (b) sin arrojar un OutOfMemoryError , y tu estas listo.

Ref.: How to configure JVM options and memory?

Para otros requisitos tales como req CPU, las cosas se ponen un poco más difusa. Hay muchos CPUs y el rendimiento que produce un sistema determinado puede variar no solo en función de la velocidad de la CPU, sino también de la velocidad del disco duro, la cantidad de RAM instalada en el sistema y la velocidad de la interfaz de red (si está escribiendo una aplicación de red) y otras cosas. Para requisitos como eso, querrá simplemente probarlo en una variedad de sistemas y dibujar una línea en algún lugar, y decir: "Puede esperar un rendimiento aceptable si tiene un hardware que es al menos tan poderoso como X, Y , Z ".

La otra cosa que podría hacer es crear un punto de referencia, o algún tipo de registro de rendimiento, y que le envíen los datos de rendimiento. Muchas aplicaciones hacen esto. Usted sabe que "¿Podemos enviar datos de uso anónimos a la nave nodriza?" pregunta que obtienes al instalar algún software? Bueno, es común entre los datos los detalles específicos del sistema como RAM, CPU, modelo de disco duro y otros detalles de hardware (independientemente de los datos que usted determine que sean relevantes para su aplicación), junto con los datos de registro de rendimiento. Al adoptar ese tipo de enfoque, lo que obtiene es una gran cantidad de datos de rendimiento de muchas configuraciones de sistema diferentes sin necesidad de tener una gran cantidad de máquinas configuradas de forma diferente en la empresa.

Puede hacer lo mismo para los errores y errores del programa: haga que los restos de la pila, información del sistema y otros datos relevantes sean devueltos a usted, pero por supuesto, solo si sus usuarios tienen dijo que está bien para enviarle esa información.

+0

Gracias por su respuesta, normalocity, aunque no soy bastante seguro de lo que quieres decir con la RAM. ¿Quiere decir que debería poner el requisito mínimo de RAM como el requisito mínimo para el JRE instalado, en realidad, en teoría, debería ser el mismo para cada requerimiento? En cuanto al JRE, creo que me quedaré con el JRE 6, pero siempre recomiendo la versión más reciente.] – Andy

+0

Sí, creo que tienes la pregunta RAM resuelta. Cuando inicie JVM, puede especificar "Oye, no tome más de 32 MB de RAM" o cualquier cantidad arbitraria de RAM que desee. Por lo tanto, ejecute su aplicación varias veces con diferentes valores mínimos (proporcioné un enlace para establecer la configuración de memoria JVM), y el valor más pequeño que permite (1) ejecutar su aplicación con un rendimiento aceptable, y (2) no falla debido si se queda sin memoria, se convierte en su requisito mínimo de RAM. – jefflunt

+0

Gracias por eso, una visión interesante e informativa. Creo que he llegado a la conclusión de que la versión mínima de JRE será JRE 6 con un requisito mínimo de RAM de 128 MB, ya que es necesario para instalar Java de todos modos, y creo que Java se ejecutará en Windows 200 y en adelante. No veo mucho interés en investigar esos requisitos en mi aplicación mucho más si Java necesita ser instalado de todos modos, especialmente porque no tengo instalaciones de prueba adecuadas. – Andy

Cuestiones relacionadas