WebKit

From Wikipedia, the free encyclopedia

  (Redirected from WebCore)
Jump to: navigation, search
WebKit
Logo
Developed by Apple, Inc, The KDE Team, Nokia, Adobe, Google, others.
Written in C++
OS Cross-platform
Type Application framework
License LGPLv2/BSD-style
Website http://webkit.org/

WebKit is an open source application framework that provides a foundation upon which to build a web browser. WebKit was originally derived by Apple Inc. from the Konqueror browser’s KHTML software library for use as the engine of Mac OS X’s Safari web browser, and has now been further developed by Apple, Nokia, Google and others. The framework is now used by Omniweb, Shiira, iCab, Adobe AIR, Google Chrome, mobile phones (including the iPhone), Nokia’s Series 60 browser and Google’s Android platform. Although WebKit is included with Qt 4.4, the underlying framework for KDE,[1] the KDE project will use its original version of KHTML for the near future.[2]

It passes the Acid2 test, and as of September 2008, latest nightly builds of WebKit pass the Acid3 test with pixel-perfect rendering and no timing or smoothness issues on reference hardware.[3]

Contents

[edit] History

WebKit began when Apple Inc. created a software fork of the KDE project’s HTML layout engine KHTML and KDE's JavaScript engine (KJS). Apple developers explained in an email to KDE developers[4] that these engines allowed easier development than other technologies by nature of being small (less than 140,000 lines of code), cleanly designed and standards compliant. KHTML and KJS were ported to Mac OS X with the help of an adapter library and renamed WebCore and JavaScriptCore.[4] JavaScriptCore was first included with Mac OS X v10.2 as a private framework which Apple used within their Sherlock application, while WebCore debuted with the first beta of Safari. Mac OS X v10.3 was the first major release of Apple's operating system to bundle WebKit, although it had already been bundled with a minor release of 10.2.

JavaScriptCore was announced in an email to a KDE mailing list in June 2002, alongside the first release of Apple's changes.[5] WebCore was announced at the Macworld Expo in January 2003 by Apple CEO Steve Jobs with the release of the Safari web browser.[6] In time, Apple’s cooperation with KDE was criticized, with changes being mostly submitted in bulk back to the KDE project. While this helped Konqueror pass the Acid2 test, the source code had already diverged so much that improvements were difficult to share back and forth.[7]

On June 7, 2005, Safari developer Dave Hyatt announced on his weblog that Apple was open sourcing WebKit (previously, only WebCore and JavaScriptCore were open source) and opening up access to WebKit’s CVS tree and Bugzilla tool.[8] This was announced at Apple’s Worldwide Developers Conference 2005 by Bertrand Serlet. The next week, Nokia announced that it was developing a browser based on WebKit, which was later named Web Browser for S60.

In mid-December 2005 support for Scalable Vector Graphics was merged into the standard build[9] and in early January 2006 the source code was migrated from CVS to Subversion. In June 2007, a Microsoft Windows port was added to WebKit. The next month the Ars Technica website published an article announcing that the KDE team would move from KHTML to WebKit.[10]

[edit] Components

[edit] WebCore

WebCore is a layout, rendering, and Document Object Model (DOM) library for HTML and SVG, developed by the WebKit project. Its complete source code is licensed under the LGPL. The WebKit framework wraps WebCore and JavaScriptCore, providing an Objective-C application programming interface to the C++-based WebCore rendering engine and JavaScriptCore script engine, allowing it to easily be referenced by applications based on the Cocoa API; later versions also include a cross-platform C++ platform abstraction, and various ports provide additional APIs.

[edit] JavaScriptCore

JavaScriptCore is a framework that provides a JavaScript engine for WebKit implementations, and provides this type of scripting in other contexts within Mac OS X.[11][12] JavaScriptCore is originally derived from KDE's JavaScript engine (KJS) library (which is part of the KDE project) and the PCRE regular expression library. Since forking from KJS and PCRE, JavaScriptCore has been improved with many new features and greatly improved performance.[13]

On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a bytecode interpreter.[14][15] The project evolved into SquirrelFish Extreme (abbreviated SFX), announced on September 18, 2008, which compiles JavaScript into native machine code, eliminating the need for a bytecode interpreter and thus speeding up Javascript execution.[16] As of September 28, 2008, the only supported architecture for SFX is the x86 architecture.

[edit] Drosera

Drosera is a JavaScript debugger that was included with the nightly builds of WebKit.[17][18] It was named after Drosera, a genus of carnivorous plants (i.e. bug-eaters). Drosera has been replaced by the inclusion of debugging functionality in the Web Inspector.[19]

[edit] SunSpider

SunSpider Screenshot
SunSpider Screenshot

A benchmark suite that aims to measure JavaScript performance on tasks that are relevant to the current and near future use of JavaScript in the real world, such as screen drawing, encryption and text manipulation.[20] The suite further attempts to be balanced and statistically sound.[21] It was released by Apple's WebKit team in December 2007.[22] It was well-received,[23] and other browser developers also use it to compare the JavaScript performance of different browsers.[24]

[edit] Ports

WebKit, being a portable and popular open source project, has attracted ports to several operating systems and toolkits. It is used in the Nokia Series 60 browser,[25] while the community[26] is porting the browser engine to the GTK+ toolkit and a port to the Qt toolkit is being developed by community and several companies including Qt Software. Qt Software includes the port in the Qt 4.4 release. The Qt port of WebKit will also be available to be used in Konqueror in KDE 4.1.[10]

There are also ongoing ports for the open source operating systems Syllable,[27] Haiku[28] and AROS.[29]

Apple has ported WebKit to iPhone OS to run on the iPhone and iPod touch, where it is used to render content within the device’s web browser and email software.[30] Adobe Systems uses WebKit in the Adobe Integrated Runtime, and the upcoming Android mobile phone platform will use WebKit as the basis of its web browser.[31]

There is also a project synchronized with WebKit (sponsored by Pleyo)[32] called Origyn Web Browser, which provides a meta-port to an abstract platform with the aim of making porting to embedded or lightweight systems quicker and easier.[33] This port is used for embedded devices such as set-top boxes, PMP and also the AmigaOS official port.[34]

The development team of GNOME's web browser, Epiphany, announced in April 2008[35] that it will use WebKit exclusively, and stop supporting the Mozilla Foundation's Gecko layout engine. Epiphany supported both Gecko and WebKit for some time, but the team decided that Gecko's release cycle and future development plans would make it cumbersome to continue supporting it.

Using the Qt port is a browser named Arora.[36] Arora is a very basic browser which includes features like "History" and "Bookmarks". It does not yet support Netscape plugins, but support is planned to arrive in Qt 4.5. It works on Linux, OS X, Windows, and embedded Linux using Qt Embedded.

Google has released a beta of an open-source browser called Google Chrome, based on WebKit. [37] [38]

[edit] See also

[edit] References

  1. ^ Qt Software Qt 4.4.0 Technical Preview released
  2. ^ Harri Porten (October 23, 2007). "The KHTML Future FAQ". FrogBlog. Retrieved on 2008-01-24.
  3. ^ Maciej Stachowiak (2008-09-25). "Full Pass Of Acid3". Surfin' Safari - The WebKit Blog. Retrieved on 2008-09-29.
  4. ^ a b KDE KFM-Devel mailing list "(fwd) Greetings from the Safari team at Apple Computer", 7 January 2003.
  5. ^ Maciej Stachowiak (June 13, 2002). "Subject: KDE-Darwin JavaScriptCore, Apple's JavaScript framework based on KJS". Retrieved on 2008-08-21.
  6. ^ Don Melton (January 7, 2003). "Fwd: Our changes to KHTML and KJS". Retrieved on 2007-01-16.
  7. ^ Apple Announces New "Safari" Browser
  8. ^ Daniel Molkentin (June 7, 2005). "Apple Opens WebKit CVS and Bug Database". KDE News. Retrieved on 2007-01-16.
  9. ^ Next Generation KDE Technologies Ported to WebCore
  10. ^ a b Unrau, Troy (2007-07-23). "The unforking of KDE’s KHTML and WebKit". Ars Technica. Retrieved on 2007-07-30.
  11. ^ The WebKit Open Source Project – JavaScript
  12. ^ KDE-Darwin mailing list, "JavaScriptCore, Apple’s JavaScript framework based on KJS", 13 June 2002.
  13. ^ "The Great Browser JavaScript Showdown" (2007-12-19).
  14. ^ Announcing SquirrelFish
  15. ^ SquirrelFish project
  16. ^ Introducing SquirrelFish Extreme
  17. ^ WebKit.org Drosera wiki article
  18. ^ "Introducing Drosera". Surfin’ Safari.
  19. ^ "Commit removing Drosera".
  20. ^ Muchmore, Michael (2008-06-18). "Review: Firefox 3 Stays Ahead of Browser Pack". Retrieved on 2008-09-06. 
  21. ^ "SunSpider JavaScript Benchmark". Retrieved on 2008-09-06.
  22. ^ "Announcing SunSpider 0.9" (2007-12-18). Retrieved on 2008-09-06.
  23. ^ Atwood, Jeff (2007-12-19). "The Great Browser JavaScript Showdown". Retrieved on 2008-09-06.
  24. ^ Resig, John (2008-09-03). "JavaScript Performance Rundown". Retrieved on 2008-06-09.
  25. ^ S60WebKit
  26. ^ Alp Toker – WebKit/Gtk+ is coming
  27. ^ Syllable WebKit Port, Syllable Server
  28. ^ Webkit port: talking to Andrea "xeD" Anzani | Haiku Project
  29. ^ Cow launched! | Robert Norris´ Blog on porting WebKit to AROS
  30. ^ Maciej Stachowiak (January 10, 2007). "The Obligatory iPhone Post". Surfin' Safari weblog. Retrieved on 2008-01-24.
  31. ^ Android Uses WebKit
  32. ^ pleyo
  33. ^ See OWB forge
  34. ^ AmigaOS OWB official page
  35. ^ Epiphany Mailing list - ANNOUNCEMENT: The Future of Epiphany
  36. ^ Arora Project
  37. ^ Google Chrome, Google’s Browser Project
  38. ^ Comic describing the Google Chrome Project

[edit] External links

Personal tools