Hay algo similar a Python virtualenv para Java o JVM Idiomas?

InformationsquelleAutor Gautam | 2011-09-04

8 Comentarios

  1. 35

    De lo que yo entiendo, virtualenv permite la biblioteca independiente de las rutas de instalación, separar eficazmente «virtual» de Python instalaciones.

    Java no tiene el concepto de «todo el sistema instalado» de la biblioteca(*): siempre Se busca en la ruta de clases para las bibliotecas para ser cargado. Desde el classpath se puede (y debe!) se define para cada aplicación, cada aplicación puede seleccionar y elegir las que las bibliotecas y las versiones que se quiere cargar.

    Si se desciende a un nivel más profundo y tiene una sola aplicación que de alguna manera necesita de dos versiones diferentes de la misma biblioteca, al mismo tiempo, entonces usted puede hacer incluso que con algunos classpath engaño. Puede ser más complicado, pero es definitivamente posible (OSGi es un ejemplo de que esto es apoyado, incluso Tomcat con dos webapplications hace esto).

    He seens algunas referencias a la seguridad en el virtualenv descripción: Java tiene bastante completa del sistema de seguridad incorporado. En el servidor de aplicaciones es a menudo apagado, porque es más fácil para configurar de esta manera, pero usted puede configurar fácilmente qué es exactamente una aplicación Java que se puede hacer.

    (*) Casi, hay las extensiones o las bibliotecas de extensión, pero que no se usan mucho, e incluso aquellos que pueden ser fácilmente cargado de arbitrario directorios.

  2. 6

    Construir herramientas como Ant, Maven, y gradle son la cosa más cercana a pip o easy_install.

    El concepto de virtualenv se realiza por la ruta de clases. Así que no hay necesidad real de virtualenv para Java

  3. 3

    Sé que esto puede ser un poco tarde , pero Groovy/Java ha mtma http://gvmtool.net/ que es la Genial versión de Ruby renv.

    Quisiera respetuosamente de acuerdo con Gautam K, luthur. La dependencia y la versión del paquete de gestión de proyectos no es la misma como un caso aislado, autónomo entorno virtual para mantener el proyecto diferente.

    Mis 2 centavos
    -W

  4. 2

    También he estado buscando una solución similar para simplificar el cambio de contexto entre los proyectos que utilizan diferentes Maven versiones/ajustes y/o Java Sdk, sin tener que modificar M2_HOME y JAVA_HOME la configuración cada vez.

    Para este fin, he desarrollado una solución que le ayuda a ejecutar mvn comandos con la configuración apropiada basada en por proyecto configuración (almacenado en un .mvn carpeta).

    Ver: https://github.com/AlejandroRivera/maven-env

    Ser conscientes de que esto sólo ayuda si usted está usando Maven para la construcción y/o ejecutar el proyecto.

  5. 1

    Maven, puede especificar explícitamente que los paquetes que se utilizan en un proyecto java

    • Maven es una herramienta de creación y no tiene nada en común con virtualenv ! Que es un concepto totalmente diferente .
    • !!!!!!!!maven fichero de configuración puede especificar la versión y los paquetes que se utilizan en un determinado proyecto de java, ¿no!!!!!!!!!!!!!!!!
    • OP de la pregunta es un clásico de la XY problema. Él está preguntando cómo asignar una solución Python Java en lugar de preguntar cómo resolver un problema. La pregunta debería ser «¿Cómo puedo administrar dependencias en Java?» y la respuesta correcta es utilizar Maven o en uno de sus competidores.
  6. 1

    Estoy confundido por la afirmación de que «Java no tiene el concepto de un ‘todo el sistema instalado’ de la biblioteca». ¿Cómo lo llaman los archivos jar en $JAVA_HOME/jre/lib y $JAVA_HOME/jre/lib/ext?

    Independientemente de si o no Java «necesidades» una herramienta como virtualenv, parece que algo que le permite cambiar rápidamente entre los diferentes entornos Java (por ejemplo, Java 6 con tal-y-tal de las extensiones de seguridad, Java 7, etc.) sería útil – incluso si todo lo que realmente estaba haciendo de debajo de las mantas fue la manipulación de la RUTA, JAVA_HOME, y CLASSPATH env variables.

    • Creo que debería haber sido un comentario en mi respuesta. No lo vi antes, así que lo siento por mi respuesta tardía: El jre/lib/ext contiene la extensión de las bibliotecas, que he mencionado brevemente en la nota de pie de página y son de hecho no se utiliza mucho. Sí, estoy de acuerdo hay alguna utilidad en cambiar rápidamente entre JREs/JDKs y algunas herramientas existentes (por ejemplo Debian/Ubuntu tiene las alternativas de sistema que permite cambiar el JDK utilizados para los diferentes comandos de java (entre otras muchas cosas)).
  7. 0

    Java como un lenguaje que no necesita el sandboxing características de virtualenv pero una JVM de la Lengua como Jython puede tener VirtualEnv para el uso de los diferentes ambientes sin ningún conflicto.

    Se describe en este blog

    Cita:

    Obtener virtualenv instalado para Jython. Sólo tienes que escribir «jeasy_install
    virtualenv». Una vez que finalice, usted debe tener una ‘virtualenv’ herramienta
    el Jython de instalación de la carpeta bin.

    Así que cuando se utiliza Jython diferentes marcos y los paquetes pueden ser utilizados sin ningún tipo de conflicto con global de paquetes.

Dejar respuesta

Please enter your comment!
Please enter your name here