SlideShare a Scribd company logo
1 of 102
Panel diskusija Usporedba web frameworka
Uvod
Ideja Svi su se susreli s nekim tehnologijama Rijetko tko je probao sve Dovesti top stručnjake za svaku tehnologiju
Ekipa
Mislav Marohnić / Rails Rails Core Programiranjekaohobiiposao Povijest: C++ (faks), PHP (standardno) Radio uglavnomza web startupe
Stjepan Zlodi / Django 24 sata digital ,[object Object]
Računalima se počeobaviti u Orwellovojgodini
Razviosklonostprema RAD-u
Produktivnalijenost,[object Object]
Goran Jurić / Zend Framework NCL Media Grupa Prvu stranicu napravio 1998.godine PHP-om se bavi > 8 godina  Zend Framework prati od v0.1 Sa v1.5 započeo razvoj CMS-a za potrebe kompanije
Zoran Regvart / Spring CROZ Z80 asm/Basic, Pascal , C/C++ , PHP, Java, Ruby, Python, C# PHP/HTML freelancer (davno) arhitekt @ Crozd.o.o.  www.croz.hr(predugo)
Moderator
Tomislav Car Infinum ex.PHP svašta non web (Java Micro Edition, Flash) Danas: Ruby on Rails
Programski jezik
Programski jezik / Rails Ruby dynamic & strongly typed sintaksadizajniranadasadržištomanje “interpunkcije” (npr. zagrada, točke-zarez) međunekolikonajkorištenijihskriptnihjezikanasvijetu (osim u našimkrajevima) započet 1995 puts “hello world”
Programski jezik / Django Python 1991. Guido van Rossum I objektnoistrukturiranoifunkcionalno Održavajterazmak Čitljivostnarazini pseudo koda Baterijeuključene Vrti se nasvim (glavnim) platformama
Programski jezik / .NET C# Statički, objektni, kompajlirani, managed V3: LINQ (funkcijske karakteristike) V4: dynamic (dinamički tipovi) Common Language Runtime Predstavljen 2001
Programski jezik / .NET Uz C#VB.NET F# IronPython IronRuby ...
Programski jezik / ZF PHP dynamically typed C-like sintaksa ($, {}, ;) Kreiran 1995 (Personal Homepage Tools) 2000 – PHP 4 (Zend Engine) 2004 – PHP 5 (novi objektni model) 2009 – PHP 5.3 (namespaces, late static binding, lambda račun,…) <?php echo “Hello World”;?>
Programski jezik / Spring Java objektno-orijentirani statički prevedeni (compiled) u bytecode interpretiran u virtualnojmašini (JVM) [JIT!] garbage collector
Programski jezik / Spring ideja je izbjećitipičneprogramerskepogreške ~15 godina, Open Source (GPL) verzija 6 od 2006, zadnji update prošlimjesec verzija 7 ovegodine(invokedynamic, closures, fork/join)
Framework
Framework / Rails Objavljen 2004 MVC, REST convention over configuration open source cross-platform razvojnaokolina napredni tekstualni editor Postoje i IDE-u, ali nisu toliko popularni
Performanse/ Rails zadovoljanperformansama pružapunomehanizamazaskalabilnost akonečimenisamzadovoljan, to promijenim/popravim (Rails core contributor)
Framework / Rails Template sustavsličan PHP<html><%= ruby_code_here %></html> AJAX helpers Prototype.js/jQuery Ugrađenapodrškaza XSS CSRF SQL injection
Framework / Django ,[object Object]
Open source (MIT)
Linux, Mac, Windows, FreeBSD, Solaris...
Okruženjevišerazine, čisti, pragmatičnidizajn
Modularnost,[object Object]
Cache – naraziniaplikacije, procedura, dijelova template koda
memcached, baza, memorija, datotečnisustav
Odvojenistatičniidinamičnidijeloviaplikacije
Sigurnost
urls.py – prvalinijaobrane
SQL injections
XSS, CSRF
django.contrib,[object Object]
Models
Templates
Views
URL-s
Regex
Imenovanja
{% urlima_ime %} ,[object Object]
Python, Django, napredan editor
Ugrađenirazvojni web poslužitelj
manage.py
syncbd, inspectdb, loaddata - dumpdata, shell, dbshell, makemessages – compilemessages, sqlflush, sqlreset
Posebnialati
django-command-extensions
django-debug-toolbar,[object Object]
Forma / Django
Framework / ASP.NET 2001. v1, 2010 v4 WebForms, MVC, REST-style (OpenRasta) konfiguracija ili/i konvencija Open source, MS licenca Windows (IIS) Implementacija CLI specifikacije Mono, veći dio .NET Framoworka radi na Linuxu (MVC radi)
Framework / ASP.NET visoke performanse, jednostavan multithreading Osmišljen na skalabilnost Veliki framework, pokriva enterprise scenarije WCF, WF, WPF, Azure MVC pogodan za web2.0  Stackoverflow.com: 1 mil. hits / dan – 1 web server, 1 db server MySpace.com
Framework / ASP.NET View engines: WebForms, Spark, nHaml, nVelocity, ... ASP.NET AJAX, jQuery Security XSS, CSRF, SQL injection – većim dijelom ugrađeno u framework U v4 automatska enkodiranje za html
Framework / ZF Razvoj započet 2006 godine MVC paradigma, ali i set nezavisnih komponenti Puno više konfiguracije (od konvencije) Zahtijeva PHP 5.2.0 ili noviji  open source (New BSD licenca) svi kontributori potpisuju CLA
Performanse / ZF Helloworld benchmark Opcode cache (APC) neophodan
Performanse / ZF Zend_Cache Frontend: Core, File, Class, Frontend_Output, Page Backend: File, APC, Xcache,Memcached, Sqlite, TwoLevels
Skalabilnost / ZF Skalabilnost Podrška za pohranu sessiona u memcached ili bazu podataka Zend_Db nema podršku za rad sa više instanci baze podataka (master – slave replikacije) Dijelove frameworka je moguće prilagoditi (i pojednostaviti) bez diranja core-a
Templating / ZF View & Layout Two-Step View Pattern Zend_View je moguće zamijeniti sa implementacijom po želji Smarty? ZendX_Jquery komponenta Podrška za escape-anje prilikom ispisa View Helperi
Framework / Proljeće ~2002/3 g. trenutnaverzija 3.0 Open Source, Apache License 2.0 Plain Old Java Objects (POJO) Inversion Of Control (IOC), Dependency Injection (DI) Aspect-oriented programming (AOP) Konfiguracijaikonvencije
Spring Web Stack Spring Faces Spring BlazeDS Integration Spring Web Flow Spring JavaScript Spring Security Spring MVC Spring Core
Framework / Spring jednaodkomponenti Spring Framework-a  izgrađennad JEE standardimai best practices Servlet(standalone)iPortletvarijante(portal) Representational State Transfer (REST) Konvencijanaspramkonfiguracije
Framework / Spring Podrškaza view tehnologije templateing(od JSP, freemarker, Facelets do Tiles, Sitemesh) razni output-i(PDF, Excel, RTF, XML, JSON...) za AJAX @MVC support ili DWR (potpunije) (Spring) Security Autentikacija / Autorizacija(RBAC) ACL
Obrada podataka / Spring custom validatori, bean validation (JSR-303) fleksibilnevalidacijskeporuke podrškazabindanjeitransformacijupodataka(spring taglib, property editors, type converters)
Framework / Spring nasljeđujeizvrsneperformanse JVM-a / JEE-a horizontalnaivertikalnaskalabilnost(jasnoovisi o aplikaciji) development proces je izuzetnoproduktivan application serveri se baveresursima(connection pool, transaction management, clustering, load balancing)
Obrada podataka / Form <html> <body> <form:formmodelAttribute="account"method="post"> <p> <form:labelfor="name"path="name"cssErrorClass="error">Name</...> <form:inputpath="name"/> <form:errorspath="name"/> </p> <p> <form:labelfor="balance"path="balance"cssErrorClass="error">Balance</...> <form:inputpath="balance"/> <form:errorspath="balance"/> </p> <p> <inputtype="submit"/> </p> </form:form> </body> </html>
Obrada podataka / Model publicclass Account { private Long id; @NotNull @Size(min=1, max=25) private String name; @NotNull @NumberFormat(style=Style.CURRENCY) privateBigDecimalbalance = newBigDecimal("1000");     // getterisetteri... }
Obrada podataka / Controller @Controller @RequestMapping(value = "/account") publicclassAccountController { @Autowired privateAccountDaodao; @RequestMapping(method = RequestMethod.POST) public String create(@Valid Account account, BindingResult result) { if (result.hasErrors()) { return"account/createForm";     } dao.create(account); return"redirect:/account/" + account.getId();   } @RequestMapping(value = "/account/{id}" method = RequestMethod.GET) public Account create(Long id) { return dao.read(id);   } }
Pristup bazi podataka
Baza podataka / Rails ORM ActiveRecord Nijenužan, ponovome je relativnojednostavnougraditidrugi ORM DataMapper, Sequel, MongoMapper... MySQL, PostgreSQL, SQLite drugerelacijskebazepodržanekrozadaptereinstaliranedodatno
Baza podataka / Rails podrškazavalidacije lakaizgradnjakompleksnih HTML forma
Baza podataka / Django ,[object Object]
Django ORM
SQLAlchemy, Storm
Firebird, MS-SQL, DB2
CouchDB, MongoDB
Migracija
django-evolution, south, dmigrations,[object Object]
Baza podataka / .NET ORM od MSa Entity Framework , Linq2SQL Open Source Nhibernate, ActiveRecord, SubSonic, ... Komercijalni LLBGen, LightSpeed, ... Baze MSSQL, Oracle, MySQL, PostgreSQL, SqlLite,... (L2S  samo MSSQL, EF i Oracle) LINQ podržavaju svi: Var comments = from c in db.Comments                            where c.Post.Author == „John Doe”                            select c;
Baza podataka / .NET ,[object Object],DynamicData Scaffolding framework Templating engine za kreiranje View-ova prema danom modelu MVC data binderi, custom binderi (Castle)
Baza podataka / ZF Zend_Db – Database abstraction layer Lazy loading konekcija na bazu Parametrizirani upiti Transakcije Profiler Paginator Zend_Db_Table Table & Row Data Gateway Pattern MySQL, Sqlite, MsSQL, Oracle, Postgres
Baza podataka / ZF
Baza podataka / ZF Validacija podataka vezana uz forme Zend_Form Elementi Dekoratori Validatori Nažalost ne postoji mogućnost automatskog kreiranja administracije (CRUD) iz modela Doctrine kao ORM
Baza podataka / Spring od JDBC (osnovni Java API) do Hibernate (fullblown ORM) Konzistentni API / Exception handling Template Method Pattern pristup Deklarativni transaction management
Spring + Hibernate @Repository publicclassHibernatePersonDaoextendsHibernateDaoSupportimplementsAccountDao { publicvoid create(Account account) { getHibernateTemplate().save(account);     } public Account read(Long id) { returngetHibernateTemplate().load(Account.class, id);     } publicvoid update(Account account) { getHibernateTemplate().update(account);     } publicvoid delete(Account account) { getHibernateTemplate().delete(account);     } }
Testing
Testing / Rails Rails ohrabruje testing unit testing (models), functional testing (controllers), performance testing 3rd party alati za ubrzavanje testova jednostavna sintaksa osnovni test se može napisati u 2-3 linije ovisno o testing frameworku, testovi mogu biti vrlo opisni (pri čitanju)
Testing / Django ,[object Object]
doctest
pythonic
unittest
JUnit like
django.test.client.Client
jednostavni web klijent,[object Object]
unittest
django.test.client.Client
Testing / .NET MSTest, nUnit, xUnit MSpec, NSpec, Nbehave ala Ruby Cucumber  Test Runners, CI Mocking i Stubing: Moq, Rhino Mocks, Type Moq IoC/DI (StructureMap, Unity, AutoFac, Castle Winsdor,...) Za bolji dizajn i arhitekturu (SOLID principi)
Testing / ZF Prošireni PHPUnit (Controller_Test_Case) PHPUnit test case sa dodacima za testiranje MVC dijelova frameworka Inspekcija DOM-a koristeći CSS selektore: $this->assertQueryCount('form#loginForm', 1); Zend_Test_PHPUnit_Db
Testing / Spring podrškazaJunit alislobodno je koristitinekidrugi (TestNG) unit testing function testing (+populacija (in memory) baze) svimodernialatizatestiranje mocks, stubs, coverage...
Reusability

More Related Content

Viewers also liked

Viewers also liked (8)

Konferencja 2012
Konferencja 2012Konferencja 2012
Konferencja 2012
 
Vuk Nikolić - Web frontend - startap akademija, prva tech radionica
Vuk Nikolić - Web frontend - startap akademija, prva tech radionicaVuk Nikolić - Web frontend - startap akademija, prva tech radionica
Vuk Nikolić - Web frontend - startap akademija, prva tech radionica
 
Analiza_web_sjedista
Analiza_web_sjedistaAnaliza_web_sjedista
Analiza_web_sjedista
 
HUJAK - JavaOne 2012
HUJAK - JavaOne 2012HUJAK - JavaOne 2012
HUJAK - JavaOne 2012
 
Štampa i web
Štampa i webŠtampa i web
Štampa i web
 
Konflikti kreativni centar
Konflikti kreativni centarKonflikti kreativni centar
Konflikti kreativni centar
 
Marcetić andreja upravljanje konfliktima motivacija
Marcetić andreja upravljanje konfliktima   motivacijaMarcetić andreja upravljanje konfliktima   motivacija
Marcetić andreja upravljanje konfliktima motivacija
 
AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević
 

Similar to Panel diskusija - usporedba Web frameworka (IT Showoff)

Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzwebburza
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeMatija Šmalcelj
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister
 
Gatling - oružje u redovima performansnog testiranja
Gatling - oružje u redovima performansnog testiranjaGatling - oružje u redovima performansnog testiranja
Gatling - oružje u redovima performansnog testiranjaA. Kranjec
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Cloneguest9c64c8c
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. Stipe Predanic
 
iOS Talks 4 Osijek - Swifty Server Side (Croatian)
iOS Talks 4 Osijek - Swifty Server Side (Croatian)iOS Talks 4 Osijek - Swifty Server Side (Croatian)
iOS Talks 4 Osijek - Swifty Server Side (Croatian)Marin Benčević
 
Gordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaGordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaInitium
 

Similar to Panel diskusija - usporedba Web frameworka (IT Showoff) (20)

Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad PećanacJavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzz
 
Uvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka MandićUvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka Mandić
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacije
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
 
Gatling - oružje u redovima performansnog testiranja
Gatling - oružje u redovima performansnog testiranjaGatling - oružje u redovima performansnog testiranja
Gatling - oružje u redovima performansnog testiranja
 
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija KranjecJavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad PečanacJavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad Pečanac
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Clone
 
Zasto Flex
Zasto FlexZasto Flex
Zasto Flex
 
SQL Azure
SQL AzureSQL Azure
SQL Azure
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
 
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav RešetarJavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
 
iOS Talks 4 Osijek - Swifty Server Side (Croatian)
iOS Talks 4 Osijek - Swifty Server Side (Croatian)iOS Talks 4 Osijek - Swifty Server Side (Croatian)
iOS Talks 4 Osijek - Swifty Server Side (Croatian)
 
Gordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaGordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontenda
 

More from IT Showoff

Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)
Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)
Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)IT Showoff
 
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...IT Showoff
 
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)IT Showoff
 
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...IT Showoff
 
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)IT Showoff
 
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...IT Showoff
 
Dobrica Pavlinušić - Rest (IT Showoff)
Dobrica Pavlinušić - Rest (IT Showoff)Dobrica Pavlinušić - Rest (IT Showoff)
Dobrica Pavlinušić - Rest (IT Showoff)IT Showoff
 
Senko Rašić - Git (IT Showoff)
Senko Rašić - Git (IT Showoff)Senko Rašić - Git (IT Showoff)
Senko Rašić - Git (IT Showoff)IT Showoff
 
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)IT Showoff
 
Željko Filipin - Testing Showoff (IT Showoff)
Željko Filipin - Testing Showoff (IT Showoff)Željko Filipin - Testing Showoff (IT Showoff)
Željko Filipin - Testing Showoff (IT Showoff)IT Showoff
 
Tomislav Grubišić - Facebook Platform (IT Showoff)
Tomislav Grubišić - Facebook Platform (IT Showoff)Tomislav Grubišić - Facebook Platform (IT Showoff)
Tomislav Grubišić - Facebook Platform (IT Showoff)IT Showoff
 
Tomislav Capan - Muzika Hr (IT Showoff)
Tomislav Capan - Muzika Hr (IT Showoff)Tomislav Capan - Muzika Hr (IT Showoff)
Tomislav Capan - Muzika Hr (IT Showoff)IT Showoff
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)IT Showoff
 
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...IT Showoff
 
Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)IT Showoff
 

More from IT Showoff (15)

Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)
Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)
Igor Vuksanović - Kako bankrotirati pri izradi poslovne aplikacije (IT Showoff)
 
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
Tomislav Pokrajčić, Ivica Kukić - Yet Another Vehicle Tracking System (IT Sho...
 
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)
Stjepan Zlodi - Misleći uređivač teksta (IT Showoff)
 
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...
Krešimir Prcela - Tehnologija iza popularnih Augmented reality aplikacija na ...
 
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)
Tomislav Car - Kako smo od Duracell zeca napravili Chuck Norrisa (IT Showoff)
 
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...
Zvonimir Vanjak - Fakultetsko IT obrazovanje u Hrvatskoj - no bullshit inside...
 
Dobrica Pavlinušić - Rest (IT Showoff)
Dobrica Pavlinušić - Rest (IT Showoff)Dobrica Pavlinušić - Rest (IT Showoff)
Dobrica Pavlinušić - Rest (IT Showoff)
 
Senko Rašić - Git (IT Showoff)
Senko Rašić - Git (IT Showoff)Senko Rašić - Git (IT Showoff)
Senko Rašić - Git (IT Showoff)
 
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)
24 Sata - Ne zaboravi titlove prezentacija (IT Showoff)
 
Željko Filipin - Testing Showoff (IT Showoff)
Željko Filipin - Testing Showoff (IT Showoff)Željko Filipin - Testing Showoff (IT Showoff)
Željko Filipin - Testing Showoff (IT Showoff)
 
Tomislav Grubišić - Facebook Platform (IT Showoff)
Tomislav Grubišić - Facebook Platform (IT Showoff)Tomislav Grubišić - Facebook Platform (IT Showoff)
Tomislav Grubišić - Facebook Platform (IT Showoff)
 
Tomislav Capan - Muzika Hr (IT Showoff)
Tomislav Capan - Muzika Hr (IT Showoff)Tomislav Capan - Muzika Hr (IT Showoff)
Tomislav Capan - Muzika Hr (IT Showoff)
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
 
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...
Ivan Guštin - Iskustva u optimizaciji IT Sustava primjenom Opensource rjesenj...
 
Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)
 

Panel diskusija - usporedba Web frameworka (IT Showoff)

  • 1. Panel diskusija Usporedba web frameworka
  • 3. Ideja Svi su se susreli s nekim tehnologijama Rijetko tko je probao sve Dovesti top stručnjake za svaku tehnologiju
  • 5. Mislav Marohnić / Rails Rails Core Programiranjekaohobiiposao Povijest: C++ (faks), PHP (standardno) Radio uglavnomza web startupe
  • 6.
  • 7. Računalima se počeobaviti u Orwellovojgodini
  • 9.
  • 10. Goran Jurić / Zend Framework NCL Media Grupa Prvu stranicu napravio 1998.godine PHP-om se bavi > 8 godina Zend Framework prati od v0.1 Sa v1.5 započeo razvoj CMS-a za potrebe kompanije
  • 11. Zoran Regvart / Spring CROZ Z80 asm/Basic, Pascal , C/C++ , PHP, Java, Ruby, Python, C# PHP/HTML freelancer (davno) arhitekt @ Crozd.o.o. www.croz.hr(predugo)
  • 13. Tomislav Car Infinum ex.PHP svašta non web (Java Micro Edition, Flash) Danas: Ruby on Rails
  • 15. Programski jezik / Rails Ruby dynamic & strongly typed sintaksadizajniranadasadržištomanje “interpunkcije” (npr. zagrada, točke-zarez) međunekolikonajkorištenijihskriptnihjezikanasvijetu (osim u našimkrajevima) započet 1995 puts “hello world”
  • 16. Programski jezik / Django Python 1991. Guido van Rossum I objektnoistrukturiranoifunkcionalno Održavajterazmak Čitljivostnarazini pseudo koda Baterijeuključene Vrti se nasvim (glavnim) platformama
  • 17. Programski jezik / .NET C# Statički, objektni, kompajlirani, managed V3: LINQ (funkcijske karakteristike) V4: dynamic (dinamički tipovi) Common Language Runtime Predstavljen 2001
  • 18. Programski jezik / .NET Uz C#VB.NET F# IronPython IronRuby ...
  • 19. Programski jezik / ZF PHP dynamically typed C-like sintaksa ($, {}, ;) Kreiran 1995 (Personal Homepage Tools) 2000 – PHP 4 (Zend Engine) 2004 – PHP 5 (novi objektni model) 2009 – PHP 5.3 (namespaces, late static binding, lambda račun,…) <?php echo “Hello World”;?>
  • 20. Programski jezik / Spring Java objektno-orijentirani statički prevedeni (compiled) u bytecode interpretiran u virtualnojmašini (JVM) [JIT!] garbage collector
  • 21. Programski jezik / Spring ideja je izbjećitipičneprogramerskepogreške ~15 godina, Open Source (GPL) verzija 6 od 2006, zadnji update prošlimjesec verzija 7 ovegodine(invokedynamic, closures, fork/join)
  • 23. Framework / Rails Objavljen 2004 MVC, REST convention over configuration open source cross-platform razvojnaokolina napredni tekstualni editor Postoje i IDE-u, ali nisu toliko popularni
  • 24. Performanse/ Rails zadovoljanperformansama pružapunomehanizamazaskalabilnost akonečimenisamzadovoljan, to promijenim/popravim (Rails core contributor)
  • 25. Framework / Rails Template sustavsličan PHP<html><%= ruby_code_here %></html> AJAX helpers Prototype.js/jQuery Ugrađenapodrškaza XSS CSRF SQL injection
  • 26.
  • 28. Linux, Mac, Windows, FreeBSD, Solaris...
  • 30.
  • 31. Cache – naraziniaplikacije, procedura, dijelova template koda
  • 32. memcached, baza, memorija, datotečnisustav
  • 38.
  • 41. Views
  • 42. URL-s
  • 43. Regex
  • 45.
  • 49. syncbd, inspectdb, loaddata - dumpdata, shell, dbshell, makemessages – compilemessages, sqlflush, sqlreset
  • 52.
  • 54. Framework / ASP.NET 2001. v1, 2010 v4 WebForms, MVC, REST-style (OpenRasta) konfiguracija ili/i konvencija Open source, MS licenca Windows (IIS) Implementacija CLI specifikacije Mono, veći dio .NET Framoworka radi na Linuxu (MVC radi)
  • 55. Framework / ASP.NET visoke performanse, jednostavan multithreading Osmišljen na skalabilnost Veliki framework, pokriva enterprise scenarije WCF, WF, WPF, Azure MVC pogodan za web2.0 Stackoverflow.com: 1 mil. hits / dan – 1 web server, 1 db server MySpace.com
  • 56. Framework / ASP.NET View engines: WebForms, Spark, nHaml, nVelocity, ... ASP.NET AJAX, jQuery Security XSS, CSRF, SQL injection – većim dijelom ugrađeno u framework U v4 automatska enkodiranje za html
  • 57. Framework / ZF Razvoj započet 2006 godine MVC paradigma, ali i set nezavisnih komponenti Puno više konfiguracije (od konvencije) Zahtijeva PHP 5.2.0 ili noviji open source (New BSD licenca) svi kontributori potpisuju CLA
  • 58. Performanse / ZF Helloworld benchmark Opcode cache (APC) neophodan
  • 59. Performanse / ZF Zend_Cache Frontend: Core, File, Class, Frontend_Output, Page Backend: File, APC, Xcache,Memcached, Sqlite, TwoLevels
  • 60. Skalabilnost / ZF Skalabilnost Podrška za pohranu sessiona u memcached ili bazu podataka Zend_Db nema podršku za rad sa više instanci baze podataka (master – slave replikacije) Dijelove frameworka je moguće prilagoditi (i pojednostaviti) bez diranja core-a
  • 61. Templating / ZF View & Layout Two-Step View Pattern Zend_View je moguće zamijeniti sa implementacijom po želji Smarty? ZendX_Jquery komponenta Podrška za escape-anje prilikom ispisa View Helperi
  • 62. Framework / Proljeće ~2002/3 g. trenutnaverzija 3.0 Open Source, Apache License 2.0 Plain Old Java Objects (POJO) Inversion Of Control (IOC), Dependency Injection (DI) Aspect-oriented programming (AOP) Konfiguracijaikonvencije
  • 63. Spring Web Stack Spring Faces Spring BlazeDS Integration Spring Web Flow Spring JavaScript Spring Security Spring MVC Spring Core
  • 64. Framework / Spring jednaodkomponenti Spring Framework-a izgrađennad JEE standardimai best practices Servlet(standalone)iPortletvarijante(portal) Representational State Transfer (REST) Konvencijanaspramkonfiguracije
  • 65. Framework / Spring Podrškaza view tehnologije templateing(od JSP, freemarker, Facelets do Tiles, Sitemesh) razni output-i(PDF, Excel, RTF, XML, JSON...) za AJAX @MVC support ili DWR (potpunije) (Spring) Security Autentikacija / Autorizacija(RBAC) ACL
  • 66. Obrada podataka / Spring custom validatori, bean validation (JSR-303) fleksibilnevalidacijskeporuke podrškazabindanjeitransformacijupodataka(spring taglib, property editors, type converters)
  • 67. Framework / Spring nasljeđujeizvrsneperformanse JVM-a / JEE-a horizontalnaivertikalnaskalabilnost(jasnoovisi o aplikaciji) development proces je izuzetnoproduktivan application serveri se baveresursima(connection pool, transaction management, clustering, load balancing)
  • 68. Obrada podataka / Form <html> <body> <form:formmodelAttribute="account"method="post"> <p> <form:labelfor="name"path="name"cssErrorClass="error">Name</...> <form:inputpath="name"/> <form:errorspath="name"/> </p> <p> <form:labelfor="balance"path="balance"cssErrorClass="error">Balance</...> <form:inputpath="balance"/> <form:errorspath="balance"/> </p> <p> <inputtype="submit"/> </p> </form:form> </body> </html>
  • 69. Obrada podataka / Model publicclass Account { private Long id; @NotNull @Size(min=1, max=25) private String name; @NotNull @NumberFormat(style=Style.CURRENCY) privateBigDecimalbalance = newBigDecimal("1000"); // getterisetteri... }
  • 70. Obrada podataka / Controller @Controller @RequestMapping(value = "/account") publicclassAccountController { @Autowired privateAccountDaodao; @RequestMapping(method = RequestMethod.POST) public String create(@Valid Account account, BindingResult result) { if (result.hasErrors()) { return"account/createForm"; } dao.create(account); return"redirect:/account/" + account.getId(); } @RequestMapping(value = "/account/{id}" method = RequestMethod.GET) public Account create(Long id) { return dao.read(id); } }
  • 72. Baza podataka / Rails ORM ActiveRecord Nijenužan, ponovome je relativnojednostavnougraditidrugi ORM DataMapper, Sequel, MongoMapper... MySQL, PostgreSQL, SQLite drugerelacijskebazepodržanekrozadaptereinstaliranedodatno
  • 73. Baza podataka / Rails podrškazavalidacije lakaizgradnjakompleksnih HTML forma
  • 74.
  • 80.
  • 81. Baza podataka / .NET ORM od MSa Entity Framework , Linq2SQL Open Source Nhibernate, ActiveRecord, SubSonic, ... Komercijalni LLBGen, LightSpeed, ... Baze MSSQL, Oracle, MySQL, PostgreSQL, SqlLite,... (L2S samo MSSQL, EF i Oracle) LINQ podržavaju svi: Var comments = from c in db.Comments where c.Post.Author == „John Doe” select c;
  • 82.
  • 83. Baza podataka / ZF Zend_Db – Database abstraction layer Lazy loading konekcija na bazu Parametrizirani upiti Transakcije Profiler Paginator Zend_Db_Table Table & Row Data Gateway Pattern MySQL, Sqlite, MsSQL, Oracle, Postgres
  • 85. Baza podataka / ZF Validacija podataka vezana uz forme Zend_Form Elementi Dekoratori Validatori Nažalost ne postoji mogućnost automatskog kreiranja administracije (CRUD) iz modela Doctrine kao ORM
  • 86. Baza podataka / Spring od JDBC (osnovni Java API) do Hibernate (fullblown ORM) Konzistentni API / Exception handling Template Method Pattern pristup Deklarativni transaction management
  • 87. Spring + Hibernate @Repository publicclassHibernatePersonDaoextendsHibernateDaoSupportimplementsAccountDao { publicvoid create(Account account) { getHibernateTemplate().save(account); } public Account read(Long id) { returngetHibernateTemplate().load(Account.class, id); } publicvoid update(Account account) { getHibernateTemplate().update(account); } publicvoid delete(Account account) { getHibernateTemplate().delete(account); } }
  • 89. Testing / Rails Rails ohrabruje testing unit testing (models), functional testing (controllers), performance testing 3rd party alati za ubrzavanje testova jednostavna sintaksa osnovni test se može napisati u 2-3 linije ovisno o testing frameworku, testovi mogu biti vrlo opisni (pri čitanju)
  • 90.
  • 96.
  • 99. Testing / .NET MSTest, nUnit, xUnit MSpec, NSpec, Nbehave ala Ruby Cucumber Test Runners, CI Mocking i Stubing: Moq, Rhino Mocks, Type Moq IoC/DI (StructureMap, Unity, AutoFac, Castle Winsdor,...) Za bolji dizajn i arhitekturu (SOLID principi)
  • 100. Testing / ZF Prošireni PHPUnit (Controller_Test_Case) PHPUnit test case sa dodacima za testiranje MVC dijelova frameworka Inspekcija DOM-a koristeći CSS selektore: $this->assertQueryCount('form#loginForm', 1); Zend_Test_PHPUnit_Db
  • 101. Testing / Spring podrškazaJunit alislobodno je koristitinekidrugi (TestNG) unit testing function testing (+populacija (in memory) baze) svimodernialatizatestiranje mocks, stubs, coverage...
  • 103. Reusability / Rails pluginovi “Rails Engines” - vertical slices extra mounted frameworks
  • 104.
  • 107. Primjerprojekta: pip install -r requirements.txt
  • 109.
  • 110. Reusability / ZF Controller Pluginovi ,action i view helperi se nalaze u vlastitom “namespace-u” Postoji podrška za module no nisu baš najsretnije riješeni
  • 111. Reusability / Spring mnogi Java projekti nude integriracijusa Spring Framework-om(npr.:) validacije(Hibernate Validation) AJAX (DWR) WS-* / SOAP (Apache CXF) generalno, dobardiokôda se generaliziraiiskoristinaslijedećemprojektu razniutil-*, validation-*, conf-* i sl.
  • 112. Razvoj
  • 113. Razvoj / Rails troškovi razvoja mali Ruby profesionalci su često skupi Ruby programeri slabo dostupni u Hrvatskoj i Sloveniji
  • 114. Učenje / Rails dokumentacija Railsa je u početku bila jedna od velikih mana, ali danas je jako dobra “learning curve” - lagan community je obilan kvalitetnim blogovima i screencastovima
  • 115.
  • 122.
  • 129.
  • 130.
  • 132. mogućnost Mouse Driven Developmenta
  • 133. ASP.NET WebForms za Windows programere
  • 135. 300 namespaceova, 14 000 klasa, 70 000 metoda
  • 136. Specijalizacija za web, win, data, ...
  • 137.
  • 138. Učenje / ZF Krivulja učenja je dosta strma Neophodno dobro poznavanje OOP-a Dokumentacija Solidna, ali mogla bi biti i bolja Ponekad neophodno zaviriti i ispod haube IDE: Zend Studio, Netbeans, ... Autocomplete! Community Blogovi, mailing lista, Confluence wiki
  • 139. Razvoj / Spring razvoj je nešto sporiji u početku (ukoliko se ne nasljeđuje znanje) primjeri sa predhodnog projekta npr. na tržištu postoji puno Java programera nažalost vrlo malo gurua Java developeri voze dobra kola napunjena manekenkama
  • 140. Učenje / Spring u CROZ-u za 2-3 tjedna developer je produktivan naravno ovisno o predznanju - inhouse tečaji, mentorstvo barem 3 state-of-the-art razvojna alata Eclipse (SpringSource Tool Suite), Idea, NetBeans nevjerojatno (za developere) ažurna i potpuna dokumentacija pregršt blog-ova, izvrstan forum, plativi support
  • 142. Top 5 + / Rails “opinionated” RESTfulkonvencije form builder ActiveRecord caching helpers
  • 143. Top 5 - / Rails nijezasveaplikacije do nedavnosu se koristileloše JavaScript prakse nijedobarzapočetnike u web developmentu “skriva” nekemogućnostirelacijskihbaza nijeoptimalanzaizgraditiaplikacijuna “legacy” bazama
  • 144. Top 5 + / Django Kompletnorješenje Kvalitetaizrade Admin URL-ovi Dokumentacija
  • 145. Top 5 - / Django Slaba podrška kod hosting providera (Pre)dinamični razvoj Mali broj raspoloživih programera Ne postoji Django IDE Ne ide bez komandnije linije
  • 146. Top 5 + / .NET C# (OOP, LINQ, dynamic) Visual Studio 2010 + Resharper Brzina i skalabilnost RAD: WebForms vs MVC Silverlight
  • 147. Top 5 - / .NET Kompleksna konfiguracija, malo konvencije Over-engineered Zatvorenost frameworka - tight coupling MSDN vs ALT.NET: Slaba navika open source-anja
  • 148. Top 5 + / ZF Prilagodljivost Velik broj komponenti i podržanih servisa Razdrađena podrška za caching Backward compatibility Baratanje formama
  • 149. Top 5 - / ZF Podrška za drop-in module Punokrvi ORM (Doctrine u 2.0) Generiranje admin sučelja Neke komponente nisu održavane Službena podrška za Dojo ?!?
  • 150. Top 5 + / Spring Loose coupling (DI, POJO) = Maintainability REST podrška u v3 Auto konfiguracija (konvencije) Spring Roo = Rails kakav bi Springovci napisali Web Flow = podrška za kompleksne forme, wizardi, tokovi ekrana
  • 151. Top 5 - / Spring Količina tehnologije / frameworka / opcija / troslovnih akronima za pohvatati Hosting? (AppEngine) Sloboda developera da brljavi (ako uspoređujemo sa striktnim konvencijama drugih frameworka) @Hell - više anotacija nego kôda XML hell - više XML-a negko kôda (manjak primjene konvencija)
  • 153. Rails stavite framework naprobnuvožnjunanekomkonkretnomproblemu. ne vjerujtepopularnosti, samodojmukojisteknete u tom pokusu.
  • 154. Django Django je cjelovito rješenje, ali bilo koji modul se može zamijeniti bez da se ostatak konstrukcije sruši Django je moćno jednostavan. Za sve ostalo...$ python>>> import this
  • 155. ASP.NET Framework prilagođen za enterprise korporativne scenarije i za web 2.0 start-upove RIA sa Silverlightom Slušati zajednicu, pridonositi, pokušati pratiti izdavanje novih frameworka
  • 156. Zend Framework Odabir frameworka je dugoročna investicija Odličan izbor za sve koji traže fleksibilnost i sigurnost Mogućnost korištenja dijelova frameworka kao zasebnih komponenti je veliki plus Još uvijek nisam požalio 
  • 157. Spring de facto Java standard zarazvoj(i web)aplikacija enterprise grade štozapravo znači best-practices