0
www.lycom.de
                                            www.hhtong.com

JRuby 和 Rails
让 Ruby 语言融入于 Java 项目
             Q...
骆古道 / Gudao Luo
●
    1983 年毕业于西北工业大学数理力学系
●
    1988 年国家公派留学德国 Augsburg 大学
    从事组合最优化理论学习和研究
●
    从 90 年代起在德国企业从事于软件工作
...
●
    Ruby 语言的现实
●
    JRuby/Ruby 和 Ruby 语言
●
    Rails 框架主要特点和优势
●
    JRuby 与 Java 项目
●
    Rails 的企业软件开发作用
●
    重要技术资源
Ruby 语言的现实
Apple Mac OS X 10.5 Leopard
系统标准配置
Ruby和Rails
Ruby 语言的现实
 NetBeans for Ruby
Ruby 语言的现实
JRuby是太阳公司投资的开源项目
Ruby 语言的现实
MacRuby是苹果公司投资的开源项目
Ruby 语言的现实
Ruby:
infoQ
六大社区
之一
Ruby 语言的现实
Ruby语言
成为
前十大
程序语言
之一
Ruby 语言的现实
Ruby语言图书世界
Ruby 语言的现实
真实JRuby软件世界
Ruby 语言的现实
真实Rails软件世界
JRuby/Ruby 和 Ruby 语言:基本名称

Ruby语言是一门软件编程语言
JRuby是Ruby语言的Java语言实现
Ruby/CRuby是Ruby语言的C语言实现
JRuby ≈ Ruby
JRuby/Ruby 和 Ruby 语言:   Ruby 语言
Ruby语言: 动态程序语言
Ruby语言: 100%面向对象程序语言
Ruby语言: 简洁和优美的程序语言
Ruby语言: 一切事情都是对象(Everything
is an o...
JRuby/Ruby 和 Ruby 语言:   JRuby
●
    JRuby:集成Java/Ruby语言强大功能
●
    JRuby:比CRuby实现的运行速度更快
●
    JRuby:自然线程
●
    JRuby:支持外来函...
Ruby语言: 100%面向对象程序语言

- 1.class # Fixnum
- 3.14.class
  # Float
- [1, 'Ruby', :name].class
  # Array
- {:id => 11, :name =...
Ruby 语言 : 简洁和优美的程序语言 (1)

# define a class
class Company; end

# use the class Company
ibm = Company.new
ibm.methods
Ruby 语言 : 简洁和优美的程序语言 (2)
# define a class Company
class Company
 attr_accessor :id
 def name; @name; end
 def name=(name);...
Ruby 语言 : 一切事情都是对象
              ( Everything is an object )
         “有、无相生” “天下万物生于有,有生于无” – 老子


ibm.class
=> Company
i...
Rails 框架主要特点和优势
Rails框架: Web软件框架
Rails框架: 数据库持久性框架
Rails框架: MVC(Model-View-Control)框架
Rails框架: DSL(Domain Specific Languag...
Rails 框架主要特点和优势
视图:
css, ajax,
iphone, html,
pdf, xml,
json, xls,
js, ...
Rails 框架主要特点和优势
控制器:
access
cache
logic
...
Rails 框架主要特点和优势
模型:
migration,
validation,
status,
finder,
callbacks,
...
JRuby 与 Java 项目
●
    Java 项目向 JRuby 项目迁移
●
    基于 Java 运行环境下的 JRuby 项目
●
    基于现有 Java 企业项目的 JRuby 项目
●
    基于 Java 资源的 J...
JRuby 与 Java 项目
●   JRuby on Android
●   JRuby on Swing
●   JRuby on Jackrabbit (JCR=Java Content Repository)
●   JRuby on...
JRuby 与 Java 项目:   JRuby 实例演示 (1)
# Import Java packages
include Java
import javax.swing.JFrame
frame = JFrame.new("Hello ...
JRuby 与 Java 项目:   JRuby 实例演示 (2)
# Create a button for the frame
button = javax.swing.JButton.new(" 点击
我 !")

# Add the b...
JRuby 与 Java 项目:   JRuby 实例演示 (3)
# Add an action for the button
button.add_action_listener do |evt|
javax.swing.JOptionPa...
JRuby 与 Java 项目:   JRuby on Android
JRuby 与 Java 项目:   JRuby on Android
                        实例演示
●   Android on Mac OS X 10.5.6
●   JRuby on Android
●
   ...
Rails 的企业软件开发作用
●
    基于 Ruby 语言的数据库迁移技术
●
    基于 Ruby 语言的测试框架 Cucumber
●
    基于 Ruby 语言的易和快 PDF 生成库
    Prawn
●
    基于 Ru...
Rails 框架优势实例:   数据库迁移技术 (1)
Rails    迁移:     使用Ruby语言实现
Rails    迁移:     不重复你自己(DRY)
Rails    迁移:     支持数据/模式迁移
Rails    迁...
Rails 框架优势实例:    数据库迁移技术 (2)
class CreateCustomers < ActiveRecord::Migration
 def self.up
   create_table :customers do |t...
Rails 框架优势实例:      数据库迁移技术 (3)
class ChangeAlbumYearToInteger < ActiveRecord::Migration
 def self.up
  add_column :albums,...
Rails 框架优势实例:测试框架 Cucumber(1)
Cucumber是跨计算机语言的代码测试工具
Cucumber是使用本地化语言的代码测试工具
Cucumber是集成多种测试工具于一体的工具
Cucumber彻底分离测试描述(文字工作...
Rails 框架优势实例:     测试框架 Cucumber(2)
功能 : 管理帖子
 为了能够控制“帖子 MVC”
 作为软件普通用户
 我要完成“帖子 MCV” 创建和删除帖子的功能 

 场景 : 创建一个新的帖子
  假如 我已经在...
Rails 实例演示 (1)
# create rails application in system shell
rails demo && cd demo
./script/generate scaffold blog title:stri...
Rails 实例演示 (2)
# install rails edge current version 2.3
mkdir -p myapp/vendor && cd myapp
git clone git://github.com/rails...
重要技术资源 (1)
    JRuby/Ruby/Rails 官方网站
●   http://www.ruby-lang.org
●   http://rubyonrails.org/
●   http://jruby.codehaus.or...
重要技术资源 (2)
    JRubyRuby/Rails 博客
●   http://www.rubyinside.com/
●   htp://asciicasts.com/
●   htp://ryandaigle.com/
●   h...
重要技术资源 (3)

    Ruby/JRuby/Rails 图书
●
    《应用 Rails 进行敏捷 Web 开发》 http://www.dearbook.com.cn/book/109115
●
    《 Programmin...
Upcoming SlideShare
Loading in...5
×

J Ruby和Rails 让Ruby语言融入Java项目

1,838

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
1,838
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "J Ruby和Rails 让Ruby语言融入Java项目"

  1. 1. www.lycom.de www.hhtong.com JRuby 和 Rails 让 Ruby 语言融入于 Java 项目 QCon Beijing 2009 骆古道 / Gudao Luo gudao.luo@gmail.com, @2009, 北京 , 中国 , 08.04.2009
  2. 2. 骆古道 / Gudao Luo ● 1983 年毕业于西北工业大学数理力学系 ● 1988 年国家公派留学德国 Augsburg 大学 从事组合最优化理论学习和研究 ● 从 90 年代起在德国企业从事于软件工作 ● 《 JRuby 语言实战技术》作者 ● 个人博客为“道喜技术日记”
  3. 3. ● Ruby 语言的现实 ● JRuby/Ruby 和 Ruby 语言 ● Rails 框架主要特点和优势 ● JRuby 与 Java 项目 ● Rails 的企业软件开发作用 ● 重要技术资源
  4. 4. Ruby 语言的现实 Apple Mac OS X 10.5 Leopard 系统标准配置 Ruby和Rails
  5. 5. Ruby 语言的现实 NetBeans for Ruby
  6. 6. Ruby 语言的现实 JRuby是太阳公司投资的开源项目
  7. 7. Ruby 语言的现实 MacRuby是苹果公司投资的开源项目
  8. 8. Ruby 语言的现实 Ruby: infoQ 六大社区 之一
  9. 9. Ruby 语言的现实 Ruby语言 成为 前十大 程序语言 之一
  10. 10. Ruby 语言的现实 Ruby语言图书世界
  11. 11. Ruby 语言的现实 真实JRuby软件世界
  12. 12. Ruby 语言的现实 真实Rails软件世界
  13. 13. JRuby/Ruby 和 Ruby 语言:基本名称 Ruby语言是一门软件编程语言 JRuby是Ruby语言的Java语言实现 Ruby/CRuby是Ruby语言的C语言实现 JRuby ≈ Ruby
  14. 14. JRuby/Ruby 和 Ruby 语言: Ruby 语言 Ruby语言: 动态程序语言 Ruby语言: 100%面向对象程序语言 Ruby语言: 简洁和优美的程序语言 Ruby语言: 一切事情都是对象(Everything is an object)
  15. 15. JRuby/Ruby 和 Ruby 语言: JRuby ● JRuby:集成Java/Ruby语言强大功能 ● JRuby:比CRuby实现的运行速度更快 ● JRuby:自然线程 ● JRuby:支持外来函数接口(FFI) ● JRuby:运行于Java虚拟机 ● 。。。
  16. 16. Ruby语言: 100%面向对象程序语言 - 1.class # Fixnum - 3.14.class # Float - [1, 'Ruby', :name].class # Array - {:id => 11, :name => 'Luo' }.class # Hash - (class Company;end).class # NilClass
  17. 17. Ruby 语言 : 简洁和优美的程序语言 (1) # define a class class Company; end # use the class Company ibm = Company.new ibm.methods
  18. 18. Ruby 语言 : 简洁和优美的程序语言 (2) # define a class Company class Company attr_accessor :id def name; @name; end def name=(name); @name=name; end end # use the class Company ibm = Company.new ibm.id = 11; ibm.name = 'IBM'
  19. 19. Ruby 语言 : 一切事情都是对象 ( Everything is an object ) “有、无相生” “天下万物生于有,有生于无” – 老子 ibm.class => Company ibm.class.superclass => Object ibm.class.superclass.superclass => nil nil.class => NilClass
  20. 20. Rails 框架主要特点和优势 Rails框架: Web软件框架 Rails框架: 数据库持久性框架 Rails框架: MVC(Model-View-Control)框架 Rails框架: DSL(Domain Specific Language) Rails框架: Ruby实现的Web软件框架
  21. 21. Rails 框架主要特点和优势 视图: css, ajax, iphone, html, pdf, xml, json, xls, js, ...
  22. 22. Rails 框架主要特点和优势 控制器: access cache logic ...
  23. 23. Rails 框架主要特点和优势 模型: migration, validation, status, finder, callbacks, ...
  24. 24. JRuby 与 Java 项目 ● Java 项目向 JRuby 项目迁移 ● 基于 Java 运行环境下的 JRuby 项目 ● 基于现有 Java 企业项目的 JRuby 项目 ● 基于 Java 资源的 JRuby 项目 ● 利用 JRuby 资源开发 Java 项目
  25. 25. JRuby 与 Java 项目 ● JRuby on Android ● JRuby on Swing ● JRuby on Jackrabbit (JCR=Java Content Repository) ● JRuby on Hibernate (ORM, Ribs) ● JRuby on JBoss / GlassFish (Java Application Server) ● JRuby on 。。。
  26. 26. JRuby 与 Java 项目: JRuby 实例演示 (1) # Import Java packages include Java import javax.swing.JFrame frame = JFrame.new("Hello Swing") # Show frame frame.set_default_close_operation(JFrame:: EXIT_ON_CLOSE) frame.pack frame.visible = true
  27. 27. JRuby 与 Java 项目: JRuby 实例演示 (2) # Create a button for the frame button = javax.swing.JButton.new(" 点击 我 !") # Add the button to the frame frame.get_content_pane.add(button) frame.visible = true
  28. 28. JRuby 与 Java 项目: JRuby 实例演示 (3) # Add an action for the button button.add_action_listener do |evt| javax.swing.JOptionPane.showMessageDialog(nil, <<EOS) <html> 来自 <b><u>JRuby</u></b> 问候! <br> Button '#{evt.getActionCommand()}' clicked. EOS end
  29. 29. JRuby 与 Java 项目: JRuby on Android
  30. 30. JRuby 与 Java 项目: JRuby on Android 实例演示 ● Android on Mac OS X 10.5.6 ● JRuby on Android ● 创建 Android 应用实例 ● 运行 JRuby 程序
  31. 31. Rails 的企业软件开发作用 ● 基于 Ruby 语言的数据库迁移技术 ● 基于 Ruby 语言的测试框架 Cucumber ● 基于 Ruby 语言的易和快 PDF 生成库 Prawn ● 基于 Ruby 语言的。。。
  32. 32. Rails 框架优势实例: 数据库迁移技术 (1) Rails 迁移: 使用Ruby语言实现 Rails 迁移: 不重复你自己(DRY) Rails 迁移: 支持数据/模式迁移 Rails 迁移: 允许嵌入模型逻辑于数据迁移(而SQL 脚 本难以做到) Rails 迁移: 独立于数据库(而 SQL 脚本不独立) Rails 迁移: 允许嵌入SQL语句(例如存储过程或约束) (而有些 ORM 并不支持)
  33. 33. Rails 框架优势实例: 数据库迁移技术 (2) class CreateCustomers < ActiveRecord::Migration def self.up create_table :customers do |t| t.string :name, :limit => 30, :null => false t.integer :age t.binary :photo, :limit => 2.megabytes t.timestamps end Customer.create :name => "David", :age => "32" end def self.down; drop_table :customers; end end
  34. 34. Rails 框架优势实例: 数据库迁移技术 (3) class ChangeAlbumYearToInteger < ActiveRecord::Migration def self.up add_column :albums, :year_int, :integer, :limit => 4 Album.reset_column_information say_with_time "Updating albums" do albums = Album.find_all albums.each do |a| a.update_attribute(:year_int, a.year.to_i) say "#{a.release_name} updated!", true end end # ...
  35. 35. Rails 框架优势实例:测试框架 Cucumber(1) Cucumber是跨计算机语言的代码测试工具 Cucumber是使用本地化语言的代码测试工具 Cucumber是集成多种测试工具于一体的工具 Cucumber彻底分离测试描述(文字工作者) 与描述实现(软件工作者) Cucumber更加人性化,更加语言化,更加简单化
  36. 36. Rails 框架优势实例: 测试框架 Cucumber(2) 功能 : 管理帖子 为了能够控制“帖子 MVC” 作为软件普通用户 我要完成“帖子 MCV” 创建和删除帖子的功能  场景 : 创建一个新的帖子 假如 我已经在创建新帖子页面 当 我在输入框 <post_title> 中输入内容 <lycom.de 是什么网站 > 而且 我在输入框 <post_body> 中输入内容 <lycom.de 是一个 Ruby/Rails 技术新闻博客 > 而且 我点击按钮 <Create> 那么 我应该看到 <lycom.de 是什么网站 > 而且 我应该看到 <lycom.de 是一个 Ruby/Rails 技术新闻博客 > 场景 : 删除第一个帖子 假如 存在 <4> 个帖子 当 我删除第一个帖子 那么 还应该有 <3> 个帖子
  37. 37. Rails 实例演示 (1) # create rails application in system shell rails demo && cd demo ./script/generate scaffold blog title:string body:text rake db:migrate ./script/server # use the rails application in browser open http://0.0.0.0:3000 # debug, test and use the rails application in rails shell ./script/console
  38. 38. Rails 实例演示 (2) # install rails edge current version 2.3 mkdir -p myapp/vendor && cd myapp git clone git://github.com/rails/rails.git vendor/rails ruby vendor/rails/railties/bin/rails -v # create a rails generator file: rails_template.rb generate(:scaffold, "blog title:string body:text") rake("db:migrate") # create rails 2.3 application with rails template ruby vendor/rails/railties/bin/rails . -m rails_template.rb
  39. 39. 重要技术资源 (1) JRuby/Ruby/Rails 官方网站 ● http://www.ruby-lang.org ● http://rubyonrails.org/ ● http://jruby.codehaus.org/
  40. 40. 重要技术资源 (2) JRubyRuby/Rails 博客 ● http://www.rubyinside.com/ ● htp://asciicasts.com/ ● htp://ryandaigle.com/ ● htp://www.jrubyinside.com/ 视频 Rails 博客 : http://railscasts.com/
  41. 41. 重要技术资源 (3) Ruby/JRuby/Rails 图书 ● 《应用 Rails 进行敏捷 Web 开发》 http://www.dearbook.com.cn/book/109115 ● 《 Programming Ruby 中文版》 http://www.dearbook.com.cn/book/109114 ● 《 JRuby 语言实战技术》 http://www.china-pub.com/39945
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×