ruby no desktop - marcelo castellani

63
+ Marcelo Castellani Ruby + Rails no mundo real 2009 Ruby no Desktop

Upload: guest2a3a90

Post on 28-May-2015

4.155 views

Category:

Technology


0 download

DESCRIPTION

Apresentação do Marcelo Castallani feita no evento Ruby + Rails no Mundo Real

TRANSCRIPT

Page 1: Ruby No Desktop - Marcelo Castellani

+

Marcelo Castellani

Ruby + Rails no mundo real 2009

Ruby no

Desktop

Page 2: Ruby No Desktop - Marcelo Castellani

+Ok, Rails

Page 3: Ruby No Desktop - Marcelo Castellani

+Por incrível que pareça, o Ruby existe desde muito antes do Rails !!!!(acredite, é verdade, Rails é apenas uma aplicação escrita em Ruby)

Page 4: Ruby No Desktop - Marcelo Castellani

+O que será apresentado nesta palestra?

FXRuby

GTK

RubyCocoa

Shoes

Page 5: Ruby No Desktop - Marcelo Castellani

+The 2008 Ruby GUI SurveyAlex Fenton

Page 6: Ruby No Desktop - Marcelo Castellani

+The 2008 Ruby GUI Survey

Pesquisa realizada por Alex Fenton em 2008, com 399 desenvolvedores de todo o mundo.

O objetivo foi identificar o melhor, o mais simples e o mais usado toolkit para o desenvolvimento de aplicações GUI.

Interface gráfica do usuário (GUI) é um tipo de interface do usuário que permite a interação com dispositivos digitais através de elementos gráficos como ícones e outros indicadores visuais, em contraste a interface de linha de comando.

Page 7: Ruby No Desktop - Marcelo Castellani

+The 2008 Ruby GUI Survey

A interação é feita geralmente através do mouse, teclado ou dispositivos especiais (como touch screen), com os quais o usuário é capaz de selecionar símbolos e manipulá-los de forma a obter algum resultado prático.

Esses símbolos são designados de widgets e são agrupados em toolkits.

Page 8: Ruby No Desktop - Marcelo Castellani

+Widgets

Um widget é um componente de uma interface gráfica do utilizador (GUI), o que inclui janelas, botões, menus, ícones, barras de rolagem, etc..

Alguns widgets tem por objetivo receber dados do usuário e com isso gerar algum tipo de registro, como os controles de formulário.

Componentes como entrada de texto, caixa de seleção, menu de seleção, botões de múltipla escolha e outros são capazes de definir a natureza dos dados a serem coletados, e dessa forma enumerar todas as possibilidades de dados a serem apresentados pelo usuário.

Page 9: Ruby No Desktop - Marcelo Castellani

+O que quer dizer widget?

A primeira referência a essa palavra vêm da peça A Beggar on Horseback (1924), escrita por George S. Kaufman e Marc Connelly, onde o termo representava objetos inanimados com um valor puramente mercantil e sem nenhuma ligação espiritual ou artística.

Page 10: Ruby No Desktop - Marcelo Castellani

+Widgets e orientação a objetos

Todo sistema baseado em interface gráfica do usuário usa widgets.

Widgets são um dos mais perfeitos exemplos de orientação a objetos pois cada um existe isolado e pode ser aproveitado dentro de um contexto maior, interagindo com outros, mas nunca deixando de ser único → um botão é sempre um botão, por exemplo.

Page 11: Ruby No Desktop - Marcelo Castellani

+Experiência em Ruby

Page 12: Ruby No Desktop - Marcelo Castellani

+Ruby + GUI?

Page 13: Ruby No Desktop - Marcelo Castellani

+O que procuram num toolkit Ruby?

Page 14: Ruby No Desktop - Marcelo Castellani

+Qual seu toolkit preferido/em uso?

Page 15: Ruby No Desktop - Marcelo Castellani

+Qual seu toolkit preferido/em uso?

Page 16: Ruby No Desktop - Marcelo Castellani

+Conclusões sobre a pesquisa

A escolha de um toolkit para desenvolvimento de aplicações desktop usando Ruby passa primeiro pela facilidade de distribuição e depois pela disponibilidade de documentação.

Hoje existe uma fragmentação muito grande, sendo o Shoes o toolkit mais usado, porém com uma proporção de menos de um para cada quatro desenvolvedores.

O primeiro toolkit para desenvolvimento de aplicações desktop em Ruby, o TK, está caindo rapidamente em desuso.

Page 17: Ruby No Desktop - Marcelo Castellani

+Comparando os toolkits

Toolkit URL Recomendado para quais plataformas?

GTK+ http://ruby-gnome2.sourceforge.jp/

Ambientes baseados em Gnome/GTK (Ubuntu e OpenSolaris, por exemplo).

FXRuby http://www.fxruby.org/ Windows 2000, XP, Vista e 7

RubyCocoa / MacRuby

http://www.rubycocoa.com/

Mac OS X

Shoes http://shoooes.net/ Windows 2000, XP, Vista, 7, Linux diversos e Mac OS

Page 18: Ruby No Desktop - Marcelo Castellani

+

Ruby Gtk+Especialmente para ambientes Gtk, como o Ubuntu, OpenSolaris e BSD.

Page 19: Ruby No Desktop - Marcelo Castellani

+O que é GTK?

GTK+ é um toolkit multi-plataforma para a criação de interfaces gráficas. Ele foi desenvolvido para o GIMP. Por isso foi batizado de GIMP toolkit, com abreviação GTK+.

O GTK+ é muito popular, sendo usado em um grande número de aplicações e no ambiente de desktop GNOME (que por sua vez também é muito popular).

GTK+ é escrito em C e seu design é orientado a objeto. Existem bindings para construção de programas GTK+ em C, C++, Pascal, Perl, Java, Python, Ruby e PHP (PHP-GTK).

Page 20: Ruby No Desktop - Marcelo Castellani

+Aparência e ambientes

O toolkit é configurável pelo usuário e oferece muitas opções de engines. Há engines emulando a aparência de outros populares toolkits ou plataformas como Windows 95, Qt, ou NEXTSTEP.

O ambiente GNOME usa GTK+ como base do seu sistema e muitos programas para GNOME usam GTK+ como seu Toolkit.

Em dispositvos móveis, o GTK+ é usado como base de ambientes como o GPE Palmtop e o Maemo.

GTK+ também pode ser usado no Microsoft Windows e outros menos usuais como framebuffer e ncurses.

Apesar de ser preferencialmente usado no GNOME, os programas GTK+ geralmente rodam sem problemas em outros ambientes como KDE, Xfce ou FluxBox.

Page 21: Ruby No Desktop - Marcelo Castellani

+GIMP = Gnu Image Manipulation Program

Page 22: Ruby No Desktop - Marcelo Castellani

+Gtk + Ruby

Para usar o Gtk no Ruby basta usar o pacote GTK, disponível junto a maior parte das distribuições Ruby.

Caso esteja desenvolvendo para ambiente Windows é importante instalar as bibliotecas do GTK, para que sua aplicação efetivamente funcione.

Para instalar as bibliotecas do Ruby e GTK no ambiente Windows visite o link abaixo, para mais informações:

http://ruby-gnome2.sourceforge.jp/

Page 23: Ruby No Desktop - Marcelo Castellani

+Exemplo de código

Page 24: Ruby No Desktop - Marcelo Castellani

+Resultado da execução

Uma janela Gtk

Page 25: Ruby No Desktop - Marcelo Castellani

+Tratando os sinais – parte 1# inclui suporte a Gtk no projetorequire 'gtk2'

# evento de exclusão de widgetsdef delete_event(widget) return falseend

# fim do programadef destroy(widget) Gtk.main_quitend

# inicia o engine do GtkGtk.init

# cria uma nova janelajanela = Gtk::Window.new(Gtk::Window::TOPLEVEL)janela.set_default_size(400, 300)janela.title= "Alô, mundo => GTK + Ruby"janela.signal_connect("delete_event") { delete_event(janela) }janela.signal_connect("destroy") { destroy(janela) }

Page 26: Ruby No Desktop - Marcelo Castellani

+Tratando os sinais – parte 2# cria uma caixa para ordenar nossos objetosbox = Gtk::VBox.new(false, 0)janela.add(box)

# cria um botão e um labelbotao = Gtk::Button.new("Saudação")rotulo = Gtk::Label.new("")

# adiciono o evento ao botãobotao.signal_connect("clicked") { rotulo.label = "Olá, mundo" }

# mostra os componentes e a janelabox.pack_start(botao, true, true, 5)box.pack_start(rotulo, true, true, 5)botao.showrotulo.showbox.showjanela.show

# passa o controle pro GtkGtk.main

Page 27: Ruby No Desktop - Marcelo Castellani

+Resultado da execução

Clique no botão

Page 28: Ruby No Desktop - Marcelo Castellani

+Pra onde ir agora?

http://ruby-gnome.sourceforge.net/tutorial/

http://ruby-gnome2.sourceforge.jp/hiki.cgi?tut-gtk

http://www.webdotdev.com/nvd/content/view/1608/1/

Page 29: Ruby No Desktop - Marcelo Castellani

+

FXRubyEspecialmente para ambiente Microsoft, nos Windows 2000, XP, Vista e 7

Page 30: Ruby No Desktop - Marcelo Castellani

+O que é o FXRuby

FXRuby é uma GEM que incorpora o toolkit multiplataforma Fox, usado para o desenvolvimento de aplicações GUI em C e C++.

Existem ports do Fox para outras linguagens, como o FxPy (Python) e o EiffelFox (para Eiffel).

O Fox é um toolkit extremamente poderoso e flexível, que permite a construção de interfaces poderosas. Existem aplicativos complexos inteiros feitos em Ruby e FXRuby dado seu poder.

Page 31: Ruby No Desktop - Marcelo Castellani

+BeERP – Sistema ERP Comercial

Page 32: Ruby No Desktop - Marcelo Castellani

+BeERP – Sistema ERP Comercial

Page 33: Ruby No Desktop - Marcelo Castellani

+FreeRIDE – Free Ruby IDE

Page 34: Ruby No Desktop - Marcelo Castellani

+Discretizer – interactive mesh creation tool

Page 35: Ruby No Desktop - Marcelo Castellani

+Fox GUI Builder

Page 36: Ruby No Desktop - Marcelo Castellani

+Links

http://freeride.rubyforge.org/wiki/wiki.pl

http://www.attiksystem.ch/beerp/

http://www.discretizer.org/

http://fox-tool.rubyforge.org/

Page 37: Ruby No Desktop - Marcelo Castellani

+Hello World

Page 38: Ruby No Desktop - Marcelo Castellani

+Scribble

Page 39: Ruby No Desktop - Marcelo Castellani

+Scribble – botão

Page 40: Ruby No Desktop - Marcelo Castellani

+Scribble

Page 41: Ruby No Desktop - Marcelo Castellani

+Imagem e Canvas

Page 42: Ruby No Desktop - Marcelo Castellani

+FXTable

Page 43: Ruby No Desktop - Marcelo Castellani

+FxGL

Poderosa API para a criação de aplicações OpenGL com Ruby.

Page 44: Ruby No Desktop - Marcelo Castellani

+Hello OpenGL

Page 45: Ruby No Desktop - Marcelo Castellani

+Algo mais complexo

Page 46: Ruby No Desktop - Marcelo Castellani

+rubyscript2exe.rb

Script para criar “executáveis” para Win32 a partir de scripts Ruby.

Ele, na verdade, cria um arquivo .exe que possui a Máquina Virtual do Ruby, as bibliotecas necessárias para execução e também o script.

Integra-se perfeitamente ao FXRuby, de maneira que é possível distribuir facilmente uma aplicação inteira.

Um inconveniente é que os executáveis gerados ficam enormes. Um script de 5KB, após ser processado, chega a 4MB.

Page 47: Ruby No Desktop - Marcelo Castellani

+Para onde ir agora?

http://www.fxruby.org/

http://www.fox-toolkit.org/

http://www.pragprog.com/titles/fxruby

Page 48: Ruby No Desktop - Marcelo Castellani

+

Ruby Cocoa e MacRubyExclusivamente para usuários de Mac

Page 49: Ruby No Desktop - Marcelo Castellani

+O que é Cocoa, RubyCocoa e MacRuby?

Cocoa é o toolkit para o desenvolvimento de aplicações GUI para o Mac OS X, usando Objective-C e o X-Code.

RubyCocoa é um port para o uso da linguagem Ruby para o desenvolvimento de aplicações para Mac OS X.

MacRuby é a evolução do RubyCocoa e que será lançado em breve (em 2009, acredito).

Page 50: Ruby No Desktop - Marcelo Castellani

+RubyCocoa versus MacRuby

RubyCocoa

MacRuby

Page 51: Ruby No Desktop - Marcelo Castellani

+O que preciso para desenvolver em Ruby para meu Mac?

XCode

Interface Builder

Ruby

Page 52: Ruby No Desktop - Marcelo Castellani

+XCode

Page 53: Ruby No Desktop - Marcelo Castellani

+Interface Builder

Page 54: Ruby No Desktop - Marcelo Castellani

+Novo projeto no XCode

Page 55: Ruby No Desktop - Marcelo Castellani

+Para onde ir agora?

http://www.pragprog.com/titles/bmrc/rubycocoa

http://www.rubycocoa.com/

http://developer.apple.com/cocoa

http://www.macruby.org/

Page 56: Ruby No Desktop - Marcelo Castellani

+

ShoesShoes is for everyone

Page 57: Ruby No Desktop - Marcelo Castellani

+O que é o Shoes?

É uma biblioteca gráfica criada pelo __why, the lucky stiff, uma das personalidades mais conhecidas do universo Ruby, principalmente pelo seu excelente guia de Ruby e pelo Try Ruby.

Page 58: Ruby No Desktop - Marcelo Castellani

+Shoes é simples

Page 59: Ruby No Desktop - Marcelo Castellani

+Shoes é inteligente

Page 60: Ruby No Desktop - Marcelo Castellani

+Shoes é poderoso

Page 61: Ruby No Desktop - Marcelo Castellani

+Shoes é multiplataforma

Page 62: Ruby No Desktop - Marcelo Castellani

+Para onde ir agora?

http://en.wikipedia.org/wiki/Shoes_(GUI_toolkit)

http://shoooes.net/

http://hackety.org/press/