SlideShare a Scribd company logo
1 of 136
Download to read offline
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura unui browser Web
github.com/alrra/browser-logos
Full-Stack Web Development
Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
“To avoid criticism
do nothing, say nothing, be nothing.”
Elbert Hubbard
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
mediu de execuție
(sistem de operare, aplicație nativă,…)
browser Web
funcționalități de bază
procesare conținut, redare,…
interpretor
JavaScript
acces la
platformă
rețea, grafică, fonturi,
widget-uri native,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Un client (i.e. browser Web) se identifică via valoarea
câmpului-antet User-Agent dintr-o cerere HTTP
www.useragentstring.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1993 – primul browser Web: Mosaic – Mosaic/0.9
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 (X11; I; AIX 2)
Netscape Communicator 4 – Mozilla/4.04 [en] (WinNT; U)
www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1994 – primul browser disponibil pe un dispozitiv
miniaturizat (PDA – Apple Newton): PocketWeb
www.teco.edu/pocketweb/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1996 – primul navigator produs de Microsoft: MSIE
include dialectul JScript și propriul BOM
oferă multe facilități, ulterior standardizate de W3C
Mozilla/2.0 (compatible; MSIE Versiune; Sistem de operare)
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
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1996 – primul navigator trialware: Opera 2
focalizat pe utilizabilitate (e.g., tab-uri)
și 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]
dev.opera.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1998 – apariția procesorului de redare
(rendering engine) Gecko
Mozilla/Versiune (Platformă; Criptare; OS/CPU; Limbă;
VersiuneRevizie) Gecko/Versiune Produs/Versiune
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
www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
1997—1999 – navigator Web pentru telefoane mobile:
HitchHiker (ulterior, Microsoft Mobile Explorer 2.0)
acces via WAP (Wireless Access Protocol)
conținut structurat cu WML (Wireless Markup Language)
procesare de date + interacțiune prin WMLScript
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fundația Mozilla – codul Netscape disponibil open source:
Phoenix (2002)Firebird (2003)Firefox (2004)
axat asupra respectării standardelor Web
interfață via XUL (Extensible User-interface Language)
extensibil via add-ons (extensii, teme vizuale etc.)
ciclu de dezvoltare de 4 săptămâni – inițial, 6:
Nightly, Aurora, Beta, Release
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0)
Gecko/20100101 Firefox/70.0
developer.mozilla.org/Mozilla/Firefox
Dr.SabinBuragaprofs.info.uaic.ro/~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 (iPad; CPU OS 12_0_1 like Mac OS X) AppleWebKit/605.1.15
(KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1
developer.apple.com/safari/
Dr.SabinBuragaprofs.info.uaic.ro/~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 sisteme de stocare a datelor (data centers)
Dr.SabinBuragaprofs.info.uaic.ro/~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 5.0.2;…) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/44.0.2403.117 Safari/537.36 GSA/5.2.33.19.arm
developer.chrome.com
www.chromium.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
2015 – Microsoft Edge folosind EdgeHTML
(bazat pe Trident de la vechiul IE; în tranziție spre Blink)
accent asupra suportului standardelor Web
rulează exclusiv pe sistemele Windows
(se oferă mașini virtuale pentru testare pe alte platforme)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
developer.microsoft.com/microsoft-edge/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Care este arhitectura generală
a unui navigator Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
user interface
browser engine
rendering engine
net
work
JS
inter-
preter
data
par-
ser
display back-end
datapersistence
componentele de bază ale unui navigator Web generic
conform (Grosskurth & Godfrey, 2006; Garsiel, 2011)
Dr.SabinBuragaprofs.info.uaic.ro/~busacogetpocket.com/a/read/1735724031
privire de ansamblu asupra
proceselor majore efectuate
de browser-ul Web
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
procesele implicate în afișarea conținutului unei pagini Web
(J. Brereton et al., 2011)
rendering engine
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
user interface
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.SabinBuragaprofs.info.uaic.ro/~busaco
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
user interface
diverse proprietăți și preferințe specifice
unui utilizator pot fi stocate în cadrul unui profil
exemplu tipic: Firefox – http://mzl.la/1BAQULj
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
browser engine
„punte” între interfața cu utilizatorul și rendering engine
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
browser engine
„punte” între interfața cu utilizatorul și rendering engine
nucleu (kernel)
plug-ins
extensions
add-ons
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
realizează redarea conținutului solicitat
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
o aplicație Web la nivel de client poate fi compusă din diverse
componente, încărcate dinamicmanagementul arborilor DOM
(Dimitri Glazkov, 2013)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
include un interpretor (parser) HTML
conform tipului de document Web – DTD
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
include un interpretor (parser) HTML
pot fi folosite diverse euristici (speculative parsing),
mai ales în cazul codului care nu e bine formatat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
include un interpretor (parser) HTML
pot fi folosite diverse euristici (speculative parsing),
mai ales în cazul codului care nu e bine formatat
cazul Firefox
developer.mozilla.org/en-US/docs/Mozilla/Gecko/HTML_parser_threading
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
proce-
sare cod
HTML

arbore
DOM
generare
arbore
de
redare
determi-
nare
layout
afișare
(rendering)
layout
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
cod sursă HTML – încărcat (a)sincron de pe rețea

arbore DOM (Document Object Model)
de revăzut prelegerea privitoare la DOM
profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week7
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fazele importante ale procesării
unui document HTML
în vederea obținerii arborelui DOM
preluare date
de pe rețea
procesare (tokeniser)
construire arbore
HTML
Html
Element
HTML
Body
Element
HTML
Paragraph
Element
Text
HTML
Head
Element
HTML
Title
Element
execuție script-uri JS
document.write()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
HTML
Html
Element
HTML
Body
Element
HTML
Paragraph
Element
Text
HTML
Head
Element
HTML
Title
Element
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<p>Salut, lume!</p>
</body>
</html>
DOM Living Standard (24 septembrie 2019)
dom.spec.whatwg.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
în mod tradițional,
modelul de procesare este sincron, single-threaded
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
pentru HTML5, script-urile JavaScript
pot fi executate asincron (într-un thread separat),
eventual după ce documentul a fost procesat
developer.mozilla.org/docs/Web/HTML/Element/script
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
arbore DOM

arbore de redare (render tree)
getpocket.com/a/read/1735724031
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
relația dintre arborele DOM și
arborele de redare a conținutului (render tree)
conform Hyungwook Lee, 2014
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
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 (RenderObjects):
RenderBlock, RenderText, RenderInline etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
alături de arborele de redare, se va genera și:
style tree
compus din RenderStyles
include valorile calculate ale proprietăților de stil
asociat arborelui obiectelor de redare (render object tree)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
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.SabinBuragaprofs.info.uaic.ro/~busaco
relațiile între obiecte de redare (render objects)
și stratele asociate (render layers)
L. Weintraub, “How WebKit Renders the Web”, Fluent Conference, 2012
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
în arborele de redare nu vor fi incluse
elementele non-vizuale (e.g., <head>, <script>, <title>)
sau nodurile ascunse via proprietatea CSS display: none
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
<p>Dezvoltare <strong>Web</strong>
cu <em>JavaScript</em></p>
RenderBlock (p)
RenderText ('Dezvoltare')
RenderInline (strong)
RenderText ('Web')
RenderText ('cu')
RenderInline (em)
RenderText ('JavaScript')
RenderBlock (p)
RootLineBox (line 1)
InlineBox (text)
InlineBox (strong)
RootLineBox (line 2)
InlineBox (text)
InlineBox (em)
InlineBox (text)
„cutii” de redare a liniilor de conținut,
conform stilurilor de afișare specificate de CSS
adaptare după Ryan Seddon (2015)
speakerdeck.com/ryanseddon/how-the-browser-actually-renders-a-website
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
arbore de redare (render tree)

generare a aranjamentului vizual (layout)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
calcularea aranjamentului (layout) e dependentă
de zona de afișare – uzual, un tab al navigatorului
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
calcularea aranjamentului (layout)
global layout (pentru întreg render tree) – recursiv
vs.
incremental
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
calcularea aranjamentului (layout)
global layout (pentru întreg render tree) – recursiv
vs.
incremental
sincron vs. asincron
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
calcularea aranjamentului (layout)
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
…și multe altele
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
vizualizarea datelor privind layout-ul calculat în Chrome
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
generare aranjament vizual (layout)

afișare layout
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
redări diferite ale aceluiași document HTML
(dependența de platformă și/sau de navigator)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
afișarea propriu-zisă (painting)
poate fi realizată la nivel de software
sau pe baza procesorului grafic (accelerată hardware)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
redarea conținutului grafic prin compunerea stratelor
folosind o tehnologie precum OpenGL
(Hyungwook Lee, 2014)
www.slideshare.net/HyungwookLee/mobilebrowserinternal-20140122
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
exemplu real:
procesele de prelucrare grafică 2D
efectuate de componenta WebRender (Mozilla)
mozillagfx.wordpress.com/2017/09/21/introduction-to-webrender-part-1-browsers-today
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
după afișarea propriu-zisă,
pot apărea schimbări de redare
Dr.SabinBuragaprofs.info.uaic.ro/~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
detalii: developers.google.com/web/updates/2018/09/inside-browser-part4
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
exemplificări notabile:
EdgeHTML (Microsoft: Edge – până în 2019)
Gecko (Firefox, Thunderbird, GNU IceCat, Waterfox)
Goanna (fork Gecko inclus în Pale Moon și Basilisk)
Presto (Opera, Opera Mobile, Opera Mini, Nintendo)
Trident (Microsoft: IE, IE Mobile, Skype)
WebKit (Apple Safari, Chromium/Chrome, Adobe AIR +
multe platforme mobile: Android, Blackberry, iOS)
Blink (Google Chrome, Opera, Amazon Silk – din 2013,
Microsoft Edge – din 2019)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fluxul de activități realizate de Gecko
developer.mozilla.org/Gecko
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fluxul de activități realizate de WebKit
www.webkit.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
navigatoarele Web moderne pot rula mai multe instanțe
ale procesorului responsabil cu redarea conținutului
pentru fiecare tab, câte un proces separat
cazul Google Chrome
www.chromium.org/developers/design-documents/process-models
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Mariko Kosaka, Inside look at modern Web browser (2018)
developers.google.com/web/updates/2018/09/inside-browser-part1
de la
o arhitectură
monolitică la
una modulară
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Mariko Kosaka, Inside look at modern Web browser (2018)
developers.google.com/web/updates/2018/09/inside-browser-part1
fiecare modul intern poate fi considerat ca fiind un serviciu
(browser servicification)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura
multiproces
la
Chromium
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
procesarea conținutului se realizează
de un număr dat de procese – e.g., 4
suplimentar, se recurge la fire de execuție (thread-uri)
exemple:
Chrome
developers.google.com/web/updates/2018/09/inside-browser-part3
Firefox Quantum
medium.com/mozilla-tech/tagged/firefox
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
procesul de redare include – Kosaka (2018):
firul de execuție principal (main thread)
fire de execuție specifice worker-ilor JS (worker thread)
firul de execuție al compunerii grafice (compositor thread)
firul de execuție al generării pixelilor de afișat (raster thread)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
rendering engine
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.SabinBuragaprofs.info.uaic.ro/~busacowww.bonkersworld.net/best-social-network-ever/
(în loc de) pauză
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
networking
responsabil cu transferurile de date de pe Internet
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
networking
responsabil cu transferurile de date de pe Internet
API independent de platformă
+
implementări specifice fiecărui sistem de operare
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
efectuarea unei cereri de rețea – cazul Chromium
detalii la www.chromium.org/developers/design-documents/network-stack
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
networking
responsabil cu transferurile de date de pe Internet
protocolul HTTP
standardizat în 1999: RFC 2616
din iunie 2014, e definit de RFC 7230—7235
www.w3.org/Protocols/
Dr.SabinBuragaprofs.info.uaic.ro/~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ă
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
networking
responsabil cu transferurile de date de pe Internet
protocolul HTTP/2.0 – standardizat în 2015: RFC 7540
axat asupra performanței: mesaje binare, reutilizarea
conexiunii TCP, multiplexare, compresia anteturilor –
HPACK, trimiterea mesajelor spre client (server push)
http2.github.io
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
studiu de caz
Firefox: ajustarea parametrilor vizând conexiunile HTTP
via schema URI about:config
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
display (UI) backend
responsabil cu afișarea componentelor de interfață
ferestre, bare de defilare a conținutului (scroll bars),
tipuri ale câmpurilor formularelor Web:
butoane de tip radio, textarea, liste de selecție, date,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
browsershots.org  www.browserstack.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
JavaScript interpreter
interpretează și execută programele JavaScript
la nivel de client
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fazele principale ale procesării și rulării codului JavaScript
(Hyungwook Lee, 2014)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
JavaScript interpreter (engine)
Carakan (Opera)
Chakra (Microsoft)
Nashorn (Oracle)
Nitro (SquirrelFish), JavaScriptCore (Apple)
SpiderMonkey, IonMonkey, Rhino (Mozilla)
Tamarin (Adobe)
V8 (Google Chrome, Opera, Microsoft Edge, Node.js)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
JavaScript interpreter (engine)
optimizări specifice – V8 (lansat pe 2 septembrie 2008):
oferă interpretarea + compilarea codului JS
Ignition – interpretor de nivel scăzut bazat pe regiștri
github.com/v8/v8/wiki/Ignition
TurboFan – compilator JIT oferind o paletă de optimizări
github.com/v8/v8/wiki/TurboFan
de consultat și v8.dev
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
începând cu august 2019, V8 6.9 are suport și pentru
procesarea codului WebAssembly (WASM) – Liftoff
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
JavaScript interpreter (engine)
diferențele de performanță pot fi măsurate
via teste specifice (benchmarking)
exemplificări:
Benchmark.js, Kraken (Mozilla),
Octane (Google), SunSpider (Apple)
combinarea mai multor teste de performanță: JetStream
browserbench.org  arewefastyet.com
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
XML parser
responsabil cu procesarea documentelor XML via DOM
implementarea minimală vizează DOM nivelul 2
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
XML parser
în unele cazuri, procesarea documentelor XML
poate implica validarea datelor via DTD,
dar nu folosind scheme XML
Dr.SabinBuragaprofs.info.uaic.ro/~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.SabinBuragaprofs.info.uaic.ro/~busaco
XML parser
unele navigatoare ofera facilități pentru alte limbaje XML
fluxuri de știri Atom și RSS (Really Simple Syndication)
MathML
SVG (Scalable Vector Graphics)
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
data persistence
modul responsabil cu stocarea datelor
pe calculatorul client
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
data persistence
cookie-uri
cache
localStorage (HTML5)
database (HTML5)
…
detalii la alt curs
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
fluxul de activități realizate de browser-ul Web
(Hyungwook Lee, 2014)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Ce putem afirma despre
particularitățile navigatoarelor Web?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura inițială a navigatorului Firefox
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura conceptuală a browser-ului Chrome
(Tom Hauser et al., 2009; Ilya Grigorik, 2013)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
structura internă a navigatorului Chromium (H. Lee, 2014)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
diagrama fluxului de date – cazul Chrome
(Hauser et al., 2009)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
arhitectura browser-ului Lynx (Grosskurth & Godfrey, ‘06)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Remarcă
un navigator Web modern prezintă
o arhitectură modulară
realizată pe baza unui nucleu (browser kernel)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Remarcă
un navigator Web modern prezintă
o arhitectură modulară
realizată pe baza unui nucleu (browser kernel)
de asemenea, poate permite
includerea de plug-in-uri și extensii
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Plug-in
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 (Media Types)
video/quicktime
application/x-shockwave-flash
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Plug-in
bazat pe API-ul oferit de browser,
folosind un SDK disponibil pe platforma-țintă
(recurgându-se la limbajele C ori C++)
actualmente, utilizarea plug-in-urilor e descurajată
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Plug-in
alternativă: utilizarea bibliotecilor JavaScript
exemplificări notabile:
pdf.js – redarea documentelor PDF
github.com/mozilla/pdf.js
Afterglow, Flow Player, JW Player, Kaltura,
MediaElement.js, Video.js – redare de conținut video
studiu comparativ: cloudinary.com/blog/html5_video_player
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Plug-in
alternativă: WebAssembly
cod binar de nivel scăzut, similar limbajului de asamblare
axat asupra performanței
detalii în alt curs
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Extensie
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.SabinBuragaprofs.info.uaic.ro/~busaco
Extensie
implementare via tehnologii Web (HTML, CSS, JavaScript)
se poate distribui via un sit specific
(e.g., Chrome Web Store)
specificație în lucru (iulie 2017):
browserext.github.io/browserext/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Extensie
resurse pentru dezvoltatori:
Chrome – developer.chrome.com/extensions/
Firefox – developer.mozilla.org/Add-ons/WebExtensions
Edge – docs.microsoft.com/en-us/microsoft-edge/extensions
Opera – dev.opera.com/extensions/
Safari – developer.apple.com/safari/extensions/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Widget
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)
implementare pe baza standardelor Web: HTML, CSS, JS
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Add-on
denumire generică a aplicațiilor asociate unui browser
(extensii, teme vizuale, dicționare,
maniere de căutare pe Web, plug-in-uri etc.)
exemplificare tipică: addons.mozilla.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web component
parte a unei aplicații Web ce încapsulează
o suită de funcții înrudite ce pot fi reutilizate
e.g., calendar, cititor de fluxuri de știri,
buton de partajare a URL-ului în altă aplicație
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web component
dezvoltare bazată pe o bibliotecă/framework JavaScript
soluții „tradiționale”: Dojo Toolkit, jQuery UI,…
alternative moderne: Angular, React, Svelte, Slim.js
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web component
cadrul general: Web Components
templates, decorators, custom elements, shadow DOM etc.
în lucru la Consorțiul Web (octombrie 2019)
github.com/w3c/webcomponents/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web component
suport pentru implementare oferit de framework-uri:
Polymer – www.polymer-project.org
X-Tag – x-tag.github.io
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
detalii + exemple practice: www.webcomponents.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Web app
o aplicație Web instalabilă
care folosește API-urile oferite de browser
aplicații Windows universale (PC, Xbox One, HoloLens)
dezvoltate în JavaScript
docs.microsoft.com/en-us/windows/uwp/
aplicații Web mobile pentru dispozitive Amazon Fire
developer.amazon.com/apps-and-games/
aplicații Web pentru platforma Tizen (mobile, wearable,
TV, IVI – In-Vehicle Infotainment): Web Device API
developer.tizen.org/development/api-references/web-application
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Aspecte de interes privind navigatorul Web:
toleranța la defecte
securitatea
managementul memoriei
performanța (e.g., viteza de procesare)
interacțiunea cu utilizatorul
conservarea resurselor (i.e. power consumption)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
tehnologii Web implementate de un browser actual:
platform.html5.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Remarcă:
în cadrul unui browser Web
pot fi utilizate procesoare de redare multiple
exemplificări:
Avant Browser – bazat pe Gecko, Trident și Blink/WebKit
Lunascape – include Gecko, Trident și WebKit
Maxthon – recurge la WebKit și Trident
Tungsten – folosește Blink și Trident
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Navigatoare Web „speciale”
optimizate pentru dispozitive specifice (smart phone,
tabletă, smart TV,…) și platformele aferente
sau pentru anumite sarcini – i.e. dezvoltare Web
pot oferi anumite facilități – e.g., content & ad blockers,
sincronizare, interacțiuni naturale și/sau 3D, depanare,…
exemple: Brave, Firefox Focus, Firefox Developer Edition,
Firefox Reality, Opera Touch, Samsung Internet Browser,
UC Browser, Vewd Browser, Vivaldi, Waterfox
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Navigatoare Web hibride
unele procese care trebuie realizate de browser
pot fi executate la nivel de server – de pildă, în cloud
exemplu:
Amazon Silk (bazat pe Chromium)
dacă procesul de rendering nu poate fi efectuat la distanță,
se realizează o procesare la nivel local – pe dispozitivul Kindle
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
unele activități se pot fi realiza în cloud
(în cazul Amazon Silk, se utilizează EC2)
pentru diverse optimizări,
recurge la tehnici de învățare automată
docs.aws.amazon.com/silk/latest/developerguide/introduction.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Navigatoare Web experimentale
Servo (Mozilla, Samsung et al. – demarat în 2014)
un nucleu de browser Web (engine) paralel
prototip scris în Rust pentru arhitecturi pe 64 de biți
asigurarea securității, performanței & modularizării
servo.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Dacă un navigator Web nu are (încă) suport pentru
o anumită tehnologie, se pot adopta soluții alternative
polyfills
uzual, implementate via JavaScript
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Funcționalitățile browser-ului Web pot fi folosite
și în lipsa interacțiunii cu utilizatorul (sans UI)
headless browser
scopuri principale: automatizare + testare
exemple: Chromium Embedded Framework, Erik, Splash
github.com/dhamaniasad/HeadlessBrowsers
developer.mozilla.org/Firefox/Headless_mode
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Încapsularea browser-ului Web în aplicații mobile
Android: clasa WebView (Kotlin, Java)
developer.android.com/guide/webapps/webview
Apple (iOS, macOS, Mac Catalyst): clasa WKWebView
developer.apple.com/documentation/webkit/wkwebview
www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Device fingerprinting
valoarea câmpului-antet User-Agent + alte caracteristici
ale mediului de rulare a navigatorului Web
– e.g., rezoluția ecranului, platforma hardware/software,
date despre font-uri și limbi, cookie-uri,
suportul pentru grafică 3D,… –
pot conduce la identificarea utilizatorului/dispozitivului
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
P. Laperdrix, W. Rudametkin, B. Baudry, “Beauty and the Beast:
Diverting Modern Web Browsers to Build Unique Browser
Fingerprints”, IEEE Symposium on Security and Privacy, 2016
hal.inria.fr/hal-01285470/file/beauty-sp16.pdf
A. Vastel et al., “Privacy Implications of Browser Fingerprint
Inconsistencies”, USENIX Security Symposium, 2018
www.usenix.org/system/files/conference/usenixsecurity18/sec18-vastel.pdf
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Device fingerprinting
impact asupra intimității (privacy) și anonimității
instrumente de testare și raportare:
Am I Unique? – amiunique.org
Panopticlick – panopticlick.eff.org
UniqueMachine – uniquemachine.org
+
bibliotecă dedicată: ClientJS – clientjs.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
Device fingerprinting
instrumente de asigurare a intimității (privacy tools)
extensii pentru browser-ul Web
uBlock Origin, Ghostery,
HTTPS Everywhere, Privacy Badger etc.
de considerat și
DuckDuckGo – the search engine that doesn’t track you
Tor Project – platformă peer-to-peer, oferind Tor Browser
(bazat pe Gecko), Tails (The Amnesic Incognito Live System)
www.torproject.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco
episodul viitor:
JavaScript în cadrul browser-ului Web

More Related Content

What's hot

Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin 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
 
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
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie 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
 
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
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minuteSabin Buraga
 
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
 
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
 
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeCLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeSabin Buraga
 

What's hot (11)

Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
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
 
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...
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie 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
 
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
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minute
 
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
 
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
 
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeCLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
 

Similar to STAW 05/12: Arhitectura navigatorului Web

Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențialeSabin 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
 
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
 
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
 
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
 
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 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
 
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
 
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
 
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsWADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsSabin 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
 
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
 
Arhitectura browser-ului Web
Arhitectura browser-ului WebArhitectura browser-ului Web
Arhitectura browser-ului WebSabin 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
 
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 (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
 
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
 
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
 
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
 
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 

Similar to STAW 05/12: Arhitectura navigatorului Web (20)

Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențiale
 
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...
 
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....
 
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
 
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
 
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 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...
 
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
 
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
 
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsWADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
 
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...
 
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...
 
Arhitectura browser-ului Web
Arhitectura browser-ului WebArhitectura browser-ului Web
Arhitectura browser-ului Web
 
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
 
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 (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
 
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)
 
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
 
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...
 
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
 

More from 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
 
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 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 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
 
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 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
 
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 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 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 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
 
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
 
HCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. ModelsHCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. ModelsSabin Buraga
 

More from Sabin Buraga (20)

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
 
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 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 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
 
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 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...
 
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 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 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 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
 
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
 
HCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. ModelsHCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
HCI 2018 (7/10) HCI Engineering. UI Evaluation. Models
 

STAW 05/12: Arhitectura navigatorului Web