diff --git a/README b/README
index 523b073a11..59705cfea9 100644
--- a/README
+++ b/README
@@ -21,9 +21,9 @@ Microsoft Windows and Apple macOS users should visit one of:
 - https://bell-sw.com/pages/downloads/#mn
 and download the latest Java executable for their system.
 
-Linux users should visit http://www.oracle.com/technetwork/java/index.html
-There is a Linux binary installer, which you must execute from a console, or
-use the mechanism of your distribution's packaging system.
+Linux users should install OpenJDK using the mechanism of their distribution's
+packaging system (e.g. "sudo apt install default-jre openjfx" on Debian/Ubuntu),
+or download a JDK from one of the links above.
 
 
 How to launch
diff --git a/native/Dockerfile b/native/Dockerfile
deleted file mode 100644
index fdb8f590b2..0000000000
--- a/native/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM openjdk:8-jdk-alpine
-
-RUN apk update && \
-    apk add apache-ant && \
-    apk add ttf-dejavu && \
-    apk add subversion && \
-    apk add git && \
-    rm /var/cache/apk/*
-
-COPY . /josm
-
-RUN mkdir -p /josm/test/report
-
-CMD cd /josm && \
-    ant test-html -DnoJavaFX=true
diff --git a/native/docker-test.bat b/native/docker-test.bat
deleted file mode 100644
index 1041e1af8b..0000000000
--- a/native/docker-test.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-docker build . -t josm/josm
-mkdir %CD%\test\report
-docker run -it --name josm -v %CD%\test\report:/josm/test/report josm/josm
-docker rm josm
-docker rmi josm/josm
-pause
diff --git a/native/docker-test.sh b/native/docker-test.sh
deleted file mode 100644
index 0823586358..0000000000
--- a/native/docker-test.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-docker build . -t josm/josm
-mkdir -p test/report
-docker run -it --name josm -v "$(pwd)"/test/report:/josm/test/report josm/josm
-docker rm josm
-docker rmi josm/josm
diff --git a/native/linux/latest/DEBIAN/control b/native/linux/latest/DEBIAN/control
index 957f01cded..30d8d2e0d4 100644
--- a/native/linux/latest/DEBIAN/control
+++ b/native/linux/latest/DEBIAN/control
@@ -8,16 +8,16 @@ Architecture: all
 Depends: default-jre (>= 2:1.17) | java11-runtime,
          proj-data, fonts-noto, openjfx
 Description: Editor for OpenStreetMap (daily development snapshot)
- JOSM is an editor for OpenStreetMap (OSM) written in Java.
-  The current version supports stand alone GPX tracks, GPX track data
-  from OSM database and existing nodes, line segments and metadata tags
-  from the OSM database.
+ JOSM is an extensible editor for OpenStreetMap (OSM) written in Java.
+ It supports loading GPX tracks, background imagery and OSM data from
+ local sources as well as from online sources and allows to edit the
+ OSM data (nodes, ways and relations) and their metadata tags.
  .
-  OpenStreetMap is a project aimed squarely at creating and providing
-  free geographic data such as street maps to anyone who wants them.
-  The project was started because most maps you think of as free actually
-  have legal or technical restrictions on their use, holding back people
-  from using them in creative, productive or unexpected ways.
+ OpenStreetMap is a project aimed squarely at creating and providing
+ free geographic data such as street maps to anyone who wants them.
+ The project was started because most maps you think of as free actually
+ have legal or technical restrictions on their use, holding back people
+ from using them in creative, productive or unexpected ways.
 
 
 
diff --git a/native/linux/latest/etc/default/josm-latest b/native/linux/latest/etc/default/josm-latest
index bb792ca8c7..00495f8d49 100644
--- a/native/linux/latest/etc/default/josm-latest
+++ b/native/linux/latest/etc/default/josm-latest
@@ -7,3 +7,15 @@
 # Enable OpenGL pipeline (2D graphic accelerators)
 #JAVA_OPTS="-Dsun.java2d.opengl=True ${JAVA_OPTS}"
 
+# Use a specific Java executable instead of the automatic selection
+#JAVACMD="/usr/lib/jvm/java-21-openjdk-amd64/bin/java"
+
+# Location of the OpenJFX modules (default: /usr/share/openjfx/lib)
+#JAVAFX_HOME="/usr/share/openjfx/lib"
+
+# Additional Java module path entries
+#JOSM_MODULEPATH=""
+
+# Location of the JOSM jar file (default: /usr/share/josm-latest/josm-latest.jar)
+#JOSM_PATH="/usr/share/josm-latest/josm-latest.jar"
+
diff --git a/native/linux/latest/usr/bin/josm-latest b/native/linux/latest/usr/bin/josm-latest
index 58cce230aa..34553cccc0 100755
--- a/native/linux/latest/usr/bin/josm-latest
+++ b/native/linux/latest/usr/bin/josm-latest
@@ -21,12 +21,15 @@ dpkg_java() {
     if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
     || dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
         # LTS versions in decreased order
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-25-openjdk/bin/java /usr/lib/jvm/java-25-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-21-openjdk/bin/java /usr/lib/jvm/java-21-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
         # Released versions in decreased order
-        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-24-openjdk/bin/java /usr/lib/jvm/java-24-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-27-openjdk/bin/java /usr/lib/jvm/java-27-openjdk-$ARCH/bin/java"
         # EOL versions in decreased order
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-26-openjdk/bin/java /usr/lib/jvm/java-26-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-24-openjdk/bin/java /usr/lib/jvm/java-24-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-23-openjdk/bin/java /usr/lib/jvm/java-23-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-22-openjdk/bin/java /usr/lib/jvm/java-22-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-20-openjdk/bin/java /usr/lib/jvm/java-20-openjdk-$ARCH/bin/java"
@@ -38,7 +41,7 @@ dpkg_java() {
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
         # Development version(s)
-        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-25-openjdk/bin/java /usr/lib/jvm/java-25-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-28-openjdk/bin/java /usr/lib/jvm/java-28-openjdk-$ARCH/bin/java"
     fi
 }
 
diff --git a/native/linux/latest/usr/share/doc/josm-latest/copyright b/native/linux/latest/usr/share/doc/josm-latest/copyright
index 59ca9024ea..384c4eb34c 100644
--- a/native/linux/latest/usr/share/doc/josm-latest/copyright
+++ b/native/linux/latest/usr/share/doc/josm-latest/copyright
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2020 JOSM developers <josm-dev@openstreetmap.org>
+Copyright (c) 2005-2026 JOSM developers <josm-dev@openstreetmap.org>
 
 License: GPL3+
 
diff --git a/native/linux/latest/usr/share/man/man1/josm-latest.1 b/native/linux/latest/usr/share/man/man1/josm-latest.1
index f8546e32e1..1b8f9cc173 100644
--- a/native/linux/latest/usr/share/man/man1/josm-latest.1
+++ b/native/linux/latest/usr/share/man/man1/josm-latest.1
@@ -1,48 +1,69 @@
-.TH JOSM 1 "March 22, 2021"
+.TH JOSM 1 "October 23, 2026"
 .\" Please adjust this date whenever revising the manpage.
+.\" Keep in sync with MainApplication.getHelp(), RenderingCLI, ProjectionCLI and ValidatorCLI.
 .SH NAME
 josm \- Java OpenStreetMap Editor
 .SH SYNOPSIS
 .B josm-latest
+[\fIcommand\fR] [\fIoptions\fR] [\fIfile\fR|\fIURL\fR|\fIbbox\fR...]
 .SH DESCRIPTION
-.B JOSM 
-is an editor for OpenStreetMap written in Java 8. 
+.B JOSM
+is an editor for OpenStreetMap written in Java.
 .PP
-.B OpenStreetMap 
+.B OpenStreetMap
 is a project aimed squarely at creating and providing free geographic data such as street maps to anyone
-who wants them. It allows you to view, edit and use geographical data in a collaborative way from 
+who wants them. It allows you to view, edit and use geographical data in a collaborative way from
 anywhere on earth.
-The project was started because most maps you think of as free actually have legal or technical 
+The project was started because most maps you think of as free actually have legal or technical
 restrictions on their use, holding back people from using them in creative, productive or unexpected
 ways.
+.SH COMMANDS
+.TP
+.B runjosm
+Launch JOSM (default, performed when no command is specified)
+.TP
+.B render
+Render data and save the result to an image file
+.TP
+.B project
+Convert coordinates from one coordinate reference system to another
+.TP
+.B validate
+Validate data
+.PP
+Run a command with \fB\-\-help\fR for details on its options.
 .SH OPTIONS
+The following options apply to the \fBrunjosm\fR command.
 .TP
-.B \-h, \-?, \-\-help
+.B \-h, \-\-help
 Show help
 .TP
-.B \-\-geometry=<width>x<height>(+|-)x(+|-)y
+.B \-\-geometry=<width>x<height>(+|\-)x(+|\-)y
 Standard X geometry argument
 .TP
 .B [\-\-download=]minlat,minlon,maxlat,maxlon
 Download the bounding box
 .TP
-.B [\-\-download=]<url>
-Download the location at the url (with lat=x&lon=y&zoom=z)
+.B [\-\-download=]<URL>
+Download the location at the URL (with lat=x&lon=y&zoom=z)
 .TP
 .B [\-\-download=]<filename>
-Open file (any file type that can be opened with File/Open)
+Open a file (any file type that can be opened with File/Open)
 .TP
 .B \-\-downloadgps=minlat,minlon,maxlat,maxlon
-Download the bounding box as raw gps
+Download the bounding box as raw GPS
+.TP
+.B \-\-downloadgps=<URL>
+Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS
 .TP
 .B \-\-selection=<searchstring>
-Select with the given search
+Select with the given search. Make sure you load some data if you use \-\-selection.
 .TP
 .B \-\-[no\-]maximize
 Do [not] launch in maximized mode
 .TP
 .B \-\-reset\-preferences
-Reset the preferences to the default
+Reset the preferences to default
 .TP
 .B \-\-load\-preferences=<url\-to\-xml>
 Change preferences according to the XML file
@@ -53,17 +74,147 @@ Set preference key to value
 .B \-\-language=<language>
 Set the language
 .TP
-.B \-\-version
-Display the JOSM version
+.B \-v, \-\-version
+Display the JOSM version and exit
 .TP
-.B \-\-status-report
+.B \-\-status\-report
 Show status report with useful information that can be attached to bugs
 .TP
+.B \-\-warn
+Print only warning or error messages to console
+.TP
 .B \-\-debug
 Print debugging messages to console
 .TP
+.B \-\-skip\-plugins
+Skip loading plugins
+.TP
 .B \-\-offline=<OSM_API|JOSM_WEBSITE|CACHE_UPDATES|CERTIFICATES|ALL>
 Disable access to the given resource(s), separated by comma
+.PP
+Parameters \-\-download, \-\-downloadgps and \-\-selection are processed in this order.
+.SS render
+.B josm\-latest render
+\fIoptions\fR
+.PP
+Renders data and saves the result to an image file.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-i, \-\-input <file>
+Input data file name (.osm)
+.TP
+.B \-o, \-\-output <file>
+Output image file name (.png); defaults to out.png
+.TP
+.B \-s, \-\-style <file>
+Style file to use for rendering (.mapcss or .zip).
+This option can be repeated to load multiple styles.
+.TP
+.B \-\-setting <key>:<value>
+Style setting (in JOSM accessible in the style list dialog right click menu).
+Applies to the last style loaded with the \-\-style option.
+.TP
+.B \-z, \-\-zoom <lvl>
+Select zoom level to render (integer value, 0=entire earth, 18=street level)
+.TP
+.B \-\-scale <scale>
+Select the map scale. A value of 10000 denotes a scale of 1:10000
+(1 cm on the map equals 100 m on the ground; display resolution: 96 dpi).
+Options \-\-zoom and \-\-scale are mutually exclusive.
+.TP
+.B \-b, \-\-bounds auto|<min_lon>,<min_lat>,<max_lon>,<max_lat>
+Area to render, default value is auto.
+With keyword auto, the downloaded area in the .osm input file will be used (if recorded).
+.TP
+.B \-\-anchor <lon>,<lat>
+Specify bottom left corner of the rendering area.
+Used in combination with width and height options to determine the area to render.
+.TP
+.B \-\-width\-m <number>
+Width of the rendered area, in meter
+.TP
+.B \-\-height\-m <number>
+Height of the rendered area, in meter
+.TP
+.B \-\-width\-px <number>
+Width of the target image, in pixel
+.TP
+.B \-\-height\-px <number>
+Height of the target image, in pixel
+.TP
+.B \-\-projection <code>
+Projection to use, default value epsg:3857 (web\-Mercator)
+.TP
+.B \-\-max\-image\-size <number>
+Maximum image width/height in pixel (0 means no limit), default value: 20000
+.TP
+.B \-\-debug, \-\-trace
+Print (detailed) debugging messages to console
+.PP
+To specify the rendered area and scale, the options can be combined in various ways:
+.nf
+  \-\-bounds (\-\-zoom|\-\-scale|\-\-width\-px|\-\-height\-px)
+  \-\-anchor (\-\-width\-m|\-\-width\-px) (\-\-height\-m|\-\-height\-px) (\-\-zoom|\-\-scale)
+  \-\-anchor \-\-width\-m \-\-height\-m (\-\-width\-px|\-\-height\-px)
+  \-\-anchor \-\-width\-px \-\-height\-px (\-\-width\-m|\-\-height\-m)
+.fi
+If neither bounds nor anchor is given, the default value \-\-bounds=auto takes effect
+and the bounds of the download area in the .osm input file are used.
+.SS project
+.B josm\-latest project
+\fIoptions\fR \fIcrs\fR +to \fIcrs\fR [\fIfile\fR...]
+.PP
+Converts coordinates from one coordinate reference system to another.
+The format for input and output coordinate reference system is similar to that of the PROJ.4 software.
+Input data is read from the files given as positional arguments; when no files are given,
+or the filename is "\-", data is read from standard input.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-I, \-\-inverse
+Switch input and output crs
+.TP
+.B \-r, \-\-switch\-input
+Switch order of input coordinates (east/north, lon/lat)
+.TP
+.B \-s, \-\-switch\-output
+Switch order of output coordinates (east/north, lon/lat)
+.SS validate
+.B josm\-latest validate
+\fIoptions\fR
+.PP
+Validates data and saves the result to a file.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-i, \-\-input <file>
+Input data file name (.osm, .validator.mapcss, .mapcss).
+OSM files can be specified multiple times. Required.
+\&.validator.mapcss and .mapcss files will stop processing on first error.
+Non\-osm files do not use \-\-output or \-\-change\-file.
+.TP
+.B \-o, \-\-output <file>
+Output data file name (.geojson, line\-by\-line delimited for MapRoulette). Optional.
+.TP
+.B \-c, \-\-change\-file <file>
+Change file name (.osc). Can be specified multiple times per input.
+Changes will be applied in the specified order. Optional.
+.TP
+.B \-l, \-\-language <language>
+Set the language
+.TP
+.B \-p, \-\-load\-preferences <file>
+Change preferences according to the XML file
+.TP
+.B \-s, \-\-set <key>=<value>
+Set preference key to value
+.TP
+.B \-\-warn, \-\-debug, \-\-trace
+Set the logging level
 .SH FILES
 JOSM files are saved according to the XDG Base Directory Specification:
 .TP
@@ -77,6 +228,9 @@ User data
 Cache
 .TP
 If the directory $HOME/.josm-latest exists, all files are stored there.
+.TP
+.B /etc/default/josm-latest
+Shell file sourced by the launcher script, e.g. to set JAVA_OPTS or JAVACMD.
 .SH JAVA PROPERTIES
 The following options can be set by using Java system properties (i.e. \-Dkey=value
 passed to java, or specified inside JAVA_OPTS).
@@ -92,18 +246,40 @@ Set the JOSM cache directory.
 .TP
 .B josm.home=<homedir>
 Relocate all 3 directories to homedir. Cache directory will be in <homedir>/cache.
+josm.home has lower precedence, i.e. the specific settings above override it.
 .TP
 .B josm.dir.name=<JOSM-latest>
 Change the JOSM directory name.
 .SH ENVIRONMENT
 .IP JAVA_HOME
 Specify an alternate Java environment.
+.IP JAVACMD
+Specify the java executable to use, overriding the automatic selection.
 .IP JAVA_OPTS
 Specify Java options.
 For example, to use a HTTP proxy server with this program, set this environment variable
 to something like
-.I JAVA_OPTS="-Dhttp.proxyHost=yourProxyURL"
+.I JAVA_OPTS="\-Dhttp.proxyHost=yourProxyURL"
 before starting josm.
+If unset and the machine has more than 8 GB of memory, the launcher uses
+.IR "\-XX:MaxRAMPercentage=75.0 \-Xms256m" .
+.IP JAVAFX_HOME
+Location of the OpenJFX modules (default /usr/share/openjfx/lib).
+.IP JOSM_MODULEPATH
+Additional Java module path entries.
+.IP JOSM_PATH
+Location of the JOSM jar file (default /usr/share/josm-latest/josm-latest.jar).
+.SH EXAMPLES
+.nf
+josm\-latest track1.gpx track2.gpx london.osm
+josm\-latest https://www.openstreetmap.org/#map=13/43.2/11.1
+josm\-latest london.osm \-\-selection=http://www.ostertag.name/osm/OSM_errors_node\-duplicate.xml
+josm\-latest 43.2,11.1,43.4,11.4
+josm\-latest render \-i data.osm \-s style.mapcss \-z 16 \-o image.png
+josm\-latest project +init=epsg:4326 +to +init=epsg:3857 <<<"11.232274 50.5685716"
+josm\-latest validate \-i data.osm \-o errors.geojson
+JAVA_OPTS="\-Xmx1024m" josm\-latest
+.fi
 .SH AUTHOR
 JOSM was originally designed and coded by Immanuel Scholz,
 and is now maintained by the OpenStreetMap community.
@@ -126,9 +302,13 @@ Ulf Lamping
 Simon Legner
 Raphael Mack
 Upliner Mikhalych
+Gerd Petermann
 Vincent Privat
 Frederik Ramm
+Taylor Smock
 Dirk Stöcker
+Stefan Volke
+Michael Zangl
 .PP
 Many minor contributions and patches by others; see SVN history
 at https://josm.openstreetmap.de/svn/ for details. Use
diff --git a/native/linux/tested/DEBIAN/control b/native/linux/tested/DEBIAN/control
index 02961f8929..86e999034a 100644
--- a/native/linux/tested/DEBIAN/control
+++ b/native/linux/tested/DEBIAN/control
@@ -10,16 +10,16 @@ Depends: default-jre (>= 2:1.17) | java11-runtime,
 Conflicts: josm-plugins
 Replaces: josm-plugins
 Description: Editor for OpenStreetMap
- JOSM is an editor for OpenStreetMap (OSM) written in Java.
-  The current version supports stand alone GPX tracks, GPX track data
-  from OSM database and existing nodes, line segments and metadata tags
-  from the OSM database.
+ JOSM is an extensible editor for OpenStreetMap (OSM) written in Java.
+ It supports loading GPX tracks, background imagery and OSM data from
+ local sources as well as from online sources and allows to edit the
+ OSM data (nodes, ways and relations) and their metadata tags.
  .
-  OpenStreetMap is a project aimed squarely at creating and providing
-  free geographic data such as street maps to anyone who wants them.
-  The project was started because most maps you think of as free actually
-  have legal or technical restrictions on their use, holding back people
-  from using them in creative, productive or unexpected ways.
+ OpenStreetMap is a project aimed squarely at creating and providing
+ free geographic data such as street maps to anyone who wants them.
+ The project was started because most maps you think of as free actually
+ have legal or technical restrictions on their use, holding back people
+ from using them in creative, productive or unexpected ways.
 
 
 
diff --git a/native/linux/tested/etc/default/josm b/native/linux/tested/etc/default/josm
index 508ac3137f..fd49b64076 100644
--- a/native/linux/tested/etc/default/josm
+++ b/native/linux/tested/etc/default/josm
@@ -7,3 +7,15 @@
 # Enable OpenGL pipeline (2D graphic accelerators)
 #JAVA_OPTS="-Dsun.java2d.opengl=True ${JAVA_OPTS}"
 
+# Use a specific Java executable instead of the automatic selection
+#JAVACMD="/usr/lib/jvm/java-21-openjdk-amd64/bin/java"
+
+# Location of the OpenJFX modules (default: /usr/share/openjfx/lib)
+#JAVAFX_HOME="/usr/share/openjfx/lib"
+
+# Additional Java module path entries
+#JOSM_MODULEPATH=""
+
+# Location of the JOSM jar file (default: /usr/share/josm/josm.jar)
+#JOSM_PATH="/usr/share/josm/josm.jar"
+
diff --git a/native/linux/tested/usr/bin/josm b/native/linux/tested/usr/bin/josm
index b84a517f8e..b91f2fcaa6 100755
--- a/native/linux/tested/usr/bin/josm
+++ b/native/linux/tested/usr/bin/josm
@@ -21,12 +21,15 @@ dpkg_java() {
     if dpkg --get-selections "openjdk-*-jre" | grep install$ > /dev/null \
     || dpkg --get-selections "openjdk-*-jre:$ARCH" | grep install$ > /dev/null ; then
         # LTS versions in decreased order
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-25-openjdk/bin/java /usr/lib/jvm/java-25-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-21-openjdk/bin/java /usr/lib/jvm/java-21-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-17-openjdk/bin/java /usr/lib/jvm/java-17-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-11-openjdk/bin/java /usr/lib/jvm/java-11-openjdk-$ARCH/bin/java"
         # Released versions in decreased order
-        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-24-openjdk/bin/java /usr/lib/jvm/java-24-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-27-openjdk/bin/java /usr/lib/jvm/java-27-openjdk-$ARCH/bin/java"
         # EOL versions in decreased order
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-26-openjdk/bin/java /usr/lib/jvm/java-26-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-24-openjdk/bin/java /usr/lib/jvm/java-24-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-23-openjdk/bin/java /usr/lib/jvm/java-23-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-22-openjdk/bin/java /usr/lib/jvm/java-22-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-20-openjdk/bin/java /usr/lib/jvm/java-20-openjdk-$ARCH/bin/java"
@@ -38,7 +41,7 @@ dpkg_java() {
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-13-openjdk/bin/java /usr/lib/jvm/java-13-openjdk-$ARCH/bin/java"
         JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-12-openjdk/bin/java /usr/lib/jvm/java-12-openjdk-$ARCH/bin/java"
         # Development version(s)
-        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-25-openjdk/bin/java /usr/lib/jvm/java-25-openjdk-$ARCH/bin/java"
+        JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-28-openjdk/bin/java /usr/lib/jvm/java-28-openjdk-$ARCH/bin/java"
     fi
 }
 
diff --git a/native/linux/tested/usr/share/doc/josm/copyright b/native/linux/tested/usr/share/doc/josm/copyright
index 59ca9024ea..384c4eb34c 100644
--- a/native/linux/tested/usr/share/doc/josm/copyright
+++ b/native/linux/tested/usr/share/doc/josm/copyright
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2020 JOSM developers <josm-dev@openstreetmap.org>
+Copyright (c) 2005-2026 JOSM developers <josm-dev@openstreetmap.org>
 
 License: GPL3+
 
diff --git a/native/linux/tested/usr/share/man/man1/josm.1 b/native/linux/tested/usr/share/man/man1/josm.1
index c8467c3a73..5c66a59cf5 100644
--- a/native/linux/tested/usr/share/man/man1/josm.1
+++ b/native/linux/tested/usr/share/man/man1/josm.1
@@ -1,48 +1,69 @@
-.TH JOSM 1 "March 22, 2021"
+.TH JOSM 1 "October 23, 2026"
 .\" Please adjust this date whenever revising the manpage.
+.\" Keep in sync with MainApplication.getHelp(), RenderingCLI, ProjectionCLI and ValidatorCLI.
 .SH NAME
 josm \- Java OpenStreetMap Editor
 .SH SYNOPSIS
 .B josm
+[\fIcommand\fR] [\fIoptions\fR] [\fIfile\fR|\fIURL\fR|\fIbbox\fR...]
 .SH DESCRIPTION
-.B JOSM 
-is an editor for OpenStreetMap written in Java 8. 
+.B JOSM
+is an editor for OpenStreetMap written in Java.
 .PP
-.B OpenStreetMap 
+.B OpenStreetMap
 is a project aimed squarely at creating and providing free geographic data such as street maps to anyone
-who wants them. It allows you to view, edit and use geographical data in a collaborative way from 
+who wants them. It allows you to view, edit and use geographical data in a collaborative way from
 anywhere on earth.
-The project was started because most maps you think of as free actually have legal or technical 
+The project was started because most maps you think of as free actually have legal or technical
 restrictions on their use, holding back people from using them in creative, productive or unexpected
 ways.
+.SH COMMANDS
+.TP
+.B runjosm
+Launch JOSM (default, performed when no command is specified)
+.TP
+.B render
+Render data and save the result to an image file
+.TP
+.B project
+Convert coordinates from one coordinate reference system to another
+.TP
+.B validate
+Validate data
+.PP
+Run a command with \fB\-\-help\fR for details on its options.
 .SH OPTIONS
+The following options apply to the \fBrunjosm\fR command.
 .TP
-.B \-h, \-?, \-\-help
+.B \-h, \-\-help
 Show help
 .TP
-.B \-\-geometry=<width>x<height>(+|-)x(+|-)y
+.B \-\-geometry=<width>x<height>(+|\-)x(+|\-)y
 Standard X geometry argument
 .TP
 .B [\-\-download=]minlat,minlon,maxlat,maxlon
 Download the bounding box
 .TP
-.B [\-\-download=]<url>
-Download the location at the url (with lat=x&lon=y&zoom=z)
+.B [\-\-download=]<URL>
+Download the location at the URL (with lat=x&lon=y&zoom=z)
 .TP
 .B [\-\-download=]<filename>
-Open file (any file type that can be opened with File/Open)
+Open a file (any file type that can be opened with File/Open)
 .TP
 .B \-\-downloadgps=minlat,minlon,maxlat,maxlon
-Download the bounding box as raw gps
+Download the bounding box as raw GPS
+.TP
+.B \-\-downloadgps=<URL>
+Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS
 .TP
 .B \-\-selection=<searchstring>
-Select with the given search
+Select with the given search. Make sure you load some data if you use \-\-selection.
 .TP
 .B \-\-[no\-]maximize
 Do [not] launch in maximized mode
 .TP
 .B \-\-reset\-preferences
-Reset the preferences to the default
+Reset the preferences to default
 .TP
 .B \-\-load\-preferences=<url\-to\-xml>
 Change preferences according to the XML file
@@ -53,17 +74,147 @@ Set preference key to value
 .B \-\-language=<language>
 Set the language
 .TP
-.B \-\-version
-Display the JOSM version
+.B \-v, \-\-version
+Display the JOSM version and exit
 .TP
-.B \-\-status-report
+.B \-\-status\-report
 Show status report with useful information that can be attached to bugs
 .TP
+.B \-\-warn
+Print only warning or error messages to console
+.TP
 .B \-\-debug
 Print debugging messages to console
 .TP
+.B \-\-skip\-plugins
+Skip loading plugins
+.TP
 .B \-\-offline=<OSM_API|JOSM_WEBSITE|CACHE_UPDATES|CERTIFICATES|ALL>
 Disable access to the given resource(s), separated by comma
+.PP
+Parameters \-\-download, \-\-downloadgps and \-\-selection are processed in this order.
+.SS render
+.B josm render
+\fIoptions\fR
+.PP
+Renders data and saves the result to an image file.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-i, \-\-input <file>
+Input data file name (.osm)
+.TP
+.B \-o, \-\-output <file>
+Output image file name (.png); defaults to out.png
+.TP
+.B \-s, \-\-style <file>
+Style file to use for rendering (.mapcss or .zip).
+This option can be repeated to load multiple styles.
+.TP
+.B \-\-setting <key>:<value>
+Style setting (in JOSM accessible in the style list dialog right click menu).
+Applies to the last style loaded with the \-\-style option.
+.TP
+.B \-z, \-\-zoom <lvl>
+Select zoom level to render (integer value, 0=entire earth, 18=street level)
+.TP
+.B \-\-scale <scale>
+Select the map scale. A value of 10000 denotes a scale of 1:10000
+(1 cm on the map equals 100 m on the ground; display resolution: 96 dpi).
+Options \-\-zoom and \-\-scale are mutually exclusive.
+.TP
+.B \-b, \-\-bounds auto|<min_lon>,<min_lat>,<max_lon>,<max_lat>
+Area to render, default value is auto.
+With keyword auto, the downloaded area in the .osm input file will be used (if recorded).
+.TP
+.B \-\-anchor <lon>,<lat>
+Specify bottom left corner of the rendering area.
+Used in combination with width and height options to determine the area to render.
+.TP
+.B \-\-width\-m <number>
+Width of the rendered area, in meter
+.TP
+.B \-\-height\-m <number>
+Height of the rendered area, in meter
+.TP
+.B \-\-width\-px <number>
+Width of the target image, in pixel
+.TP
+.B \-\-height\-px <number>
+Height of the target image, in pixel
+.TP
+.B \-\-projection <code>
+Projection to use, default value epsg:3857 (web\-Mercator)
+.TP
+.B \-\-max\-image\-size <number>
+Maximum image width/height in pixel (0 means no limit), default value: 20000
+.TP
+.B \-\-debug, \-\-trace
+Print (detailed) debugging messages to console
+.PP
+To specify the rendered area and scale, the options can be combined in various ways:
+.nf
+  \-\-bounds (\-\-zoom|\-\-scale|\-\-width\-px|\-\-height\-px)
+  \-\-anchor (\-\-width\-m|\-\-width\-px) (\-\-height\-m|\-\-height\-px) (\-\-zoom|\-\-scale)
+  \-\-anchor \-\-width\-m \-\-height\-m (\-\-width\-px|\-\-height\-px)
+  \-\-anchor \-\-width\-px \-\-height\-px (\-\-width\-m|\-\-height\-m)
+.fi
+If neither bounds nor anchor is given, the default value \-\-bounds=auto takes effect
+and the bounds of the download area in the .osm input file are used.
+.SS project
+.B josm project
+\fIoptions\fR \fIcrs\fR +to \fIcrs\fR [\fIfile\fR...]
+.PP
+Converts coordinates from one coordinate reference system to another.
+The format for input and output coordinate reference system is similar to that of the PROJ.4 software.
+Input data is read from the files given as positional arguments; when no files are given,
+or the filename is "\-", data is read from standard input.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-I, \-\-inverse
+Switch input and output crs
+.TP
+.B \-r, \-\-switch\-input
+Switch order of input coordinates (east/north, lon/lat)
+.TP
+.B \-s, \-\-switch\-output
+Switch order of output coordinates (east/north, lon/lat)
+.SS validate
+.B josm validate
+\fIoptions\fR
+.PP
+Validates data and saves the result to a file.
+.TP
+.B \-h, \-\-help
+Show help
+.TP
+.B \-i, \-\-input <file>
+Input data file name (.osm, .validator.mapcss, .mapcss).
+OSM files can be specified multiple times. Required.
+\&.validator.mapcss and .mapcss files will stop processing on first error.
+Non\-osm files do not use \-\-output or \-\-change\-file.
+.TP
+.B \-o, \-\-output <file>
+Output data file name (.geojson, line\-by\-line delimited for MapRoulette). Optional.
+.TP
+.B \-c, \-\-change\-file <file>
+Change file name (.osc). Can be specified multiple times per input.
+Changes will be applied in the specified order. Optional.
+.TP
+.B \-l, \-\-language <language>
+Set the language
+.TP
+.B \-p, \-\-load\-preferences <file>
+Change preferences according to the XML file
+.TP
+.B \-s, \-\-set <key>=<value>
+Set preference key to value
+.TP
+.B \-\-warn, \-\-debug, \-\-trace
+Set the logging level
 .SH FILES
 JOSM files are saved according to the XDG Base Directory Specification:
 .TP
@@ -77,6 +228,9 @@ User data
 Cache
 .TP
 If the directory $HOME/.josm exists, all files are stored there.
+.TP
+.B /etc/default/josm
+Shell file sourced by the launcher script, e.g. to set JAVA_OPTS or JAVACMD.
 .SH JAVA PROPERTIES
 The following options can be set by using Java system properties (i.e. \-Dkey=value
 passed to java, or specified inside JAVA_OPTS).
@@ -92,18 +246,40 @@ Set the JOSM cache directory.
 .TP
 .B josm.home=<homedir>
 Relocate all 3 directories to homedir. Cache directory will be in <homedir>/cache.
+josm.home has lower precedence, i.e. the specific settings above override it.
 .TP
 .B josm.dir.name=<JOSM>
 Change the JOSM directory name.
 .SH ENVIRONMENT
 .IP JAVA_HOME
 Specify an alternate Java environment.
+.IP JAVACMD
+Specify the java executable to use, overriding the automatic selection.
 .IP JAVA_OPTS
 Specify Java options.
 For example, to use a HTTP proxy server with this program, set this environment variable
 to something like
-.I JAVA_OPTS="-Dhttp.proxyHost=yourProxyURL"
+.I JAVA_OPTS="\-Dhttp.proxyHost=yourProxyURL"
 before starting josm.
+If unset and the machine has more than 8 GB of memory, the launcher uses
+.IR "\-XX:MaxRAMPercentage=75.0 \-Xms256m" .
+.IP JAVAFX_HOME
+Location of the OpenJFX modules (default /usr/share/openjfx/lib).
+.IP JOSM_MODULEPATH
+Additional Java module path entries.
+.IP JOSM_PATH
+Location of the JOSM jar file (default /usr/share/josm/josm.jar).
+.SH EXAMPLES
+.nf
+josm track1.gpx track2.gpx london.osm
+josm https://www.openstreetmap.org/#map=13/43.2/11.1
+josm london.osm \-\-selection=http://www.ostertag.name/osm/OSM_errors_node\-duplicate.xml
+josm 43.2,11.1,43.4,11.4
+josm render \-i data.osm \-s style.mapcss \-z 16 \-o image.png
+josm project +init=epsg:4326 +to +init=epsg:3857 <<<"11.232274 50.5685716"
+josm validate \-i data.osm \-o errors.geojson
+JAVA_OPTS="\-Xmx1024m" josm
+.fi
 .SH AUTHOR
 JOSM was originally designed and coded by Immanuel Scholz,
 and is now maintained by the OpenStreetMap community.
@@ -126,9 +302,13 @@ Ulf Lamping
 Simon Legner
 Raphael Mack
 Upliner Mikhalych
+Gerd Petermann
 Vincent Privat
 Frederik Ramm
+Taylor Smock
 Dirk Stöcker
+Stefan Volke
+Michael Zangl
 .PP
 Many minor contributions and patches by others; see SVN history
 at https://josm.openstreetmap.de/svn/ for details. Use
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java
index 9cdc48cc57..c6f538dabb 100644
--- a/src/org/openstreetmap/josm/gui/MainApplication.java
+++ b/src/org/openstreetmap/josm/gui/MainApplication.java
@@ -687,7 +687,8 @@ public class MainApplication {
                 "\trender      "+tr("render data and save the result to an image file")+'\n'+
                 "\tproject     " + tr("convert coordinates from one coordinate reference system to another")+ '\n' +
                 "\tvalidate    " + tr("validate data") + "\n\n" +
-                tr("For details on the {0} and {1} commands, run them with the {2} option.", "render", "project", "--help")+'\n'+
+                tr("For details on the {0}, {1} and {2} commands, run them with the {3} option.",
+                        "render", "project", "validate", "--help")+'\n'+
                 tr("The remainder of this help page documents the {0} command.", "runjosm")+"\n\n"+
                 tr("options")+":\n"+
                 "\t--help|-h                                 "+tr("Show this help")+'\n'+
