Ultrakompakter HTTP Server
ulrich
yesterday eee8999d92ecd485af6d159ba7323b80fe17623f
README.md
@@ -4,6 +4,64 @@
Weitere Informationen auf der [Produktseite](https://uhilger.de/data/pg/neon/)
## Voraussetzungen
Zur Herstellung von neon aus dem Quellcode wird ein Java Development Kit (JDK) benötigt. Das JDK ist von [Adoptium](https://adoptium.net/) frei erhältlich. In der hier folgenden weiteren Beschreibung wird der lokale Ablageort des Java Development Kits `$JDK` genannt.
## Quellcode von neon erhalten
Der Quellcode von neon wird von hier an einen frei wählbaren lokalen Ablageort heruntergeladen und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis `neon` einschließlich des absoluten Pfades dorthin `$NEON` genannt. Anstelle von `$NEON` würde man also beispielweise `/home/fred/neon` notieren, wenn in das persönliche Verzeichnis des Benutzers `fred` heruntergealden und entpackt wurde.
## Abhängigkeiten
neon erfordert die Klassenbibliothek [nanojson](https://github.com/mmastrac/nanojson).
## Klassenbibliothek herstellen
neon ist zur Nutzung im Zusammenspiel mit anderen Programmen vorgesehen und wird dazu am besten als Klassenbibliothek genutzt. Es wird angenommen, dass die oben aufgeführte Bibliothek lokal an einem Ort abgelegt ist, dessen Pfad mit dem Platzhalter `$JLIB` gemeint ist. Zur Herstellung einer Klassenbibliothek werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
```
cd $NEON
mkdir classes
mkdir dist
$JDK/bin/javac -parameters -classpath $JLIB/nanojson.jar -d classes src/de/uhilger/neon/*.java src/de/uhilger/neon/entity/*.java
$JDK/bin/jar -cf dist/neon.jar -C classes .
```
**Wichtig**: Die Herstellung muss mit der Compiler-Option `-parameters` erfolgen, damit zur Laufzeit die von neon verwendete Reflection API die Namen von Methodenparametern ausgibt. Ohne die Option -parameters erscheinen anstelle von Namen nur `arg1`, `arg2` usw. Hierfuer gibt es im Code von neon zwar einen Workaround, aber besser ist es, mit den im Code deklarierten Parameternamen zu arbeiten.
Die fertig verwendbare Klassenbibliothek liegt anschließend unter `$NEON/dist/neon.jar`.
## Klassenbibliothek verwenden
Zur Verwendung der Klassen von neon wird die Klassenbibliothek `neon.jar` zusammen mit `nanojson.jar`
in den Classpath des Programmes aufgenommen, von dem aus neon genutzt werden soll.
Ist beispielsweise eine App `MyApp.jar` im Ordner `~/apps/MyApp` gespeichert, die mit Hilfe von
neon einen eingebetteten Webserver einsetzen soll, würde die Klassenbibliothek `neon.jar` in den
Ordner `~/apps/MyApp/lib` gelegt. Ferner wird eine [Serverbeschreibungsdatei](https://uhilger.de/data/pg/neon/anleitung.adoc#srv-desc) benötigt, die z.B. im Ordner `~/apps/MyApp/conf`
gespeichert wird.
Es ergibt sich folgender Verzeichnisinhalt
````
~/apps/MyApp/MyApp.jar
~/apps/MyApp/conf/server.json
~/apps/MyApp/lib/neon.jar
~/apps/MyApp/lib/nanojson.jar
````
Die Anleitung von neon beschreibt im Kapitel [Neon starten](https://uhilger.de/data/pg/neon/anleitung.adoc#_neon_starten), wie neon aus einer Anwendung wie `MyApp.jar` heraus gestartet wird. Die App
`MyApp.jar` wird wie ein normales Java-Programm von der Kommandozeile ausgeführt:
````
cd ~/apps/MyApp
java -jar MyApp.jar
````
Hierbei wird automatisch der Inhalt des Unterverzeichnisses `lib` in `~/apps/MyApp` beim Start der
App einbezogen, wo sich die Klassenbibliotheken `neon` und `nanojson` befinden.
## Lizenz
Veröffentlicht unter den Bedingungen der [GNU Affero General Public License](http://www.gnu.org/licenses/agpl-3.0)