MINOR: [Release] Update versions for 22.0.0
diff --git a/c_glib/meson.build b/c_glib/meson.build
index b56157e..f10a804 100644
--- a/c_glib/meson.build
+++ b/c_glib/meson.build
@@ -34,7 +34,7 @@
     #   * 22.04: 0.61.2
     #   * 24.04: 1.3.2
     meson_version: '>=0.61.2',
-    version: '22.0.0-SNAPSHOT',
+    version: '22.0.0',
 )
 
 version = meson.project_version()
diff --git a/c_glib/vcpkg.json b/c_glib/vcpkg.json
index 004f2e1..150f54a 100644
--- a/c_glib/vcpkg.json
+++ b/c_glib/vcpkg.json
@@ -1,6 +1,6 @@
 {
   "name": "arrow-glib",
-  "version-string": "22.0.0-SNAPSHOT",
+  "version-string": "22.0.0",
   "$comment:dependencies": "We can enable gobject-introspection again once it's updated",
   "dependencies": [
     "glib",
diff --git a/ci/scripts/PKGBUILD b/ci/scripts/PKGBUILD
index bf902c1..9b53ba9 100644
--- a/ci/scripts/PKGBUILD
+++ b/ci/scripts/PKGBUILD
@@ -18,7 +18,7 @@
 _realname=arrow
 pkgbase=mingw-w64-${_realname}
 pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
-pkgver=21.0.0.9000
+pkgver=22.0.0
 pkgrel=8000
 pkgdesc="Apache Arrow is a cross-language development platform for in-memory data (mingw-w64)"
 arch=("any")
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index e805694..14cf1b9 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -96,7 +96,7 @@
   cmake_policy(SET CMP0170 NEW)
 endif()
 
-set(ARROW_VERSION "22.0.0-SNAPSHOT")
+set(ARROW_VERSION "22.0.0")
 
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" ARROW_BASE_VERSION "${ARROW_VERSION}")
 
diff --git a/cpp/meson.build b/cpp/meson.build
index 81143ed..194da0c 100644
--- a/cpp/meson.build
+++ b/cpp/meson.build
@@ -19,7 +19,7 @@
     'arrow',
     'cpp',
     'c',
-    version: '22.0.0-SNAPSHOT',
+    version: '22.0.0',
     license: 'Apache-2.0',
     meson_version: '>=1.3.0',
     default_options: ['c_std=gnu11,c11', 'warning_level=2', 'cpp_std=c++17'],
diff --git a/cpp/vcpkg.json b/cpp/vcpkg.json
index 68f2066..c1d28a2 100644
--- a/cpp/vcpkg.json
+++ b/cpp/vcpkg.json
@@ -1,6 +1,6 @@
 {
   "name": "arrow",
-  "version-string": "22.0.0-SNAPSHOT",
+  "version-string": "22.0.0",
   "dependencies": [
     "abseil",
     {
diff --git a/dev/tasks/homebrew-formulae/apache-arrow-glib.rb b/dev/tasks/homebrew-formulae/apache-arrow-glib.rb
index dd6f252..1c87c35 100644
--- a/dev/tasks/homebrew-formulae/apache-arrow-glib.rb
+++ b/dev/tasks/homebrew-formulae/apache-arrow-glib.rb
@@ -29,7 +29,7 @@
 class ApacheArrowGlib < Formula
   desc "GLib bindings for Apache Arrow"
   homepage "https://arrow.apache.org/"
-  url "https://www.apache.org/dyn/closer.lua?path=arrow/arrow-22.0.0-SNAPSHOT/apache-arrow-22.0.0-SNAPSHOT.tar.gz"
+  url "https://www.apache.org/dyn/closer.lua?path=arrow/arrow-22.0.0/apache-arrow-22.0.0.tar.gz"
   sha256 "9948ddb6d4798b51552d0dca3252dd6e3a7d0f9702714fc6f5a1b59397ce1d28"
   license "Apache-2.0"
   head "https://github.com/apache/arrow.git", branch: "main"
diff --git a/dev/tasks/homebrew-formulae/apache-arrow.rb b/dev/tasks/homebrew-formulae/apache-arrow.rb
index 3cbd808..06949bd 100644
--- a/dev/tasks/homebrew-formulae/apache-arrow.rb
+++ b/dev/tasks/homebrew-formulae/apache-arrow.rb
@@ -29,7 +29,7 @@
 class ApacheArrow < Formula
   desc "Columnar in-memory analytics layer designed to accelerate big data"
   homepage "https://arrow.apache.org/"
-  url "https://www.apache.org/dyn/closer.lua?path=arrow/arrow-22.0.0-SNAPSHOT/apache-arrow-22.0.0-SNAPSHOT.tar.gz"
+  url "https://www.apache.org/dyn/closer.lua?path=arrow/arrow-22.0.0/apache-arrow-22.0.0.tar.gz"
   sha256 "9948ddb6d4798b51552d0dca3252dd6e3a7d0f9702714fc6f5a1b59397ce1d28"
   license "Apache-2.0"
   head "https://github.com/apache/arrow.git", branch: "main"
diff --git a/docs/source/_static/versions.json b/docs/source/_static/versions.json
index 26d1834..6feaa86 100644
--- a/docs/source/_static/versions.json
+++ b/docs/source/_static/versions.json
@@ -1,16 +1,21 @@
 [
     {
-        "name": "22.0 (dev)",
+        "name": "23.0 (dev)",
         "version": "dev/",
         "url": "https://arrow.apache.org/docs/dev/"
     },
     {
-        "name": "21.0 (stable)",
+        "name": "22.0 (stable)",
         "version": "",
         "url": "https://arrow.apache.org/docs/",
         "preferred": true
     },
     {
+        "name": "21.0",
+        "version": "21.0/",
+        "url": "https://arrow.apache.org/docs/21.0/"
+    },
+    {
         "name": "20.0",
         "version": "20.0/",
         "url": "https://arrow.apache.org/docs/20.0/"
diff --git a/matlab/CMakeLists.txt b/matlab/CMakeLists.txt
index ca5a323..9479015 100644
--- a/matlab/CMakeLists.txt
+++ b/matlab/CMakeLists.txt
@@ -100,7 +100,7 @@
 
 set(CMAKE_CXX_STANDARD 17)
 
-set(MLARROW_VERSION "22.0.0-SNAPSHOT")
+set(MLARROW_VERSION "22.0.0")
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" MLARROW_BASE_VERSION "${MLARROW_VERSION}")
 
 project(mlarrow VERSION "${MLARROW_BASE_VERSION}")
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index fc26ea7..0587720 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -28,7 +28,7 @@
 # which in turn meant that Py_GIL_DISABLED was not set.
 set(CMAKE_NO_SYSTEM_FROM_IMPORTED ON)
 
-set(PYARROW_VERSION "22.0.0-SNAPSHOT")
+set(PYARROW_VERSION "22.0.0")
 string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" PYARROW_BASE_VERSION "${PYARROW_VERSION}")
 
 # Generate SO version and full SO version
diff --git a/python/pyproject.toml b/python/pyproject.toml
index 240db14..a1cab40 100644
--- a/python/pyproject.toml
+++ b/python/pyproject.toml
@@ -92,4 +92,4 @@
 version_file = 'pyarrow/_generated_version.py'
 version_scheme = 'guess-next-dev'
 git_describe_command = 'git describe --dirty --tags --long --match "apache-arrow-[0-9]*.*"'
-fallback_version = '22.0.0a0'
+fallback_version = '22.0.0'
diff --git a/r/DESCRIPTION b/r/DESCRIPTION
index 7888f72..d12b8a4 100644
--- a/r/DESCRIPTION
+++ b/r/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: arrow
 Title: Integration to 'Apache' 'Arrow'
-Version: 21.0.0.9000
+Version: 22.0.0
 Authors@R: c(
     person("Neal", "Richardson", email = "neal.p.richardson@gmail.com", role = c("aut")),
     person("Ian", "Cook", email = "ianmcook@gmail.com", role = c("aut")),
diff --git a/r/NEWS.md b/r/NEWS.md
index b5d8942..fb85b96 100644
--- a/r/NEWS.md
+++ b/r/NEWS.md
@@ -17,7 +17,7 @@
   under the License.
 -->
 
-# arrow 21.0.0.9000
+# arrow 22.0.0
 
 ## New features
 
diff --git a/r/pkgdown/assets/versions.html b/r/pkgdown/assets/versions.html
index caac583..c90d4ae 100644
--- a/r/pkgdown/assets/versions.html
+++ b/r/pkgdown/assets/versions.html
@@ -1,7 +1,8 @@
 <!DOCTYPE html>
 <html>
-<body><p><a href="../dev/r/">21.0.0.9000 (dev)</a></p>
-<p><a href="../r/">21.0.0 (release)</a></p>
+<body><p><a href="../dev/r/">22.0.0.9000 (dev)</a></p>
+<p><a href="../r/">22.0.0 (release)</a></p>
+<p><a href="../21.0/r/">21.0.0</a></p>
 <p><a href="../20.0/r/">20.0.0</a></p>
 <p><a href="../19.0/r/">19.0.1</a></p>
 <p><a href="../18.1/r/">18.1.0</a></p>
diff --git a/r/pkgdown/assets/versions.json b/r/pkgdown/assets/versions.json
index 927b740..0d78399 100644
--- a/r/pkgdown/assets/versions.json
+++ b/r/pkgdown/assets/versions.json
@@ -1,13 +1,17 @@
 [
     {
-        "name": "21.0.0.9000 (dev)",
+        "name": "22.0.0.9000 (dev)",
         "version": "dev/"
     },
     {
-        "name": "21.0.0 (release)",
+        "name": "22.0.0 (release)",
         "version": ""
     },
     {
+        "name": "21.0.0",
+        "version": "21.0/"
+    },
+    {
         "name": "20.0.0",
         "version": "20.0/"
     },
diff --git a/ruby/red-arrow-cuda/lib/arrow-cuda/version.rb b/ruby/red-arrow-cuda/lib/arrow-cuda/version.rb
index de9372b..0004568 100644
--- a/ruby/red-arrow-cuda/lib/arrow-cuda/version.rb
+++ b/ruby/red-arrow-cuda/lib/arrow-cuda/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module ArrowCUDA
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-arrow-dataset/lib/arrow-dataset/version.rb b/ruby/red-arrow-dataset/lib/arrow-dataset/version.rb
index b31eb98..d27cfb7 100644
--- a/ruby/red-arrow-dataset/lib/arrow-dataset/version.rb
+++ b/ruby/red-arrow-dataset/lib/arrow-dataset/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module ArrowDataset
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-arrow-flight-sql/lib/arrow-flight-sql/version.rb b/ruby/red-arrow-flight-sql/lib/arrow-flight-sql/version.rb
index 751e7c1..e319cdd 100644
--- a/ruby/red-arrow-flight-sql/lib/arrow-flight-sql/version.rb
+++ b/ruby/red-arrow-flight-sql/lib/arrow-flight-sql/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module ArrowFlightSQL
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-arrow-flight/lib/arrow-flight/version.rb b/ruby/red-arrow-flight/lib/arrow-flight/version.rb
index 89e7839..95a837d 100644
--- a/ruby/red-arrow-flight/lib/arrow-flight/version.rb
+++ b/ruby/red-arrow-flight/lib/arrow-flight/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module ArrowFlight
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-arrow/lib/arrow/version.rb b/ruby/red-arrow/lib/arrow/version.rb
index f19fcfd..ee7606b 100644
--- a/ruby/red-arrow/lib/arrow/version.rb
+++ b/ruby/red-arrow/lib/arrow/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module Arrow
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-gandiva/lib/gandiva/version.rb b/ruby/red-gandiva/lib/gandiva/version.rb
index e75303a..a1f57e7 100644
--- a/ruby/red-gandiva/lib/gandiva/version.rb
+++ b/ruby/red-gandiva/lib/gandiva/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module Gandiva
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")
diff --git a/ruby/red-parquet/lib/parquet/version.rb b/ruby/red-parquet/lib/parquet/version.rb
index 0f5273b..696db57 100644
--- a/ruby/red-parquet/lib/parquet/version.rb
+++ b/ruby/red-parquet/lib/parquet/version.rb
@@ -16,7 +16,7 @@
 # under the License.
 
 module Parquet
-  VERSION = "22.0.0-SNAPSHOT"
+  VERSION = "22.0.0"
 
   module Version
     numbers, TAG = VERSION.split("-")