SlideShare ist ein Scribd-Unternehmen logo
1 von 130
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minuteSabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Dezvoltator Web?! (varianta 2015)
Dezvoltator Web?! (varianta 2015)Dezvoltator Web?! (varianta 2015)
Dezvoltator Web?! (varianta 2015)Sabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Sabin Buraga
 
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5Sabin Buraga
 
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...Sabin Buraga
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebSabin Buraga
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazSabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientCLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientSabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...Sabin Buraga
 
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5Sabin Buraga
 

Was ist angesagt? (20)

Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minute
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Dezvoltator Web?! (varianta 2015)
Dezvoltator Web?! (varianta 2015)Dezvoltator Web?! (varianta 2015)
Dezvoltator Web?! (varianta 2015)
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
 
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2015-2016 (11/13) Programare Web. API-uri JavaScript în contextul HTML5
 
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de clientCLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
CLIW 2015-2016 (12/13) Performanța aplicaţiilor Web la nivel de client
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
CLIW 2015-2016 (4/13) Design Web. Proiectarea siturilor Web. Design Web respo...
 
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
CLIW 2015-2016 (10/13) Programare Web. Suita de tehnologii HTML5
 

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

Suita de tehnologii HTML5
Suita de tehnologii HTML5Suita de tehnologii HTML5
Suita de tehnologii HTML5Sabin Buraga
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Sabin Buraga
 
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Sabin Buraga
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...Sabin Buraga
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5Sabin Buraga
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Sabin Buraga
 
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
 
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTDezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTSabin Buraga
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre serviciiWADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre serviciiSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Sabin Buraga
 
CLIW 2014—2015 (6/12): Căutarea resurselor Web
CLIW 2014—2015 (6/12): Căutarea resurselor WebCLIW 2014—2015 (6/12): Căutarea resurselor Web
CLIW 2014—2015 (6/12): Căutarea resurselor WebSabin Buraga
 
CLIW 2014—2015 (8/12): JavaScript în navigatorul Web
CLIW 2014—2015 (8/12): JavaScript în navigatorul WebCLIW 2014—2015 (8/12): JavaScript în navigatorul Web
CLIW 2014—2015 (8/12): JavaScript în navigatorul WebSabin Buraga
 
Limbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăLimbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăSabin Buraga
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Sabin Buraga
 
Web 2016 (11/13) Servicii Web. Paradigma REST
Web 2016 (11/13) Servicii Web. Paradigma RESTWeb 2016 (11/13) Servicii Web. Paradigma REST
Web 2016 (11/13) Servicii Web. Paradigma RESTSabin Buraga
 

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

Suita de tehnologii HTML5
Suita de tehnologii HTML5Suita de tehnologii HTML5
Suita de tehnologii HTML5
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
 
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
CLIW 2014—2015 (10/12): Programare Web. Suita de tehnologii HTML5
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
 
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
 
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul RESTDezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
Dezvoltarea aplicațiilor Web (2/12): Dezvoltarea de servicii Web în stilul REST
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
 
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre serviciiWADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
WADe 2014—2015 (03/12): Arhitectura aplicaţiilor Web orientate spre servicii
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
 
CLIW 2014—2015 (6/12): Căutarea resurselor Web
CLIW 2014—2015 (6/12): Căutarea resurselor WebCLIW 2014—2015 (6/12): Căutarea resurselor Web
CLIW 2014—2015 (6/12): Căutarea resurselor Web
 
CLIW 2014—2015 (8/12): JavaScript în navigatorul Web
CLIW 2014—2015 (8/12): JavaScript în navigatorul WebCLIW 2014—2015 (8/12): JavaScript în navigatorul Web
CLIW 2014—2015 (8/12): JavaScript în navigatorul Web
 
Limbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăLimbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generală
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
 
Web 2016 (11/13) Servicii Web. Paradigma REST
Web 2016 (11/13) Servicii Web. Paradigma RESTWeb 2016 (11/13) Servicii Web. Paradigma REST
Web 2016 (11/13) Servicii Web. Paradigma REST
 

Mehr von Sabin Buraga

Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)Sabin Buraga
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...Sabin Buraga
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesSabin Buraga
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignSabin Buraga
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowSabin Buraga
 
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) InteractionsHCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) InteractionsSabin Buraga
 

Mehr von Sabin Buraga (17)

Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
 
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) InteractionsHCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
HCI 2018 (6/10) Design Patterns for Social (Web/mobile) Interactions
 

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

  • 2. Elbert Hubbard Dr. Sabin Buragawww.purl.org/net/busaco “To avoid criticism do nothing, say nothing, be nothing.”
  • 3. 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)
  • 4. 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)
  • 5. 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
  • 6. 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
  • 7. 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/
  • 8. 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)
  • 9. 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/
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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/
  • 14. 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
  • 15. 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
  • 16. Dr. Sabin Buragawww.purl.org/net/busaco Care este arhitectura generală a unui navigator Web?
  • 17. 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
  • 18. 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)
  • 19. 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
  • 21. 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
  • 22. “punte” între interfața cu utilizatorul și rendering engine Dr. Sabin Buragawww.purl.org/net/busaco browser engine
  • 23. “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
  • 24. realizează redarea conținutului solicitat Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 25. 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
  • 26. 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
  • 27. 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)
  • 28. include un interpretor (parser) HTML conform tipului de document Web – DTD Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 29. 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
  • 31. cod sursă HTML  arbore DOM Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 32. Dr. Sabin Buragawww.purl.org/net/busaco fazele importante ale procesării unui document HTML în vederea obținerii arborelui DOM
  • 33. 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
  • 35. în mod tradițional, modelul de procesare este sincron, single-threaded Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 36. î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
  • 37. î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
  • 38. pentru HTML5, script-urile JavaScript pot fi executate asincron (într-un thread separat) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 39. 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
  • 40. arbore DOM  arbore de redare (render tree) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 41. 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)
  • 42. 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
  • 43. 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)
  • 44. 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
  • 45. 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)
  • 46. arbore de redare (render tree)  generare a aranjamentului vizual (layout) Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 47. 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
  • 48. 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
  • 49. calcularea aranjamentului (layout) global layout (pentru întreg render tree) vs. incremental Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 50. calcularea aranjamentului (layout) global layout (pentru întreg render tree) vs. incremental sincron vs. asincron Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 51. 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 …
  • 52. Dr. Sabin Buragawww.purl.org/net/busaco folosirea extensiei Firebug pentru vizualizarea datelor privind layout-ul calculat de navigatorul Web
  • 53. 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)
  • 54. generare aranjament vizual (layout)  afișare layout Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 55. Dr. Sabin Buragawww.purl.org/net/busaco redări diferite ale aceluiași document HTML (dependența de platformă și/sau de navigator)
  • 56. 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
  • 57. după afișarea propriu-zisă, pot apărea schimbări de redare Dr. Sabin Buragawww.purl.org/net/busaco rendering engine
  • 58. 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
  • 59. 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)
  • 60. Dr. Sabin Buragawww.purl.org/net/busaco fluxul de activități realizate de Gecko developer.mozilla.org/Gecko
  • 61. Dr. Sabin Buragawww.purl.org/net/busaco organizarea codului Gecko – diagramă simplificată (Robert O’Callahan, 2013)
  • 62. Dr. Sabin Buragawww.purl.org/net/busaco fluxul de activități realizate de WebKit www.webkit.org
  • 63. 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
  • 64. Dr. Sabin Buragawww.purl.org/net/busaco procesele din cadrul Chrome (Levi Weintraub, 2012)
  • 66. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura multiproces la Gecko (Robert O’Callahan, 2013) http://people.mozilla.org/~roc/Samsung/MozillaArchitectures.pdf
  • 67. 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
  • 68. responsabil cu transferurile de date de pe Internet Dr. Sabin Buragawww.purl.org/net/busaco networking
  • 69. 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
  • 70. 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
  • 71. 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
  • 72. 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
  • 73. 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
  • 74. Dr. Sabin Buragawww.purl.org/net/busaco extensia HTTPS Everywhere www.eff.org/https-everywhere
  • 75. 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)
  • 76. 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
  • 77. 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
  • 78. 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
  • 79. Dr. Sabin Buragawww.purl.org/net/busaco studiu de caz Firefox: ajustarea parametrilor vizând conexiunile HTTP via schema URI about:config
  • 80. 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
  • 82. interpretează și execută programele JavaScript la nivel de client Dr. Sabin Buragawww.purl.org/net/busaco JavaScript interpreter
  • 83. 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)
  • 84. 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)
  • 85. responsabil cu procesarea documentelor XML via DOM implementarea minimală vizează DOM nivelul 2 Dr. Sabin Buragawww.purl.org/net/busaco XML parser
  • 86. î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
  • 87. 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
  • 88. 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
  • 89. modul responsabil cu stocarea datelor pe calculatorul client Dr. Sabin Buragawww.purl.org/net/busaco data persistence
  • 90. cookie-uri cache localStorage (HTML5) SQLite database (HTML5) … detalii la alt curs Dr. Sabin Buragawww.purl.org/net/busaco data persistence
  • 91. Dr. Sabin Buragawww.purl.org/net/busaco Ce putem afirma despre particularitățile navigatoarelor Web?
  • 92. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura inițială a navigatorului Firefox
  • 93. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura Internet Explorer (conform MSDN)
  • 94. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura multi-proces la versiunile moderne de Internet Explorer (Loosely-Coupled IE)
  • 95. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura conceptuală a browser-ului Chrome (Tom Hauser et al., 2009; Ilya Grigorik, 2013)
  • 96. Dr. Sabin Buragawww.purl.org/net/busaco diagrama fluxului de date – cazul Chrome (Hauser et al., 2009)
  • 97. Dr. Sabin Buragawww.purl.org/net/busaco arhitectura browser-ului Lynx (Grosskurth & Godfrey, ‘06)
  • 98. un navigator Web modern prezintă o arhitectură modulară realizată pe baza unui nucleu (browser kernel) Dr. Sabin Buragawww.purl.org/net/busaco Remarcă
  • 99. 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ă
  • 100. 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
  • 101. 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
  • 102. poate rula în același proces cu navigatorul Web Dr. Sabin Buragawww.purl.org/net/busaco Plug-in
  • 103. 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
  • 104. 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
  • 105. 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
  • 106. 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
  • 107. 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
  • 108. eventual, pentru dezvoltare poate fi folosit un framework exemple: BabelExt Crossrider Dr. Sabin Buragawww.purl.org/net/busaco Extensie
  • 109. 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
  • 110. 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
  • 111. 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
  • 112. 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
  • 113. 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
  • 114. 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
  • 115. 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
  • 116. 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
  • 117. 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
  • 118. 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
  • 119. 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:
  • 120. Dr. Sabin Buragawww.purl.org/net/busaco teste & comparații: www.browserscope.org
  • 121. 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
  • 122. 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
  • 123. 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)
  • 124. Dr. Sabin Buragawww.purl.org/net/busaco CloudBrowser (Brian McDaniel, 2012) http://cloudbrowser.cs.vt.edu/
  • 125. Dr. Sabin Buragawww.purl.org/net/busaco tehnologii Web la nivel de browser: http://platform.html5.org/
  • 126. 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
  • 127. 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
  • 128. Dr. Sabin Buragawww.purl.org/net/busaco alternative la HTML5 pentru interacțiuni Web mobile http://html5please.com/
  • 129. 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ă)
  • 130. episodul viitor: elemente de design Web Dr. Sabin Buragawww.purl.org/net/busaco