编写Web浏览器是一项重大任务,具体取决于您要包含的功能级别。
需要进入浏览器的内容:
- 可以从服务器检索页面内容的 HTTP客户端。 Java在java.net中包含了一些非常基本的东西,但如果可以,请使用Apache Commons HTTPClient。许多浏览器也支持其他协议,例如ftp://或本地文件(file://)。
- HTML解析器,可以将返回的HTML(或XHTML)读入内存结构。这里的难点在于不仅HTML已经发展;还有很多HTML不符合任何多个HTML标准。人们只是倾向于写一些东西,看它是否可以在特定的浏览器上呈现(比如IE),然后继续前进 - 某些浏览器几乎可以呈现任何东西。您可以使用现有的解析器(如JSoup),这也有助于修复错误。
- 渲染引擎。对我来说,这将是最复杂的一步。您需要真正深入的阅读以获得任何类型的CSS支持(主要浏览器也难以正确地进行),甚至非嵌入式表格或复杂表格等非CSS渲染也意味着努力工作(计算在哪里)每个页面组件都在渲染页面上。我不知道有没有附加渲染渲染库,但是在JEditorPane中有最小的(HTML 3.2?)HTML渲染支持 - 你可以使用它(忘记高级CSS,那么)。
- 脚本支持。这将解释JavaScript,并使您的页面具有交互性。你可以使用Rhino(由Mozilla的人员维护,非常强大)。
(加上内部缓存,以避免重复请求;支持将页面保存到文件;支持第三方插件/扩展,如Flash;安全注意事项,以避免对用户的跨站点脚本攻击...还有更多我上面没有讨论的组件或问题。)
由于您只对Java有基本的了解,而且上述任何组件本身都是相当复杂的项目,我建议您选择另一个项目,或者划分商业Web浏览器尝试实现的一小部分内容。 那而不是。