Разве это не то, для чего был разработан класс java.awt.Desktop?
Я говорю «Предназначен для», потому что есть много вещей, которые он не делает хорошо или правильно, но он работает для некоторых вещей. В ней отсутствует опция «открыть с помощью», так как операционная система должна запросить у вас, для чего вам следует открыть документ, если для него ничего не зарегистрировано.
Он может интерпретировать URL-адрес как веб-URL, открыть браузер, а затем браузер может делегировать открытие файла? в этом случае вам нужно будет загрузить документ во временный файл, а затем использовать desktop.open?