# <img src="https://www.oracle.com/a/pr/img/c82-java-logo.gif" alt="Java"/>
Java Platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers, as well as in today's demanding embedded environments. Java offers the rich user interface, performance, versatility, portability, and security that today's applications require.
The [Server JRE](https://blogs.oracle.com/java-platform-group/understanding-the-server-jre) is a runtime environment specifically targeted for deploying Java in server environments. The Server JRE includes tools for JVM monitoring and tools commonly required for server applications, but does not include browser integration (i.e. the Java plug-in).
# Installation Instructions
Before you can pull this image from the Oracle Container Registry, you will need to sign in using your Oracle Account and accept the Oracle Standard Terms. If you do not already have an Oracle Account you will be given the opportunity to create one.
After accepting the license terms, on your Docker client use the `docker login` command:
# docker login container-registry.oracle.com
Username: <Oracle Account Username>
Password: <auth token>
Login successful.
Once you have successfully logged in, you can pull the Server JRE image by running the following command:
# docker pull container-registry.oracle.com/java/serverjre:latest
Java is installed in `/usr/java/latest` and the `java`, `javac` and `jar` binaries are available in the path via the `alternatives` tool.
If you use this image as a base image in your own dockerfiles, you should include `RUN yum -y update && rm -rf /var/cache/yum` to ensure that your images are updated during the build process.
### Support for docker limits on the number of CPUs
The Java Runtime supports Docker limits on the number of CPUs to use.
The JVM will apply the Docker `--cpuset-cpus` limit as the number of CPUs the JVM sees in the docker container.
If `-XX:ParallelGCThreads` or `-XX:CICompilerCount` are specified and a `--cpuset-cpus` limit is specified the JVM will use the `-XX:ParallelGCThreads` and `-XX:CICompilerCount` values.
See [JDK-6515172](https://bugs.openjdk.java.net/browse/JDK-6515172) for details.
### Experimental support for docker memory limits
To configure the maximum Java heap size to match Docker memory limits without setting a maximum Java heap via `-Xmx` use two JVM command line options:
* `-XX:+UnlockExperimentalVMOptions`
* `-XX:+UseCGroupMemoryLimitForHeap`.
When these two JVM command line options are used, and `-Xmx` is not specified, the JVM will look at the Linux `cgroup` configuration, which is what Docker containers use for setting memory limits, to transparently size a maximum Java heap size.
See [JDK-8170888](https://bugs.openjdk.java.net/browse/JDK-8170888) for details.
# Social media resources
* [X](https://twitter.com/java)
* [Facebook](https://www.facebook.com/ilovejava/)
* [YouTube](https://www.youtube.com/user/java)
* [Blogs](https://blogs.oracle.com/java/)
# Supported Docker versions
This image is offered for Docker version 1.4.1 and higher.
# Customer Support
Users who need a supported version of Java SE should get a [Java SE Subscription](https://www.oracle.com/java/java-se-subscription.html) which offers support and updates for several JDK versions. The complete list of supported versions can be found on the [Oracle Java SE Support Roadmap](https://www.oracle.com/java/technologies/java-se-support-roadmap.html).