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

  • 291 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
291
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
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