Panel diskusija - usporedba Web frameworka (IT Showoff)
-
Upload
it-showoff -
Category
Technology
-
view
1.967 -
download
5
description
Transcript of Panel diskusija - usporedba Web frameworka (IT Showoff)
![Page 1: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/1.jpg)
Panel diskusijaUsporedba web frameworka
![Page 2: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/2.jpg)
Uvod
![Page 3: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/3.jpg)
Ideja
• Svi su se susreli s nekim tehnologijama
• Rijetko tko je probao sve• Dovesti top stručnjake za svaku
tehnologiju
![Page 4: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/4.jpg)
Ekipa
![Page 5: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/5.jpg)
Mislav Marohnić / Rails
• Rails Core• Programiranje kao hobi i posao• Povijest: C++ (faks), PHP
(standardno)• Radio uglavnom za web startupe
![Page 6: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/6.jpg)
Stjepan Zlodi / Django
• 24 sata digital Rođen u godini čovjekovog prvog
poznatog spuštanja na Mjesec Računalima se počeo baviti u
Orwellovoj godini Razvio sklonost prema RAD-u Produktivna lijenost
![Page 7: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/7.jpg)
Hrvoje Hudoletnjak / .NET
• Novatec• Visual Basic -> ASP -> ASP.NET (c#)• Izrada poslovnih aplikacija na
internet platformi (RIA, SOA, ...)• Silverlight• MVC + HTML/Javascript• TDD, DDD, Agile
![Page 8: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/8.jpg)
Goran Jurić / Zend Framework
• NCL Media Grupa• Prvu stranicu napravio 1998.godine• PHP-om se bavi > 8 godina • Zend Framework prati od v 0.1• Sa v1.5 započeo razvoj CMS-a za
potrebe kompanije
![Page 9: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/9.jpg)
Zoran Regvart / Spring
• CROZ• Z80 asm/Basic, Pascal , C/C++ , PHP,
Java, Ruby, Python, C#• PHP/HTML freelancer (davno)• arhitekt @ Croz d.o.o.
www.croz.hr (predugo)
![Page 10: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/10.jpg)
Moderator
![Page 11: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/11.jpg)
Tomislav Car
• Infinum• ex.PHP• svašta non web (Java Micro Edition,
Flash)• Danas: Ruby on Rails
![Page 12: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/12.jpg)
Programski jezik
![Page 13: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/13.jpg)
Programski jezik / Rails
• Ruby dynamic & strongly typed sintaksa dizajnirana da sadrži što manje
“interpunkcije” (npr. zagrada, točke-zarez)
među nekoliko najkorištenijih skriptnih jezika na svijetu (osim u našim krajevima)
započet 1995 puts “hello world”
![Page 14: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/14.jpg)
Programski jezik / Django
• Python 1991. Guido van Rossum I objektno i strukturirano i funkcionalno Održavajte razmak Čitljivost na razini pseudo koda Baterije uključene Vrti se na svim (glavnim) platformama
![Page 15: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/15.jpg)
Programski jezik / .NET
• C# Statički, objektni, kompajlirani, managed▪ V3: LINQ (funkcijske karakteristike)▪ V4: dynamic (dinamički tipovi)
Common Language Runtime Predstavljen 2001
![Page 16: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/16.jpg)
Programski jezik / .NET
• Uz C#VB.NET F# IronPython IronRuby ...
![Page 17: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/17.jpg)
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”;?>
![Page 18: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/18.jpg)
Programski jezik / Spring
• Java objektno-orijentirani statički prevedeni (compiled) u bytecode interpretiran u virtualnoj mašini (JVM)
[JIT!] garbage collector
![Page 19: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/19.jpg)
Programski jezik / Spring
• ideja je izbjeći tipične programerske pogreške
• ~15 godina, Open Source (GPL) verzija 6 od 2006, zadnji update prošli
mjesec verzija 7 ove godine (invokedynamic,
closures, fork/join)
![Page 20: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/20.jpg)
Framework
![Page 21: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/21.jpg)
Framework / Rails
• Objavljen 2004• MVC, REST• convention over configuration• open source• cross-platform• razvojna okolina
napredni tekstualni editor Postoje i IDE-u, ali nisu toliko popularni
![Page 22: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/22.jpg)
Performanse / Rails
• zadovoljan performansama• pruža puno mehanizama za
skalabilnost• ako nečime nisam zadovoljan, to
promijenim/popravim (Rails core contributor)
![Page 23: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/23.jpg)
Framework / Rails
• Template sustav sličan PHP<html><%= ruby_code_here %></html>
• AJAX helpers Prototype.js/jQuery
• Ugrađena podrška za XSS CSRF SQL injection
![Page 24: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/24.jpg)
Framework / Django
2003. 2005. - prva objava Open source (MIT) Linux, Mac, Windows, FreeBSD,
Solaris... Okruženje više razine, čisti,
pragmatični dizajn Modularnost
![Page 25: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/25.jpg)
Framework / Django
• Skalabilnost• Cache – na razini aplikacije, procedura,
dijelova template koda• memcached, baza, memorija, datotečni sustav
• Odvojeni statični i dinamični dijelovi aplikacije
• Sigurnost• urls.py – prva linija obrane• SQL injections• XSS, CSRF
• django.contrib
![Page 26: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/26.jpg)
Framework / Django
• MTV• Models • Templates• Views
• URL-s• Regex• Imenovanja• {% url ima_ime %}
![Page 27: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/27.jpg)
Framework / Django
• Razvojna okolina• Python, Django, napredan editor• Ugrađeni razvojni web poslužitelj
• manage.py• syncbd, inspectdb, loaddata - dumpdata, shell, dbshell,
makemessages – compilemessages, sqlflush, sqlreset
• Posebni alati• django-command-extensions• django-debug-toolbar
![Page 28: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/28.jpg)
Forma / Django
![Page 29: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/29.jpg)
Forma / Django
![Page 30: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/30.jpg)
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)
![Page 31: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/31.jpg)
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
![Page 32: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/32.jpg)
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
![Page 33: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/33.jpg)
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
![Page 34: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/34.jpg)
Performanse / ZF
• Hello world benchmark
• Opcode cache (APC) neophodan
Framework Req/s
PHP 1320
Cake 1.1.19 118
Symphony 1.1.0 67.41
Zend Framework 1.6 77.85
![Page 35: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/35.jpg)
Performanse / ZF
• Zend_Cache Frontend: Core, File, Class,
Frontend_Output, Page Backend: File, APC, Xcache,Memcached,
Sqlite, TwoLevels
![Page 36: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/36.jpg)
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
![Page 37: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/37.jpg)
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
![Page 38: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/38.jpg)
Framework / Proljeće
• ~2002/3 g. trenutna verzija 3.0
• Open Source, Apache License 2.0• Plain Old Java Objects (POJO)• Inversion Of Control (IOC),
Dependency Injection (DI)• Aspect-oriented programming (AOP)• Konfiguracija i konvencije
![Page 39: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/39.jpg)
Spring Web Stack
Spring Core
Spring MVC
Spring Web Flow
Spring JavaScript
Spring Security
Spring FacesSpring BlazeDS
Integration
![Page 40: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/40.jpg)
Framework / Spring
• jedna od komponenti Spring Framework-a
• izgrađen nad JEE standardima i best practices
• Servlet (standalone) i Portlet varijante (portal)
• Representational State Transfer (REST)
• Konvencija naspram konfiguracije
![Page 41: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/41.jpg)
Framework / Spring
• Podrška za 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
![Page 42: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/42.jpg)
Obrada podataka / Spring
• custom validatori, bean validation (JSR-303)
• fleksibilne validacijske poruke• podrška za bindanje i transformaciju
podataka (spring taglib, property editors, type converters)
![Page 43: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/43.jpg)
Framework / Spring
• nasljeđuje izvrsne performanse JVM-a / JEE-a
• horizontalna i vertikalna skalabilnost (jasno ovisi o aplikaciji)
• development proces je izuzetno produktivan
• application serveri se bave resursima (connection pool, transaction management, clustering, load balancing)
![Page 44: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/44.jpg)
Obrada podataka / Form
<html><body> <form:form modelAttribute="account" method="post"> <p> <form:label for="name" path="name" cssErrorClass="error">Name</...> <form:input path="name" /> <form:errors path="name" /> </p> <p> <form:label for="balance" path="balance" cssErrorClass="error">Balance</...> <form:input path="balance" /> <form:errors path="balance" /> </p> <p> <input type="submit" /> </p> </form:form></body></html>
![Page 45: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/45.jpg)
Obrada podataka / Modelpublic class Account {
private Long id;
@NotNull@Size(min=1, max=25)private String name;
@NotNull@NumberFormat(style=Style.CURRENCY)private BigDecimal balance = new
BigDecimal("1000");
// getteri setteri...}
![Page 46: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/46.jpg)
Obrada podataka / Controller@Controller@RequestMapping(value = "/account")public class AccountController {
@Autowired private AccountDao dao;
@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); }}
![Page 47: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/47.jpg)
Pristup bazi podataka
![Page 48: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/48.jpg)
Baza podataka / Rails
• ORM ActiveRecord
• Nije nužan, po novome je relativno jednostavno ugraditi drugi ORM DataMapper, Sequel, MongoMapper...
• MySQL, PostgreSQL, SQLite• druge relacijske baze podržane kroz
adaptere instalirane dodatno
![Page 49: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/49.jpg)
Baza podataka / Rails
• podrška za validacije• laka izgradnja kompleksnih HTML
forma
![Page 50: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/50.jpg)
Baza podataka / Django
PostgreSQL, MySQL, SQLite, Oracle Django ORM SQLAlchemy, Storm
Firebird, MS-SQL, DB2 CouchDB, MongoDB Migracija
django-evolution, south, dmigrations
![Page 51: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/51.jpg)
Rad s podacima / Django
![Page 52: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/52.jpg)
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;
![Page 53: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/53.jpg)
Baza podataka / .NET
• Automatska client i server validacija• DynamicData Scaffolding framework• Templating engine za kreiranje View-
ova prema danom modelu• MVC data binderi, custom binderi
(Castle)
![Page 54: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/54.jpg)
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
![Page 55: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/55.jpg)
Baza podataka / ZF
![Page 56: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/56.jpg)
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
![Page 57: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/57.jpg)
Baza podataka / Spring
• od JDBC (osnovni Java API)• do Hibernate (fullblown ORM)• Konzistentni API / Exception handling• Template Method Pattern pristup• Deklarativni transaction
management
![Page 58: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/58.jpg)
Spring + Hibernate
@Repositorypublic class HibernatePersonDao extends HibernateDaoSupport implements AccountDao {
public void create(Account account) { getHibernateTemplate().save(account); }
public Account read(Long id) { return getHibernateTemplate().load(Account.class, id); }
public void update(Account account) { getHibernateTemplate().update(account); }
public void delete(Account account) { getHibernateTemplate().delete(account); }}
![Page 59: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/59.jpg)
Testing
![Page 60: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/60.jpg)
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)
![Page 61: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/61.jpg)
Testing / Django
test.py u svakoj aplikaciji doctest
pythonic unittest
JUnit like django.test.client.Client
jednostavni web klijent
![Page 62: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/62.jpg)
doctest
![Page 63: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/63.jpg)
unittest
![Page 64: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/64.jpg)
django.test.client.Client
![Page 65: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/65.jpg)
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)
![Page 66: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/66.jpg)
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
![Page 67: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/67.jpg)
Testing / Spring
• podrška za Junit ali slobodno je koristiti neki drugi
(TestNG)• unit testing• function testing (+populacija (in
memory) baze)• svi moderni alati za testiranje
mocks, stubs, coverage...
![Page 68: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/68.jpg)
Reusability
![Page 69: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/69.jpg)
Reusability / Rails
• pluginovi• “Rails Engines” - vertical slices• extra mounted frameworks
![Page 70: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/70.jpg)
Reusability / Django
Django projekt se sastoji od aplikacija Dobro koncipirane aplikacije se mogu
koristiti u bilo kojem projektu Modeli, template, url-ovi… Primjer projekta: pip install -r
requirements.txt Middleware Template tagovi
![Page 71: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/71.jpg)
Reusability / .NET
• ASP.NET Custom Controls – resuable• MVC Html Helpers• Veliki broj open source i
komercijalnih biblioteka gotovih komponenti CodePlex.com
![Page 72: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/72.jpg)
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
![Page 73: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/73.jpg)
Reusability / Spring
• mnogi Java projekti nude integriraciju sa Spring Framework-om (npr.:) validacije (Hibernate Validation) AJAX (DWR) WS-* / SOAP (Apache CXF)
• generalno, dobar dio kôda se generalizira i iskoristi na slijedećem projektu razni util-*, validation-*, conf-* i sl.
![Page 74: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/74.jpg)
Razvoj
![Page 75: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/75.jpg)
Razvoj / Rails
• troškovi razvoja mali• Ruby profesionalci su često skupi• Ruby programeri slabo dostupni u
Hrvatskoj i Sloveniji
![Page 76: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/76.jpg)
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
![Page 77: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/77.jpg)
Razvoj / Django
Troškovi razvoja Razvojni alati od 0 kn Produkcijska okolina od 0 kn
Troškovi programera Isplati se platiti više
Dostupni programeri Malo ih je Laka prilagodba
![Page 78: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/78.jpg)
Učenje / Django
Learning curve– Potrebna predznanja
Dokumentacija– http://docs.djangoproject.com– http://djangobook.com/– http://diveintopython.org/
Zajednica– http://djangopeople.net/
![Page 79: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/79.jpg)
Razvoj / .NET
• Visaul Studio Express 2008 – besplatan Vrhunski, najbolji IDE ;) Resharper, CodeRush, ... MonoDevelop na Linuxu
• MS SQL Server Express – besplatan• Hosting:
Shared: od 5$/mj (hr: cca 200-300 kn/god) VPS: od 15$/mj BizSpark, WebSpark programi (besplatne
licence)
![Page 80: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/80.jpg)
Učenje / .NET
Potrebno poznavati OOP ASP.NET
mogućnost Mouse Driven Developmenta ASP.NET WebForms za Windows
programere MSDN Library
300 namespaceova, 14 000 klasa, 70 000 metoda
Specijalizacija za web, win, data, ... Mnoštvo video tutoriala
(www.asp.net)
![Page 81: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/81.jpg)
Razvoj / ZF
• Zend Studio 399$ (godinu dana)
• Još uvijek relativno mali broj programera s naprednim poznavanjem frameworka
• Za razliku od drugih PHP frameworka iza ZF-a stoji kompanija Symphony i Solar su više-manje one-
man band projekti
![Page 82: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/82.jpg)
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
![Page 83: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/83.jpg)
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
![Page 84: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/84.jpg)
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
![Page 85: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/85.jpg)
Top lista nadrealista
![Page 86: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/86.jpg)
Top 5 + / Rails
1. “opinionated”2. RESTful konvencije3. form builder4. ActiveRecord5. caching helpers
![Page 87: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/87.jpg)
Top 5 - / Rails
1. nije za sve aplikacije2. do nedavno su se koristile loše
JavaScript prakse3. nije dobar za početnike u web
developmentu4. “skriva” neke mogućnosti relacijskih
baza5. nije optimalan za izgraditi aplikaciju
na “legacy” bazama
![Page 88: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/88.jpg)
Top 5 + / Django
1. Kompletno rješenje2. Kvaliteta izrade3. Admin4. URL-ovi5. Dokumentacija
![Page 89: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/89.jpg)
Top 5 - / Django
1. Slaba podrška kod hosting providera2. (Pre)dinamični razvoj3. Mali broj raspoloživih programera4. Ne postoji Django IDE5. Ne ide bez komandnije linije
![Page 90: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/90.jpg)
Top 5 + / .NET
1. C# (OOP, LINQ, dynamic)2. Visual Studio 2010 + Resharper3. Brzina i skalabilnost4. RAD: WebForms vs MVC5. Silverlight
![Page 91: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/91.jpg)
Top 5 - / .NET
1. Kompleksna konfiguracija, malo konvencije
2. Over-engineered3. Zatvorenost frameworka - tight
coupling4. MSDN vs ALT.NET: 5. Slaba navika open source-anja
![Page 92: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/92.jpg)
Top 5 + / ZF
1. Prilagodljivost2. Velik broj komponenti i podržanih
servisa3. Razdrađena podrška za caching4. Backward compatibility5. Baratanje formama
![Page 93: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/93.jpg)
Top 5 - / ZF
1. Podrška za drop-in module2. Punokrvi ORM (Doctrine u 2.0)3. Generiranje admin sučelja4. Neke komponente nisu održavane5. Službena podrška za Dojo ?!?
![Page 94: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/94.jpg)
Top 5 + / Spring
1. Loose coupling (DI, POJO) = Maintainability
2. REST podrška u v33. Auto konfiguracija (konvencije)4. Spring Roo = Rails kakav bi
Springovci napisali5. Web Flow = podrška za kompleksne
forme, wizardi, tokovi ekrana
![Page 95: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/95.jpg)
Top 5 - / Spring
1. Količina tehnologije / frameworka / opcija / troslovnih akronima za pohvatati
2. Hosting? (AppEngine)3. Sloboda developera da brljavi (ako
uspoređujemo sa striktnim konvencijama drugih frameworka)
4. @Hell - više anotacija nego kôda5. XML hell - više XML-a negko kôda
(manjak primjene konvencija)
![Page 96: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/96.jpg)
Završna misao
![Page 97: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/97.jpg)
Rails
• stavite framework na probnu vožnju na nekom konkretnom problemu.
• ne vjerujte popularnosti, samo dojmu koji steknete u tom pokusu.
![Page 98: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/98.jpg)
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
![Page 99: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/99.jpg)
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
![Page 100: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/100.jpg)
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
![Page 101: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/101.jpg)
Spring
• de facto Java standard za razvoj (i web) aplikacija
• enterprise grade što zapravo znači best-practices
![Page 102: Panel diskusija - usporedba Web frameworka (IT Showoff)](https://reader035.fdocument.pub/reader035/viewer/2022081420/558fc8d91a28ab6f198b4599/html5/thumbnails/102.jpg)
Pitanja publike