Index: applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java
===================================================================
--- applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 35978)
+++ applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 36122)
@@ -15,7 +15,7 @@
 import java.util.Set;
 
-import javax.json.JsonArray;
-import javax.json.JsonException;
-import javax.json.JsonObject;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonException;
+import jakarta.json.JsonObject;
 
 import org.openstreetmap.josm.data.coor.ILatLon;
@@ -41,6 +41,6 @@
     private String userName;
     private static ChatServerConnection instance;
-    private Set<ChatServerConnectionListener> listeners;
-    private LogRequest requestThread;
+    private final Set<ChatServerConnectionListener> listeners;
+    private final LogRequest requestThread;
 
     private ChatServerConnection() {
@@ -123,4 +123,5 @@
                 }
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 Logging.warn(e);
             }
@@ -279,9 +280,9 @@
         double l = lat / 180 * Math.PI;
         double pf = Math.log(Math.tan(l) + (1 / Math.cos(l)));
-        return Math.pow(2.0, zoom - 1) * (Math.PI - pf) / Math.PI;
+        return Math.pow(2.0, zoom - 1d) * (Math.PI - pf) / Math.PI;
     }
 
     private static double lonToTileX(double lon, int zoom) {
-        return Math.pow(2.0, zoom - 3) * (lon + 180.0) / 45.0;
+        return Math.pow(2.0, zoom - 3d) * (lon + 180.0) / 45.0;
     }
 
@@ -305,15 +306,14 @@
         double factor = screenPixels / tilePixels;
         double result = Math.log(factor) / Math.log(2) / 2 + 1;
-        int intResult = (int) Math.floor(result);
-        return intResult;
+        return (int) Math.floor(result);
     }
 
     private class LogRequest implements Runnable {
         private static final int MAX_JUMP = 20000; // in meters
-        private LatLon lastPosition = null;
-        private long lastUserId = 0;
-        private long lastId = 0;
-        private boolean lastStatus = false;
-        private boolean stopping = false;
+        private LatLon lastPosition;
+        private long lastUserId;
+        private long lastId;
+        private boolean lastStatus;
+        private boolean stopping;
 
         @Override
@@ -324,7 +324,9 @@
                 process();
                 try {
-                    Thread.sleep(interval * 1000);
+                    Thread.sleep(interval * 1000L);
                 } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
                     stopping = true;
+                    Logging.trace(e);
                 }
             }
@@ -367,4 +369,5 @@
                 json = JsonQueryUtil.query(query, true);
             } catch (IOException ex) {
+                Logging.trace(ex);
                 json = null; // ?
             }
Index: applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java
===================================================================
--- applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java	(revision 35978)
+++ applications/editors/josm/plugins/geochat/src/geochat/JsonQueryCallback.java	(revision 36122)
@@ -2,5 +2,5 @@
 package geochat;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 /**
Index: applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java
===================================================================
--- applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java	(revision 35978)
+++ applications/editors/josm/plugins/geochat/src/geochat/JsonQueryUtil.java	(revision 36122)
@@ -5,9 +5,10 @@
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+import java.net.URI;
 
-import javax.json.Json;
-import javax.json.JsonException;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonException;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonReader;
 
 import org.openstreetmap.josm.gui.MainApplication;
@@ -43,6 +44,6 @@
     public static JsonObject query(String query, boolean logAtDebug) throws IOException {
         String serverURL = Config.getPref().get("geochat.server", "https://zverik.dev.openstreetmap.org/osmochat.php?action=");
-        URL url = new URL(serverURL + query);
-        Response connection = HttpClient.create(url).setLogAtDebug(logAtDebug).connect();
+        URI url = URI.create(serverURL + query);
+        Response connection = HttpClient.create(url.toURL()).setLogAtDebug(logAtDebug).connect();
         if (connection.getResponseCode() != 200) {
             throw new IOException("HTTP Response code " + connection.getResponseCode() + " (" + connection.getResponseMessage() + ")");
@@ -51,6 +52,6 @@
         if (inp == null)
             throw new IOException("Empty response");
-        try {
-            return Json.createReader(inp).readObject();
+        try (JsonReader reader = Json.createReader(inp)){
+            return reader.readObject();
         } catch (JsonException e) {
             throw new IOException("Failed to parse JSON: " + e.getMessage(), e);
