TorqueBox. Moc Javy piękno Rubiego



Podobne dokumenty
Laboratorium nr 3 Podstawy Ruby on Rails

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Wykład nr 1 Język Ruby i framework Rails

Wprowadzenie do języka Ruby

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Programowanie warstwy klienta w aplikacji JavaEE

Google Web Toolkit. Piotr Findeisen

Metaprogramowanie w Ruby

ym4r Google Maps w Ruby on Rails

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Programowanie w Ruby

Programowanie w Ruby

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Zaawansowane aplikacje WWW - laboratorium

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie obiektowe

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Metody dostępu do danych

Komponenty sterowane komunikatami

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Aplikacje w środowisku Java

Klasy i obiekty cz II

Enterprise JavaBeans

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Instrukcja laboratoryjna cz.3

Programowanie w Ruby

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Kurs języka Ruby. Ruby on Rails ActionPack

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

1 Atrybuty i metody klasowe

Podstawy języka Java. przygotował:

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

ZAPOZNANIE SIĘ Z TWORZENIEM

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Programowanie telefonów z Windows Phone 7, cz. 2

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Programowanie obiektowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wstęp do ruby dla programistów javy

Technologie Informacyjne

Języki i metody programowania Java. Wykład 2 (część 2)

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Programowanie obiektowe

Systemy Rozproszone - Ćwiczenie 6

Programowanie w Ruby




Projektowanie aplikacji internetowych laboratorium

StormGrind hackowanie w chmurkach. Marek Goldmann Software Developer, JBoss by Red Hat , Gliwice

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

prepared by: Programowanie WWW Servlety

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

WPROWADZENIE DO JĘZYKA JAVA

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie i projektowanie obiektowe

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Ruby i Ruby on Rails. Mateusz Drożdżyński

Podstawy Programowania

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

JavaFX. Programowanie Obiektowe Mateusz Cicheński

Programowanie wielowarstwowe i komponentowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Terminarz rozgrywek Ekstraklasy w sezonie 2016/2017

Przetwarzanie danych w chmurze

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Język programowania Scala + aktorzy Akka

Java Platform Micro Edition

Kurs programowania. Wykład 8. Wojciech Macyna

I.Wojnicki, Tech.Inter.

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

epuap Dodanie wyjątków do listy witryn zaufanych do instalowania dodatków i uruchamiania apletów Java

Moc płynąca z kart graficznych

METODY PROGRAMOWANIA

JAVA EE 8. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

1 Wprowadzenie do J2EE

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

Programowanie w Javie

Przetwarzanie języka w praktyce. przykładzie problemu rozstrzygania wieloznaczności

akademia androida Składowanie danych część VI

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Grails. v 1.1 Web Framework

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

media Blitz wydajne sytemy szablonów

Laboratorium Programowania Kart Elektronicznych

n+1 sposobów na automatyczne testy aplikacji mobilnych WrotQA, webinar Łukasz Siudakiewicz Damian Szczurek Automation Test Engineer

Wzorce logiki dziedziny

Projektowanie algorytmów rekurencyjnych

Transkrypt:

TorqueBox Moc Javy piękno Rubiego

Marek.

JBoss AS 7 + =

No, do rzeczy panie!

Dziś w menu:

50 / 40 / 10

Czym jest TorqueBox?

Ruby i Java? Huh?

DO RZECZY!

Cel.

Web: Rails, Sinatra, Rack.

Ponadto: wiadomości, zadania, usługi, [...].

Brzmi znajomo?

Java już to ma, wykorzystajmy to!

Randkowanie JBoss AS oraz Ruby.

Ale dlaczego Ruby?

Bob lubi Rubiego.

Dynamiczny.

Brak kompilacji.

Liberalny.

Zwięzły.

Set<Person> people = new HashSet<Person>(); for (Team each : teams) { people.addall(each.getmembers()); } for (Person each : people) { each.promote(); } com/foo/anything.java

teams. collect(&:members). flatten.uniq.each &:promote! anything.rb

Wporzo, ale co z wydajnością?

JRuby FTW!

Bardzo szybkie środowisko.

Prawdziwe wątki.

Biblioteki Javy, za free.

TB 1.x JBoss AS 6 TB 2.x JBoss AS 7

Instalacja.

$ wget http://torquebox.org/builds/latest/torquebox-dist-bin.zip $ unzip -q torquebox-dist-bin.zip $ export TORQUEBOX_HOME=$PWD/torquebox-1* $ export JBOSS_HOME=$TORQUEBOX_HOME/jboss $ export JRUBY_HOME=$TORQUEBOX_HOME/jruby $ export PATH=$JRUBY_HOME/bin:$PATH

Zbyt skomplikowane?

$ gem install torquebox-server --pre \ --source http://torquebox.org/2x/builds/ LATEST/gem-repo/ $ torquebox run

Tak, na Windowsie również.

Zainstalowane, co dalej?

Aplikacja webowa, powiedzmy Rails.

$ rails new app -m \ $TORQUEBOX_HOME/share/rails/template.rb $ cd app $ rake torquebox:deploy[ /app ] http://localhost:8080/app/

To może jakiś kod co działa?

$ rails g scaffold Coffee \ name:string description:text $ rake db:migrate http://localhost:8080/app/coffees/

Demo!

Nie takie rzeczy widziałem!

Integracja z Javą.

Ruby class SomeController end def index session[:password] = 'sw0rdfish' end

Java public class SomeServlet { public void doget(httpservletrequest req, HttpServletResponse resp) { request.getsession().getvalue("password"); } }

Klastrowanie?

Sklastruj JBoss a!

mod_cluster

Dynamiczna konfiguracja!

Koniec o aplikacjach webowych.

Zaplanowane zadania.

class NewsletterSender def run subscriptions = Subscription.find(:all) subscriptions.each do e send_newsletter(e) end end end app/jobs/newsletter_sender.rb

jobs: monthly_newsletter: description: first of month job: NewsletterSender cron: 0 0 0 1 *? config/torquebox.yml

Messaging.

Zadania w tle.

class Something def foo end def bar end end

something = Something.new something.foo something.bar

class Something include TorqueBox::Messaging::Backgroundable def foo end def bar end end

something = Something.new something.background.foo something.bar

class Something include TorqueBox::Messaging::Backgroundable always_background :foo def foo end def bar end end

something = Something.new something.foo something.bar

Kolejki.

queues: /queues/questions /queues/answers topics: /topics/new_accounts /topics/notifications config/torquebox.yml

messaging: /topics/print: PrintHandler: color: red /queues/popular: AdultObserver: filter: "age >= 18" concurrency: 5 config/torquebox.yml

include TorqueBox queue = Messaging::Queue.new '/queues/foo' queue.create... queue.destroy

include TorqueBox::Messaging class PrintHandler < MessageProcessor def initialize(opts) @color = opts['color'] end def on_message(body) puts #{body} in #{@color} end end config/torquebox.yml

Usługi.

Nie-webowe, długie demony.

class MyService def initialize(opts={}) @queue = Messaging::Queue.new(opts[:queue]) end def start Thread.new { run } end def stop @done = true end def run until @done @queue.publish(time.now) sleep(1) end end end app/processors/my_service.rb

Cacheowanie.

Wstrzykiwanie.

package com.mycorp; @ApplicationScoped class Something { @Inject private Else else; } public void print(string what) { # blah } @ApplicationScoped class Else { }

class MyService include TorqueBox::Injectors def initialize(opts={}) @thing = inject(java::com.mycorp.something) @thing.print( Marek ) end end

CDI to tylko przykład: kolejki, tematy, heroina, inne rzeczy.

Drugs are bad, m kay?

inject_topic( "/topics/questions" ) inject_queue( "/queues/answers" ) inject_namig( "java:comp/env/jdbc/myds )

Demo!

Firefox Twitter Twitter Service TorqueBox JBoss AS 7 Konsument kolejki Zadania Rails TorqueBox Kolejka JMS CDI JPA 2.0 JBoss AS 7 Baza danych

OK, fajnie, ale jak to jest wydajne?

http://torquebox.org/ http://github.com/torquebox http://github.com/goldmann/ confitura-2011-torquebox-demo IRC: #torquebox on FreeNode @torquebox

Dzięki. Nie zapomnij o naklejkach!