Möglichkeit der Programmierung eines Browsers mit JEditorPane

Ich trage mich mit dem Gedanken, einen Webbrowser zu schreiben. Ich habe eine JeditorPane, die vermittels getPage() Webseiten laden soll. Ich habe zwei Fragen.

1.: Ist es überhaupt zielführend, einen Webbrowser in Java zu schreiben oder ist es unabdinglich, eine andere Programmiersprache zu verwenden? Wenn ich

2.: Wenn ich text/html als Inhaltstyp setze (mit setContentType(„text/html“);), dann stellt getPage() einige aufgerufene Seiten mangelhaft dar. Liegt das daran, dass JavaScript auf diese Weise nicht geht?

Die kurze Antwort wäre: „Vergiß es“ :slight_smile:

Die JEditorPane is eine Komponente die (irgendwann Ende der 90er vermutlich) erstellt wurde, unter anderem mit dem Ziel, ein HTML-Dokument darstellen zu können. Und wenn man ganz naiv websucht, findet man Beispiele, wo Leute das schon genutzt haben, um einen „„Browser““ zu basteln - z.B. GitHub - StaceyWhitmore/simple-web-browser-in-java: A Simple Web Browser Written in Java (keine Empfehlung, nicht gelesen, nicht getestet, nur drübergescrollt).

Es wäre relativ einfach, damit einen Browser zu basteln, wo man

  1. eine HTML-Datei aufmachen kann
  2. einen Link in der HTML-Datei anklicken kann
  3. die verlinkte HTML-Datei anzeigen kann

Und … das ist so das, was ein Browser Ende des letzten Jahrhunderts halt so konnte.

Aber heute ist ein Browser nicht mehr etwas, was „eine HTML-Seite anzeigt“. Einer der wichtigsten Punkte steckt in der Frage:

Liegt das daran, dass JavaScript auf diese Weise nicht geht?

Ja (under anderem). Dazu kommen noch Sachen wie Sicherheitsaspekte, Bilder (WEBP support?), Medieneinbettung, Cookie-Handling, SVG, oder eines der größten Gräuel, die je in der IT entwickelt wurden: CSS :nauseated_face:

Ein Browser ist nicht etwas, was „eine HTML-Seite anzeigt“. Ein Browser ist eine Virtuelle Maschine. Und der „native Code“; den diese virtuelle Maschine ausführt ist … *trommelwirbel* … JavaScript. (Das kämpft mit CSS um Platz 1 der größten Gräuel…).

Es kann zwar ungeheuer frustrierend sein, aber … als Nerd habe ich nicht genug soziale Kompetenz, um zu erkennen, wo die Grenze verläuft zwischen „Ambition(iertheit)“ und „Naivität“, deswegen…: Vielleicht magst du mal über / - mozsearch browsen, und dir anschauen, wie der source code von FireFox so aussieht…

2 Likes

@Belsharusur
Wenn dir die Oberfläche/Darstellung, um die es hier ja in erster Linie geht, total egal wäre… dann gebe es durchaus Headless-Browser in Java, wie zum Beispiel HtmlUnit, die JavaScript, CSS usw. „können“, und sogar einen „normalen“ Browser imitieren können, sich also nicht zu erkennen geben…

Aber darum geht es diesmal ja nicht.