jjgod / blog Random notes by Jjgod Jiang.

Mozilla 2

Brendan Eich 的这篇 Mozilla 2,过了一个多月我才来看。还是有些新内容的。

现在“Mozilla”这个词比较怪,它不再指以前那个“Mozilla Suite”浏览器 (自从 SeaMonkey 分出去之后),也不专指“Firefox”,更不仅限于“Gecko”渲染引擎 (虽然现在给 Mozilla 起的版本号还是和 Gecko 同步的),按我的理解,指的是 Mozilla 组织这面大旗下的整个平台的统称,Web 渲染,XUL, XBL, JavaScript, XML/XSL 等许多引擎的统称,而其招牌产品就是 Firefox。

其中,Mozilla 1.9 将对应着 Firefox 3.0,其路线大致已经确定了。Brendan 讨论的是在架构上将有巨大变化的 Mozilla 2,它预期在 2008 年出现。

最引人注目的是基于 JIT 的 JavaScript 虚拟机的出现,加上改进的垃圾回收,将给 JavaScript 的效率 (在 DOM 访问和内存占用方面) 带来巨大提升,据说。同时,它支持的语言会是 ECMAScript 4 (俗称 JavaScript 2)。

其他的改进对普通用户则不大可见,比如放弃 XPCOM,而更多的依赖标准 C++ 的特性来写程序,去掉一些为了兼容性遗留的旧 API,简化代码组织,放弃 CVS 换用新的版本管理工具,等等。


4 Comments

放弃 XPCOM?? 那跨平台跨语言的优势怎么办?

用 C++ 来保证跨平台可以理解,但用 JavaScript/Python 实现 XPCOM 也是很有意义的啊.

Posted by qyb on 5 December 2006 @ 12am

qyb:

不好意思,我没说清楚,他们的趋势应该是慢慢减少 XPCOM 的使用,尤其是多余的一些 API。举的一个例子是,原来的:

PRBool
nsXULDocument::OnDocumentParserError()
{
// don't report errors that are from overlays
if (mCurrentPrototype && mMasterPrototype != mCurrentPrototype) {
    nsCOMPtr<nsIURI> uri;
    nsresult rv = mCurrentPrototype->GetURI(getter_AddRefs(uri));
    if (NS_SUCCEEDED(rv)) {
    PRBool isChrome = IsChromeURI(uri);
    if (isChrome) {
        nsCOMPtr os(
        do_GetService("@mozilla.org/observer-service;1"));
        if (os)
        os->NotifyObservers(uri, "xul-overlay-parsererror",
                            EmptyString().get());
    }
    }
    return PR_FALSE;
}
return PR_TRUE;
}

可以简化为:

bool
XULDocument::OnDocumentParserError()
{
// don't report errors that are from overlays
if (mCurrentPrototype && mMasterPrototype != mCurrentPrototype) {
    IURI *uri = mCurrentPrototype->GetURI();
    if (IsChromeURI(uri)) {
    GetObserverService()->NotifyObservers(uri, "xul-overlay-parsererror");
    }
    return false;
}
return true;
}

另外,能说说“用 JavaScript/Python 实现 XPCOM”的思路吗?在 Mozilla 的核心代码还是用 C++ 写的情况下。

Posted by jjgod on 5 December 2006 @ 1pm

ActivePython 有一个项目叫 PyXPCOM,事实上一直在 mozilla 的 cvs 里 extensions 目录下。我曾经在 win32 下编译过一次,试了试用 python 去连接 XPCOM 服务,但没尝试写一个 xpcom service. 但肯定是可用的。 用 JavaScript 编写 XPCOM 服务我是以前听我的同事说的,”基于Mozilla 的扩展开发”就是他写的,我认为他是这个领域的专家,所以有此一说。

Posted by qyb on 6 December 2006 @ 9am

呵呵。路过下。。。。有点高深,看不懂哦。

Posted by Yiwu sourcing agent on 27 January 2008 @ 10pm

Leave a Comment

Cocoa Text System 免费的中文黑体 - Adobe Heiti Std