Informații referitoare la arhitectura generală a unui navigator Web, inclusiv exemple specifice fiecărui browser în parte. Detalii la http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
8. Dr.SabinBuragawww.purl.org/net/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
www.modern.ie
9. Dr.SabinBuragawww.purl.org/net/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]
http://dev.opera.com/
10. Dr.SabinBuragawww.purl.org/net/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
http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/
11. Dr.SabinBuragawww.purl.org/net/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
12. Dr.SabinBuragawww.purl.org/net/busaco
fundația Mozilla – codul Netscape disponibil open source:
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:41.0) Gecko/20100101 Firefox/41.0
https://developer.mozilla.org/Mozilla/Firefox
13. Dr.SabinBuragawww.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 (iPad; CPU OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4
(KHTML, like Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4
https://developer.apple.com/devcenter/safari/
14. Dr.SabinBuragawww.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.SabinBuragawww.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 5.0.2;…) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/44.0.2403.117 Safari/537.36 GSA/5.2.33.19.arm
https://developers.google.com/chrome/
www.chromium.org
16. Dr.SabinBuragawww.purl.org/net/busaco
2015 – Microsoft Edge folosind EdgeHTML
(bazat pe Trident de la vechiul IE)
accent asupra suportului standardelor Web
și interoperabilității
rulează exclusiv pe sistemele Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
https://dev.modern.ie/platform/status/
20. Dr.SabinBuragawww.purl.org/net/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
…
37. Dr.SabinBuragawww.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)
38. Dr.SabinBuragawww.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
43. Dr.SabinBuragawww.purl.org/net/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.
45. Dr.SabinBuragawww.purl.org/net/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)
51. Dr.SabinBuragawww.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.
77. Dr.SabinBuragawww.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ă
www.slideshare.net/guypod/https-what-why-and-how-smashingconf-freiburg-sep-2015
79. Dr.SabinBuragawww.purl.org/net/busaco
networking
folosit pentru transferuri de date de pe Internet
protocolul SPDY – un experiment Google (retras în 2016)
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)
93. Dr.SabinBuragawww.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.
110. Dr.SabinBuragawww.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++)
125. Dr.SabinBuragawww.purl.org/net/busaco
Web app
o aplicație Web instalabilă
care folosește API-urile oferite de browser
exemplu tipic: Chrome Apps
https://developers.google.com/google-apps/
concept asemănător: pinned site (Internet Explorer)
http://msdn.microsoft.com/library/ie/gg491731%28v=vs.85%29.aspx
126. Dr.SabinBuragawww.purl.org/net/busaco
Web app
alte exemplificări:
aplicații Windows universale dezvoltate în JavaScript
https://dev.windows.com/en-us/develop/winjs
aplicații (mobile) pentru Firefox/Firefox OS
http://profs.info.uaic.ro/~busaco/teach/labs/firefoxos/
aplicații Web mobile pentru Amazon Fire și altele
developer.amazon.com/appsandservices/solutions/platforms/webapps
aplicații pentru Ubuntu folosind HTML5
https://developer.ubuntu.com/en/apps/html-5/
129. Dr.SabinBuragawww.purl.org/net/busaco
Remarcă:
în cadrul unui browser Web
pot fi utilizate procesoare de redare multiple
exemplificări:
Avant Browser – bazat pe Gecko, Trident și WebKit
Lunascape – include Gecko, Trident și WebKit
Maxthon – recurge la WebKit/Blink și Trident
Tungsten – folosește Blink și Trident
132. Dr.SabinBuragawww.purl.org/net/busaco
unele activități se pot fi realiza în cloud
(în cazul Amazon Silk, se recurge la EC2)
Jon Jenkins, “Amazon Silk”, O’Reilly Velocity EU, 2011
pentru detalii, a se vizita http://amazonsilk.wordpress.com/
133. Dr.SabinBuragawww.purl.org/net/busaco
Navigatoare Web experimentale
Servo (Mozilla Research, Samsung et al., din 2014)
un nucleu de browser Web (engine) paralel
prototip scris în Rust pentru arhitecturi pe 64 de biți:
OS X, Linux, Android, Firefox OS
https://github.com/servo/servo
https://archive.fosdem.org/2015/schedule/event/servo_and_you/
137. Dr.SabinBuragawww.purl.org/net/busaco
Dacă un navigator Web nu are (încă) suport pentru
o anumită tehnologie, se pot adopta soluții alternative
polyfills
exemplificare: HTML5 Cross Browser Polyfills
github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills