diff --git a/containers/azure-functions-java-8/.devcontainer/Dockerfile b/containers/azure-functions-java-8/.devcontainer/Dockerfile
new file mode 100644
index 0000000000..1e48f5fba0
--- /dev/null
+++ b/containers/azure-functions-java-8/.devcontainer/Dockerfile
@@ -0,0 +1,69 @@
+#-----------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See LICENSE in the project root for license information.
+#-----------------------------------------------------------------------------------------
+
+FROM maven:3-jdk-8
+
+# Configure apt
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update \
+ && apt-get -y install --no-install-recommends apt-utils 2>&1
+
+# Install dotnet core sdk - See https://github.com/dotnet/dotnet-docker/blob/master/2.1/sdk/stretch/amd64/Dockerfile
+# Install .NET CLI dependencies
+RUN apt-get install -y --no-install-recommends \
+ libc6 \
+ libgcc1 \
+ libgssapi-krb5-2 \
+ libicu57 \
+ liblttng-ust0 \
+ libssl1.0.2 \
+ libstdc++6 \
+ zlib1g
+
+# Install .NET Core SDK
+ENV DOTNET_SDK_VERSION 2.1.603
+
+RUN curl -SL --output dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$DOTNET_SDK_VERSION/dotnet-sdk-$DOTNET_SDK_VERSION-linux-x64.tar.gz \
+ && dotnet_sha512='dd0efb8aae75d8f48ef3abbeca38ae14d2621a47e37b2d9d74755b58f9173343305f1a62cfa9a03f17c42f58b1d1b653d271e7d1327c81ff4af0a54c43c7db59' \
+ && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \
+ && mkdir -p /usr/share/dotnet \
+ && tar -zxf dotnet.tar.gz -C /usr/share/dotnet \
+ && rm dotnet.tar.gz \
+ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
+
+# Configure web servers to bind to port 80 when present
+ENV ASPNETCORE_URLS=http://+:80 \
+ # Enable detection of running in a container
+ DOTNET_RUNNING_IN_CONTAINER=true \
+ # Enable correct mode for dotnet watch (only mode supported in a container)
+ DOTNET_USE_POLLING_FILE_WATCHER=true \
+ # Skip extraction of XML docs - generally not useful within an image/container - helps performance
+ NUGET_XMLDOC_MODE=skip
+
+# Trigger first run experience by running arbitrary cmd to populate local package cache
+RUN dotnet help
+
+# Verify git and needed tools are installed
+RUN apt-get -y install \
+ git \
+ procps \
+ curl \
+ apt-transport-https \
+ gnupg2 \
+ lsb-release
+
+# Install Azure Functions and Azure CLI
+RUN echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/azure-cli.list \
+ && echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list \
+ && curl -sL https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 2>/dev/null \
+ && apt-get update \
+ && apt-get install -y azure-cli azure-functions-core-tools
+
+# Clean up
+RUN apt-get autoremove -y \
+ && apt-get clean -y \
+ && rm -rf /var/lib/apt/lists/*
+ENV DEBIAN_FRONTEND=dialog
+
diff --git a/containers/azure-functions-java-8/.devcontainer/devcontainer.json b/containers/azure-functions-java-8/.devcontainer/devcontainer.json
new file mode 100644
index 0000000000..a6eeee6538
--- /dev/null
+++ b/containers/azure-functions-java-8/.devcontainer/devcontainer.json
@@ -0,0 +1,10 @@
+{
+ "name": "Azure Functions & Java 8",
+ "dockerFile": "Dockerfile",
+ "appPort": 7071,
+ "extensions": [
+ "ms-azuretools.vscode-azurefunctions",
+ "vscjava.vscode-java-pack",
+ "redhat.vscode-xml"
+ ]
+}
\ No newline at end of file
diff --git a/containers/azure-functions-java-8/.npmignore b/containers/azure-functions-java-8/.npmignore
new file mode 100644
index 0000000000..1d72d293eb
--- /dev/null
+++ b/containers/azure-functions-java-8/.npmignore
@@ -0,0 +1,4 @@
+README.md
+test-project
+.vscode
+.npmignore
diff --git a/containers/azure-functions-java-8/README.md b/containers/azure-functions-java-8/README.md
new file mode 100644
index 0000000000..5ec4b0a0b4
--- /dev/null
+++ b/containers/azure-functions-java-8/README.md
@@ -0,0 +1,37 @@
+# Azure Functions & Java 8
+
+## Summary
+
+*Develop Azure Functions in Java. Includes JDK 8, Maven, XML tools, the Azure Functions SDK, and related extensions and dependencies.*
+
+| Metadata | Value |
+|----------|-------|
+| *Contributors* | The VS Code Java Team |
+| *Definition type* | Dockerfile |
+| *Languages, platforms* | Azure Functions, Java |
+
+## Using this definition with an existing folder
+
+This definition requires an Azure subscription to use. You can create a [free account here](https://azure.microsoft.com/en-us/free/serverless/) and learn more about using [Azure Functions with VS Code here](https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-vs-code). Once you have an Azure account, follow these steps:
+
+1. If this is your first time using a development container, please follow the [getting started steps](https://aka.ms/vscode-remote/containers/getting-started) to set up your machine.
+
+2. To use VS Code's copy of this definition:
+ 1. Start VS Code and open your project folder.
+ 2. Press F1 select and **Remote-Containers: Create Container Configuration File...** from the command palette.
+ 3. Select the Azure Functions & Java 8 definition.
+
+3. To use latest-and-greatest copy of this definition from the repository:
+ 1. Clone this repository.
+ 2. Copy the contents of `containers/azure-functions-java-8/.devcontainer` to the root of your project folder.
+ 3. Start VS Code and open your project folder.
+
+4. After following step 2 or 3, the contents of the `.devcontainer` folder in your project can be adapted to meet your needs.
+
+5. Finally, press F1 and run **Remote-Containers: Reopen Folder in Container** to start using the definition.
+
+## License
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Licensed under the MIT License. See [LICENSE](https://github.com/Microsoft/vscode-dev-containers/blob/master/LICENSE).