|
1 | 1 | # _Live View Programming_ mit jeder Programmiersprache |
2 | 2 |
|
3 | | -Das _Live View Programming_ (LVP) bietet Ihnen für die Programmierung ein einfaches Textprotokoll an, um mediale Inhalte im Web-Browser darzustellen, also Texte, Bilder, Grafiken, Videos, inteaktive Animationen etc. Kommandos stellen auch nützliche Fähigkeiten bereit, die man z.B. zur Dokumentation von Code gebrauchen kann. |
| 3 | +Live View Programming (LVP) stellt ein einfaches Textprotokoll bereit, mit dem sich mediale Inhalte direkt im Web-Browser darstellen lassen, darunter Texte, Bilder, Grafiken, Videos und interaktive Animationen. |
| 4 | + |
| 5 | +Das Protokoll dient als sprachunabhängige Schnittstelle zwischen Ihrem eigenen Programm und LVP. Die Kommunikation erfolgt über Kommandos, die durch gewöhnliche Konsolenausgaben erzeugt werden. Diese Kommandos können Inhalte transformieren und sie im Browser medial aufbereitet anzeigen. |
| 6 | + |
| 7 | +Auf diese Weise stellt LVP praktische Funktionen bereit, die sich beispielsweise für die Code-Dokumentation, die Erzeugung von Turtle-Grafiken oder das Erstellen interaktiver HTML-Elemente nutzen lassen. |
| 8 | + |
4 | 9 |
|
5 | | -**Eine detaillierte Übersicht des Protokolls mit allen Kommandos folgt noch.** |
6 | 10 |
|
7 | 11 | ## 🚀 Nutze das _Live View Programming_ |
8 | 12 |
|
9 | 13 | Wenn Sie das _Live View Programming_ ausprobieren möchten, ist Folgendes zu tun: |
10 | 14 |
|
11 | 15 | ### 1. Lade die `.jar`-Datei herunter |
12 | 16 |
|
13 | | -* Stellen Sie sicher, dasss Sie mit einem aktuellen JDK (Java Development Kit) arbeiten; es empfiehlt sich das [TemurinJDK](https://adoptium.net/temurin/releases/) |
| 17 | +* Stellen Sie sicher, dasss Sie mit einem aktuellen JDK (Java Development Kit) arbeiten; es empfiehlt sich das [OpenJDK](https://jdk.java.net/25/) |
14 | 18 | * Laden Sie die aktuelle `.jar`-Datei herunter, die Ihnen als Asset zum [aktuellen Release](https://github.com/denkspuren/LiveViewProgramming/releases) als Download angeboten wird; die Datei hat den Namen `lvp-<Version>.jar` |
15 | 19 | * Laden Sie `demo.java`-Datei herunter, die Ihnen ebenfalls als Asset zum [aktuellen Release](https://github.com/denkspuren/LiveViewProgramming/releases) als Download angeboten wird. |
16 | 20 |
|
@@ -56,26 +60,74 @@ java -jar lvp-1.0.0.jar --log demo.java |
56 | 60 | > Mehrere Argumente können kombiniert werden, z.B.: |
57 | 61 | > `java -jar lvp-<Version>.jar --watch-filter=src/lib/**/*.java --log=Debug --port=50001 --config src/*View.java` |
58 | 62 |
|
59 | | -### 3. So nutzt man das _Live View Programming_ |
| 63 | +### 3. Einbinden von Quellen |
| 64 | +Damit eigene Programme mit LVP kommunizieren können, werden sie innerhalb von LVP als Laufzeitumgebung ausgeführt. Diese Programme werden im Kontext von LVP als Quellen bezeichnet. |
| 65 | + |
| 66 | +Die Programme selbst benötigen keine zusätzlichen Abhängigkeiten und können in beliebigen Programmiersprachen geschrieben sein. Es gibt zwei Möglichkeiten, Quellen in LVP zu definieren. |
| 67 | + |
| 68 | +#### Variante 1: Übergabe über die Konsole |
60 | 69 |
|
61 | | -Die Datei `demo.java` dient als einfaches Beispiel für den Einstieg in das Live View Programming (LVP). |
| 70 | +Wie oben gezeigt, können Quellen als Argument beim Konsolenaufruf übergeben werden. Dabei lassen sich beliebig viele Quellen definieren. Alle angegebenen Quellen werden mit dem über --cmd übergebenen Befehl ausgeführt. |
62 | 71 |
|
63 | | -Damit LVP funktioniert, **muss der Server die Datei beobachten (watchen)** – sobald Änderungen erkannt werden, wird der Code automatisch neu ausgeführt und die Ausgabe aktualisiert. |
| 72 | +Wird das Argument `--cmd` nicht gesetzt, versucht LVP standardmäßig, die Quellen als Java-Programme auszuführen. |
64 | 73 |
|
65 | | -Innerhalb einer [`void main()`-Methode](https://openjdk.org/jeps/495) lassen sich interaktive Inhalte erzeugen, indem man `println`-Ausgaben entsprechend dem Protokoll erzeugt. Diese Inhalte werden anschließend im Browser angezeigt. |
| 74 | +#### Variante 2: Konfigurationsdatei (sources.json) |
66 | 75 |
|
67 | | -**Beispiel:** |
| 76 | +Bei einer größeren Anzahl von Quellen oder wenn Quellen unterschiedlich gestartet werden sollen (z. B. mit verschiedenen Startbefehlen), empfiehlt sich die Verwendung einer sources.json-Datei im Wurzelverzeichnis der Ausführung. |
68 | 77 |
|
| 78 | +Wird LVP mit dem Argument `--config` gestartet, werden die in dieser Datei definierten Quellen zusätzlich ausgeführt. |
| 79 | + |
| 80 | +Ein Beispiel für den Aufbau der Datei befindet sich im Ordner examples. |
| 81 | + |
| 82 | +Beide Varianten lassen sich auch kombinieren. |
| 83 | + |
| 84 | +### 4. Das Protokoll |
| 85 | +Im Folgenden eine grobe Übersicht über den generellen Aufbau des Protokolls. Ein ausführlicheres Beispiel finden Sie in `demo.java`, sowie weitere kleine Beispiele in dem Ordner `examples`. |
| 86 | + |
| 87 | +Einzeilige Kommandos: |
69 | 88 | ```java |
70 | | -import lvp.Clerk; |
| 89 | +println("Markdown: # Ich bin eine Überschrift"); |
| 90 | +``` |
71 | 91 |
|
72 | | -void main() { |
73 | | - println("Markdown: # Hello World"); |
74 | | -} |
| 92 | +Mehrzeilige Kommandos: |
| 93 | +```java |
| 94 | +println(""" |
| 95 | + Markdown: |
| 96 | + # Ich bin eine Überschrift |
| 97 | + Ich bin **Text**. |
| 98 | + ~~~ |
| 99 | +"""); |
75 | 100 | ``` |
76 | | -Dieser einfache Aufruf rendert eine Markdown-Überschrift direkt im Browser. Weitere Ausgaben, Grafiken oder Interaktionen können durch zusätzliche Kommandos ergänzt werden. |
| 101 | +Kommandos bestehen aus einem Namen und einem Inhalt. Dabei wird zwischen einzeiligen und mehrzeiligen Kommandos unterschieden. Ein mehrzeiliges Kommando wird durch `~~~` beendet. |
| 102 | + |
| 103 | +<br/> |
| 104 | + |
| 105 | +```java |
| 106 | +println(""" |
| 107 | + Text[template]: |
| 108 | + ## Beispiel |
| 109 | + Irgendein ${0} anzeigen. |
| 110 | + ~~~ |
| 111 | + | Markdown |
| 112 | +
|
| 113 | + Text: Beispiel |
| 114 | + | Text[template] | Markdown |
| 115 | +""") |
| 116 | + |
| 117 | +``` |
| 118 | +Durch Piping können die Ergebnisse eines Kommandos an ein anderes Kommando weitergegeben werden. |
| 119 | + |
| 120 | +### Kommandos und Anweisungen |
| 121 | +[Hier folgt eine Übersicht über alle Kommandos] |
| 122 | +- Register |
| 123 | +- Markdown |
| 124 | +- Html |
| 125 | +- Css |
| 126 | +- Javascript |
| 127 | +- .... |
| 128 | + |
77 | 129 |
|
78 | | -### Troubleshooting |
| 130 | +## Troubleshooting |
79 | 131 |
|
80 | 132 | > Error starting server: Address already in use: bind |
81 | 133 |
|
|
0 commit comments