- 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.
¿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
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
@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