Esta pregunta también sería pertinente para Golang, donde puedes extraer archivos binarios estáticamente vinculados y ejecutarlos en cualquier lugar, a diferencia de Python o C ++, donde normalmente tienes una gran cantidad de bibliotecas vinculadas, lo que lleva a las personas a construir un contenedor docker. fuera del entorno de desarrollo.
Hay dos puntos para responder aquí:
Uno: allí tiene que haber una mejor manera , y existe: usted puede construir contenedores acoplables más pequeños (y más eficientes) usando solo el entorno de instalación, lo que lleva a ventajas similares como en el caso de Golang-with-environment frente a Golang-just-binaries. En el caso de Java, puede crear un frasco grande o una aplicación instalable que contenga todos los archivos de biblioteca y un script de shell; en el caso de Python, podría usar auditwheel para construir ruedas autocontenidas que son independientes del entorno de compilación (y podría usar C ++ con enlaces estáticos a casi el mismo efecto).
Dos: ¿para qué necesitas la ventana acoplable? En Java land, puedes hacer mucha separación entre diferentes componentes utilizando cargadores de clases, pero el punto principal es qué hay alrededor de la aplicación Java. Ninguna aplicación Java se ejecuta por sí misma: si no se ejecuta en la ventana acoplable, normalmente tendría que ser supervisada por supervisor o por systemd o similares. Ingrese a la nube Kubernetes, Marathon o Docker, que utiliza la abstracción del contenedor para virtualizar no el host en sí, sino que virtualiza toda la red de tal manera que solo puede implementar contenedores y se ejecutan en algún host aleatorio.
Los microservicios generalmente se ejecutan en nubes basadas en ventana acoplable, ya que le permite tratar a sus anfitriones portuarios como ganado, no como mascotas, y de manera similar con las aplicaciones acopladas. Por supuesto, esta abstracción se vuelve permeable tan pronto como monta los volúmenes del host en la ventana acoplable y necesita ejecutar contenedores de la ventana acoplable exactamente en el host que tiene estos volúmenes. Algunas personas se ponen de acuerdo con eso.