Your SlideShare is downloading. ×
2012 java two-desktop-appliction-using-j-ruby-with-swt
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

2012 java two-desktop-appliction-using-j-ruby-with-swt

310
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
310
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desktop Application usingJRuby + SWT呂旺燊
  • 2. 專家講座 C :Desktop Application using JRuby + SWT
  • 3. 個人簡介  呂旺燊  Twitter: @tkalu  RoR programmer  任職於和多 handlino.com
  • 4. Fire.app http://fireapp.handlino.com/
  • 5. HTML prototyping tool網頁原型設計工具 HTML + CSS + JavaScript
  • 6. HTML支援多種 Template language● ERB● HAML● Slim● Markdown
  • 7. CSS http://sass-lang.com/ http://compass-style.org/
  • 8. JavaScript http://coffeescript.org/
  • 9. ServerSimple Web Server可以在瀏覽器裏面透過 http://127.0.0.1:24681的網址瀏覽專案內容Support LiveReload protocol當檔案修改之後 , 瀏覽器會自動更新Ref.● http://livereload.com/● LiveReload Protocol
  • 10. 跨平台支援 Linux OS X Windows
  • 11. 簡潔的介面 - 1
  • 12. 簡潔的介面 - 2
  • 13. 為什麼打造 Fire.app 故事要從遇見 Compass 說起了 ......
  • 14. Compass Awesome!!! from http://sonspring.com/journal/sass-for-designers
  • 15. 痛恨 command line....
  • 16. 需要跨平台
  • 17. 需要 GUI - 1Ruby GUI Library ● Tk ● wxRuby ● qtRuby Cross-Platform ● Ruby/GTK ● Shoes ● FXRuby ● MacRuby
  • 18. 需要 GUI - 2 Eclipse Java + SWT JRuby + SWT
  • 19. 成果 2010.12 推出 Compass.app 2012.04 推出 Fire.app
  • 20. 誰需要 JRuby + SWT ? 或是為什麼選擇 JRuby+SWT?
  • 21. 誰需要 JRuby + SWT ? 1. 熟悉 Ruby 想寫 GUIa 2. 想使用的 Library 只有 Ruby 的版本 3. 很熟 SWT 想改用 Ruby 的語法寫程式
  • 22. 回到正題 如何用 JRuby 搭配 SWT 開發程式
  • 23. JRuby 中使用 Java 程式 # 使用 Java 的環境 require java # 載入指定的 jar 檔 require path/to/mycode.jar # 取得目前的 Java 版號 java.lang.System.getProperties["java.runtime. version"] 更多資料請參考 https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby
  • 24. 載入 SWT 前往 SWT 官網下載檔案後解壓縮後可以取 得 swt.jar 後 , 透過下列兩行程式碼即可 載入 SWT require "java" require "download/path/swt"
  • 25. Hellow Word! display = org.eclipse.swt.widgets.Display.new shell = org.eclipse.swt.widgets.Shell.new(display) row_layout=org.eclipse.swt.layout.RowLayout.new(org.eclipse.swt.SWT::HORIZONTAL) shell.setLayout( row_layout) label = org.eclipse.swt.widgets.Label.new(shell,org.eclipse.swt.SWT::HORIZONTAL ) label.setText( Hello World! ) shell.open while(!shell.is_disposed) do display.sleep if(!display.read_and_dispatch) end display.dispose
  • 26. 更加的 Ruby 風格module Swt import org.eclipse.swt.SWT import org.eclipse.swt.program.Program module Widgets import org.eclipse.swt.widgets.Display import org.eclipse.swt.widgets.Label import org.eclipse.swt.widgets.Shell end module Layout import org.eclipse.swt.layout.RowLayout endend
  • 27. Hello World! 加強版display = Swt::Widgets::Display.get_currentshell = Swt::Widgets::Shell.new(display)shell.layout =Swt::Layout::RowLayout.new(Swt::SWT::HORIZONTAL)label = Swt::Widgets::Label.new(shell,Swt::SWT::HORIZONTAL )label.text = Hello World!shell.openwhile(!shell.is_disposed) do display.sleep if(!display.read_and_dispatch)enddisplay.dispose
  • 28. 其他開發心得 ● SWT 跨平台問題 ● 調整啟動速度 ● 打包程式 ● Mac 上隱藏 Dock 的圖示
  • 29. SWT 跨平台問題SWT_LIB_PATH ="#{LIB_PATH}/swt"if org.jruby.platform.Platform::IS_MAC os="osx"elsif org.jruby.platform.Platform::IS_LINUX os="linux"elsif org.jruby.platform.Platform::IS_WINDOWS os="win"endif org.jruby.platform.Platform::ARCH =~ /64/ arch="64"else arch="32"endrequire "#{SWT_LIB_PATH}/swt_#{os}#{arch}"
  • 30. 調整啟動速度 1. 不要使用 rubygem 管理 library require "rubygems" 會花上約 0.7 秒 建議自己將需要的 library 的路徑加到 $LOAD_PATH 中 2. 需要使用時才 require library JRuby require 的成本十分龐大 , 建議要用到的時候才進 行 require 的動作 , 而不是程式一啟動就將需要 library 全部載入其他技巧還可參考http://headius.blogspot.com/2010/03/jruby-startup-time-tips.html
  • 31. 打包程式使用 Rawr http://github.com/rawr/rawr Rawr 包裝了launch4j提供 JRuby 程式更加方便的打包方式安裝 rawr 到系統 : gem install rawr建立專案 : rawr install {project_path}打包 Mac 程式: rake rawr:bundle:app打包 Windows 程式: rake rawr:bundle:exe
  • 32. Mac 上隱藏 Dock 的圖示 在 OSX 中使用 SWT 的程式會預設在 Dock 中顯示 圖示 , 如果想要做出 只顯示在 system tray 上面 的效果 , 需會要修改 Info.plist, 必須在 <dict> 中 添加下列內容 : <key>NSUIElement</key> <string>1</string>
  • 33. 範例程式 請前往下方 Github 網址下載https://github.com/tka/jruby-rawr-swt-helloworld
  • 34. Live Demo 如果有時間的話 .....
  • 35. Thank You
  • 36. 如果還有時間 .... JRuby on Android http://ruboto.org/
  • 37. Thank You