diff --git a/.env b/.env
index 1358aafe824a6..d8e322ac1049d 100644
--- a/.env
+++ b/.env
@@ -61,7 +61,8 @@ GCC_VERSION=""
GO=1.21.8
STATICCHECK=v0.4.7
HDFS=3.2.1
-JDK=11
+JDK=22
+TEST_JDK=11
KARTOTHEK=latest
# LLVM 12 and GCC 11 reports -Wmismatched-new-delete.
LLVM=14
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index b6075746ff40a..a15425014652b 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -32,12 +32,13 @@ env:
jobs:
complete:
- name: AMD64 Debian 12 Complete Documentation
+ name: AMD64 Ubuntu 24.04 Complete Documentation
runs-on: ubuntu-latest
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
timeout-minutes: 150
env:
- JDK: 17
+ JDK: 22
+ UBUNTU: 24.04
steps:
- name: Checkout Arrow
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
@@ -50,8 +51,8 @@ jobs:
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
with:
path: .docker
- key: debian-docs-${{ hashFiles('cpp/**') }}
- restore-keys: debian-docs-
+ key: ubuntu-docs-${{ hashFiles('cpp/**') }}
+ restore-keys: ubuntu-docs-
- name: Setup Python
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
with:
@@ -62,8 +63,8 @@ jobs:
env:
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
- JDK: 17
- run: archery docker run debian-docs
+ JDK: 22
+ run: archery docker run ubuntu-docs
- name: Docker Push
if: >-
success() &&
@@ -74,4 +75,4 @@ jobs:
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
continue-on-error: true
- run: archery docker push debian-docs
+ run: archery docker push ubuntu-docs
diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml
index d4211c2c81cb5..7805710cebc27 100644
--- a/.github/workflows/java.yml
+++ b/.github/workflows/java.yml
@@ -62,7 +62,8 @@ jobs:
maven: [3.9.6]
image: [java]
env:
- JDK: ${{ matrix.jdk }}
+ JDK: 22
+ TEST_JDK: ${{ matrix.jdk }}
MAVEN: ${{ matrix.maven }}
steps:
- name: Checkout Arrow
@@ -91,6 +92,7 @@ jobs:
archery docker run \
-e CI=true \
-e "DEVELOCITY_ACCESS_KEY=$DEVELOCITY_ACCESS_KEY" \
+ -e "TEST_JDK=$TEST_JDK" \
${{ matrix.image }}
- name: Docker Push
if: >-
@@ -117,8 +119,10 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v4
with:
- distribution: 'zulu'
- java-version: ${{ matrix.jdk }}
+ distribution: 'temurin'
+ java-version: |
+ ${{ matrix.jdk }}
+ 22
- name: Checkout Arrow
uses: actions/checkout@v4
with:
@@ -128,11 +132,13 @@ jobs:
shell: bash
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
+ TEST_JDK: ${{ matrix.jdk }}
run: ci/scripts/java_build.sh $(pwd) $(pwd)/build
- name: Test
shell: bash
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
+ TEST_JDK: ${{ matrix.jdk }}
run: ci/scripts/java_test.sh $(pwd) $(pwd)/build
windows:
@@ -148,8 +154,10 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v4
with:
- java-version: ${{ matrix.jdk }}
distribution: 'temurin'
+ java-version: |
+ ${{ matrix.jdk }}
+ 22
- name: Checkout Arrow
uses: actions/checkout@v4
with:
@@ -159,9 +167,11 @@ jobs:
shell: bash
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
+ TEST_JDK: ${{ matrix.jdk }}
run: ci/scripts/java_build.sh $(pwd) $(pwd)/build
- name: Test
shell: bash
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }}
+ TEST_JDK: ${{ matrix.jdk }}
run: ci/scripts/java_test.sh $(pwd) $(pwd)/build
diff --git a/.github/workflows/java_jni.yml b/.github/workflows/java_jni.yml
index 533da7c36be34..f0cd937c6caa2 100644
--- a/.github/workflows/java_jni.yml
+++ b/.github/workflows/java_jni.yml
@@ -51,7 +51,7 @@ env:
jobs:
docker:
- name: AMD64 manylinux2014 Java JNI
+ name: AMD64 manylinux Java JNI
runs-on: ubuntu-latest
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
timeout-minutes: 240
@@ -68,8 +68,8 @@ jobs:
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
with:
path: .docker
- key: java-jni-manylinux-2014-${{ hashFiles('cpp/**', 'java/**') }}
- restore-keys: java-jni-manylinux-2014-
+ key: java-jni-manylinux-2-28-${{ hashFiles('cpp/**', 'java/**') }}
+ restore-keys: java-jni-manylinux-2-28-
- name: Setup Python
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
with:
@@ -80,7 +80,7 @@ jobs:
env:
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
- run: archery docker run java-jni-manylinux-2014
+ run: archery docker run java-jni-manylinux-2-28
- name: Docker Push
if: >-
success() &&
@@ -91,7 +91,7 @@ jobs:
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
continue-on-error: true
- run: archery docker push java-jni-manylinux-2014
+ run: archery docker push java-jni-manylinux-2-28
docker_integration_python:
name: AMD64 Conda Java C Data Interface Integration
@@ -125,6 +125,7 @@ jobs:
archery docker run \
-e CI=true \
-e "DEVELOCITY_ACCESS_KEY=$DEVELOCITY_ACCESS_KEY" \
+ -e "TEST_JDK=$TEST_JDK" \
conda-python-java-integration
- name: Docker Push
if: >-
diff --git a/ci/docker/conda-python-jpype.dockerfile b/ci/docker/conda-python-jpype.dockerfile
index d9b43afdaec9e..f5f43db836bbc 100644
--- a/ci/docker/conda-python-jpype.dockerfile
+++ b/ci/docker/conda-python-jpype.dockerfile
@@ -20,7 +20,7 @@ ARG arch=amd64
ARG python=3.8
FROM ${repo}:${arch}-conda-python-${python}
-ARG jdk=11
+ARG jdk=22
ARG maven=3.8.7
RUN mamba install -q -y \
maven=${maven} \
diff --git a/ci/docker/java-jni-manylinux-201x.dockerfile b/ci/docker/java-jni-manylinux.dockerfile
similarity index 99%
rename from ci/docker/java-jni-manylinux-201x.dockerfile
rename to ci/docker/java-jni-manylinux.dockerfile
index 479f4aa598b18..b799596684507 100644
--- a/ci/docker/java-jni-manylinux-201x.dockerfile
+++ b/ci/docker/java-jni-manylinux.dockerfile
@@ -33,7 +33,7 @@ RUN vcpkg install \
--x-feature=s3
# Install Java
-ARG java=11
+ARG java=22
ARG maven=3.9.3
RUN yum install -y java-$java-openjdk-devel && \
yum clean all && \
diff --git a/ci/docker/java.dockerfile b/ci/docker/java.dockerfile
new file mode 100644
index 0000000000000..2535abce2741a
--- /dev/null
+++ b/ci/docker/java.dockerfile
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM maven:3.9.6-eclipse-temurin-22
+
+COPY --from=maven:3.9.6-eclipse-temurin-8 /opt/java/openjdk /opt/java/openjdk8
+COPY --from=maven:3.9.6-eclipse-temurin-11 /opt/java/openjdk /opt/java/openjdk11
+COPY --from=maven:3.9.6-eclipse-temurin-17 /opt/java/openjdk /opt/java/openjdk17
+COPY --from=maven:3.9.6-eclipse-temurin-21 /opt/java/openjdk /opt/java/openjdk21
+
+
+env JAVA8_HOME /opt/java/openjdk8
+env JAVA11_HOME /opt/java/openjdk11
+env JAVA17_HOME /opt/java/openjdk17
+env JAVA21_HOME /opt/java/openjdk21
+env JAVA22_HOME /opt/java/openjdk
+
+RUN find "$JAVA8_HOME/lib" "$JAVA11_HOME/lib" "$JAVA17_HOME/lib" "$JAVA21_HOME/lib" "$JAVA22_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \
+ ldconfig;
+
+COPY ci/maven-toolchains.xml /usr/share/maven/conf/toolchains.xml
+
+CMD ["mvn"]
diff --git a/ci/docker/linux-apt-docs.dockerfile b/ci/docker/linux-apt-docs.dockerfile
index 0804f3543c283..b1c810bc6e7fb 100644
--- a/ci/docker/linux-apt-docs.dockerfile
+++ b/ci/docker/linux-apt-docs.dockerfile
@@ -23,21 +23,18 @@ ARG jdk=11
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
-# See R install instructions at https://cloud.r-project.org/bin/linux/
+# See R install instructions at https://cloud.r-project.org/bin/linux/ubuntu
RUN apt-get update -y && \
apt-get install -y \
apt-transport-https \
+ software-properties-common \
dirmngr \
gpg \
lsb-release && \
- gpg --keyserver keyserver.ubuntu.com \
- --recv-key 95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7 && \
- gpg --export 95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7 | \
- gpg --no-default-keyring \
- --keyring /usr/share/keyrings/cran.gpg \
- --import - && \
- echo "deb [signed-by=/usr/share/keyrings/cran.gpg] https://cloud.r-project.org/bin/linux/$(lsb_release -is | tr 'A-Z' 'a-z') $(lsb_release -cs)-cran40/" | \
- tee /etc/apt/sources.list.d/cran.list && \
+ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | \
+ tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc && \
+ # NOTE: Only R >= 4.0 is available in this repo
+ add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu '$(lsb_release -cs)'-cran40/' && \
if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
sed -i \
-e 's/main$/main contrib non-free non-free-firmware/g' \
@@ -47,8 +44,7 @@ RUN apt-get update -y && \
apt-get install -y --no-install-recommends \
autoconf-archive \
automake \
- chromium \
- chromium-sandbox \
+ chromium-browser \
curl \
doxygen \
gi-docgen \
diff --git a/ci/maven-toolchains.xml b/ci/maven-toolchains.xml
new file mode 100644
index 0000000000000..a863518997805
--- /dev/null
+++ b/ci/maven-toolchains.xml
@@ -0,0 +1,54 @@
+
+
+
+
+ jdk
+
+ 11
+ openjdk
+
+
+ ${env.JAVA11_HOME}
+
+
+
+ jdk
+
+ 17
+ openjdk
+
+
+ ${env.JAVA17_HOME}
+
+
+
+ jdk
+
+ 21
+ openjdk
+
+
+ ${env.JAVA21_HOME}
+
+
+
+ jdk
+
+ 22
+ openjdk
+
+
+ ${env.JAVA22_HOME}
+
+
+
diff --git a/ci/scripts/java_build.sh b/ci/scripts/java_build.sh
index 0fa1edab429c0..3c8f115bb96ee 100755
--- a/ci/scripts/java_build.sh
+++ b/ci/scripts/java_build.sh
@@ -98,6 +98,10 @@ if [ "${ARROW_JAVA_JNI}" = "ON" ]; then
mvn="${mvn} -Darrow.cpp.build.dir=${java_jni_dist_dir} -Parrow-jni"
fi
+if [ "${TEST_JDK}" != "" ]; then
+ mvn="${mvn} -Darrow.test.jdk-version=${TEST_JDK}"
+fi
+
${mvn} clean install
if [ "${BUILD_DOCS_JAVA}" == "ON" ]; then
diff --git a/ci/scripts/java_jni_manylinux_build.sh b/ci/scripts/java_jni_manylinux_build.sh
index 6f3769751af42..af5c3037b4f0a 100755
--- a/ci/scripts/java_jni_manylinux_build.sh
+++ b/ci/scripts/java_jni_manylinux_build.sh
@@ -35,9 +35,14 @@ echo "=== Clear output directories and leftovers ==="
rm -rf ${build_dir}
echo "=== Building Arrow C++ libraries ==="
-devtoolset_version=$(rpm -qa "devtoolset-*-gcc" --queryformat %{VERSION} | \
+devtoolset_version=$(rpm -qa "devtoolset-*-gcc" "gcc-toolset-*-gcc" --queryformat %{VERSION} | \
grep -o "^[0-9]*")
-devtoolset_include_cpp="/opt/rh/devtoolset-${devtoolset_version}/root/usr/include/c++/${devtoolset_version}"
+if [ -d "/opt/rh/devtoolset-${devtoolset_version}" ]; then
+ devtoolset_include_cpp="/opt/rh/devtoolset-${devtoolset_version}/root/usr/include/c++/${devtoolset_version}"
+else
+ devtoolset_include_cpp="/opt/rh/gcc-toolset-${devtoolset_version}/root/usr/include/c++/${devtoolset_version}"
+fi
+
: ${ARROW_ACERO:=ON}
export ARROW_ACERO
: ${ARROW_BUILD_TESTS:=ON}
diff --git a/ci/scripts/java_test.sh b/ci/scripts/java_test.sh
index dd483ff254197..38215f41fc733 100755
--- a/ci/scripts/java_test.sh
+++ b/ci/scripts/java_test.sh
@@ -35,6 +35,10 @@ mvn="${mvn} -T 2C"
pushd ${source_dir}
+if [ "${TEST_JDK}" != "" ]; then
+ mvn="${mvn} -Darrow.test.jdk-version=${TEST_JDK}"
+fi
+
${mvn} clean test
projects=()
diff --git a/dev/tasks/java-jars/github.yml b/dev/tasks/java-jars/github.yml
index 58c1cedb11445..e3d33dbc414a6 100644
--- a/dev/tasks/java-jars/github.yml
+++ b/dev/tasks/java-jars/github.yml
@@ -57,7 +57,7 @@ jobs:
archery docker run \
-e ARROW_JAVA_BUILD=OFF \
-e ARROW_JAVA_TEST=OFF \
- java-jni-manylinux-2014
+ java-jni-manylinux-2-28
- name: Compress into single artifact to keep directory structure
run: tar -cvzf arrow-shared-libs-linux-{{ arch }}.tar.gz arrow/java-dist/
- name: Upload artifacts
@@ -69,7 +69,7 @@ jobs:
{{ macros.github_login_dockerhub()|indent }}
- name: Push Docker image
shell: bash
- run: archery docker push java-jni-manylinux-2014
+ run: archery docker push java-jni-manylinux-2-28
{% endif %}
build-cpp-macos:
@@ -151,7 +151,7 @@ jobs:
run: |
set -e
# make brew Java available to CMake
- export JAVA_HOME=$(brew --prefix openjdk@11)/libexec/openjdk.jdk/Contents/Home
+ export JAVA_HOME=$(brew --prefix openjdk@22)/libexec/openjdk.jdk/Contents/Home
arrow/ci/scripts/java_jni_macos_build.sh \
$GITHUB_WORKSPACE/arrow \
$GITHUB_WORKSPACE/arrow/cpp-build \
@@ -172,7 +172,7 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v3
with:
- java-version: '11'
+ java-version: '22'
distribution: 'temurin'
- name: Download Timezone Database
shell: bash
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index 94eac92a5be0b..3886795766eb1 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -65,7 +65,7 @@ groups:
- r-binary-packages
- ubuntu-*
- wheel-*
- - test-debian-*-docs
+ - test-ubuntu-*-docs
{############################# Testing tasks #################################}
@@ -1465,15 +1465,16 @@ tasks:
{% endfor %}
# be sure to update binary-task.rb when upgrading ubuntu
- test-debian-12-docs:
+ test-ubuntu-24.04-docs:
ci: github
template: docs/github.linux.yml
params:
env:
- JDK: 17
+ JDK: 22
+ UBUNTU: 24.04
pr_number: Unset
flags: "-v $PWD/build/:/build/"
- image: debian-docs
+ image: ubuntu-docs
publish: false
artifacts:
- docs.tar.gz
@@ -1601,8 +1602,9 @@ tasks:
template: docs/github.linux.yml
params:
env:
- JDK: 17
+ JDK: 22
+ UBUNTU: 24.04
pr_number: Unset
flags: "-v $PWD/build/:/build/"
- image: debian-docs
+ image: ubuntu-docs
publish: true
diff --git a/docker-compose.yml b/docker-compose.yml
index cf22324f7cfb4..ca15fbe812e6b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -132,8 +132,7 @@ x-hierarchy:
- debian-cpp:
- debian-c-glib:
- debian-ruby
- - debian-python:
- - debian-docs
+ - debian-python
- debian-go:
- debian-go-cgo
- debian-go-cgo-python
@@ -147,7 +146,8 @@ x-hierarchy:
- ubuntu-c-glib:
- ubuntu-ruby
- ubuntu-lint
- - ubuntu-python
+ - ubuntu-python:
+ - ubuntu-docs
- ubuntu-python-sdist-test
- ubuntu-r
- ubuntu-r-only-r
@@ -169,9 +169,9 @@ x-hierarchy:
# helper services
- impala
- postgres
- - python-wheel-manylinux-2014:
- - java-jni-manylinux-2014
- - python-wheel-manylinux-2-28
+ - python-wheel-manylinux-2014
+ - python-wheel-manylinux-2-28:
+ - java-jni-manylinux-2-28
- python-wheel-manylinux-test-imports
- python-wheel-manylinux-test-unittests
- python-wheel-windows-vs2019
@@ -1197,22 +1197,22 @@ services:
target: "C:/arrow"
command: arrow\\ci\\scripts\\python_wheel_windows_test.bat
- java-jni-manylinux-2014:
- image: ${REPO}:${ARCH}-java-jni-manylinux-2014-vcpkg-${VCPKG}
+ java-jni-manylinux-2-28:
+ image: ${REPO}:${ARCH}-java-jni-manylinux-2-28-vcpkg-${VCPKG}
build:
args:
- base: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2014-vcpkg-${VCPKG}
- java: 11
+ base: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2-28-vcpkg-${VCPKG}
+ java: 22
context: .
- dockerfile: ci/docker/java-jni-manylinux-201x.dockerfile
+ dockerfile: ci/docker/java-jni-manylinux.dockerfile
cache_from:
- - ${REPO}:${ARCH}-java-jni-manylinux-2014-vcpkg-${VCPKG}
+ - ${REPO}:${ARCH}-java-jni-manylinux-2-28-vcpkg-${VCPKG}
environment:
<<: [*common, *ccache]
volumes:
- .:/arrow:delegated
- ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated
- - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux2014-ccache:/ccache:delegated
+ - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux-2-28-ccache:/ccache:delegated
command:
["pip install -e /arrow/dev/archery && \
/arrow/ci/scripts/java_jni_manylinux_build.sh /arrow /build /arrow/java-dist && \
@@ -1747,8 +1747,13 @@ services:
# docker-compose run java
# Parameters:
# MAVEN: 3.9.5
- # JDK: 11, 17, 21
- image: ${ARCH}/maven:${MAVEN}-eclipse-temurin-${JDK}
+ # JDK: 11, 17, 21, 22
+ image: ${REPO}:${ARCH}-java
+ build:
+ context: .
+ dockerfile: ci/docker/java.dockerfile
+ cache_from:
+ - ${REPO}:${ARCH}-java
shm_size: *shm-size
volumes: &java-volumes
- .:/arrow:delegated
@@ -1775,7 +1780,7 @@ services:
repo: ${REPO}
arch: ${ARCH}
# Use a newer JDK as it seems to improve stability
- jdk: 17
+ jdk: 22
maven: ${MAVEN}
node: ${NODE}
go: ${GO}
@@ -1794,24 +1799,24 @@ services:
################################ Docs #######################################
- debian-docs:
+ ubuntu-docs:
# Usage:
- # docker-compose build debian-cpp
- # docker-compose build debian-python
- # docker-compose build debian-docs
- # docker-compose run --rm debian-docs
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-docs
+ # docker-compose build ubuntu-cpp
+ # docker-compose build ubuntu-python
+ # docker-compose build ubuntu-docs
+ # docker-compose run --rm ubuntu-docs
+ image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-docs
build:
context: .
dockerfile: ci/docker/linux-apt-docs.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-docs
+ - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-docs
args:
r: ${R}
jdk: ${JDK}
maven: ${MAVEN}
node: ${NODE}
- base: ${REPO}:${ARCH}-debian-${DEBIAN}-python-3
+ base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3
# This is for Chromium used by Mermaid. Chromium uses namespace
# isolation for security by default.
cap_add:
@@ -1830,7 +1835,7 @@ services:
BUILD_DOCS_JS: "ON"
BUILD_DOCS_PYTHON: "ON"
BUILD_DOCS_R: "ON"
- volumes: *debian-volumes
+ volumes: *ubuntu-volumes
command: >
/bin/bash -c "
sudo mkdir -p /build /ccache &&
diff --git a/docs/source/developers/java/building.rst b/docs/source/developers/java/building.rst
index 3904841de9c5a..d4cc7b3325dea 100644
--- a/docs/source/developers/java/building.rst
+++ b/docs/source/developers/java/building.rst
@@ -32,8 +32,12 @@ Arrow Java uses the `Maven `_ build system.
Building requires:
+* JDK 22+
+* Maven 3.6.3+
+
+Testing requires:
+
* JDK 11+
-* Maven 3+
.. note::
CI will test all supported JDK LTS versions, plus the latest non-LTS version.
diff --git a/docs/source/python/getstarted.rst b/docs/source/python/getstarted.rst
index 42e415c40b835..b58c05d8fb93c 100644
--- a/docs/source/python/getstarted.rst
+++ b/docs/source/python/getstarted.rst
@@ -138,6 +138,7 @@ Loading back the partitioned dataset will detect the chunks
and will lazily load chunks of data only when iterating over them
.. ipython:: python
+ :okwarning:
import datetime
diff --git a/java/Brewfile b/java/Brewfile
index af6bd65615d62..d955336496393 100644
--- a/java/Brewfile
+++ b/java/Brewfile
@@ -15,5 +15,5 @@
# specific language governing permissions and limitations
# under the License.
-brew "openjdk@11"
+brew "openjdk@22"
brew "sccache"
diff --git a/java/bom/pom.xml b/java/bom/pom.xml
index 1f8585c801330..b73de4e06b9bc 100644
--- a/java/bom/pom.xml
+++ b/java/bom/pom.xml
@@ -80,7 +80,7 @@ under the License.
- 11
+ 22
11
11
11
diff --git a/java/c/src/test/python/integration_tests.py b/java/c/src/test/python/integration_tests.py
index ab2ee1742f366..b48ea27112c5d 100644
--- a/java/c/src/test/python/integration_tests.py
+++ b/java/c/src/test/python/integration_tests.py
@@ -52,13 +52,15 @@ def setup_jvm():
# This will be the default behaviour in jpype 0.8+
kwargs['convertStrings'] = False
- # For debugging purpose please uncomment the following, and include *jvm_args, before **kwargs
- # in startJVM function call
- # jvm_args = [
+ jvm_args = [
+ "--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED"
+ ]
+ # For debugging purpose please uncomment the following
+ # jvm_args += [
# "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
# ]
- jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=" + jar_path, **kwargs)
+ jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=" + jar_path, *jvm_args, **kwargs)
class Bridge:
diff --git a/java/pom.xml b/java/pom.xml
index 1ed263d7db878..13064d159f1cc 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -115,15 +115,10 @@ under the License.
--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
- 11
+ 22
11
11
11
-
- 3.2.2