# Fission: Java and JVM-Jersey Environment
This is the JVM (Jersey based) environment for Fission.
It's a Docker image containing a OpenJDK8 runtime, along with a
dynamic loader. A few dependencies are included in the
pom.xml file.
Unlike the other [JVM environment](../jvm) which is based on the Spring framework, this environment uses Jersey.
Looking for ready-to-run examples? See the [JVM examples directory](../../examples/jvm-jersey).
## Customizing this image
To add package dependencies, edit pom.xml to add what you
need, and rebuild this image (instructions below).
## Rebuilding and pushing the image
You'll need access to a Docker registry to push the image: you can
sign up for Docker hub at hub.docker.com, or use registries from
gcr.io, quay.io, etc. Let's assume you're using a docker hub account
called USER. Build and push the image to the the registry:
```
docker build -t USER/jvm-jersey-env . && docker push USER/jvm-jersey-env
```
You can also create environment image based on JVM 11 using Dockerfile-11 in this directory.
## Using the image in fission
You can add this customized image to fission with "fission env
create":
```
fission env create --name jvm --image USER/jvm-jersey-env
```
Or, if you already have an environment, you can update its image:
```
fission env update --name jvm --image USER/jvm-jersey-env
```
After this, fission functions that have the env parameter set to the
same environment name as this command will use this environment.
## Web Server Framework
JVM Jersey environment uses an embedded Jetty HTTP server by default, as can be seen in the pom.xml file.
```
org.eclipse.jetty
jetty-server
9.0.4.v20130625
org.eclipse.jetty
jetty-servlet
9.0.4.v20130625
```
## Java and JVM builder
There are two JVM environment builder based on OpenJDK8 and OpenJDK 11 and using Maven 3.5.4. The default build command runs `mvn clean package` and uses the target/*with-dependencies.jar file for function. The default build command can be overridden as long as the uber jar file is copied to ${DEPLOY_PKG}.