Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navigatorului Web

25 %
75 %
Information about Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura...
Technology

Published on January 16, 2014

Author: busaco

Source: slideshare.net

Description

Dezvoltarea aplicaţiilor Web la nivel de client — detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura unui navigator Web

Elbert Hubbard Dr. Sabin Buragawww.purl.org/net/busaco “To avoid criticism do nothing, say nothing, be nothing.”

browser Web funcționalități de bază (application logic) interpretor JavaScript acces la platformă Dr. Sabin Buragawww.purl.org/net/busaco platformă (e.g., sistem de operare)

browser Web funcționalități de bază (application logic) interpretor JavaScript acces la platformă rețea, grafică, fonturi, widget-uri native,… Dr. Sabin Buragawww.purl.org/net/busaco platformă (e.g., sistem de operare)

Dr. Sabin Buragawww.purl.org/net/busaco Un client (i.e. browser Web) se identifică via valoarea câmpului-antet User-Agent dintr-o cerere HTTP

1994 – primul browser comercial: Netscape Navigator include primul interpretor JavaScript și oferă o interfață de programare (BOM – Browser Object Model) Mozilla/Versiune [Limbă] (Platformă; Criptare) Mozilla/2.02 [fr] (WinNT; I) Mozilla/Versiune (Platformă; Criptare [; descriere OS]) Mozilla/3.0 (Win95; U) Netscape Communicator 4 – Mozilla/4.0 (Win98; I) http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/ Dr. Sabin Buragawww.purl.org/net/busaco 1993 – primul browser Web: Mosaic – Mosaic/0.9

Dr. Sabin Buragawww.purl.org/net/busaco 1994 – primul browser disponibil pe un dispozitiv miniaturizat (PDA – Apple Newton): PocketWeb http://www.teco.edu/pocketweb/

Mozilla/2.0 (compatible; MSIE 3.02; Windows 95) MSIE 4—7 – Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC) MSIE 8 – Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) MSIE 11 – Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko www.modern.ie Dr. Sabin Buragawww.purl.org/net/busaco 1996 – primul navigator produs de Microsoft: MSIE include dialectul JScript și propriul BOM multe facilități, ulterior standardizate de W3C Mozilla/2.0 (compatible; MSIE Versiune; Sistem de operare)

Dr. Sabin Buragawww.purl.org/net/busaco 1996 – primul navigator trialware: Opera 2 focalizat pe utilizabilitate (e.g., tab-uri) & accesibilitate (de exemplu, interacțiune prin gesturi) permite selectarea modului de identificare a browser-ului Opera/Versiune (OS; Criptare) [Limbă] Opera/7.54 (Windows NT 5.1; U) [en] http://dev.opera.com/

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1b2) Gecko/20060823 SeaMonkey/1.1a Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/ Dr. Sabin Buragawww.purl.org/net/busaco 1998 – apariția procesorului de redare Gecko Mozilla/Versiune (Platformă; Criptare; OS/CPU; Limbă; VersiuneAnterioară) Gecko/Versiune Produs/Versiune

Dr. Sabin Buragawww.purl.org/net/busaco 1997—1999 – navigator Web pentru telefoane mobile: HitchHiker (ulterior, Microsoft Mobile Explorer 2.0) WAP – protocol, WML – limbaj de marcare, WMLScript

Dr. Sabin Buragawww.purl.org/net/busaco fundația Mozilla – versiunea open source a Netscape: Phoenix (2002)Firebird (2003)Firefox (2004) focalizare asupra respectării standardelor Web interfață via XUL (Extensible User-interface Language) extensibil via add-ons (extensii, teme vizuale etc.) ciclu de dezvoltare de 6 săptămâni: Nightly, Aurora, Beta, Release Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 https://developer.mozilla.org/Mozilla/Firefox

Dr. Sabin Buragawww.purl.org/net/busaco 2003 – Apple Safari cu WebKit bazat pe KHTML (KDE) accent pus pe inovare (<canvas>, CSS,…) & performanță Mozilla/5.0 (Platformă; Criptare; OS/CPU; Limbă) AppleWebKit/Versiune (KHTML, like Gecko) Safari/Versiune Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125.1 Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 https://developer.apple.com/devcenter/safari/

Dr. Sabin Buragawww.purl.org/net/busaco 2005 – Opera Mini oferă primele facilități de redare a datelor pe ecrane miniaturizate (small screen rendering) procesare realizată la nivel de server via data centers

Dr. Sabin Buragawww.purl.org/net/busaco 2008 – Google Chrome folosind WebKit; din 2013: Blink bazat pe proiectul open source Chromium focalizare asupra performanței la nivel de client Web interfață minimalistă + manager de tab-uri include instrumente avansate pentru dezvoltatori Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13 Mozilla/5.0 (Linux; Android 4.1.2; GT-I9300 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 https://developers.google.com/chrome/ www.chromium.org

Dr. Sabin Buragawww.purl.org/net/busaco Care este arhitectura generală a unui navigator Web?

rendering engine net work JS interpreter XML parser display back-end componentele de bază ale unui navigator Web generic conform (Grosskurth & Godfrey, 2006; Garsiel, 2011) Dr. Sabin Buragawww.purl.org/net/busaco browser engine data persistence user interface

Dr. Sabin Buragawww.purl.org/net/busaco rendering engine procesele implicate în afișarea conținutului unei pagini Web (J. Brereton et al., 2011)

bara de introducere a URI-urilor (address bar) căutare pe Web instrumente facilitând navigarea (back/forward button) meniu de salvare a adreselor Web favorite (bookmarks) acces la preferințe & alte componente – e.g., extensii … Dr. Sabin Buragawww.purl.org/net/busaco user interface

Dr. Sabin Buragawww.purl.org/net/busaco

diverse proprietăți & setări ale browser-ului specifice unui utilizator pot fi stocate în cadrul unui profil exemplu tipic: Firefox – http://mzl.la/NYhKHH https://developer.mozilla.org/Profile_Manager Dr. Sabin Buragawww.purl.org/net/busaco user interface

“punte” între interfața cu utilizatorul și rendering engine Dr. Sabin Buragawww.purl.org/net/busaco browser engine

“punte” între interfața cu utilizatorul și rendering engine nucleu (kernel) plug-ins extensions add-ons Dr. Sabin Buragawww.purl.org/net/busaco browser engine

realizează redarea conținutului solicitat Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

realizează redarea conținutului solicitat documente HTML ce includ resurse multimedia imagini raster (GIF, PNG, JPEG) grafică vectorială SVG (Scalable Vector Graphics) reprezentări diverse: MathML, WebGL,… Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

implică, uzual, procesarea arborelui DOM asociat unei pagini Web cu aplicarea proprietăților CSS aferente în vederea redării într-o zonă de afișare Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

Dr. Sabin Buragawww.purl.org/net/busaco o aplicație Web la nivel de client poate fi compusă din diverse componente, încărcate dinamicmanagementul arborilor DOM (Dimitri Glazkov, 2013)

include un interpretor (parser) HTML conform tipului de document Web – DTD Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

include un interpretor (parser) HTML conform tipului de document Web – DTD moduri diferite de interpretare standards mode – HTML5, CSS3, SVG,… quirks mode – www.quirksmode.org Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

generare arbore de redare determinare layout afișare Dr. Sabin Buragawww.purl.org/net/busaco procesare cod HTML  arbore DOM (rendering) layout

cod sursă HTML  arbore DOM Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

Dr. Sabin Buragawww.purl.org/net/busaco fazele importante ale procesării unui document HTML în vederea obținerii arborelui DOM

Dr. Sabin Buragawww.purl.org/net/busaco a se revedea cursul “Limbaje formale & tehnici de compilare” fazele importante ale procesării unui document HTML în vederea obținerii arborelui DOM

HTML Body Element HTML Head Element HTML Paragraph Element Text www.w3.org/DOM/ http://dom.spec.whatwg.org/ HTML Title Element Dr. Sabin Buragawww.purl.org/net/busaco <!DOCTYPE html> <html> <head> <title></title> </head> <body> <p>Salut, lume!</p> </body> </html> HTML Html Element

în mod tradițional, modelul de procesare este sincron, single-threaded Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

în mod tradițional, modelul de procesare este sincron, single-threaded programele JavaScript vor trebui executate imediat ce procesorul întâlnește codul (eventual, extern – încărcat de pe alt sit, dacă e posibil) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

în mod tradițional, modelul de procesare este sincron, single-threaded programele JavaScript vor trebui executate imediat ce procesorul întâlnește codul implicit, procesul de rendering e oprit până ce codul JavaScript este executat complet Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

pentru HTML5, script-urile JavaScript pot fi executate asincron (într-un thread separat) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

deoarece – în mod normal – stilurile CSS nu modifică arborele DOM, procesarea poate avea loc independent de încărcarea fișierelor CSS Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

arbore DOM  arbore de redare (render tree) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

conform David Baron, 2008 Dr. Sabin Buragawww.purl.org/net/busaco relația dintre arborele DOM și arborele de redare a conținutului (render tree)

alături de arborele de redare, se va genera și: render object tree responsabil cu aranjamentul (layout) & afișarea (paint) specific conținutului efectiv redat compus din obiecte de redare: RenderBlock, RenderText, RenderInline etc. Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

alături de arborele de redare, se va genera și: Dr. Sabin Buragawww.purl.org/net/busaco rendering engine style tree include valorile calculate ale proprietăților de stil asociat arborelui obiectelor de redare (render object tree)

alături de arborele de redare, se va genera și: render layer tree folosit pentru elementele ce includ conținuturi externe (<video>, WebGL via <canvas>) ori manipulate prin CSS (transformări, scalări, decupări,…) stabilește coordonatele în spațiu și ordinea (z-index) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

L. Weintraub, “How WebKit Renders the Web”, Fluent Conference, 2012 Dr. Sabin Buragawww.purl.org/net/busaco relațiile între obiecte de redare (render objects) și stratele asociate (render layers)

arbore de redare (render tree)  generare a aranjamentului vizual (layout) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

calcularea aranjamentului (layout) e dependentă de zona de afișare – uzual, un tab al navigatorului Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

calcularea aranjamentului (layout) e dependentă de zona de afișare – uzual, un tab al navigatorului se pot lua în considerație coordonatele ferestrei navigatorului + proprietățile mediului de redare: rezoluție, orientare (portrait vs. landscape), suport pentru 3D etc. Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

calcularea aranjamentului (layout) global layout (pentru întreg render tree) vs. incremental Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

calcularea aranjamentului (layout) global layout (pentru întreg render tree) vs. incremental sincron vs. asincron Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

calcularea aranjamentului (layout) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine calculul lățimii fiecărui bloc de conținut (width calculation) decizii privind line breaking plasarea blocurilor flotante – e.g., cele având float: right determinarea lățimii fiecărei coloane de tabel …

Dr. Sabin Buragawww.purl.org/net/busaco folosirea extensiei Firebug pentru vizualizarea datelor privind layout-ul calculat de navigatorul Web

Dr. Sabin Buragawww.purl.org/net/busaco Firefox: vizualizarea 3D a arborelui DOM via arborele de redare (pe baza proiectului Tilt realizat de absolventul FII Victor Porof – Google Summer of Code 2011)

generare aranjament vizual (layout)  afișare layout Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

Dr. Sabin Buragawww.purl.org/net/busaco redări diferite ale aceluiași document HTML (dependența de platformă și/sau de navigator)

afișarea propriu-zisă (painting) poate fi realizată la nivel de software sau pe baza procesorului grafic (accelerată hardware) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

după afișarea propriu-zisă, pot apărea schimbări de redare Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

după afișarea propriu-zisă, pot apărea schimbări de redare la nivel local/global re-layout și/sau re-paint Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

Dr. Sabin Buragawww.purl.org/net/busaco rendering engine exemplificări notabile: Gecko (Firefox, SeaMonkey, Thunderbird) Presto (Opera, Opera Mobile, Opera Mini, Nintendo) Trident (Microsoft: IE, IE Mobile, Skype) WebKit (Apple Safari, Google Chrome, Adobe AIR + majoritatea platformelor mobile: Android, Blackberry, iOS) Blink (Google Chrome – din 2013)

Dr. Sabin Buragawww.purl.org/net/busaco fluxul de activități realizate de Gecko developer.mozilla.org/Gecko

Dr. Sabin Buragawww.purl.org/net/busaco organizarea codului Gecko – diagramă simplificată (Robert O’Callahan, 2013)

Dr. Sabin Buragawww.purl.org/net/busaco fluxul de activități realizate de WebKit www.webkit.org

anumite browser-e pot rula mai multe instanțe ale procesorului responsabil cu redarea conținutului exemplu tipic: Google Chrome Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

Dr. Sabin Buragawww.purl.org/net/busaco procesele din cadrul Chrome (Levi Weintraub, 2012)

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura multiproces la Chromium

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura multiproces la Gecko (Robert O’Callahan, 2013) http://people.mozilla.org/~roc/Samsung/MozillaArchitectures.pdf

procesul de rendering poate fi optimizat (speculative parsing) strategii diverse: încărcare paralelă a resurselor, multi-procesare, încărcarea directă a arborelui de redare (pre-procesat la nivel de server),… Dr. Sabin Buragawww.purl.org/net/busaco rendering engine

responsabil cu transferurile de date de pe Internet Dr. Sabin Buragawww.purl.org/net/busaco networking

responsabil cu transferurile de date de pe Internet API independent de platformă + implementări specifice fiecărui sistem de operare Dr. Sabin Buragawww.purl.org/net/busaco networking

responsabil cu transferurile de date de pe Internet API independent de platformă + implementări specifice fiecărui sistem de operare exemplificare: Firefox utilizează modulul Necko Dr. Sabin Buragawww.purl.org/net/busaco networking

Dr. Sabin Buragawww.purl.org/net/busaco efectuarea unei cereri de rețea – cazul Chromium detalii la www.chromium.org/developers/design-documents/network-stack

responsabil cu transferurile de date de pe Internet protocolul HTTP standardizat de RFC 2616 www.w3.org/Protocols/ Dr. Sabin Buragawww.purl.org/net/busaco networking

responsabil cu transferurile de date de pe Internet HTTPS – asigură comunicații “sigure” HTTP via TLS (Transport Layer Security): autentificare pe baza certificatelor digitale + criptare bidirecțională RFC 2818 – https://tools.ietf.org/html/rfc2818 Dr. Sabin Buragawww.purl.org/net/busaco networking

Dr. Sabin Buragawww.purl.org/net/busaco extensia HTTPS Everywhere www.eff.org/https-everywhere

folosit pentru transferuri de date de pe Internet protocolul SPDY – un experiment Google Dr. Sabin Buragawww.purl.org/net/busaco networking număr nelimitat de cereri concurente folosind aceeași conexiune (eventual, via un sistem de priorități) compresarea anteturilor mesajelor fluxuri de date în regim push (notificări primite de client)

folosit pentru transferuri de date de pe Internet protocolul SPDY – un experiment Google detalii la http://www.chromium.org/spdy Dr. Sabin Buragawww.purl.org/net/busaco networking

folosit pentru transferuri de date de pe Internet protocolul HTTP/2.0 – în lucru la IETF extinde ideile SPDY, focalizat asupra performanței vezi prezentarea lui Mark Nottingham (octombrie 2012) www.slideshare.net/mnot/what-http20-will-do-for-you Dr. Sabin Buragawww.purl.org/net/busaco networking

observații: numărul conexiunilor HTTP paralele realizate cu un server sau proxy este limitat (uzual: 2—6) unele navigatoare pot aplica tehnici de optimizare a încărcării resurselor detalii într-un curs viitor Dr. Sabin Buragawww.purl.org/net/busaco networking

Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz Firefox: ajustarea parametrilor vizând conexiunile HTTP via schema URI about:config

responsabil cu afișarea componentelor de interfață ferestre, bare de defilare a conținutului (scroll bars), tipuri de câmpurilor formularelor Web: (butoane de tip radio, textarea, liste de selecție,…) Dr. Sabin Buragawww.purl.org/net/busaco display (UI) backend

browsershots.org www.browserstack.com Dr. Sabin Buragawww.purl.org/net/busaco

interpretează și execută programele JavaScript la nivel de client Dr. Sabin Buragawww.purl.org/net/busaco JavaScript interpreter

Carakan (Opera) Chakra (Microsoft) Nashorn (Oracle) Nitro (SquirrelFish), JavaScriptCore (Apple) SpiderMonkey, IonMonkey, Rhino (Mozilla) Tamarin (Adobe) V8 (Google, Opera, Node.js) Dr. Sabin Buragawww.purl.org/net/busaco JavaScript interpreter (engine)

diferențele de performanță pot fi măsurate via teste specifice (benchmarking) exemplificări: Benchmark.js, Internet Explorer Test Drive (Microsoft), Kraken (Mozilla), Octane (Google), SunSpider (Apple) diverse statistici la http://arewefastyet.com/ Dr. Sabin Buragawww.purl.org/net/busaco JavaScript interpreter (engine)

responsabil cu procesarea documentelor XML via DOM implementarea minimală vizează DOM nivelul 2 Dr. Sabin Buragawww.purl.org/net/busaco XML parser

în unele cazuri, procesarea documentelor XML poate implica validarea datelor via DTD, dar nu folosind scheme XML Dr. Sabin Buragawww.purl.org/net/busaco XML parser

uzual, se poate oferi suport pentru: spații de nume XML XPath 1.0 – în mod normal, XPath 2.0 nu-i acceptat XSLT 1.0 – actualmente nu există suport pentru XSLT 2.0 transferuri asincrone de date via XMLHttpRequest etc. Dr. Sabin Buragawww.purl.org/net/busaco XML parser

unele navigatoare ofera facilități pentru alte limbaje XML e.g., MathML sau SVG (Scalable Vector Graphics) Dr. Sabin Buragawww.purl.org/net/busaco XML parser

modul responsabil cu stocarea datelor pe calculatorul client Dr. Sabin Buragawww.purl.org/net/busaco data persistence

cookie-uri cache localStorage (HTML5) SQLite database (HTML5) … detalii la alt curs Dr. Sabin Buragawww.purl.org/net/busaco data persistence

Dr. Sabin Buragawww.purl.org/net/busaco Ce putem afirma despre particularitățile navigatoarelor Web?

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura inițială a navigatorului Firefox

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura Internet Explorer (conform MSDN)

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura multi-proces la versiunile moderne de Internet Explorer (Loosely-Coupled IE)

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura conceptuală a browser-ului Chrome (Tom Hauser et al., 2009; Ilya Grigorik, 2013)

Dr. Sabin Buragawww.purl.org/net/busaco diagrama fluxului de date – cazul Chrome (Hauser et al., 2009)

Dr. Sabin Buragawww.purl.org/net/busaco arhitectura browser-ului Lynx (Grosskurth & Godfrey, ‘06)

un navigator Web modern prezintă o arhitectură modulară realizată pe baza unui nucleu (browser kernel) Dr. Sabin Buragawww.purl.org/net/busaco Remarcă

un navigator Web modern prezintă o arhitectură modulară realizată pe baza unui nucleu (browser kernel) de asemenea, permite includerea de plug-in-uri și extensii Dr. Sabin Buragawww.purl.org/net/busaco Remarcă

program extern responsabil cu procesarea & redarea unor date ce nu pot fi prelucrate nativ de către navigatorul Web formatul de date este specificat via tipuri MIME video/quicktime application/x-shockwave-flash Dr. Sabin Buragawww.purl.org/net/busaco Plug-in

se bazează pe API-ul oferit de browser NPAPI (Mozilla), ActiveX (Microsoft), PPAPI (Google) https://developer.mozilla.org/Gecko_Plugin_API_Reference https://developers.google.com/native-client/ uzual, se folosește un SDK disponibil pe platforma-țintă (recurgându-se la limbajele C ori C++) Dr. Sabin Buragawww.purl.org/net/busaco Plug-in

poate rula în același proces cu navigatorul Web Dr. Sabin Buragawww.purl.org/net/busaco Plug-in

e.g., pentru Firefox se folosește IPDL – IPC (Inter-process communication) Protocol Definition Language) Dr. Sabin Buragawww.purl.org/net/busaco plug-in poate rula într-un proces separat (out of process plug-in), modul de apelare fiind definit via un limbaj specific

alternative: utilizarea bibliotecilor JavaScript pdf.js – redarea documentelor PDF https://github.com/mozilla/pdf.js Shumway – emularea mașinii virtuale Flash http://mozilla.github.io/shumway/ Dr. Sabin Buragawww.purl.org/net/busaco Plug-in

extinde funcționalitățile navigatorului poate afecta browser-ul în ansamblu are acces, de obicei, la arborele DOM (sau arborele de redare a conținutului) Dr. Sabin Buragawww.purl.org/net/busaco Extensie

Dr. Sabin Buragawww.purl.org/net/busaco Extensie implementare via tehnologii Web (HTML, CSS, JavaScript) în unele cazuri, instalarea nu necesită restartarea browser-ului

resurse pentru dezvoltatori: Chrome – http://developer.chrome.com/extensions/ Firefox – https://github.com/victorporof/Restartless-Template MSIE – http://tinyurl.com/pnqepat Safari – https://developer.apple.com/programs/safari/ Dr. Sabin Buragawww.purl.org/net/busaco Extensie

eventual, pentru dezvoltare poate fi folosit un framework exemple: BabelExt Crossrider Dr. Sabin Buragawww.purl.org/net/busaco Extensie

se poate distribui via un sit specific (e.g., Chrome Web Store) conform unui format standardizat Packaged Web Apps (recomandare W3C, 2012) http://www.w3.org/TR/widgets/ Dr. Sabin Buragawww.purl.org/net/busaco Extensie

aplicație – de sine-stătătoare sau inclusă într-o pagină – ce oferă o funcționalitate specifică rulează la nivel de client (platformă oferită de sistemul de operare și/sau navigator Web) Dr. Sabin Buragawww.purl.org/net/busaco Widget

implementare pe baza standardelor Web: HTML, CSS, JS eventual, se poate recurge la un API W3C Proposed Recommendation (2012) www.w3.org/TR/widgets-apis/ Dr. Sabin Buragawww.purl.org/net/busaco Widget

denumire generică a aplicațiilor asociate unui browser (extensii, teme vizuale, dicționare, maniere de căutare pe Web, plug-in-uri etc.) addons.mozilla.org Dr. Sabin Buragawww.purl.org/net/busaco Add-on

parte a unei aplicații Web ce încapsulează o suită de funcții înrudite e.g., calendar, cititor de fluxuri de știri, buton de partajare a URL-ului în altă aplicație Dr. Sabin Buragawww.purl.org/net/busaco Web component

dezvoltare bazată pe o bibliotecă/framework JavaScript soluții “tradiționale”: Dojo Toolkit, jQuery UI, YUI,… Dr. Sabin Buragawww.purl.org/net/busaco Web component

cadrul general: Web Components (W3C working draft, iunie 2013) templates, decorators, custom elements, shadow DOM, imports etc. www.w3.org/TR/components-intro/ Dr. Sabin Buragawww.purl.org/net/busaco Web component

implementări: Polymer (Google) – www.polymer-project.org X-Tag (Mozilla) – www.x-tags.org Dr. Sabin Buragawww.purl.org/net/busaco Web component

o aplicație Web instalabilă care folosește API-urile oferite de browser exemplu tipic: Chrome Apps https://developers.google.com/chrome/web-store/docs/index concept asemănător: pinned site (Internet Explorer) http://msdn.microsoft.com/library/ie/gg491731%28v=vs.85%29.aspx Dr. Sabin Buragawww.purl.org/net/busaco Web app

alte exemple notabile: aplicații Windows 8 dezvoltate în JavaScript http://msdn.microsoft.com/en-us/library/windows/apps/br211369.aspx aplicații mobile pentru Firefox OS http://profs.info.uaic.ro/~busaco/teach/labs/firefoxos/ Dr. Sabin Buragawww.purl.org/net/busaco Web app aplicații Web mobile pentru Kindle Fire și alte dispozitive https://developer.amazon.com/sdk/webapps.html

toleranța la defecte securitatea managementul memoriei performanța interacțiunea cu utilizatorul Dr. Sabin Buragawww.purl.org/net/busaco Aspecte de interes privind navigatorul Web:

Dr. Sabin Buragawww.purl.org/net/busaco teste & comparații: www.browserscope.org

unele procese care trebuie realizate de browser pot fi executate la nivel de server – de pildă, în cloud Dr. Sabin Buragawww.purl.org/net/busaco Navigatoare Web hibride

Dr. Sabin Buragawww.purl.org/net/busaco Amazon Silk (bazat pe WebKit și pe interpretorul V8) dacă procesul de rendering nu poate fi efectuat la distanță, se realizează o procesare la nivel local – pe dispozitivul Kindle

Jon Jenkins, “Amazon Silk”, O’Reilly Velocity EU, 2011 pentru detalii, a se vizita http://amazonsilk.wordpress.com/ Dr. Sabin Buragawww.purl.org/net/busaco unele activități se pot fi realiza în cloud (în cazul Amazon Silk, se recurge la EC2)

Dr. Sabin Buragawww.purl.org/net/busaco CloudBrowser (Brian McDaniel, 2012) http://cloudbrowser.cs.vt.edu/

Dr. Sabin Buragawww.purl.org/net/busaco tehnologii Web la nivel de browser: http://platform.html5.org/

polyfills uzual, implementate via JavaScript Dr. Sabin Buragawww.purl.org/net/busaco Dacă un browser Web nu are (încă) suport pentru o anumită tehnologie, putem adopta soluții alternative

polyfills exemplificare: HTML5 Cross Browser Polyfills github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills Dr. Sabin Buragawww.purl.org/net/busaco Dacă un browser Web nu are (încă) suport pentru o anumită tehnologie, putem adopta soluții alternative

Dr. Sabin Buragawww.purl.org/net/busaco alternative la HTML5 pentru interacțiuni Web mobile http://html5please.com/

Există mai multe interpretoare (parsers) în cadrul unui browser Web? De ce? Care sunt mai ușor de implementat: extensiile sau plug-in-urile? Dr. Sabin Buragawww.purl.org/net/busaco întrebări (pentru acasă)

episodul viitor: elemente de design Web Dr. Sabin Buragawww.purl.org/net/busaco

Add a comment

Related presentations

Related pages

Proiecte / CLIW :: Dezvoltarea aplicaţiilor Web la nivel ...

Situl dedicat disciplinei Dezvoltarea aplicaţiilor Web la nivel de client
Read more

FISA DISCIPLINEI ENUMIREA DISCIPLINEI DEZVOLTAREA ...

DENUMIREA DISCIPLINEI DEZVOLTAREA APLICATIILOR WEB LA NIVEL DE CLIENT COD: ... Arhitectura internă a navigatorului Web. ... Programarea în Web 2.0 ...
Read more

Carte de arhitectura 2 - Documents

Share Carte de arhitectura 2.
Read more

Curs programare Web. Microsoft Web Development I LINK Academy

Acest curs abordează crearea aplicaţiilor Web avansate cu ... la un nivel de bază. ... Designing And Developing Web Applications Cursul descrie ...
Read more

Carte de arhitectura 2 - Documents

Share Carte de arhitectura 2. ... Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navigatorului Web.
Read more

Securitatea Aplicaţiilor Web - c1

aplicaţiilor web 2. Tehnologiile aplicaţiilor web 3. Principiile de ... securitatea aplicaţiilor web Cursul 1 ... ( o i#ple#entare la nivel na) ...
Read more

CURS WEB DESIGN NIVEL BASIC

... pornind de la zero sa invete HTML - limbajul ce a dus la dezvoltarea ... (studiat la Modulul 2 - Nivel Dinamic Client), ... pentru cursul de Web ...
Read more

Curs Programare PHP şi dezvoltare web, PHP Web ...

... uri mari şi complexe bazate pe conceptul Web 2.0. ... învăţa PHP şi MySQL la nivel ... necesare pentru implementarea aplicaţiilor Web.
Read more