我刚开始使用clojure和跷跷板制作GUI应用程序。它创建一个JFrame和几个组件几乎没有。这是代码。主函数除了调用start-gui
之外什么都不做,并在它返回后立即退出。
(ns pause.gui
(:use seesaw.core))
(native!)
; (javax.swing.UIManager/setLookAndFeel
; "org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel")
(def main-window
(frame :title "Pause"
:on-close :exit))
(def sidebar (listbox :model []))
(def main-area (text :multi-line? true
:font "MONOSPACED-PLAIN-14"
:text "test"))
(def main-split
(left-right-split (scrollable sidebar)
(scrollable main-area)
:divider-location 1/5))
(defn setup-main-window
"Fills the main window with its content"
[main-window]
(config! main-window
:content main-split)
main-window)
(defn start-gui
"Create the main window"
[]
(-> main-window
setup-main-window
pack!
show!))
我使用lein uberjar
对其进行了编译,并将其与time java -jar
计时。它报告了14.5秒。有什么我做错了吗?我没关系3秒启动,但这是完全不可接受的。
答案 0 :(得分:2)
令人遗憾的是,Clojure还有相当多的启动时间。这主要是因为Clojure在所有必需的命名空间中加载时发生的编译/代码加载量。
对于我编写的基于Swing的GUI应用程序,我经常在Java中编写main
入口点,以便您可以快速向用户显示初始GUI或启动画面 - 其余的app / Clojure代码在后台加载。