Tìm hiểu về "trái tim" bên trong các trình duyệt

    PV, Mạnh Cường 

    Bạn đã sử dụng qua hầu hết các trình duyệt web như Firefox, Internet Explorer, Google Chrome hay Opera,... và cũng từng nghe đến những lời giới thiệu về engine cho các trình duyệt đó mỗi khi các hãng phát triển công bố phiên bản mới của chúng.

    Vậy bạn có bao giờ tự hỏi chúng là gì và tại sao lại quan trọng đến như vậy không? Nếu đã từng có lần tự hỏi bản thân như thế thì thông qua bài viết ngắn này, bạn sẽ có được những thông tin hữu ích về trái tim của hầu hết các trình duyệt ngày nay.
     
    Chúng ta sẽ bắt đầu với khái niệm engine của trình duyệt hay nói đầy đủ hơn là layout engine. Bạn có thể hiểu một cách đơn rằng nếu thiếu đi engine, website sẽ không thể biên dịch và lúc đó, những thứ trình bày cho người duyệt web chỉ là những đoạn mã mà nhà phát triển đã sử dụng để thiết kế website mà thôi.
     
    Ngày nay, có bốn engine chi phối toàn bộ các ứng dụng duyệt web. Lần lượt chúng là Trident, Gecko, Webkit và Presto. Chúng ta sẽ đến với Trident trước tiên, engine thuộc sở hữu của đại gia Microsoft.
     
    Trident được ra mắt đầu tiên vào năm 1997, thời điểm công bố phiên bản Internet Explorer 4 của Microsoft. Trident là một kiến trúc được Microsoft thiết kế nhằm tạo sự dễ dàng hơn cho các nhà phát triển muốn sử dụng engine này để tạo nên các sản phẩm khác.
     
     
    Engine này được đóng gói thành một tập tin mshtml.dll giúp các nhóm phát triễn dễ dàng sử dụng. Mặc dù kiến trúc của Trident được chia thành nhiều tập tin mã nhị phân khác nhau, nhưng quan trọng nhất vẫn là mshtml.dll.
     
    Mặc dù không công bố mã nguồn Trident, nhưng Microsoft hoàn toàn cho phép sử dụng miễn phí engine này, cũng vì thế mà ngày nay có khá nhiều trình duyệt web được phát triển dựa trên Trident, có thể kể ra những cái tên cũng khá nổi tiếng như Maxthon, Avant. Ngoài ra, những ứng dụng quen thuộc của Microsoft Outlook hay Outlook Express hay như Skype cũng sử dụng engine Trident nhằm biên dịch các đoạn mã HTML.
     
     
    Bất cứ một layout engine nào cũng cần phải đáp ứng được các chuẩn của tổ chức World Wide Web Consortium (W3C), tổ chức được thành lập nhằm quản lý cũng như phát triển các chuẩn dành cho thế giới internet.
     
    Với phiên bản Trident 5 dành cho Internet Explorer 8 và 9, engine này hoàn toàn có thể biên dịch các chuẩn internet mới như CSS3 và HTML5. Mặc dù với một số tổ chức mở rộng của CSS3 thì Trident 5 chưa thật sự hoàn chỉnh. Bên cạnh đó, với bài kiểm tra trình duyệt Acid2, Trident 5 cũng hoàn thành rất xuất sắc. Phiên bản Trident 6 dành cho Internet Explorer 10 được phát triển hỗ trợ HTML5 và CSS3 rất tốt.
     
     
    Mặc dù rất mạnh và tiện dụng trong việc hỗ trợ phát triển ứng dụng. Nhưng Microsoft cũng không thể sử dụng Trident cho hệ điều Mac, điều này là dễ hiểu bởi cả hai nền tảng của cả hệ điều hành này là quá khác nhau. Microsoft đã phát triển một engine khác với tên gọi Tasman, vẫn dựa trên một số thành phần của Trident.
     
    Tasman hoạt động hiệu quả tới mức mà vào thời điểm sắp ra mắt Internet Explorer 7, đã có tin đồn Tasman sẽ thay thế Trident nhưng điều này đã không xảy ra. Về sau, Microsoft đã thôi không dùng Tasman mà chuyển sang sử dụng WebKit cho phiên bản Microsoft Outlook dành cho MAC.
     
    Tiếp đến là layout engine Gecko. Ban đầu là dự án được Netscape phát triển nhằm khắc phục những yếu kém của trình duyệt Netscape vào năm 1997. Tại thời điểm đó, trình duyệt Netscape hoàn toàn thua sút so với Internet Explorer của Microsoft và không thể đáp ứng các chuẩn của tổ chức W3C.
     
     
    Ban đầu, Gecko có tên mã dự án là Raptor. Gecko phân chia thành hai phần quan trọng, một là Browser Engine, thành phần này bao gồm các phương thức khác nhau phục vụ cho việc tương tác của người dùng với trình duyệt. Theo cấu trúc thiết kế của Gecko, Browser Engine sẽ nhận mọi yêu cầu sử dụng từ phía người dùng, rồi sau đó sẽ đưa xuống cho thành phần thứ hai của layout engine này, có tên gọi Rendering Engine.
     
    Thành phần Rendering Engine sẽ biên dịch các mã được nhà thiết kế website sử dụng như HTML, XML, Javascript,... hoàn thành việc biên dịch này, Rendering Engine sẽ trả về kết quả hoàn chỉnh là website cho người dùng.
     
     
    Để thực hiện điều này, Redering Engine sử dụng lần lượt các thành phần với chức năng xử lý cụ thể. Necko, có nhiệm vụ đảm bảo tính chất bảo mật và sự đúng đắn trong các giao thức internet HTTP hay FTP. Tiếp đến là Spider Monkey, trình thông dịch Javascript của Gecko. Để xử lý mã XML, Gecko cũng sở hữu một thành phần riêng cho ngôn ngữ định dạng này. Cuối cùng, để tái tạo lại giao diện và các đối tượng hình ảnh, Gecko sử dụng thư viện GTK lâu đời.
     
    Sau khi mua lại Netscape vào tháng 7 năm 2003, AOL đã ngừng phát triển Gecko, layout engine này được tiếp tục phát triển bởi Mozilla như bạn đã biết ngày nay.
     
     
    Với mã nguồn mở, Gecko đã được sử dụng cho rất nhiều trình duyệt sau này như K-Meleon, Seamonkey và cả trình quản lý thư điện tử Thunderbird. Điểm kém nhất của Gecko là khả năng bảo mật nếu so sánh với Trident.
     
    Gecko cũng hoàn thành xuất sắc bài kiểm tra Acid2 nhưng có một số tính năng CSS3 mà engine này vẫn chưa hoạt động tốt lắm. Với HTML5, Gecko cũng hoạt động tương đối trơn tru.
     
    Ra đời sau Trident và Gecko chỉ một năm, tính đến thời điểm hiện tại, WebKit đã có 12 năm phát triển và ngày nay là một trong những layout engine ưa thích của nhiều hãng phát triển nổi tiếng như Adobe, Samsung hay Google với sản phẩm hết sức quen thuộc, trình duyệt Google Chrome và Safari của Apple.
     
     
    Tiền thân của WebKit là dự án của KDE, tổ chức phát triển ứng dụng miễn phí cho hầu hết các môi trường khác nhau. WebKit bao gồm hai kỹ thuật chính, đã được KDE phát triển, đó là KHTML và KJS.
     
    Cấu thành WebKit bao gồm hai phần chính là WebCore và JavaScriptCore. WebCore đảm nhiệm vai trò biên dịch các thành phần định dạng hình ảnh của một website như HTML, CSS và đặc biệt là định dạng hình ảnh SVG, loại hình ảnh dựa trên ngôn ngữ định dạng dữ liệu XML với khả năng trình bày hình ảnh vượt trội so với các loại hình ảnh quen thuộc đã biết như JPEG hay PNG.
     
     
    Bên cạnh đó, WebCore cũng hoàn thành xuất sắt cả hai bài kiểm tra Acid2 và Acid3 với tốc độ xử lý cực nhanh và tốn rất ít tài nguyên phần cứng. WebCore cũng đáp ứng các chuẩn định dạng được W3C qui định với khả năng xử lý CSS3 và HTML5 rất tốt.
     
    Tiếp đến là JavaScriptCore. Được phát triển dựa trên KJS đã đề cập ở trên cùng với một số cải tiến sáng giá. JavaScriptCore của Wbekit có khả năng thu dọn rác rất tốt, điều này cải thiện tài nguyên phần cứng mỗi khi trình duyệt hoạt động. Không những thế, JavaScriptCore còn vượt qua bài kiểm tra chuẩn Javscript của Mozilla.
     
     
    Apple đã công bố chuẩn WebKit2 với khả năng xử lý nhiều tiến trình cùng một lúc giúp gia tăng hiệu suất xử lý của trình duyệt Safari. Đối với Google, Chrome Webkit cũng đã trình làng kỹ thuật này sớm hơn.
     
    Ngoài là "trái tim" của trình duyệt Safari và Google Chrome. WebKit còn được sử dụng cho nhiều sản phẩm khác nhau như iPhone hay iPod và những ứng dụng dành cho thiết bị công nghệ mới sau này của Adobe như Adobe Air.
     
    Cuối cùng là Presto, layout engine của trình duyệt Opera. Layout engine này được Opera công bố vào năm 2003 dành cho phiên bản Opera 7 nhằm thay thế cho engine cũ Elektra của hãng và được sử dụng cho đến tận ngày hôm nay với Opera 11.
     
     
    Khác hẳn với cả ba trình duyệt đã đề cập ở trên, Presto thuộc sở hữu độc quyền của Opera và họ vẫn không công bố chi tiết công nghệ của mình, chỉ những đối tác từ hãng thứ ba mới có được những thông tin phát triển khi đã mua quyền sử dụng Presto của Opera mà thôi.
     
    Presto có khả năng làm việc tuyệt vời với Javascript và vượt qua rất nhiều cuộc thử nghiệm Javascript khác nhau. Tương tự như engine WebKit, Presto cũng hoàn thành xuất sắc cả hai bài kiểm tra chuẩn Acid2 và Acid3.
     
     
    Bên cạnh đó, một số ứng dụng của Nintendo cũng sử dụng Presto làm layout engine. Trước đây, Adobe cũng đã sử dụng layout engine này cho một số sản phẩm của mình, nhưng về sau họ đã từ bỏ nó để sử dụng WebKit.
     
    Đó là đôi nét sơ lược về những thứ ẩn sâu bên trong mỗi trình duyệt các bạn đang dùng, qua đây chúng ta có thể hiểu được đâu là nguyên nhân dẫn đến sự khác nhau về tốc độ giữa các trình duyệt phổ biến ngày nay.
     
    Tin cùng chuyên mục
    Xem theo ngày

    NỔI BẬT TRANG CHỦ