Java:修订间差异
创建页面,内容为“Java(全称:Java Programming Language)是一门面向对象的程序设计语言,由 Sun Microsystems(太阳微系统公司)的詹姆斯·高斯林(James Gosling)等人于 1991 年启动开发,最初代号为 Oak,后于 1995 年 5 月 23 日正式发布并更名为 Java<ref name=":0">[https://baike.baidu.com/item/Java/85979 Java - 百度百科]</ref>。Java 语言在设计上吸收了 C++ 的诸多优点,同时摒弃了指针、多继承…” |
TeodoroSeccombe(留言 | 贡献) 小 创建页面,内容为“。” |
||
| 第1行: | 第1行: | ||
{{Infobox | |||
| 标题 = WebView | |||
| 内容 = | |||
{{!}}- | |||
! 类型 | |||
{{!}} 软件组件 | |||
{{!}}- | |||
! 用途 | |||
{{!}} 在原生应用中嵌入Web内容 | |||
{{!}}- | |||
! 首次出现 | |||
{{!}} 1990年代末(KHTML/WebKit前身) | |||
{{!}}- | |||
! 主流引擎 | |||
{{!}} WebKit、Blink、WebView2 | |||
{{!}}- | |||
! 相关标准 | |||
{{!}} HTML、CSS、JavaScript | |||
}} | |||
'''[[Web]]View'''是一种[[软件]]组件,由[[操作系统]]或开发框架提供,用于在原生应用程序内部渲染Web内容,而无需将[[用户]]切换至系统级Web[[浏览器]]。<ref name=":0">[https://webview-cg.github.io/usage-and-challenges/ WebView: Usage Scenarios and Challenges - W3C WebView Community Group]</ref> 它允许开发者将基于[[HTML]]、[[CSS]]和[[Java]]Script的网页或Web应用嵌入到桌面或移动应用中,实现原生代码与Web技术的混合开发模式。<ref name=":1">[https://median.co/blog/what-is-a-webview-app-how-do-i-build-one What is a WebView app, and when should you build one? - Median]</ref> WebView广泛应用于混合移动应用、桌面应用内嵌页面、OAuth登录流程及富[[文本]]内容展示等场景。<ref name=":0" /> | |||
== 历史 == | == 历史 == | ||
=== | === WebKit的起源 === | ||
现代WebView技术的根基可追溯至1998年KDE项目开发的KHTML排版引擎与K[[Js|JS]] [[JavaScript]]引擎。<ref name=":2">[https://butthurtfork.com/ The Butthurt Fork - KHTML to WebKit Timeline]</ref> 2001年6月,[[Apple]]公司内部启动[[WebKit]]项目,基于KHTML进行fork,旨在为[[macOS]]构建专用的浏览器引擎。<ref name=":3">[https://github.com/liamzebedee/webkit-source-archive GitHub - liamzebedee/webkit-source-archive]</ref> 2003年1月,Steve Jobs在Macworld大会上发布[[Safari]]浏览器,首次公开采用WebKit引擎。<ref name=":2" /> 2005年6月,Apple将WebKit以[[BSD许可证]]开源,使其成为[[跨平台]]渲染引擎的基础。<ref name=":2" /> | |||
= | 2008年,[[Google]]基于WebKit发布[[Chromium]]浏览器;2013年4月,Google从WebKit fork出[[Blink]]引擎,作为Chromium及后续[[Chrome]]的渲染核心。<ref name=":4">[https://smist08.wordpress.com/2013/04/13/google-forks-webkit/ Google Forks WebKit - smist08]</ref> 这一分支事件深刻影响了后续各平台WebView组件的技术路线。 | ||
=== 移动平台WebView的演进 === | |||
在[[Android]]平台,早期版本的WebView直接集成于操作系统核心,并基于WebKit构建。Android 4.4(KitKat)起,WebView转向采用Chromium/Blink引擎。<ref name=":5">[https://www.techtarget.com/searchsecurity/definition/Android-Webview What is Android System WebView and should you uninstall it? - TechTarget]</ref> Android 5.0(Lollipop)将WebView从系统核心中分离,使其可通过Google Play商店独立更新,从而缩短安全补丁的推送周期。Android 7至9期间,WebView曾与Chrome浏览器合并;自Android 10起,WebView再次成为独立系统组件,继续通过Google Play分发更新。<ref name=":5" /> | |||
在[[iOS]]与macOS平台,Apple于2010年推出WebKit2[[架构]],引入多进程模型与更强的安全性设计。2014年发布的iOS 8与macOS Yosemite中,WKWebView取代旧版UIWebView/WebView成为官方推荐的嵌入组件。<ref name=":6">[https://github.com/webview/webview/issues/254 WebView is deprecated in macOS 10.14 - GitHub webview/webview]</ref> 旧版macOS WebView类已于macOS 10.14(Mojave)中被标记为弃用。<ref name=":6" /> | |||
=== Windows平台的发展 === | |||
[[Microsoft]] [[Windows]]长期依赖Internet Explorer的Trident引擎提供WebBrowser控件。随着[[Edge]]浏览器的推出,Microsoft开发了基于EdgeHTML的WebView控件。2020年,Microsoft正式发布WebView2,该控件基于Chromium内核的[[Microsoft Edge]],支持Win32、WPF、Windows Forms及WinUI 3等多种Windows开发框架,并向下兼容至Windows 7。<ref name=":7">[https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/webview2-api-reference WebView2 API Reference - Microsoft Learn]</ref> | |||
== 技术分类 == | |||
根据[[W3C]] WebView社区组的定义,WebView按功能与集成深度可分为两类:<ref name=":0" /> | |||
'''类浏览器WebView(Browser-like WebViews)''':API表面较为简单,主要用于加载和显示网页内容。这类WebView通常不提供对渲染内容的深度访问权限,且与系统级浏览器共享[[Cookie]]、缓存等状态[[数据]]。<ref name=":0" /> | |||
'''全功能WebView(Fully-fledged WebViews)''':提供深度的原生与Web集成能力,允许宿主应用完全控制用户体验、读取和修改Web内容,并建立原生代码与Web代码之间的双向通信通道。此类WebView通常不共享系统浏览器的状态数据,具备更强的隔离性。<ref name=":0" /> | |||
== 主要平台实现 == | |||
=== | === iOS与macOS === | ||
Apple平台当前采用WKWebView作为官方WebView实现。WKWebView基于WebKit2架构,将Web内容运行在独立进程中,与宿主应用隔离,从而提升安全性与稳定性。<ref name=":6" /> 2025年,Apple在iOS 26、macOS 26及visionOS 3的SwiftUI中引入了新的原生WebView视图,进一步简化了声明式UI框架下的Web内容嵌入流程。<ref name=":8">[https://swiftprogramming.com/webview-swiftui-ios-macos/ How to Display Web Content in SwiftUI Using WebView - Swift Programming]</ref> | |||
=== | === Android === | ||
Android System WebView是基于开源Chromium项目的系统组件,为所有依赖WebView的第三方应用提供统一的Web渲染能力。<ref name=":5" /> 由于其为系统关键组件,Google不建议用户卸载或禁用WebView更新,否则可能导致依赖该组件的应用无法正常工作,并带来安全风险。<ref name=":5" /> | |||
=== | === Windows === | ||
Microsoft Edge WebView2是Windows平台的现代WebView解决方案。它使用Microsoft Edge(Chromium版)作为渲染引擎,通过Evergreen Runtime模式保持自动更新,开发者亦可选择固定版本Runtime进行分发。<ref name=":7" /> WebView2支持通过COM接口与宿主应用通信,并提供对DOM、Cookie、DevTools等浏览器功能的[[编程]]访问。 | |||
== | === Linux === | ||
[[Linux]]桌面环境通常采用WebKitGTK作为WebView实现。WebKitGTK是WebKit引擎的GTK移植版本,被GNOME Web(Epiphany)等浏览器及大量桌面应用采用。<ref name=":9">[https://theapplewiki.com/wiki/WebKit WebKit - The Apple Wiki]</ref> | |||
== | == 跨平台开发库 == | ||
除操作系统原生提供的WebView组件外,开发者社区亦创建了多款跨平台WebView封装库,以简化多平台桌面应用的开发。其中,webview/webview是一个轻量级的C/[[C++]]库,在Windows上调用Edge WebView2,在macOS上调用Cocoa/WebKit,在Linux上调用GTK/WebKitGTK,实现了一套API下的跨平台Web内容嵌入。<ref name=":10">[https://github.com/webview/webview GitHub - webview/webview]</ref> 类似地,Tauri、[[Wails]]等现代桌面应用框架亦依赖系统原生WebView作为其前端渲染层,以避免内嵌完整浏览器引擎带来的体积开销。 | |||
== 参考文献 == | == 参考文献 == | ||
<references /> | <references /> | ||
2026年7月15日 (三) 21:04的版本
WebView是一种软件组件,由操作系统或开发框架提供,用于在原生应用程序内部渲染Web内容,而无需将用户切换至系统级Web浏览器。[1] 它允许开发者将基于HTML、CSS和JavaScript的网页或Web应用嵌入到桌面或移动应用中,实现原生代码与Web技术的混合开发模式。[2] WebView广泛应用于混合移动应用、桌面应用内嵌页面、OAuth登录流程及富文本内容展示等场景。[1]
历史
WebKit的起源
现代WebView技术的根基可追溯至1998年KDE项目开发的KHTML排版引擎与KJS JavaScript引擎。[3] 2001年6月,Apple公司内部启动WebKit项目,基于KHTML进行fork,旨在为macOS构建专用的浏览器引擎。[4] 2003年1月,Steve Jobs在Macworld大会上发布Safari浏览器,首次公开采用WebKit引擎。[3] 2005年6月,Apple将WebKit以BSD许可证开源,使其成为跨平台渲染引擎的基础。[3]
2008年,Google基于WebKit发布Chromium浏览器;2013年4月,Google从WebKit fork出Blink引擎,作为Chromium及后续Chrome的渲染核心。[5] 这一分支事件深刻影响了后续各平台WebView组件的技术路线。
移动平台WebView的演进
在Android平台,早期版本的WebView直接集成于操作系统核心,并基于WebKit构建。Android 4.4(KitKat)起,WebView转向采用Chromium/Blink引擎。[6] Android 5.0(Lollipop)将WebView从系统核心中分离,使其可通过Google Play商店独立更新,从而缩短安全补丁的推送周期。Android 7至9期间,WebView曾与Chrome浏览器合并;自Android 10起,WebView再次成为独立系统组件,继续通过Google Play分发更新。[6]
在iOS与macOS平台,Apple于2010年推出WebKit2架构,引入多进程模型与更强的安全性设计。2014年发布的iOS 8与macOS Yosemite中,WKWebView取代旧版UIWebView/WebView成为官方推荐的嵌入组件。[7] 旧版macOS WebView类已于macOS 10.14(Mojave)中被标记为弃用。[7]
Windows平台的发展
Microsoft Windows长期依赖Internet Explorer的Trident引擎提供WebBrowser控件。随着Edge浏览器的推出,Microsoft开发了基于EdgeHTML的WebView控件。2020年,Microsoft正式发布WebView2,该控件基于Chromium内核的Microsoft Edge,支持Win32、WPF、Windows Forms及WinUI 3等多种Windows开发框架,并向下兼容至Windows 7。[8]
技术分类
根据W3C WebView社区组的定义,WebView按功能与集成深度可分为两类:[1]
类浏览器WebView(Browser-like WebViews):API表面较为简单,主要用于加载和显示网页内容。这类WebView通常不提供对渲染内容的深度访问权限,且与系统级浏览器共享Cookie、缓存等状态数据。[1]
全功能WebView(Fully-fledged WebViews):提供深度的原生与Web集成能力,允许宿主应用完全控制用户体验、读取和修改Web内容,并建立原生代码与Web代码之间的双向通信通道。此类WebView通常不共享系统浏览器的状态数据,具备更强的隔离性。[1]
主要平台实现
iOS与macOS
Apple平台当前采用WKWebView作为官方WebView实现。WKWebView基于WebKit2架构,将Web内容运行在独立进程中,与宿主应用隔离,从而提升安全性与稳定性。[7] 2025年,Apple在iOS 26、macOS 26及visionOS 3的SwiftUI中引入了新的原生WebView视图,进一步简化了声明式UI框架下的Web内容嵌入流程。[9]
Android
Android System WebView是基于开源Chromium项目的系统组件,为所有依赖WebView的第三方应用提供统一的Web渲染能力。[6] 由于其为系统关键组件,Google不建议用户卸载或禁用WebView更新,否则可能导致依赖该组件的应用无法正常工作,并带来安全风险。[6]
Windows
Microsoft Edge WebView2是Windows平台的现代WebView解决方案。它使用Microsoft Edge(Chromium版)作为渲染引擎,通过Evergreen Runtime模式保持自动更新,开发者亦可选择固定版本Runtime进行分发。[8] WebView2支持通过COM接口与宿主应用通信,并提供对DOM、Cookie、DevTools等浏览器功能的编程访问。
Linux
Linux桌面环境通常采用WebKitGTK作为WebView实现。WebKitGTK是WebKit引擎的GTK移植版本,被GNOME Web(Epiphany)等浏览器及大量桌面应用采用。[10]
跨平台开发库
除操作系统原生提供的WebView组件外,开发者社区亦创建了多款跨平台WebView封装库,以简化多平台桌面应用的开发。其中,webview/webview是一个轻量级的C/C++库,在Windows上调用Edge WebView2,在macOS上调用Cocoa/WebKit,在Linux上调用GTK/WebKitGTK,实现了一套API下的跨平台Web内容嵌入。[11] 类似地,Tauri、Wails等现代桌面应用框架亦依赖系统原生WebView作为其前端渲染层,以避免内嵌完整浏览器引擎带来的体积开销。
参考文献
- ↑ 1.0 1.1 1.2 1.3 1.4 WebView: Usage Scenarios and Challenges - W3C WebView Community Group
- ↑ What is a WebView app, and when should you build one? - Median
- ↑ 3.0 3.1 3.2 The Butthurt Fork - KHTML to WebKit Timeline
- ↑ GitHub - liamzebedee/webkit-source-archive
- ↑ Google Forks WebKit - smist08
- ↑ 6.0 6.1 6.2 6.3 What is Android System WebView and should you uninstall it? - TechTarget
- ↑ 7.0 7.1 7.2 WebView is deprecated in macOS 10.14 - GitHub webview/webview
- ↑ 8.0 8.1 WebView2 API Reference - Microsoft Learn
- ↑ How to Display Web Content in SwiftUI Using WebView - Swift Programming
- ↑ WebKit - The Apple Wiki
- ↑ GitHub - webview/webview