Porównanie zrębów : Ruby on Rails i Lift

Podobne dokumenty
Czym jest Ruby on Rails?

Programowanie obiektowe

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

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Aplikacje webowe z wykorzystaniem. Scala i Lift. Opracował: Mikołaj Sochacki

Kurs języka Ruby. Ruby on Rails ActionPack

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Metaprogramowanie w Ruby

Programowanie w Ruby

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Scala - programowanie obiektowo-funkcyjne

Wprowadzenie do języka Ruby

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

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Google Web Toolkit Michał Węgorek ZPO 2009

TorqueBox. Moc Javy piękno Rubiego

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Programowanie w Ruby

Scala. Obiektowo-funkcyjny język programowania. Zbyszek Skowron

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

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie MorphX Ax

Przegląd języka Python. Łukasz Anwajler

Programowanie obiektowe

JavaScript funkcyjność

ym4r Google Maps w Ruby on Rails

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

CouchDB. Michał Nowikowski

Wybrane działy Informatyki Stosowanej

Aplikacje Internetowe, Servlety, JSP i JDBC

media Blitz wydajne sytemy szablonów

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Podstawy i języki programowania

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Programowanie obiektowe. Wprowadzenie

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

OpenLaszlo. OpenLaszlo

Programowanie w Ruby

Programowanie obiektowe zastosowanie języka Java SE

Język programowania Scala + aktorzy Akka

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Programowanie RAD Delphi

Wykład 0 Informacje Podstawowe

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

1 Atrybuty i metody klasowe

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

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

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

PyPy's Approach to Virtual Machine Construction

Podstawy programowania. Wprowadzenie

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Python wstęp do programowania dla użytkowników WCSS

Programowanie obiektowe Wykład 1: Wprowadzenie

Programowanie obiektowe

Dokumentacja projektu QUAIKE Architektura oprogramowania

Programowanie w Ruby

Programowanie i projektowanie obiektowe

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

JAX-RS czyli REST w Javie. Adam Kędziora

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Wstęp do programowania

Zwinne i lekkie aplikacje webowe z. Jacek Laskowski

Inteligentny czujnik w strukturze sieci rozległej

Programowanie Komponentowe WebAPI

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

KOTLIN. Język programowania dla Androida

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Zaawansowany kurs języka Python

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

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

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Java Developers Day. Silniki reguł biznesowych

Komunikacja Człowiek-Komputer

Programowanie w języku Java WYKŁAD

Programowanie współbieżne i rozproszone

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Grails. v 1.1 Web Framework

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Technologie internetowe ASP.NET Core. Paweł Rajba

Aplikacje w środowisku Java

Wstęp do programowania

Transkrypt:

Porównanie zrębów : on Rails i Lift Zagadnienia Programowania Obiektowego Wydział Matematyki, Informatyki i Mechaniki Uniwersytet Warszawski 14.12.2009

Spis treści 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Spis treści 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

- wprowadzenie Czym jest? to interpretowany język programowania Powstał w 1995 roku, stworzony przez Yukihiro Matsumoto Podstawa popularnego zrębu on Rails 2005 rok - 2 ksiażki o i RoR najlepiej sprzedawanymi pozycjami z kategorii Programowanie Aktualna stabilna wersja - 1.9.1 Polecam spróbować w przegladarce: http://tryruby.sophrinix.com/

Najważniejsze cechy Rubiego wieloparadygmatowość (funkcyjność, obiektowość, imperatywność, refleksyjność) otwarte oprogramowanie przenośność (Unix, DOS, Windows, Mac OS X, BeOS itd.) wiele implementacji: MRI, YARV, J, Rubinius prosta składnia automatyczne odśmiecanie pamięci przeciażanie operatorów obiektowość

Najważniejsze cechy Rubiego c.d. obsługa wyjatków wyrażenia regularne wbudowane w składnię liczby całkowite o dowolnych rozmiarach dodawanie metod do obiektów bloki i lambda wyrażenia Duck typing - dynamiczne typowanie moduły - rodzaj wielodziedziczenia możliwość zmiany praktycznie wszystkiego

Składnia Przykład Przypomina Perla, Pythona czy Smalltalka..ale wcięcia nie maja znaczenia Zwięzłe, czytelne programy..dzięki wszechobecnej obiektowości 5. times { p r i n t " W i t a j! " } 1 + 2 # to to samo, co : 1. + ( 2 ) # i : 1. send " + ", 2

Składnia Przykład Przypomina Perla, Pythona czy Smalltalka..ale wcięcia nie maja znaczenia Zwięzłe, czytelne programy..dzięki wszechobecnej obiektowości 5. times { p r i n t " W i t a j! " } 1 + 2 # to to samo, co : 1. + ( 2 ) # i : 1. send " + ", 2

Obiektowość Przykład class Person a t t r _ r e a d e r : name, : age def i n i t i a l i z e (name, age ) @name, @age = name, age end def <=>( person ) @age <=> person. age end def to_s " #@name (#@age) " end end

Bloki, domknięcia, wyrażenia lambda Przykład 1 search_ engines = %w[ Google Yahoo MSN]. map do engine " h t t p : / / www. " + engine. downcase + ". com" end Przykład 2 lambda { a p a+a } # procedury to o b i e k t y! p = proc { a p a+a } p. c a l l 7 # wynik : 14

Mixin-y i dziedziczenie Brak wielodziedziczenia, ale... Przykład class MyArray i n c l u d e Enumerable end

Elastyczność Rubiego Przykład class Numeric def plus ( x ) s e l f. + ( x ) end end y = 5. plus 6 # y wynosi t e r a z 11

Dodawanie metod do obiektów Przykład class Foo def greet p r i n t " Hello, world! \ n " end end x=foo. new ; y=foo. new class << y def greet p r i n t " Goodbye, world! \ n " end end

Spis treści 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Historia Twórca- Martin Odersky Pizza - funkcyjność na JVM (funkcje wysokiego rzędu, klasy generyczne, dopasowywanie wzorców) Generic Java javac "I wanted to start with a clean sheet, and see whether I could design something that s better than Java." Oparty o JVM, integracja z Java (można używać na.net) Poczatek prac: 2002, pierwsza publiczna wersja: 2003, wersja 2.0: 2006, obecnie zbliża się 2.8

System typów Statyczne i silne typowanie. Ale kompilator jest inteligentny: Przykład scala > v a l x = " abc " x : java. lang. S t r i n g = abc scala > def add ( i : I n t, j : I n t ) = i + j add : ( I n t, I n t ) I n t

Ważne cechy języka Skalowalny- skrypty i wielkie aplikacje, wydajny (jak Java) XML jako część języka Przykłady scala > v a l xml = <div >abc< / div > xml : scala. xml. Elem = <div >abc< / div > Przykład Minimalna składnia, operatory sa metodami scala > v a l x = ( 1 ). + ( 2 ) x : scala. I n t = 3

Funkcyjność: funkcje Deklaracja v a l f : I n t => S t r i n g = x => " Number : " + x def w42( f : I n t => S t r i n g ) = f ( 42) Częściowa aplikacja def plus ( a : I n t, b : I n t ) = "Sum i s " + ( a + b ) v a l p = plus (42, _ : I n t )

Funkcyjność: domknięcia Przykłady var s t a t e = 1 v a l f = ( i : I n t ) => s t a t e += i f ( 42) / / s t a t e == 43

Funkcyjność cd. Parametry typów def append[u >: T](x: U) =... //U musi być nadklasa T def append[u <: T](x: U) =... //U musi być podklasa T Dopasowywanie wzorców Niezmienność (val kontra var)

Obiektowość Funkcja też jest obiektem Nie ma typów prostych Przykłady scala > ( 1 ). t o S t r i n g res2 : java. lang. S t r i n g = 1 Obiekt jest obiektowy (a statyczność nie)

Trait: Cechy Scali Trait = Interfejs z Javy (kontrakt) + Mixin z Rubiego (częściowa implementacja) bez wielodziedziczenia (linearyzacja) Przykłady class Animal t r a i t Furry extends Animal t r a i t HasLegs extends Animal t r a i t FourLegs extends HasLegs class Cat extends Animal with Furry with FourLegs / / Cat > FourLegged > HasLegs > F u r r y > Animal

Współbieżność z aktorami Współbieżność z aktorami Aktor- asynchroniczny komponent odbierajacy, wysyłajacy (actor! msg) i odpowiadajacy (reply()) na wiadomości Aktor to nie watek. Kiedy aktor czeka, watek jest zwalniany. W pamięci mamy kontynuację. Niezmienność => nie potrzeba blokad

Spis treści 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Popularność Indeks TIOBE: 1 Java 18.373% 2 C 17.315%... 10 2.404%... 34 0.244%

Twitter Przykład z prawdziwego świata : 1 "We like that it s such a full featured language, that it s fun to code in." 2 Kiepskie watki, problemy z długo żyjacymi procesami, gorsza wydajność 3 "I think it may just be a property of large systems in dynamic languages, that eventually you end up rewriting your own type system, and you sort of do it badly. You re checking for null values all over the place."

Twitter Przykład z prawdziwego świata : 1 Some of the core collection libraries in are not quite up to snuff yet. And apparently they are working on that right now." 2 "It still seems like IDE and editor support is, perhaps not in its infancy, but in its awkward teenage years."

Spis treści Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

on Rails - filozofia Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych on Rails powstał w 2004 roku, stworzony przez Davida Heinemeiera Hanssona. Filozofia języka opiera się na: DRY - Don t Repeat Yourself Convention over Configuration (Konwencja Ponad Konfiguracja) REST (Representational State Transfer)

Lift - Historia Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Twórca Lift jest David Pollak. Wersja 1.0 została opublikowany w lutym 2009. Obecnie mamy wersję 1.6 Chyba najnowszy zrab webowy, wyciaga wnioski z wcześniejszych: Rails - znakomita obsługa CRUD Seaside - podział na komponenty Wicket - View first Lift -> -> JVM (bliblioteki Javy, Tomcat, Maven, Jetty,...)

Spis treści Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Lift - Konfiguracja Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Czego nam potrzeba? (Przykładowy zestaw) Eclipse + Eclipse Plugin Maven + folder artefaktów http://scala-tools.org/ Żadnych konfiguracyjnych plików xml, zamiast nich klasa bootstrap.boot

RoR - Jak zaczać? Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Konieczna jest instalacja: języka Gems systemu zarzadzania baza danych A jeślibyśmy chcieli się pochwalić innym: serwera WWW odpowiedniego dodatku pozwalajacego uruchamiać na serwerze

RoR - Tworzenie projektu Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Spróbujmy...

Spis treści Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

RoR - widoki Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Wyraźny podział MVC Wsparcie XML REST

Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Lift - Renderowanie: snippety i widoki Widok może się zakraść do kontrolera, logika do widoku nie (View first) Renderowanie oparte na komponentach i XML Snippet (strzęp)- funkcja wypełnia XML pożadanymi wartościami

Lift - Renderowanie: widoki Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych View (widok) - funkcja generuje kod XMLa (LiftView, InsecureLiftView, dispatch) Widok class ExpenseView extends L i f t V i e w { o v e r r i d e def dispatch = { case " enumerate " => doenumerate _ } def doenumerate ( ) : NodeSeq = { < l i f t : surround with=" d e f a u l t " at=" content " > { expenseitems. totable } < / l i f t : surround > } }

Lift - Mapa strony Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Z poziomu metody Boot możemy zarzadzać dostępnościa poszczególnych stron, dzielić je na grupy, ukrywać Menu.builder,.title,.group,.item Hidden, If (i Unless), LocGroup, Template (wskazuje wzorzec dla tego odsyłacza), Snippet, LocSnippet (wskazuja snippet do wykonania)

Interaktywny chat, Comet Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Pokaz praktyczny.

Spis treści Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Lift Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Konfiguracja w Boot Dostępne zręby: Mapper, Recored (także integracja z JPA) Wszystko obiektowo (choć można też pisać zapytania ) By, NotBy, By_>, ByList (IN), NullRef, Like TreeNode.findAll(ByRef(TreeNode,parent, TreeNode.id)) BySql( amount between? and?, lowval, highval)) MetaMegaProtoUser

RoR a bazy danych Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych Prosta konfiguracja Podział na bazę rozwojowa, testowa i produkcyjna Odsunięcie od SQLa

Spis treści Który lepszy i do czego? 1 2 Wprowadzenie Konfigurowanie aplikacji Podstawowe sposoby prezentacji danych Sposoby łaczenia się z baza danych 3 Który lepszy i do czego?

Który lepszy i do czego? Główne cechy RoRa + Dobra dokumentacja + Zaangażowana społeczność + Szybki start + Skalowalność (mimo wszystko) + Wyraźny podział MVC Przeciętna wydajność Problemy wpasowania w inne systemy

Który lepszy i do czego? Główne cechy RoRa + Dobra dokumentacja + Zaangażowana społeczność + Szybki start + Skalowalność (mimo wszystko) + Wyraźny podział MVC Przeciętna wydajność Problemy wpasowania w inne systemy

Który lepszy i do czego? Główne cechy Lifta + Dobra wydajność + Szybko rosnaca społeczność + Oparty na języku, który daje duże możliwości (ale zawsze można pisać jak w Javie) + Możliwość integracji z Java + Nie ma logiki w widoku + Wbudowane wsparcie dla sieci czasu rzeczywistego Mała społeczność (google group: ok. 1600 członków, 14 XII 09) Słaba dokumentacja Wymaga kompilacji

Który lepszy i do czego? Główne cechy Lifta + Dobra wydajność + Szybko rosnaca społeczność + Oparty na języku, który daje duże możliwości (ale zawsze można pisać jak w Javie) + Możliwość integracji z Java + Nie ma logiki w widoku + Wbudowane wsparcie dla sieci czasu rzeczywistego Mała społeczność (google group: ok. 1600 członków, 14 XII 09) Słaba dokumentacja Wymaga kompilacji

Zwycięzca Który lepszy i do czego?... czas pokaże

Zwycięzca Który lepszy i do czego?... czas pokaże

Dodatek Więcej informacji Więcej informacji I Oficjalna strona. (Także po polsku) http://www.ruby-lang.org Oficjalna strona on Rails. (Także po polsku) http://www.rubyonrails.org Przewodniki po on Rails. (Wersja angielska bardziej rozbudowana) http://apohllo.pl/guides/ Strona domowa Scali http://www.scala-lang.org/

Dodatek Więcej informacji Więcej informacji II Twitter on. A Conversation with Steve Jenson, Alex Payne, and Robey Pointer Bill Venners. http://www.artima.com/scalazine/articles/ twitter_on_scala.html Strona domowa Lifta http://liftweb.net/ The Definitive Guide to Lift Chen-Becker, Danciu, Weir http: //groups.google.com/group/the-lift-book

Dodatek Więcej informacji Więcej informacji III Lift: View first David Pollak. http://wiki.liftweb.net/index.php/lift_ View_First