web browser engine یا موتور مرورگر وب (که به آن layout engin یا rendering engine نیز میگویند) یک جزء نرم افزاری هست که محتوای مشخص شده مثل فایلهای تصویری و xml و html و … و نیز اطلاعات مربوط به قالب بندی مثل css و xsl و .. را میگیرد و محتوای فرمت شده را در پنجره حاوی محتوا نمایش میدهد. به عبارت دیگر موتور مرورگر وب یکی از بخشهای اصلی هر مرورگر وب است که وظیفه تجزیه و تحلیل کدهای html, xml و …و تولید صفحه را بر عهده دارد و نمایش این صفحه بر عهده سایر قسمتهای مرورگر است.
یک layout engine در مرورگر
های وب، ایمیل کلاینتها برای رندر کردن ایمیلهای html، سیستمهای کمک آنلاین، ebook readers و سایر ابزارهایی که نیازمند ویرایش و نمایش محتوای وب هستند جاسازی شده است.
به عنوان مثال:
در مرورگر konqueror از موتور متن باز KDE بنام KHTML استفاده میکند.
همین موتور KHTML اساس تولید موتور webkit هست که در مرورگرهای safari شرکت اپل و chroms شرکت گوگل به عنوان موتور استفاده شده. بر اساس statcounter موتور webkit پر استفاده ترین موتور برای مرورگرهای وب است.
موتور Gecko که متن باز نیز است برای پروژه موزیلا بوده و توسط محصولاتی که از کدهای موزیلا استفاده میکنند استفاده میشود. مثل ورورگر وب فایرفاکس، ایمیل کلاینت thunderbird.
Trident در مرورگر وب اینترنت اکسپلورر استفاده شده و همچنین توسط ابزارهای زیادی روی پلتفرم مایکروسافت ویندوز مثل: netsmart,outlook express, microsoft outlook و mini browser ها در Winap و realplayer استفاده شده است.
موتور Presto مختص مرورگر وب opera است.
قبلا مرورگرهای وب یک پارچه بودند بعدا ماژولار شدند و شامل دو بخش موتور و رابط کاربر هستند. بیشتر کارها بر دوش موتور هست که یک URL و یک صفحه مستعطیلی به عنوان آرگومان میگیرد و سپس اطلاعات و اسناد مربوط به URL را بازیابی میکند و یک نمایش گرافیکی از آن را در صفحه مستطیلی ارائه میدهد.مدیریت کوکی ها، اسکریپتها، لینکها و بارگذاری افزونه ها برعهده موتور است. رابط کاربر نیز رابط بین موتور و کاربر است و مواردی مانند نوار آدرس، نوار منو، نوار وضعیت، تاریخچه و … را فراهم میکند.
مزیت روش ماژولار این است که میتوان موتورهای مذکور را به راحتی در انواع کاربردها جاسازی کنیم. مثلا همان موتور که در مرورگر وب استفاده میشد در یک کلاینت ایمیل برای نمایش ایمیلهای html، سیستمهای کمک انلاین و یا EPUB3( استاندارد کتاب الکترونیک بر اساس layout engine برای رندر کردن css و xhtml) نیز استفاده شود.
از layout engine های پرکاربرد میتوان به موارد زیر اشاره کرد:
Amaya
Gecko
KHTML
Presto
Prince
Trident
Webkit.
از جمله layout engine هایی که پرکاربرد نیستند میتوان به موارد زیر اشاره کرد:
Mariner
icab
HTMLayout
GTKHTML
Gazelle
Boxely
Tasman
TKHTML
اکنون به بررسی جزیات هر کدام از موتورهای مذکور میپردازیم.
KHTMLموتور :
توسط پروژه KDE توسعه یافته. و با زبان C++ و در فریم ورک Kpart نوشته شده است. در ۴ نوامبر سال ۱۹۹۸ به عنوان یک کپی از کتابخانه (KHTMLW (KDE HTML Wigget همراه با برخی تغییرات برای پشتیبانی از یونیکد و سایر موارد تولید شد. کار روی KHTML در سال ۱۹۹۱ شروع شد. و در مرورگر وب konqueror استفاده شده. ورژن توسعه یافته آن webkit است. KHTML یک نرم افزار آزاد است. تحت لایسنس GNU LGPL میباشد.
استانداردهایی که KHTML با آنها مطابقت دارد عبارتند از:
HTML 4.01
HTML 5
CSS 1
CSS 2
CSS 3 selectors
فرمتهای گرافیکی PNG ، MNG، JPEG و GIF
DOM 1, 2 and 3
ECMA-262/ java script 1.5
موتور Webkit:
پروژه Webkit در سال ۲۰۰۱ در شرکت Apple به عنوان توسعه KHTML و KJS شروع شد.این موتور در مرورگرهای safari و chrome استفاده شده و در نوامبر سال ۲۰۱۲ بیشترین سهم بازار را در میان سایر موتورها به خود تخصیص داد (حدودا بیش از ۴۰ درصد). در سال ۲۰۰۷ ،CSS و HTML5 برای ویدئو را پشتیبانی کرد. این موتور مبنایی برای مرورگرهای آزمایشی مثل Amazon kindle ebook reader و مرورگر پیشفرض در Apple iOS ، Bada و سیستم عامل موبایل Tizen و webOS بوده است. این موتور اکنون توسط شرکتهای Apple Inc، Nokia، google، BitStream، RIM و .. توسعه میابد.
اجزاء این موتور عبارتند از:
webcore
js core که یک فریم ورک است که برای عملیات webkit یک موتور جاوا اسکریپت فراهم میکند.
Drosera
اجزاء Webcore و javascript core در Webkit تحت لایسنس GNU LGPL بوده و خود Webkit تحت مجوز BSD-form میباشد.
API های ++C موجود در Webkit امکاناتی مانند نمایش محتوای وب در صفحه، دنبال کردن لینکها هنگام کلیک کردن روی آنها و مدیریت تاریخچه صفحاتی که اخیرا دیده شده اند.
کدهای HTML و جاوا اسکریپت موجود در Webkit ازتوسعه KHTML و کتابخانه های موتور جاوا اسکریپت میباشد.
سیستم عاملهایی که این موتور پشتیبانی میکند عبارتند از: ویندوز، گنو لینوکس، سیستم عاملهای مبتنی بر یونیکس.
Webkit در safari در ویندوز و در کلاینت ایمیل Apple وسیستم مدیریت اطلاعات شخصی Microsoft برای رندر کردن ایمیل های حاوی محتوای html استفاده شده است.
موتور Gecko
این موتور نرم افزار آزاد و متن باز است. , و در سال ۱۹۹۷ توسط Netscape شروع شدو بعدا توسط بنیاد موزیلا و تحت لایسنس عمومی موزیلا قرار گرفت. و سومین رایج ترین layout engine در www میباشد. در اکثر نرم افزارهای کاربردی که توسط بنیاد موزیلا توسعه یافته اند مخصوصا مرورگر فایرفاکس و نیزدر بسیاری از پروزه هاینرم افزاری متن باز و برای پشتیبانی ازاستانداردهای باز اینترنت استفاده شده است. شامل API های برنامه نویسی قوی است که آن را برای طیف وسیعی از کارها در کاربردهای اینترنتی مناسب کرده است. با زبان ++C نوشته شده.
سیستم عاملهایی که توسط این موتور پشتیبانی میشوند عبارتند از: لینوکس، بی اس دی، مکینتاش، سولاریس، مایکروسافت ویندوز، OS/2، OS X، AIX، Open VMS
استانداردهایی که این موتور با آنها مطابقت دارد:
HTML 4
CSS 3
Java Script 1.8
DOM level 1 & 2
XML 1.0
XHTML 1.0
XSLT , XPath
MathML
XForms
RDF
SVG 1.1
موتور Trident
Trident یا MSHTML ابتدا در آکتبر سال ۱۹۹۷ با برای اینترنت اکپلورر مایکروسافت ویندوز ورژن ۴٫۰ معرفی شد. برای ورژنهای ۷ و ۸ IE در Trident تغییراتی اعمال شد تا با تکنولوژیهای جدید سازگار باشد. برای ورژن ۹ اینترنت اکسپلورر مایکروسافت در نظر دارد با بسیاری از استانداردهای مدرن وب سازگار باشد.
استفاده از این موتور در توسعه نرم افزاری: Trident به عنوان یک جزء نرم افزاری طراحی شده بود تا به توسعه دهندگان نرم افزارها اجازه دهد تا عملیات web browsing را به کاربردهای خودشان به آسانی اضافه کنند. و همچنین این موتور یک رابط COM برای دستیابی و ویرایش صفحات وب برایهر محیطی که COM را پشتیبانی میکند مثل .NET و ++C ارائه میدهد. برای مثال یک کنترل مرورگر وب میتواند به یک برنامه ++C اضافه شود و سپس Trident میتواند برای دستیابی به صفحه ای که اخیرا در مرورگر وب نمایش داده شده استفاده شود و میتواند مقادیر المانها را دریافت کند.
عملیات Trident از طریق لینک کردن فایل mshtml.dll به پروژه نرم افزار قابل دستیابی است.
استانداردهای سازگار با Trident: ورژن رایج Trident مثل IE 9 با استانداردهای زیر تطابق دارد
CSS 3
HTML 5
SVG
و سایر استانداردهای وب مدرن.
موتور Presto:
این موتور توسط Opera Software برای مرورگر وب Opera توسعه یافته است. در سال ۲۰۰۳ برای Opera 7 ارائه شد.و اکنون در Opera 12 استفاده میشود. Presto فقط به عنوان بخشی از مرورگر اوپرا یا محصولات مرتبط قابل دسترسی است ولی سورس یا فرم های باینری موتور قابل دسترسی نیستند. در ورزنهای قبل از Presto در Opera از موتورهای Linear A استفاده میشد.
ورژنهایی از اوپرا که بر اساس توسعه هسته Presto هستند یعنی اوپرا ورژن ۷ تا ورژن ۹٫۲۷ از موتور Linear B استفاده میکنند.
ورزنهای ۹٫۵ تا ۱۰٫۱۰ اوپرا از موتور Futhark استفاده میکنند. ولی در سال ۲۰۰۸ موتورهای ECMAScript به معرفی تولید کدهای محلی پرداختند که حجم سنگین پردازشها در سمت کلاینت بود و سریع تر ازFuthark بود. در سال ۲۰۰۹ نیز اوپرا به استفاده از موتور Carakan پرداخت.
ابزارهایی که Presto در آنها استفادهشده است عبارتند از:
مرورگرهای وب:
- Opera
Opera 7 and above
Opera Mobile
Opera Mini
- Nintendo
Nitendo DS Browser
Nitendo DSi Browser
Wii Internet Channel Browser
Nokia 770 Browser
Sony Mylo COM-1's Browser
ویرایشگرهای HTML :
Macromedia Dreamweaver MX to Dreamweaver CS3
Adobe Creative Suite 2
dobe Creative Suite 3
Virtual Machianics SiteSpinner Pro
مشخصات موتورها
نام موتور |
توسعه دهندگان |
لایسنس نرم افزاری |
ابزار استفاده شده |
ابزار هدف |
زبان برنامه نویسی |
Gecko |
Netscape/ Mozilla |
MPL/GNU GPL/GNU LGPL |
Mozilla Firefox and Mozilla Thunderbird |
C++ |
|
GtkHTML |
GNOME |
GNU/LGPL |
C |
||
iCab |
Alexander Clauss |
اختصاصی |
iCab |
? |
|
KHTML |
KDE |
GNU/LGPL |
C++ |
||
NetFront |
Access co. |
اختصاصی |
? |
||
Presto |
Opera Software |
اختصاصی |
C++ |
||
Prince XML |
YesLogic Pty Ltd |
اختصاصی |
Mercury |
||
XEP |
RenderX |
اختصاصی |
Java |
||
Robin |
Ritlabs |
ختصاصی |
Delphi |
||
Tasman |
Microsoft |
اختصاصی |
? |
||
Trident |
Microsoft |
اختصاصی |
C++ |
||
Webkit |
Apple, KDE ,Nokia, Google, RIM, Plam |
GNU/LGPL BSD-style |
C++ |
مقایسه موتورها بر اساس سیستم عاملی که ساپورت میکنند:
نام موتور |
windows |
Mac OS X |
LINUX |
BSD |
UNIX |
Symbian OS |
Gecko |
بلی |
بلی |
بلی |
بلی |
بلی |
خیر |
GtkHTML |
بلی |
بلی |
بلی |
بلی |
بلی |
خیر |
iCab |
خیر |
بلی |
خیر |
خیر |
خیر |
خیر |
KHTML |
بلی |
بلی |
بلی |
بلی |
بلی |
بلی |
NetFront |
|
خیر |
بلی |
خیر |
خیر |
|
Presto |
بلی |
بلی |
بلی |
بلی |
بلی |
بلی |
Prince XML |
بلی |
بلی |
بلی |
بلی |
بلی |
خیر |
XEP |
بلی |
بلی |
بلی |
بلی |
بلی |
خیر |
Robin |
بلی |
خیر |
خیر |
خیر |
خیر |
خیر |
Tasman |
خیر |
بلی |
خیر |
خیر |
خیر |
خیر |
Trident |
بلی |
|
خیر |
خیر |
|
خیر |
Webkit |
بلی |
بلی |
بلی |
بلی |
بلی |
بلی |