Clojure swing应用程序启动时间



我刚刚开始使用clojure和seesaw制作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秒钟的启动,但这是完全不能接受的。

遗憾的是,Clojure仍然有相当多的启动时间。这主要是因为当Clojure加载到所有必需的命名空间中时,会发生大量的编译/代码加载。

对于我编写的基于Swing的GUI应用程序,我经常用Java编写main入口点,这样您就可以快速向用户显示初始GUI或启动屏幕,而其余的app/Clojure代码则在后台加载。

相关内容

  • 没有找到相关文章

最新更新