Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
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
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
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
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)
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
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)
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...
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.
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
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
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