diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..e5bc4e71 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,37 @@ +{ + "name": "xAPI Java Development", + "image": "mcr.microsoft.com/devcontainers/java:1-25-bookworm", + + "features": { + "ghcr.io/devcontainers/features/java:1": { + "version": "25", + "jdkDistro": "tem", + "installMaven": "true" + } + }, + + "customizations": { + "vscode": { + "extensions": [ + "vscjava.vscode-java-pack", + "vscjava.vscode-maven", + "redhat.java", + "vscjava.vscode-java-debug", + "vscjava.vscode-java-test", + "vscjava.vscode-spring-boot-dashboard", + "pivotal.vscode-spring-boot" + ], + "settings": { + "java.configuration.runtimes": [ + { + "name": "JavaSE-25", + "path": "/usr/local/sdkman/candidates/java/current" + } + ], + "java.jdt.ls.java.home": "/usr/local/sdkman/candidates/java/current" + } + } + }, + + "remoteUser": "vscode" +} diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 4143fc43..3ae6c7db 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -11,7 +11,7 @@ xAPI Java is a library that helps you create applications that send or receive x ## Technology Stack -- **Language**: Java 17 or newer (required) +- **Language**: Java 25 or newer (required) - **Build Tool**: Maven (using Maven Wrapper `./mvnw`) - **Framework**: Spring Boot 3.5.7, Spring WebClient (reactive) - **Code Style**: Google Java Style Guide enforced via CheckStyle @@ -20,6 +20,28 @@ xAPI Java is a library that helps you create applications that send or receive x - **Validation**: Jakarta Bean Validation - **Serialization**: Jackson (with custom modules for strict xAPI compliance) +## Environment Setup + +### Java Installation with SDKMAN + +This project requires Java 25. We recommend using [SDKMAN!](https://sdkman.io/) to manage Java versions: + +```bash +# Install SDKMAN (if not already installed) +curl -s "https://get.sdkman.io" | bash + +# Install Java 25 (Temurin distribution recommended) +sdk install java 25.0.1-tem + +# Set as default (optional) +sdk default java 25.0.1-tem + +# Verify installation +java -version +``` + +**Note**: The exact identifier (e.g., `25.0.1-tem`) may vary by platform and availability. Use `sdk list java` to see available Java 25 versions for your system. + ## Building and Testing ### Build Commands diff --git a/README.md b/README.md index 5b20393d..79b9d831 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,24 @@ Both the xAPI Client and xAPI Model use a [fluent interface](https://en.wikipedi ## Requirements -xAPI Java requires Java 17 or newer. +xAPI Java requires Java 25 or newer. + +### Installing Java 25 + +We recommend using [SDKMAN!](https://sdkman.io/) to install and manage Java versions: + +```bash +# Install SDKMAN (if not already installed) +curl -s "https://get.sdkman.io" | bash + +# Install Java 25 (Temurin distribution recommended) +sdk install java 25.0.1-tem + +# Verify installation +java -version +``` + +**Note**: The exact identifier (e.g., `25.0.1-tem`) may vary by platform and availability. Run `sdk list java` to see available Java 25 versions for your system and choose the appropriate one for your platform. ## xAPI Java Client