Panel diskusija<br />Usporedba web frameworka<br />
Uvod<br />
Ideja<br />Svi su se susreli s nekim tehnologijama<br />Rijetko tko je probao sve<br />Dovesti top stručnjake za svaku teh...
Ekipa<br />
Mislav Marohnić / Rails<br />Rails Core<br />Programiranjekaohobiiposao<br />Povijest: C++ (faks), PHP (standardno)<br />R...
Stjepan Zlodi / Django<br />24 sata digital<br /><ul><li>Rođen u godiničovjekovogprvogpoznatogspuštanjanaMjesec
Računalima se počeobaviti u Orwellovojgodini
Razviosklonostprema RAD-u
Produktivnalijenost</li></li></ul><li>Hrvoje Hudoletnjak / .NET<br />Novatec<br />Visual Basic -> ASP -> ASP.NET (c#)<br /...
Goran Jurić / Zend Framework<br />NCL Media Grupa<br />Prvu stranicu napravio 1998.godine<br />PHP-om se bavi > 8 godina <...
Zoran Regvart / Spring<br />CROZ<br />Z80 asm/Basic, Pascal , C/C++ , PHP, Java, Ruby, Python, C#<br />PHP/HTML freelancer...
Moderator<br />
Tomislav Car<br />Infinum<br />ex.PHP<br />svašta non web (Java Micro Edition, Flash)<br />Danas: Ruby on Rails<br />
Programski jezik<br />
Programski jezik / Rails<br />Ruby<br />dynamic & strongly typed<br />sintaksadizajniranadasadržištomanje “interpunkcije” ...
Programski jezik / Django<br />Python<br />1991. Guido van Rossum<br />I objektnoistrukturiranoifunkcionalno<br />Održavaj...
Programski jezik / .NET<br />C#<br />Statički, objektni, kompajlirani, managed<br />V3: LINQ (funkcijske karakteristike)<b...
Programski jezik / .NET<br />Uz C#VB.NET<br />F#<br />IronPython<br />IronRuby<br />...<br />
Programski jezik / ZF<br />PHP<br />dynamically typed<br />C-like sintaksa ($, {}, ;)<br />Kreiran 1995 (Personal Homepage...
Programski jezik / Spring<br />Java<br />objektno-orijentirani<br />statički<br />prevedeni (compiled) u bytecode<br />int...
Programski jezik / Spring<br />ideja je izbjećitipičneprogramerskepogreške<br />~15 godina, Open Source (GPL)<br />verzija...
Framework<br />
Framework / Rails<br />Objavljen 2004<br />MVC, REST<br />convention over configuration<br />open source<br />cross-platfo...
Performanse/ Rails<br />zadovoljanperformansama<br />pružapunomehanizamazaskalabilnost<br />akonečimenisamzadovoljan, to p...
Framework / Rails<br />Template sustavsličan PHP<html><%= ruby_code_here %></html><br />AJAX helpers<br />Prototype.js/jQu...
Framework / Django<br /><ul><li>2003. 2005. - prvaobjava
Open source (MIT)
Linux, Mac, Windows, FreeBSD, Solaris...
Okruženjevišerazine, čisti, pragmatičnidizajn
Modularnost</li></li></ul><li>Framework / Django<br /><ul><li>Skalabilnost
Cache – naraziniaplikacije, procedura, dijelova template koda
memcached, baza, memorija, datotečnisustav
Odvojenistatičniidinamičnidijeloviaplikacije
Sigurnost
urls.py – prvalinijaobrane
SQL injections
XSS, CSRF
django.contrib</li></li></ul><li>Framework / Django<br /><ul><li>MTV
Models
Templates
Views
URL-s
Regex
Imenovanja
{% urlima_ime %} </li></li></ul><li>Framework / Django<br /><ul><li>Razvojnaokolina
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</li></li></ul><li>Forma / Django<br />
Forma / Django<br />
Framework / ASP.NET<br />2001. v1, 2010 v4<br />WebForms, MVC, REST-style (OpenRasta)<br />konfiguracija ili/i konvencija<...
Framework / ASP.NET<br />visoke performanse, jednostavan multithreading<br />Osmišljen na skalabilnost<br />Veliki framewo...
Framework / ASP.NET<br />View engines: WebForms, Spark, nHaml, nVelocity, ...<br />ASP.NET AJAX, jQuery<br />Security<br /...
Framework / ZF<br />Razvoj započet 2006 godine<br />MVC paradigma, ali i set nezavisnih komponenti<br />Puno više konfigur...
Performanse / ZF<br />Helloworld benchmark<br />Opcode cache (APC) neophodan<br />
Performanse / ZF<br />Zend_Cache<br />Frontend: Core, File, Class, Frontend_Output, Page<br />Backend: File, APC, Xcache,M...
Skalabilnost / ZF<br />Skalabilnost<br />Podrška za pohranu sessiona u memcached ili bazu podataka<br />Zend_Db nema podrš...
Templating / ZF<br />View & Layout<br />Two-Step View Pattern<br />Zend_View je moguće zamijeniti sa implementacijom po že...
Framework / Proljeće<br />~2002/3 g.<br />trenutnaverzija 3.0<br />Open Source, Apache License 2.0<br />Plain Old Java Obj...
Spring Web Stack<br />Spring Faces<br />Spring BlazeDS Integration<br />Spring Web Flow<br />Spring JavaScript<br />Spring...
Framework / Spring<br />jednaodkomponenti Spring Framework-a <br />izgrađennad JEE standardimai best practices<br />Servle...
Framework / Spring<br />Podrškaza view tehnologije<br />templateing(od JSP, freemarker, Facelets do Tiles, Sitemesh)<br />...
Obrada podataka / Spring<br />custom validatori, bean validation (JSR-303)<br />fleksibilnevalidacijskeporuke<br />podrška...
Framework / Spring<br />nasljeđujeizvrsneperformanse JVM-a / JEE-a<br />horizontalnaivertikalnaskalabilnost(jasnoovisi o a...
Obrada podataka / Form<br /><html><br /><body><br /><form:formmodelAttribute="account"method="post"><br /><p><br /><form:l...
Obrada podataka / Model<br />publicclass Account {<br />private Long id;<br />@NotNull<br />@Size(min=1, max=25)<br />priv...
Obrada podataka / Controller<br />@Controller<br />@RequestMapping(value = "/account")<br />publicclassAccountController {...
Pristup bazi podataka<br />
Baza podataka / Rails<br />ORM<br />ActiveRecord<br />Nijenužan, ponovome je relativnojednostavnougraditidrugi ORM<br />Da...
Baza podataka / Rails<br />podrškazavalidacije<br />lakaizgradnjakompleksnih HTML forma<br />
Baza podataka / Django<br /><ul><li>PostgreSQL, MySQL, SQLite, Oracle
Django ORM
SQLAlchemy, Storm
Firebird, MS-SQL, DB2
CouchDB, MongoDB
Migracija
django-evolution, south, dmigrations</li></li></ul><li>Rad s podacima / Django<br />
Baza podataka / .NET<br />ORM od MSa<br />Entity Framework , Linq2SQL<br />Open Source<br />Nhibernate, ActiveRecord, SubS...
Baza podataka / .NET<br /><ul><li>Automatska client i server validacija</li></ul>DynamicData Scaffolding framework<br />Te...
Baza podataka / ZF<br />Zend_Db – Database abstraction layer<br />Lazy loading konekcija na bazu<br />Parametrizirani upit...
Baza podataka / ZF<br />
Baza podataka / ZF<br />Validacija podataka vezana uz forme<br />Zend_Form<br />Elementi<br />Dekoratori<br />Validatori<b...
Baza podataka / Spring<br />od JDBC (osnovni Java API)<br />do Hibernate (fullblown ORM)<br />Konzistentni API / Exception...
Spring + Hibernate<br />@Repository<br />publicclassHibernatePersonDaoextendsHibernateDaoSupportimplementsAccountDao {<br ...
Testing<br />
Testing / Rails<br />Rails ohrabruje testing<br />unit testing (models), functional testing (controllers), performance tes...
Testing / Django<br /><ul><li>test.py u svakojaplikaciji
doctest
pythonic
unittest
JUnit like
django.test.client.Client
jednostavni web klijent</li></li></ul><li>doctest<br />
unittest<br />
django.test.client.Client<br />
Testing / .NET<br />MSTest, nUnit, xUnit<br />MSpec, NSpec, Nbehave<br />ala Ruby Cucumber <br />Test Runners, CI<br />Moc...
Testing / ZF<br />Prošireni PHPUnit (Controller_Test_Case)<br />PHPUnit test case sa dodacima za testiranje MVC dijelova f...
Testing / Spring<br />podrškazaJunit<br />alislobodno je koristitinekidrugi (TestNG)<br />unit testing<br />function testi...
Reusability<br />
Upcoming SlideShare
Loading in …5
×

Panel diskusija - usporedba Web frameworka (IT Showoff)

2,249 views

Published on

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.

Published in: Technology, Education
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
2,249
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
19
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Panel diskusija - usporedba Web frameworka (IT Showoff)

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

×