Web Applica+on Frameworks Jay Urbain, Ph.D. Credits: - - PowerPoint PPT Presentation

web applica on frameworks
SMART_READER_LITE
LIVE PREVIEW

Web Applica+on Frameworks Jay Urbain, Ph.D. Credits: - - PowerPoint PPT Presentation

Web Applica+on Frameworks Jay Urbain, Ph.D. Credits: www h6p://en.wikipedia.org/ Ma5 Raible: h6p://raibledesigns.com h6p://www.techempower.com/benchmarks 1 2


slide-1
SLIDE 1

1

Web ¡Applica+on ¡Frameworks ¡

¡ Jay ¡Urbain, ¡Ph.D. ¡

Credits: ¡ ¡ www ¡ h6p://en.wikipedia.org/ ¡ Ma5 ¡Raible: ¡h6p://raibledesigns.com ¡ h6p://www.techempower.com/benchmarks ¡ ¡ ¡

slide-2
SLIDE 2

2

slide-3
SLIDE 3

Frameworks ¡

  • An ¡applica+on ¡framework ¡consists ¡of ¡a ¡so9ware ¡framework ¡

used ¡to ¡implement ¡the ¡standard ¡structure ¡(architecture) ¡of ¡ an ¡applicaEon. ¡

  • The ¡so9ware ¡framework ¡providing ¡generic ¡funcEonality ¡can ¡

be ¡selecEvely ¡changed ¡to ¡ ¡provide ¡applica&on-­‑specific ¡

  • soHware. ¡ ¡

3

slide-4
SLIDE 4

ApplicaEon ¡Frameworks ¡

  • ApplicaEon ¡frameworks ¡became ¡popular ¡with ¡the ¡rise ¡
  • f ¡graphical ¡user ¡interfaces ¡(GUIs), ¡since ¡these ¡tended ¡to ¡

promote ¡a ¡standard ¡structure ¡for ¡applicaEons. ¡ ¡

  • Simpler ¡to ¡create ¡automaEc ¡GUI ¡creaEon ¡tools ¡when ¡using ¡a ¡

standard ¡framework, ¡since ¡this ¡defines ¡the ¡underlying ¡code ¡ structure ¡of ¡the ¡applicaEon ¡in ¡advance. ¡

  • Apple ¡Computer ¡developed ¡one ¡of ¡the ¡first ¡commercial ¡

applicaEon ¡frameworks, ¡MacApp ¡(first ¡released ¡in ¡1985), ¡for ¡ the ¡Macintosh. ¡ ¡

4

slide-5
SLIDE 5

Many ¡ApplicaEon ¡Frameworks… ¡

  • Cocoa ¡for ¡Mac ¡OS ¡X ¡is ¡an ¡applicaEon ¡framework ¡based ¡upon ¡

the ¡OPENSTEP ¡framework ¡developed ¡at ¡NeXT. ¡

  • Free-­‑soHware ¡frameworks ¡exist ¡as ¡part ¡of ¡the ¡Mozilla, ¡OpenOffice.org, ¡

GNOME, ¡KDE, ¡NetBeans, ¡and ¡Eclipse ¡projects. ¡

  • MicrosoH ¡markets ¡a ¡number ¡of ¡framework ¡for ¡developing ¡Windows ¡
  • applicaEons. ¡
  • A ¡number ¡of ¡frameworks ¡can ¡build ¡cross-­‑pla0orm ¡applicaEons ¡for ¡Linux, ¡

Macintosh, ¡and ¡Windows ¡from ¡the ¡same ¡source ¡code: ¡Qt, ¡the ¡widget ¡ toolkits ¡wxWidgets, ¡FOX ¡toolkit, ¡or ¡Eclipse ¡RCP. ¡

  • Oracle ¡ApplicaEon ¡Development ¡Framework ¡(Oracle ¡ADF) ¡aids ¡in ¡

producing ¡Java-­‑oriented ¡systems. ¡

  • Nega&ves? ¡

5

slide-6
SLIDE 6

Web ¡ApplicaEon ¡Framework ¡(WAF) ¡

  • WAF ¡is ¡a ¡soHware ¡framework ¡designed ¡to ¡support ¡the ¡

development ¡of ¡dynamic ¡websites, ¡web ¡applicaEons, ¡web ¡ services, ¡and ¡web ¡resources. ¡ ¡

  • Aims ¡to ¡alleviate ¡the ¡overhead ¡associated ¡with ¡common ¡

acEviEes ¡performed ¡in ¡web ¡development. ¡ ¡

  • Many ¡frameworks ¡provide ¡libraries ¡for ¡database ¡access, ¡

templaEng, ¡and ¡session ¡management. ¡

  • OHen ¡promote ¡code ¡reuse. ¡ ¡

6

slide-7
SLIDE 7

A ¡li6le ¡Web ¡history… ¡

  • World ¡Wide ¡Web ¡was ¡not ¡inherently ¡dynamic. ¡Early ¡hypertext ¡consisted ¡of ¡

hand-­‑coded ¡HTML ¡that ¡was ¡published ¡on ¡web ¡servers. ¡ ¡ ¡ – Any ¡modificaEons ¡to ¡published ¡pages ¡needed ¡to ¡be ¡performed ¡by ¡the ¡ pages' ¡author. ¡ ¡

  • To ¡provide ¡a ¡dynamic ¡web ¡page ¡that ¡reflected ¡user ¡inputs, ¡the ¡Common ¡

Gateway ¡Interface ¡(CGI) ¡standard ¡was ¡introduced ¡for ¡interfacing ¡external ¡ applicaEons ¡with ¡web ¡servers. ¡ – CGI ¡could ¡adversely ¡affect ¡server ¡load, ¡though, ¡since ¡each ¡request ¡had ¡ to ¡start ¡a ¡separate ¡process. ¡

7

slide-8
SLIDE 8

… ¡a ¡li6le ¡more ¡Web ¡history… ¡

  • Programmers ¡wanted ¡Eghter ¡integraEon ¡with ¡the ¡web ¡server ¡to ¡enable ¡

high ¡traffic ¡web ¡applicaEons. ¡ ¡ – The ¡Apache ¡HTTP ¡Server ¡supports ¡modules ¡that ¡can ¡extend ¡the ¡web ¡ server ¡with ¡arbitrary ¡code ¡execuEons ¡(e.g., ¡as ¡Mod ¡Perl). ¡ – Some ¡web ¡servers ¡(e.g., ¡Apache ¡Tomcat) ¡were ¡specifically ¡designed ¡to ¡ handle ¡dynamic ¡content ¡by ¡execuEng ¡code ¡wri6en ¡in ¡some ¡languages ¡ (e.g., ¡Java). ¡ – Around ¡the ¡same ¡Eme, ¡new ¡languages ¡were ¡being ¡developed ¡ specifically ¡for ¡use ¡on ¡the ¡web ¡such ¡as ¡ColdFusion, ¡PHP ¡and ¡AcEve ¡ Server ¡Pages. ¡

8

slide-9
SLIDE 9

… ¡the ¡end ¡of ¡history. ¡

  • Majority ¡of ¡languages ¡available ¡for ¡creaEng ¡dynamic ¡web ¡pages ¡

have ¡libraries ¡to ¡help ¡with ¡common ¡tasks. ¡

  • Eventually ¡more ¡mature, ¡"full ¡stack" ¡frameworks ¡appeared ¡that ¡

aggregated ¡libraries ¡and ¡provide ¡a ¡structure ¡(architectural ¡approach) ¡ useful ¡for ¡web ¡development. ¡ ¡

  • Examples: ¡ ¡

– ASP.NET, ¡Java ¡EE ¡(Servlets), ¡WebObjects, ¡web2py, ¡OpenACS, ¡Catalyst, ¡ Mojolicious, ¡Ruby ¡on ¡Rails, ¡Django, ¡Zend ¡Framework, ¡Yii, ¡CakePHP ¡and ¡ Symfony, ¡etc. ¡

9

slide-10
SLIDE 10

Types ¡of ¡framework ¡architectures ¡

Model–view–controller ¡(MVC) ¡ ¡

  • Many ¡frameworks ¡follow ¡the ¡MVC ¡architectural ¡pa6ern ¡to ¡separate ¡

the ¡data ¡model ¡with ¡business ¡rules ¡from ¡the ¡user ¡interface. ¡ ¡

  • Considered ¡a ¡good ¡pracEce ¡as ¡it ¡modularizes ¡code, ¡promotes ¡code ¡reuse, ¡

and ¡allows ¡mulEple ¡interfaces ¡to ¡be ¡applied. ¡ ¡

  • In ¡web ¡applicaEons, ¡this ¡permits ¡different ¡views ¡to ¡be ¡presented, ¡such ¡

as ¡web ¡pages ¡for ¡humans, ¡and ¡web ¡service ¡interfaces ¡for ¡mobile ¡and ¡other ¡ remote ¡applicaEons. ¡

10

slide-11
SLIDE 11

Push-­‑based ¡vs. ¡pull-­‑based ¡ architectures ¡ ¡

Push-­‑based ¡

  • Most ¡MVC ¡frameworks ¡follow ¡a ¡push-­‑based ¡architecture ¡also ¡called ¡"ac&on-­‑

based." ¡ ¡

  • These ¡frameworks ¡use ¡ac&ons ¡(commands) ¡that ¡do ¡the ¡required ¡processing, ¡

and ¡then ¡"push" ¡the ¡data ¡to ¡the ¡view ¡layer ¡to ¡render ¡the ¡results. ¡

  • This ¡is ¡the ¡approach ¡we ¡have ¡followed ¡in ¡class ¡with ¡our ¡MVC ¡

implementa&on. ¡

  • Examples: ¡ ¡EStruts, ¡Django, ¡Ruby ¡on ¡Rails, ¡Symfony, ¡Yii, ¡Spring ¡MVC, ¡Stripes, ¡

Play, ¡CodeIgniter, ¡and ¡Struts2. ¡

11

slide-12
SLIDE 12

Push-­‑based ¡vs. ¡pull-­‑based ¡ architectures ¡ ¡

Pull-­‑based ¡

  • An ¡alternaEve ¡to ¡a ¡push-­‑based ¡architecture, ¡is ¡a ¡pull-­‑based ¡architecture. ¡

SomeEmes ¡called ¡"component-­‑based." ¡

  • These ¡frameworks ¡start ¡with ¡the ¡view ¡layer, ¡which ¡can ¡then ¡"pull" ¡results ¡

from ¡mulEple ¡controllers/sources ¡as ¡needed. ¡In ¡this ¡architecture, ¡mulEple ¡ controllers ¡can ¡be ¡involved ¡with ¡a ¡single ¡view. ¡ ¡

  • Typically, ¡more ¡“page” ¡centric. ¡
  • Examples: ¡LiH, ¡Tapestry, ¡JBoss ¡Seam, ¡JavaServer ¡Faces, ¡and ¡Wicket. ¡

12

slide-13
SLIDE 13

Three-­‑Eer ¡architectures ¡

  • Three ¡Eer ¡applicaEons ¡are ¡structured ¡around ¡three ¡logical ¡

Eers: ¡presentaEon ¡(client), ¡business ¡logic ¡(applicaEon), ¡and ¡ data ¡(database). ¡ ¡ Three ¡Eer ¡is ¡a ¡different, ¡but ¡complimentary ¡abstracEon ¡from ¡

  • MVC. ¡
  • View ¡

– PresentaEon ¡can ¡be ¡generated ¡server-­‑ ¡or ¡client ¡slide. ¡

  • Model ¡

– Business ¡logic ¡ – Data ¡

  • Controller ¡

– Client ¡interacEon, ¡separates ¡Model ¡from ¡View ¡

13

slide-14
SLIDE 14

WAF ¡Features ¡

  • Web ¡template ¡system ¡

– Code ¡that ¡generates ¡the ¡HTML ¡can ¡do ¡this ¡based ¡on ¡variables ¡in ¡a ¡ template, ¡or ¡on ¡code. ¡

  • Caching ¡

– Reduce ¡bandwidth, ¡server ¡load, ¡and ¡latency. ¡ ¡ – A ¡web ¡cache ¡stores ¡copies ¡of ¡documents ¡passing ¡through ¡it. ¡ ¡ – Subsequent ¡requests ¡may ¡be ¡saEsfied ¡from ¡the ¡cache ¡if ¡certain ¡ condiEons ¡are ¡met. ¡ ¡

  • Security ¡

– ¡AuthenEcaEon ¡and ¡authorizaEon ¡frameworks ¡that ¡enable ¡the ¡web ¡ server ¡to ¡idenEfy ¡the ¡users ¡of ¡the ¡applicaEon, ¡and ¡restrict ¡access ¡to ¡ funcEons ¡based ¡on ¡some ¡defined ¡criteria ¡respecEvely. ¡

14

slide-15
SLIDE 15

WAF ¡Features ¡-­‑ ¡2 ¡

  • Database ¡access, ¡mapping ¡and ¡configura+on ¡

– Unified ¡API ¡to ¡a ¡database ¡backend, ¡enabling ¡web ¡applicaEons ¡to ¡work ¡ with ¡a ¡variety ¡of ¡databases. ¡ – Object ¡to ¡relaEonal ¡mapping. ¡

  • Scaffolding ¡

– Generate ¡code ¡from ¡specificaEon, ¡e.g., ¡XML. ¡

  • URL ¡mapping ¡

– Mechanism ¡by ¡which ¡the ¡framework ¡interprets ¡URLs. ¡ ¡

15

slide-16
SLIDE 16

WAF ¡Features ¡-­‑ ¡3 ¡

  • Ajax ¡

– Due ¡to ¡the ¡complexity ¡of ¡Ajax ¡programming ¡in ¡JavaScript, ¡there ¡are ¡ numerous ¡Ajax ¡frameworks ¡that ¡exclusively ¡deal ¡with ¡Ajax ¡support. ¡ ¡ – Some ¡Ajax ¡frameworks ¡are ¡embedded ¡as ¡a ¡part ¡of ¡larger ¡frameworks. ¡ E.g., ¡ ¡jQuery ¡JavaScript ¡library ¡is ¡included ¡in ¡Ruby ¡on ¡Rails. ¡ – Compiler ¡technology ¡has ¡been ¡developed ¡to ¡allow ¡developers ¡to ¡code ¡ in ¡high-­‑level ¡languages ¡such ¡as ¡Java, ¡Python ¡and ¡Ruby. ¡ ¡ – One ¡of ¡the ¡first ¡of ¡these ¡compilers ¡was ¡Morfik, ¡followed ¡by ¡Google ¡ Web ¡Toolkit, ¡with ¡ports ¡to ¡Python ¡and ¡Ruby ¡in ¡the ¡form ¡of ¡Pyjamas ¡ and ¡RubyJS ¡following ¡some ¡Eme ¡aHer. ¡ ¡

16

slide-17
SLIDE 17

WAF ¡Features ¡-­‑ ¡4 ¡

  • Web ¡services ¡ ¡

– Provide ¡tools ¡for ¡creaEng ¡and ¡providing ¡web ¡services. ¡ ¡ – These ¡uEliEes ¡may ¡offer ¡similar ¡tools ¡as ¡the ¡rest ¡of ¡the ¡web ¡

  • applicaEon. ¡
  • Web ¡resources ¡ ¡

– A ¡number ¡of ¡newer ¡Web ¡2.0 ¡RESTful ¡frameworks ¡are ¡now ¡providing ¡ resource-­‑oriented ¡architecture ¡(ROA) ¡infrastructure ¡for ¡building ¡ collecEons ¡of ¡resources ¡in ¡a ¡SemanEc ¡Web ¡ontology, ¡based ¡on ¡ concepts ¡from ¡Resource ¡DescripEon ¡Framework ¡(RDF). ¡

17

slide-18
SLIDE 18

History ¡of ¡Web ¡Frameworks ¡

18

slide-19
SLIDE 19

History ¡of ¡Web ¡Frameworks ¡-­‑ ¡2 ¡

19

slide-20
SLIDE 20

History ¡of ¡Web ¡Frameworks ¡-­‑ ¡3 ¡

20

slide-21
SLIDE 21

History ¡of ¡Web ¡Frameworks ¡-­‑ ¡4 ¡

21

slide-22
SLIDE 22

History ¡of ¡Web ¡Frameworks ¡-­‑5 ¡

22

slide-23
SLIDE 23

History ¡of ¡Web ¡Frameworks ¡-­‑ ¡6 ¡

23

slide-24
SLIDE 24

Today ¡

24

slide-25
SLIDE 25

Too ¡many ¡frameworks? ¡

25

slide-26
SLIDE 26

How ¡to ¡select ¡a ¡Web ¡ApplicaEon ¡ Framework? ¡

  • Maturity ¡and ¡Popularity ¡

– How ¡long ¡the ¡framework ¡has ¡been ¡around ¡and ¡how ¡likely ¡it ¡is ¡to ¡evolve ¡are ¡key ¡ consideraEons ¡when ¡comparing ¡web ¡frameworks. ¡ ¡

  • AJAX ¡

– AJAX ¡is ¡complex ¡technology. ¡

  • LocalizaEon ¡ ¡

– The ¡ability ¡to ¡adapt ¡to ¡mulEple ¡languages ¡is ¡a ¡common ¡component ¡of ¡most ¡frameworks. ¡ ¡

  • Security ¡and ¡Form ¡ValidaEon ¡

– DeclaraEve ¡authorizaEon ¡and ¡authenEcaEon, ¡form ¡validaEon. ¡

  • CustomizaEon ¡and ¡Extensibility ¡

– Templates, ¡theme ¡availability ¡or ¡support ¡for ¡CSS ¡are ¡a ¡must ¡if ¡the ¡user ¡experience ¡and ¡

  • verall ¡design ¡of ¡your ¡website ¡are ¡important. ¡ ¡
  • MVC ¡Structure ¡and ¡ORM ¡

– The ¡Model-­‑View-­‑Controller ¡(MVC) ¡determines ¡how ¡the ¡end-­‑user ¡interacts ¡with ¡the ¡ framework, ¡how ¡event ¡calls ¡are ¡handled ¡and ¡if ¡it ¡supports ¡dynamics ¡such ¡as ¡updaEng ¡a ¡ post ¡or ¡shopping ¡cart. ¡ ¡ – Object-­‑relaEonal ¡Mapping ¡(ORM) ¡support ¡enables ¡you ¡to ¡update ¡the ¡API ¡or ¡key ¡ components ¡of ¡your ¡site ¡without ¡impacEng ¡the ¡front-­‑end. ¡

  • Scalability ¡

26

slide-27
SLIDE 27

How ¡to ¡select ¡a ¡Web ¡ApplicaEon ¡ Framework ¡– ¡Standard ¡Java ¡EE ¡

  • Maturity ¡and ¡Popularity ¡-­‑ ¡YES ¡

– How ¡long ¡the ¡framework ¡has ¡been ¡around ¡and ¡how ¡likely ¡it ¡is ¡to ¡evolve ¡are ¡key ¡ consideraEons ¡when ¡comparing ¡web ¡frameworks. ¡ ¡

  • AJAX-­‑ ¡No ¡(use ¡JQuery) ¡

– AJAX ¡is ¡complex ¡technology. ¡

  • LocalizaEon-­‑ ¡YES ¡ ¡

– The ¡ability ¡to ¡adapt ¡to ¡mulEple ¡languages ¡is ¡a ¡common ¡component ¡of ¡most ¡frameworks. ¡ ¡

  • Security ¡and ¡Form ¡ValidaEon-­‑ ¡YES ¡for ¡security, ¡use ¡JQuery ¡for ¡client, ¡need ¡to ¡provide ¡

server-­‑side ¡validaEon. ¡

– DeclaraEve ¡authorizaEon ¡and ¡authenEcaEon, ¡form ¡validaEon. ¡

  • CustomizaEon ¡and ¡Extensibility-­‑ ¡YES ¡for ¡templates, ¡NO ¡for ¡CSS ¡

– Templates, ¡theme ¡availability ¡or ¡support ¡for ¡CSS ¡are ¡a ¡must ¡if ¡the ¡user ¡experience ¡and ¡

  • verall ¡design ¡of ¡your ¡website ¡are ¡important. ¡ ¡
  • MVC ¡Structure ¡and ¡ORM-­‑ ¡You ¡have ¡MVC ¡from ¡class!, ¡consider ¡Hibernate ¡or ¡applicaEon ¡specific ¡
  • ORM. ¡

– The ¡Model-­‑View-­‑Controller ¡(MVC) ¡determines ¡how ¡the ¡end-­‑user ¡interacts ¡with ¡the ¡ framework, ¡how ¡event ¡calls ¡are ¡handled ¡and ¡if ¡it ¡supports ¡dynamics ¡such ¡as ¡updaEng ¡a ¡ post ¡or ¡shopping ¡cart. ¡ ¡ – Object-­‑relaEonal ¡Mapping ¡(ORM) ¡support ¡enables ¡you ¡to ¡update ¡the ¡API ¡or ¡key ¡ components ¡of ¡your ¡site ¡without ¡impacEng ¡the ¡front-­‑end. ¡

  • Scalability-­‑ ¡Can ¡be ¡highly ¡scalable. ¡

27

slide-28
SLIDE 28

A ¡more ¡discriminaEve ¡choice ¡criteria ¡

  • Community ¡/ ¡Support ¡
  • HTML5 ¡
  • ReST ¡
  • Mobile ¡
  • Performance ¡
  • Page ¡Speed ¡

28

slide-29
SLIDE 29

Predetermined ¡Constraints ¡

  • Language ¡
  • Plauorm ¡
  • ApplicaEon ¡Type ¡

29

slide-30
SLIDE 30

If ¡you ¡choose ¡JVM ¡

30

slide-31
SLIDE 31

Pure ¡JVM ¡Frameworks ¡

  • Apache: ¡Wicket, ¡Struts, ¡Sling, ¡Tapestry, ¡Click ¡
  • GWT: ¡SmartGWT, ¡GXT, ¡Vaadin, ¡Errai ¡
  • JSF: ¡Mojarra ¡(RI), ¡MyFaces, ¡Tomahawk, ¡IceFaces, ¡RichFaces, ¡
  • PrimeFaces ¡
  • Spring ¡MVC, ¡Stripes, ¡RIFE, ¡ZK, ¡Gemini ¡

h6p://en.wikipedia.org/wiki/ Comparison_of_web_applicaEon_frameworks#Java ¡ ¡

31

slide-32
SLIDE 32

Ma6 ¡Raiblem, ¡DEVOXX ¡Overall ¡Score ¡

32

slide-33
SLIDE 33

Ma6 ¡Raiblem, ¡DEVOXX ¡Overall ¡Score ¡

33

slide-34
SLIDE 34

Ma6 ¡Raiblem, ¡DEVOXX ¡Overall ¡Score ¡

Weighted ¡Results ¡

  • Grails ¡(90) ¡
  • Play ¡(87.5) ¡
  • Spring ¡MVC ¡(85) ¡
  • Ruby ¡on ¡Rails ¡(82.5) ¡
  • Vaadin ¡(82.5) ¡
  • GWT ¡(80) ¡

34

slide-35
SLIDE 35

Framework ¡Performance ¡

  • Its ¡no ¡secret ¡that ¡the ¡performance ¡of ¡web ¡applica&ons ¡is ¡highly ¡dependent ¡on ¡the ¡

chosen ¡framework. ¡

  • But ¡many ¡are ¡surprised ¡at ¡how ¡much ¡of ¡a ¡difference. ¡If ¡you’re ¡using ¡Django, ¡Ruby ¡on ¡

Rails ¡and ¡similar ¡frameworks, ¡the ¡applicaEon ¡will ¡be ¡about ¡40 ¡&mes ¡slower ¡than ¡ selecEng ¡a ¡faster ¡framework. ¡And ¡if ¡you ¡choose ¡Cake ¡PHP, ¡the ¡difference ¡increases ¡by ¡ an ¡order ¡of ¡magnitude. ¡

  • The ¡company ¡TechEmpower ¡conducted ¡comparaEve ¡tesEng ¡of ¡frameworks, ¡micro-­‑

frameworks ¡and ¡plauorms ¡for ¡web ¡development, ¡configuring ¡their ¡best, ¡but ¡without ¡ the ¡use ¡of ¡caching, ¡placing ¡the ¡applicaEon ¡on ¡Amazon ¡EC2 ¡(Core ¡i7, ¡Ubuntu ¡12.04) ¡ and ¡run ¡a ¡program ¡for ¡stress ¡tests ¡WeigHTTP. ¡Then ¡repeated ¡the ¡tests ¡on ¡a ¡dedicated ¡

  • server. ¡
  • The ¡enEre ¡tesEng ¡procedure ¡describing ¡the ¡configuraEon ¡of ¡each ¡framework ¡

published ¡on ¡Github. ¡ ¡

  • The ¡tests: ¡
  • ­‑ ¡SerializaEon ¡JSON; ¡
  • ­‑ ¡SerializaEon ¡JSON ¡on ¡a ¡dedicated ¡server; ¡
  • ­‑ ¡Access ¡to ¡the ¡database ¡(RPS); ¡
  • ­‑ ¡Access ¡to ¡the ¡database ¡on ¡a ¡dedicated ¡server; ¡
  • ­‑ ¡Access ¡to ¡the ¡database, ¡the ¡query ¡1-­‑20; ¡
  • ­‑ ¡Access ¡to ¡the ¡database, ¡at ¡1-­‑20 ¡queries ¡on ¡a ¡dedicated ¡server; ¡
  • ­‑ ¡For ¡example, ¡here ¡are ¡the ¡results ¡for ¡JSON ¡serializaEon ¡in ¡an ¡instance ¡on ¡EC2. ¡

35

slide-36
SLIDE 36

Framework ¡Performance ¡

36

slide-37
SLIDE 37

37

slide-38
SLIDE 38

Ruby ¡on ¡Rails ¡

  • Open ¡source ¡web ¡applicaEon ¡framework ¡which ¡runs ¡on ¡the ¡Ruby ¡

programming ¡language. ¡ ¡ – Ruby ¡is ¡a ¡general-­‑purpose ¡object-­‑oriented ¡programming ¡dynamic ¡ (scripEng) ¡language ¡that ¡combines ¡syntax ¡inspired ¡by ¡Perl ¡with ¡ Smalltalk-­‑like ¡features. ¡ ¡ ¡ – A ¡scripEng ¡language ¡that ¡is ¡considered ¡more ¡powerful ¡than ¡Perl, ¡and ¡ more ¡object-­‑oriented ¡than ¡Python. ¡ ¡

  • Full-­‑stack ¡framework: ¡ ¡

– Allows ¡creaEng ¡pages ¡and ¡applicaEons ¡that ¡gather ¡informaEon ¡from ¡ the ¡web ¡server, ¡talk ¡to ¡or ¡query ¡the ¡database, ¡and ¡render ¡templates ¡

  • ut ¡of ¡the ¡box. ¡ ¡

– As ¡a ¡result, ¡Rails ¡features ¡a ¡rouEng ¡system ¡that ¡is ¡independent ¡of ¡the ¡ web ¡server. ¡

  • Emphasizes ¡use ¡of ¡well-­‑known ¡pa6erns ¡and ¡principles: ¡acEve ¡record ¡

pa6ern, ¡convenEon ¡over ¡configuraEon, ¡don't ¡repeat ¡yourself, ¡and ¡model-­‑ view-­‑controller. ¡

38

slide-39
SLIDE 39

Ruby ¡on ¡Rails ¡-­‑ ¡2 ¡

  • Uses ¡the ¡Model-­‑View-­‑Controller ¡(MVC) ¡architecture ¡pa6ern. ¡
  • Model ¡maps ¡to ¡a ¡table ¡in ¡a ¡database ¡(acEve ¡record ¡pa6ern), ¡and ¡a ¡Ruby ¡file. ¡ ¡

– Example: ¡a ¡model ¡class ¡User ¡will ¡usually ¡be ¡defined ¡in ¡the ¡file ¡user.rb ¡in ¡the ¡app/models ¡ directory, ¡and ¡is ¡linked ¡to ¡the ¡table ¡users ¡in ¡the ¡database. ¡ ¡

  • Controller ¡responds ¡to ¡external ¡requests ¡from ¡the ¡web ¡server ¡to ¡the ¡

applicaEon ¡by ¡determining ¡which ¡view ¡file ¡to ¡render. ¡ ¡

– Controller ¡may ¡also ¡have ¡to ¡query ¡one ¡or ¡more ¡models ¡directly ¡for ¡informaEon ¡and ¡pass ¡ these ¡on ¡to ¡the ¡view. ¡ ¡ – Controller ¡may ¡provide ¡one ¡or ¡more ¡acEons. ¡An ¡acEon ¡is ¡a ¡basic ¡unit ¡that ¡describes ¡how ¡to ¡ respond ¡to ¡a ¡specific ¡external ¡web-­‑browser ¡request. ¡ ¡

  • A ¡view ¡(default ¡configuraEon) ¡is ¡an ¡erb ¡file, ¡which ¡is ¡converted ¡to ¡HTML ¡at ¡

run-­‑Eme ¡(template ¡pa6ern). ¡

  • Includes ¡tools ¡that ¡make ¡common ¡development ¡tasks ¡easier ¡"out ¡of ¡the ¡

box", ¡such ¡as ¡scaffolding ¡that ¡can ¡automaEcally ¡construct ¡some ¡of ¡the ¡ models ¡and ¡views ¡needed ¡for ¡a ¡basic ¡website. ¡

39

slide-40
SLIDE 40

Spring ¡Framework ¡

  • The ¡core ¡features ¡can ¡be ¡used ¡by ¡any ¡Java ¡applicaEon. ¡
  • Extensions ¡for ¡building ¡web ¡applicaEons ¡on ¡top ¡of ¡the ¡Java ¡EE ¡plauorm. ¡ ¡
  • Does ¡not ¡impose ¡any ¡specific ¡programming ¡model, ¡but ¡it ¡has ¡become ¡

popular ¡in ¡the ¡Java ¡community ¡as ¡an ¡alternaEve ¡to, ¡replacement ¡for, ¡or ¡ even ¡addiEon ¡to ¡the ¡Enterprise ¡JavaBean ¡(EJB) ¡model. ¡

40

slide-41
SLIDE 41

Spring ¡Framework ¡comprises ¡several ¡ modules ¡that ¡provide ¡services: ¡

  • Inversion ¡of ¡control ¡container: ¡configuraEon ¡of ¡applicaEon ¡components ¡

and ¡via ¡dependency ¡injecEon ¡(object ¡coupling ¡is ¡bound ¡at ¡run ¡Eme ¡– ¡think ¡ Observer). ¡

  • Aspect-­‑oriented ¡programming: ¡enables ¡implemenEng ¡cross-­‑cu{ng ¡
  • concerns. ¡
  • Data ¡access: ¡database ¡management ¡systems ¡on ¡the ¡Java ¡plauorm ¡using ¡

JDBC ¡and ¡object-­‑relaEonal ¡mapping ¡tools ¡and ¡with ¡NoSQL ¡databases ¡

  • TransacEon ¡management: ¡unifies ¡several ¡transacEon ¡management ¡APIs ¡

and ¡coordinates ¡transacEons ¡for ¡Java ¡objects ¡

  • Model–view–controller: ¡an ¡HTTP-­‑ ¡and ¡servlet-­‑based ¡framework ¡providing ¡

hooks ¡for ¡extension ¡and ¡customizaEon ¡for ¡web ¡applicaEons ¡and ¡RESTful ¡ web ¡services. ¡

41

slide-42
SLIDE 42

Spring ¡Framework ¡comprises ¡several ¡ modules ¡that ¡provide ¡services ¡cont.: ¡

  • Remote ¡access ¡framework: ¡RPC-­‑style ¡marshaling ¡of ¡Java ¡objects ¡over ¡

networks ¡supporEng ¡RMI, ¡CORBA ¡and ¡HTTP-­‑based ¡protocols ¡including ¡ web ¡services ¡(SOAP) ¡

  • ConvenEon ¡over ¡configuraEon: ¡rapid ¡applicaEon ¡development ¡(seeks ¡to ¡

decrease ¡the ¡number ¡of ¡decisions ¡that ¡developers ¡need ¡to ¡make) ¡for ¡

  • simplicity. ¡
  • AuthenEcaEon ¡and ¡authorizaEon: ¡configurable ¡security ¡processes. ¡
  • Remote ¡management: ¡configuraEve ¡exposure ¡and ¡management ¡of ¡Java ¡
  • bjects ¡for ¡local ¡or ¡remote ¡configuraEon ¡via ¡JMX ¡
  • Messaging: ¡configuraEve ¡registraEon ¡of ¡message ¡listener ¡objects ¡for ¡

transparent ¡message-­‑consumpEon ¡from ¡message ¡queues ¡via ¡JMS, ¡ improvement ¡of ¡message ¡sending ¡over ¡standard ¡JMS ¡APIs ¡

  • TesEng: ¡support ¡classes ¡for ¡wriEng ¡unit ¡tests ¡and ¡integraEon ¡tests ¡

42

slide-43
SLIDE 43

Python ¡Django ¡

Django ¡

  • Open ¡source ¡web ¡applicaEon ¡framework ¡which ¡follows ¡the ¡MVC ¡pa6ern. ¡
  • Primary ¡goal ¡is ¡to ¡ease ¡the ¡creaEon ¡of ¡complex, ¡database-­‑driven ¡websites. ¡ ¡
  • Emphasizes ¡reusability ¡and ¡"pluggability" ¡of ¡components, ¡rapid ¡

development, ¡and ¡the ¡principle ¡of ¡don't ¡repeat ¡yourself. ¡ ¡

  • Python ¡is ¡used ¡throughout, ¡even ¡for ¡se{ngs, ¡files, ¡and ¡data ¡models. ¡ ¡
  • Django ¡also ¡provides ¡an ¡opEonal ¡administraEve ¡create, ¡read, ¡update ¡and ¡

delete ¡interface ¡that ¡is ¡generated ¡dynamically ¡through ¡introspecEon ¡and ¡ configured ¡via ¡admin ¡models. ¡ Many ¡others ¡

  • Grok, ¡Pylons, ¡TurboGears, ¡web2py, ¡Zope2 ¡

43

slide-44
SLIDE 44

Grails ¡

  • Grails ¡is ¡an ¡open ¡source ¡web ¡applicaEon ¡framework ¡which ¡

uses ¡the ¡Groovy ¡programming ¡language ¡(which ¡is ¡in ¡turn ¡ based ¡on ¡the ¡Java ¡plauorm ¡– ¡runs ¡on ¡JVM). ¡ ¡

  • Intended ¡to ¡be ¡a ¡high-­‑producEvity ¡framework ¡by ¡following ¡

the ¡"coding ¡by ¡convenEon" ¡paradigm, ¡providing ¡a ¡stand-­‑alone ¡ development ¡environment ¡and ¡hiding ¡much ¡of ¡the ¡ configuraEon ¡detail ¡from ¡the ¡developer. ¡

  • Use ¡to ¡be ¡called ¡Groovy ¡on ¡Rails. ¡
  • h6p://www.grails.org/ ¡

44

slide-45
SLIDE 45

JavaServer ¡Faces ¡

  • Java ¡specificaEon ¡and ¡framework ¡for ¡building ¡component-­‑based ¡

user ¡interfaces ¡for ¡web ¡applicaEons. ¡

  • Component-­‑driven ¡UI ¡design ¡model, ¡using ¡XML ¡files ¡called ¡view ¡

templates ¡or ¡Facelets ¡views. ¡ ¡

  • Requests ¡are ¡processed ¡by ¡the ¡FacesServlet, ¡which ¡loads ¡the ¡

appropriate ¡view ¡template, ¡builds ¡a ¡component ¡tree, ¡processes ¡ events, ¡and ¡renders ¡the ¡response, ¡typically ¡in ¡the ¡HTML ¡language, ¡ to ¡the ¡client. ¡ ¡

  • Built-­‑in ¡support ¡for ¡Ajax ¡(RIA). ¡
  • The ¡state ¡of ¡UI ¡components ¡and ¡other ¡objects ¡of ¡scope ¡interest, ¡is ¡

saved ¡at ¡the ¡end ¡of ¡each ¡request ¡in ¡a ¡process ¡called ¡ stateSaving ¡and ¡restored ¡upon ¡next ¡creaEon ¡of ¡that ¡view. ¡ ¡

  • Objects ¡and ¡states ¡can ¡be ¡saved ¡either ¡on ¡the ¡client ¡or ¡server ¡side. ¡

45

slide-46
SLIDE 46

ASP.NET ¡

  • Server-­‑side ¡Web ¡applicaEon ¡framework ¡designed ¡for ¡Web ¡development ¡to ¡

produce ¡dynamic ¡Web ¡pages, ¡applicaEons ¡and ¡services.. ¡ ¡

  • Developed ¡and ¡supported ¡by ¡MicrosoH ¡to ¡allow ¡programmers ¡to ¡build ¡

dynamic ¡web ¡sites, ¡web ¡applicaEons ¡and ¡web ¡services. ¡ ¡

  • Successor ¡to ¡MicrosoH's ¡AcEve ¡Server ¡Pages ¡(ASP). ¡ ¡
  • ASP.NET ¡is ¡built ¡on ¡the ¡Common ¡Language ¡RunEme ¡(CLR), ¡allowing ¡

programmers ¡to ¡write ¡ASP.NET ¡code ¡using ¡any ¡supported ¡.NET ¡language ¡

  • ASP.NET ¡Web ¡pages, ¡known ¡officially ¡as ¡Web ¡Forms, ¡are ¡the ¡main ¡building ¡

blocks ¡for ¡applicaEon ¡development. ¡

46

slide-47
SLIDE 47

PHP ¡

  • Server-­‑side ¡scripEng ¡language ¡designed ¡for ¡web ¡

development, ¡but ¡also ¡used ¡as ¡a ¡general-­‑purpose ¡ programming ¡language. ¡ ¡

  • PHP ¡is ¡now ¡installed ¡on ¡more ¡than ¡244 ¡million ¡websites ¡and ¡

2.1 ¡million ¡web ¡servers. ¡

  • PHP ¡code ¡is ¡interpreted ¡by ¡a ¡web ¡server ¡with ¡a ¡PHP ¡processor ¡

module ¡which ¡generates ¡the ¡resulEng ¡web ¡page. ¡

  • PHP ¡commands ¡can ¡be ¡embedded ¡directly ¡into ¡an ¡HTML ¡

source ¡document ¡rather ¡than ¡calling ¡an ¡external ¡file ¡to ¡ process ¡data. ¡ ¡

  • PHP ¡is ¡free ¡open-­‑source ¡soHware. ¡

47