Supongamos una aplicación Java, aceptando un argumento de línea de comando entero, digamos bubu
.Java: utilizando los parámetros del sistema frente a las opciones de línea de comando "normal"
Suponiendo que se utiliza un analizador de línea de comandos decente (y yo - http://pholser.github.com/jopt-simple/) más teniendo en cuenta el interruptor java -D, estas son algunas de las formas típicas de pasar este parámetro de línea de comando:
--bubu 5
(o--bubu=5
o--bubu5
)-Dbubu=5
donde el primero es el argumento del programa y debe ser manejado por la aplicación utilizando algún programa de análisis de línea de comandos, WH El segundo es el argumento VM y ya ha sido analizado por java, por lo que está disponible como Integer.getInteger("bubu")
Estoy un poco perplejo. ¿Qué debería usar? El uso de las instalaciones de propiedad del sistema:
- parece nada
- no depende de cualquier biblioteca de analizador de línea de comandos
- proporciona conveniente (aunque inesperada) de la API para obtener los valores
En lo que costaría como puedo ver, el único inconveniente es que todas las opciones de línea de comando deben usar el indicador -D
.
Por favor, consejo.
Gracias.
EDITAR
Otras ventajas para los parámetros del sistema - "Son utilizable incluso cuando la aplicación no es una aplicación independiente a partir de un principal, sino también cuando la aplicación es una aplicación web o una unidad prueba." - gracias https://stackoverflow.com/users/571407/jb-nizet
Edit2
Voy a ser más centrado aquí. ¿Hay alguna razón seria (además de la estética) para no usar los parámetros del sistema, como siempre?
Edit3
OK, creo que lo entiendo ahora. Si es probable que una aplicación web cargue mi código, existe un problema de potencial conflicto de nombres, ya que otras aplicaciones web alojadas en el mismo contenedor web comparten el espacio de propiedad del sistema con mi código.
Por lo tanto, tengo que ser prudente y desambiguar las propiedades de mi sistema de antemano. Entonces, no más bubu
, es com.shunra.myapp.bubu
ahora. Lo que significa que en lugar de un simple
-Dbubu=5
que tienen
-Dcom.shunra.myapp.bubu=5
que se vuelve menos atractivo para una aplicación de línea de comandos simple.
Otro motivo lo da Mark Peters, que es bastante bueno para mí.
Bueno, lo resumió. Otra ventaja de las propiedades del sistema es que son utilizables incluso cuando la aplicación no es una aplicación independiente que comienza desde una principal, sino también cuando la aplicación es una aplicación web o una prueba unitaria. Si la aplicación es una utilidad de línea de comandos, es posible que desee cumplir con las convenciones y proporcionar opciones regulares (como -ayuda, etc.). de lo contrario, las propiedades del sistema son más detalladas, pero más simples. –
Entonces, ¿su consejo es usar siempre el distintivo -D? – mark
No. Edité mi comentario. Si se trata de una herramienta de línea de comandos donde el usuario debe pasar opciones cada vez que invoca el programa, usar las opciones estándar es más fácil de usar. Si las opciones son solo opciones de configuración que se deben establecer una vez en un archivo por lotes, entonces las propiedades del sistema son más fáciles. –