3

可能重复:
如何开始构建 Web 浏览器?

我对Java语言有基本的了解,也对小程序有一定的了解。

我必须为我的大学项目开发​​一个基本的 Web 浏览器,它可以显示简单的网站以及 Javascript 组件。

谁能告诉我先决条件是什么,即在做这件事之前我应该​​阅读哪些主题以及如何做?

非常感谢帮助

4

1 回答 1

3

编写 Web 浏览器是一项艰巨的任务,具体取决于您想要包含的功能级别。

需要进入浏览器的东西:

  • 可以从服务器检索页面内容的HTTP 客户端。Java 在 java.net 中包含一些非常基本的内容,但如果可以,请改用 Apache Commons HTTPClient。许多浏览器还支持其他协议,例如 ftp:// 或本地文件 (file://)。
  • HTML 解析器,可以将返回的HTML(或 XHTML)读入内存结构。这里的难点在于,不仅 HTML 已经进化了;还有很多 HTML 不符合多个 HTML 标准中的任何一个。人们只是倾向于写一些东西,看看它是否可以在特定的浏览器(例如,IE)上呈现,然后继续前进——某些浏览器几乎可以呈现任何东西。您可以为此使用现有的解析器,例如 JSoup,它对修复错误的支持也有限。
  • 一个渲染引擎。对我来说,这将是最复杂的一步。您需要真正深入阅读才能使任何类型的 CSS 支持正常工作(主要浏览器也很难做到正确),即使是嵌套表或复杂表单等非 CSS 渲染也意味着努力工作(计算在哪里每个页面组件都在呈现的页面上)。我所知道的没有附加渲染库,但是 JEditorPane 中的 HTML 渲染支持很少(HTML 3.2?)——您也许可以使用它(忘记高级 CSS,thouth)。
  • 脚本支持。这将解释 JavaScript,并使您的页面具有交互性。您可以为此使用 Rhino(由 Mozilla 的人员维护,并且非常强大)。

(加上内部缓存以避免重复请求;支持将页面保存到文件;支持 3rd 方插件/扩展,例如 Flash;避免对用户的跨站点脚本攻击的安全注意事项......还有更多组件或问题我没有费心在上面包括)。

由于您对 Java 只有基本的了解,并且上述任何组件本身都是相当复杂的项目,因此我建议您选择另一个项目或划定商业 Web 浏览器所做工作的一小部分来尝试实现

于 2013-01-13T17:32:46.510 回答