J'ai une application de console Java lancée à partir d'un script batch sous Windows et d'un script shell sous Linux. Dans les deux cas, les arguments de ligne de commande (qui sont complexes) sont simplement passés dans l'application java, qui les interprète à l'aide d'Apache Commons CLI.Lancement de JVM à partir d'une autre JVM - Mauvaise idée pour éviter la duplication de code?
Maintenant, je veux permettre aux utilisateurs d'allouer de la mémoire supplémentaire au programme. L'approche la plus simple pourrait être d'avoir un argument supplémentaire pour cela (par exemple -m 1000), mais il y a des inconvénients. Les scripts batch et shell doivent maintenant interpréter la ligne de commande afin qu'ils puissent extraire l'argument mémoire et l'utiliser comme paramètre -Xmx pour la JVM. Cela signifie en réalité répondre à la complexité de l'analyse des arguments à 3 endroits (batch/shell/java). La seule autre approche qui vient à l'esprit est que les scripts appellent une application Java factice, qui utilise la logique d'analyse existante pour trouver le nouvel argument, puis fourche une autre JVM pour exécuter l'application principale, en utilisant le bon plafond de mémoire (en utilisant Runtime.exec()). Cela contournerait le problème de duplication de code.
Ma question est: est-ce que cela semble être une mauvaise idée pour quelqu'un? Il y a peut-être des problèmes que je ne considère pas.