More Related Content Similar to Build desktop app_by_xulrunner (20) Build desktop app_by_xulrunner2. about:me
• ViViPOS
Co.,
Ltd
技術總監
– 利用 JavaScript
寫 〞收銀機〞(傳統產業,全新感受)
• CoCo
都可、50嵐、歇腳亭、Yamaha
、星聚點KTV……
• PHP
/
JavaScript
/
Java
Programmer
(目前移情於
Scala
)
• racklin@gmail.com
• hRps://twiRer.com/racklin
• hRp://www.plurk.com/racklin
• hRps://www.facebook.com/racklin1002
• hRp://racklin.blogspot.tw/
(生小孩後就變癈墟)
9. 跨平台的挑戰
• GUI
ToolKits
• Binding
Languages
• …
• …
• …
• 因為
JSDC
+
時間關係
– 總之選定 XULRunner
+
JS
11. Rich Client Platform
(wiki)
• A standard bundling framework
• User interface management
• User settings management
• Storage management
• Window management
• Update manager
- Eclipse RCP
- Netbeans Platform
- Spring Framework RCP
15. WHY
RCP
• Upstream
Core
Components
• Customizadon
– Customer
A
(
Core
+
A1
+
B1
+
C1
….)
– Customer
B
(
Core
+
A1
+
C1
+
D1
…)
– Customer
C
(
Core
+
A1
+
E1
+
F1
…)
XULRunner
/
Applicadon
Launcher
Core
(Main
UI
/
API)
26. HTML5
/
CSS3
/
JS
hRps://github.com/racklin/xulapp-‐starterkit-‐app-‐webapp-‐wrapper
hRps://github.com/racklin/xulapp-‐starterkit-‐app-‐todomvc
29. XULRunner
神兵
• XUL
– XUL
– XUL
Overlays
• Preferences
System
• XPCOM(Cross-‐Pla`orm
Component
Object
Model)
– C++
/
Python
/
Java
/
Javascript
– Low
Level
API
• Ex.
File
Systems
/
Databases
/
Thread
32. XUL
• XML
User
Interface
Language。
– 啥?
– 它提供了⼀一套跨平台的widget定義。
• BuRon
/
List
/
Tree
/
Tab
/
Menubar.
– Why
??
我們已經有 HTML5
了?
• 如同 Java
中的 Swing
/
SWT
• XUL
使用的是 Nadve
Pla`orm
UI.
HTML
則是由 CSS
中定義,各平台一致。
37. XUL
Overlays
•
由 chrome.manifest
中以 URI
定義
– overlay
chrome://a/content/a.xul
chrome://b/
content/b.xul
• UI
overlays
– Like:
$(‘#id’).arer(<html>)
,
$(‘#id’).before(<html>)
– 發生在 DOMContentLoaded
Event
Trigger
之前
• Scripts
Hook
– Javascript
Script
tag
也能 overlay
,
所以我們可以於
Extensions
插入 js
至現有程式中。
38. XUL
Overlays
• 還有一個兄弟 override
– 用另一個 URI
內容 取代原 URI
內容。
– overide
chrome://a/content/a.xul
chrome://b/
content/b.xul
40. XUL
Overlays
/
override
• 它解決了程式設計師在實作 Plugin
的困苦
– 在即有程式中,感知擴充程式的存在並溝通
– 在即有畫面中,提供擴充程式描繪 UI
/
佈局
• Override
它解決了
– Live
Patch
bugs
– Template
/
Reports
41. Preferences
System
• about:config
看到的東西
• App
or
Extensions
目錄下的 defaults
preferences*.js
as
system
preferences.
• Profile
目錄下的 prefs.js
as
user
preferences.
• Merge
system
and
user
preferences
when
startup
.
42. Preferences
System
• Key-‐Value
Databases
(
JSON)
• User
Preferences
• Registry
System
• Inter-‐Process-‐Communicadon
(別這麼用)
43. XPCOM
• 提供 Driver
/
Adaptor
– DBUS
/
OSD
/
VKB
/
ZeroMQ
• 利用 C++
實作高效能
• mozIJSSubScriptLoader
– 強大邪惡的存在
– Extend
DSL
-‐>
JS
– Encode
JS
– Trial
Expire
Date
45. XULRunner
Hall
of
Fame
• Firefox
• Komodo
Edit
• Flickr
Uploader
• VIVIPOS
– 全球超過 6000 台收銀機日以繼夜的當白老鼠
51. Resources
• Slide:
hRp://goo.gl/w1WIh
• XULApp
StarterKit:
hRps://github.com/racklin/xulapp-‐starterkit
• XULRunner
–
MDN
hRps://developer.mozilla.org/en-‐US/docs/
XULRunner