Debian
Sie das einmal folgende:
apt-get install nailgun # install nailgun
java -server -jar /usr/share/java/nailgun.jar& # run nailgun server
ng-nailgun ng-cp /usr/share/java/clojure-1.4.jar # add clj to classpath
Nun, da der Server und konfiguriert ausgeführt wird, können Sie Ihre clojure Skripte darauf laufen:
ng-nailgun clojure.main path/to/myscript.clj
In meinem In diesem Fall ging die Startzeit des eigentlichen Skripts auf 80 ms zurück, verglichen mit 900 ms ohne Nagelpistole.
Um machen das eigentliche Skript bequemer ausgeführt wird, erstellen Sie eine ausführbare Datei ng-clojure
die folgende Zeile enthält, und es irgendwo in den Weg stellen:
ng-nailgun clojure.main "[email protected]"
In Ihrem clojure Shell-Skript, dieses Add als erste Zeile:
#!/usr/bin/env ng-clojure
dann die clojure Shell-Skript ausführbar machen und es wie
laufen
path/to/myscript.clj
OSX
brew install nailgun
ng-server
ng ng-cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar
dann wie oben Ihr Skript ausführen.
Update: Nachdem es für eine Weile verwendet wurde, scheint es nicht einwandfrei zu funktionieren. Manchmal bekomme ich zufällige Fehler, die nicht auftreten, wenn ohne Nagelpistole laufen, und manchmal scheint es eine Speicherverlust, die die Nailgun JVM verbraucht den gesamten Speicher im Laufe der Zeit macht schließlich das System auf die Festplatte zu tauschen. Habe noch kein Speicherprofil dafür erstellt, wollte aber dieses Heads-Up hinzufügen.
Massive! Jemand sollte dies auf einem Planet Clojure Blog teilen. – progo
Würdest du keine Probleme mit Code-Konflikten bekommen, wenn du verschiedene Dinge auf einem Java-Server ausführen willst? Oder habe ich etwas falsch verstanden? – rvirding
@rvirding Ich bin mir nicht sicher, was Sie mit "Code-Zusammenstöße" meinen, aber ich wäre nicht überrascht, wenn das nicht 100% ig funktioniert hätte. Es könnte zum Beispiel Probleme mit Dingen wie dem statischen globalen Zustand geben. –