跳转到内容

Java:修订间差异

轻之舟百科,让知识轻装启航
TeodoroSeccombe​(留言 | 贡献)
小 创建页面,内容为“。”
云云​(留言 | 贡献)
添加 其它语言 链接
第1行: 第1行:
{{Infobox
{{Languages
| 标题 = WebView
|en = Java Programming Language
| 内容 =
{{!}}-
! 类型
{{!}} 软件组件
{{!}}-
! 用途
{{!}} 在原生应用中嵌入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" />
Java(全称:[[Java Programming Language]])是一门面向对象的程序设计语言,由 Sun Microsystems(太阳微系统公司)的詹姆斯·高斯林(James [[Go]]sling)等人于 1991 年启动开发,最初代号为 Oak,后于 1995 年 5 月 23 日正式发布并更名为 Java<ref name=":0">[https://baike.baidu.com/item/Java/85979 Java - 百度百科]</ref>。Java 语言在设计上吸收了 [[C++]] 的诸多优点,同时摒弃了指针、多继承等复杂特性,强调“一次编写,到处运行”(Write Once, Run Anywhere)的[[跨平台]]能力,通过 Java 虚拟机(JVM)将字节码解释或编译为不同平台上的本地机器码执行<ref name=":1">[https://www.oracle.com/java/ Java Software - Oracle]</ref>。2010 年,Oracle 公司以约 74 亿美元收购 Sun Microsystems,自此 Java 的维护与演进由 Oracle 主导<ref name=":0" />。截至今日,Java 仍是[[全球]]使用最广泛的[[编程]]语言之一,运行在超过 730 亿台 Java 虚拟机之上,被广泛应用于企业级后端、云计算、大[[数据]]、[[Android]] 移动开发及嵌入式系统等领域<ref name=":1" />。
 
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
|-
! colspan="2" style="text-align:center;" | '''Java'''
|-
| 中文名 || '''Java'''
|-
| [[英文]]名 || '''Java Programming Language'''
|-
| 作者 || 詹姆斯·高斯林(James Gosling)等
|-
| 开发者 || Sun Microsystems(1991–2010)<br>Oracle Corporation(2010–至今)
|-
| 首次发布 || 1995年5月23日
|-
| 当前版本 || Java SE 26(2026年3月)<ref name=":1" />
|-
| 运行平台 || 跨平台(JVM)
|-
| 许可证 || [[GNU]] [[GPL]](OpenJDK)<br>Oracle Technology Network License(Oracle JDK)
|-
| 文件扩展名 || .java、.class、.jar
|-
| 主要实现 || OpenJDK、Oracle JDK
|}


== 历史 ==
== 历史 ==


=== 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" />
Java 的前身是 1991 年 Sun Microsystems 启动的“Green 计划”,由詹姆斯·高斯林、帕特里克·诺顿(Patrick Naughton)等人组成的小组在加利福尼亚州门罗帕克开发,最初目标是为智能电视、机顶盒等消费类电子产品提供嵌入式程序设计方案<ref name=":0" />。由于 C++ 在嵌入式设备上表现过于复杂且缺乏垃圾回收机制,团队决定开发一种新语言,最初命名为 Oak。后因 Oak 商标已被注册,团队在一次会议中因常饮咖啡而将其更名为 Java(取自印度尼西亚爪哇岛,该岛盛产咖啡)<ref name=":0" />。1995 年,Sun 公司正式发布 Java 与 HotJava [[浏览器]],展示了 Java [[Apple]]t 的动态 Web 能力,迅速获得业界认可<ref name=":0" />。


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组件的技术路线。
=== Oracle 收购与后续演进 ===


=== 移动平台WebView的演进 ===
2009 年 4 月,Oracle 宣布以 74 亿美元收购 Sun Microsystems,交易于 2010 年完成,Java 的知识产权与后续开发主导权转移至 Oracle<ref name=":0" />。收购后,Oracle 继续推进 Java 的定期发布节奏,并引入长期支持(LTS)版本策略。当前 Java 采用每六个月发布一个新版本的快速迭代模式,其中 LTS 版本(如 Java 17、Java 21)提供至少八年的更新支持,而非 LTS 版本仅提供六个月维护<ref name=":2">[https://public-yum.oracle.com/oracle-linux-java.html Oracle Java SE Development Kit (JDK) for Oracle Linux]</ref>。


在[[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平台的发展 ===
Java 的核心设计理念之一是跨平台能力。Java 源代码(.java)首先被编译为与平台无关的字节码(.class),再由具体平台上的 Java 虚拟机(JVM)解释执行或通过即时编译器(JIT)编译为本地机器码。这一机制使得 Java 程序能够在 [[Windows]]、[[Linux]]、[[macOS]] 及各类嵌入式系统上无需重新编译即可运行<ref name=":0" />。


[[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>
=== 面向对象与语言设计 ===


== 技术分类 ==
Java 是一门纯粹的面向对象[[编程语言]],所有代码必须位于类(Class)中。它支持封装、继承与多态,但仅允许单根继承(一个类只能直接继承一个父类),通过接口(Interface)机制实现多继承的功能替代<ref name=":0" />。Java 舍弃了 C++ 中的指针运算、运算符重载与手动内存管理,降低了程序出错概率,并提供了强类型检查与异常处理机制以增强健壮性<ref name=":0" />。


根据[[W3C]] WebView社区组的定义,WebView按功能与集成深度可分为两类:<ref name=":0" />
=== 自动内存管理 ===


'''类浏览器WebView(Browser-like WebViews)''':API表面较为简单,主要用于加载和显示网页内容。这类WebView通常不提供对渲染内容的深度访问权限,且与系统级浏览器共享[[Cookie]]、缓存等状态[[数据]]。<ref name=":0" />
Java 内置垃圾回收器(Garbage Collector, GC),可自动追踪并回收程序中不再被引用的对象所占用的内存空间,开发者无需手动释放内存。这一特性显著减少了内存泄漏与悬空指针等问题,但也要求开发者关注 GC 调优与内存溢出(OutOfMemoryError)风险<ref name=":0" />。


'''全功能WebView(Fully-fledged WebViews)''':提供深度的原生与Web集成能力,允许宿主应用完全控制用户体验、读取和修改Web内容,并建立原生代码与Web代码之间的双向通信通道。此类WebView通常不共享系统浏览器的状态数据,具备更强的隔离性。<ref name=":0" />
== 平台体系 ==


== 主要平台实现 ==
Java 平台由 Java 编程语言、Java 虚拟机、Java 类库及各类工具组成,主要分为三个版本:


=== iOS与macOS ===
=== Java SE ===


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>
Java Platform, Standard Edition(Java SE,曾称 J2SE)是 Java 平台的标准版,包含核心类库、Java 虚拟机(JVM)、Java 编译器(javac)及基础工具,是开发桌面应用与[[服务器]]端程序的基础<ref name=":0" />。当前主流的 Java SE 实现包括 Oracle 官方发布的 Oracle JDK 与开源的 OpenJDK 项目。


=== Android ===
=== Java EE / Jakarta EE ===


Android System WebView是基于开源Chromium项目的系统组件,为所有依赖WebView的第三方应用提供统一的Web渲染能力。<ref name=":5" /> 由于其为系统关键组件,Google不建议用户卸载或禁用WebView更新,否则可能导致依赖该组件的应用无法正常工作,并带来安全风险。<ref name=":5" />
Java Platform, Enterprise Edition(Java EE,曾称 J2EE)面向企业级应用开发,提供 Servlet、EJB、JPA、JMS 等用于构建大规模分布式系统的扩展规范。2017 年,Oracle 将 Java EE 移交至 Eclipse 基金会,随后更名为 Jakarta EE,以避免与 Oracle 商标冲突<ref name=":0" />。


=== Windows ===
=== Java ME ===


Microsoft Edge WebView2是Windows平台的现代WebView解决方案。它使用Microsoft Edge(Chromium版)作为渲染引擎,通过Evergreen Runtime模式保持自动更新,开发者亦可选择固定版本Runtime进行分发。<ref name=":7" /> WebView2支持通过COM接口与宿主应用通信,并提供对DOM、Cookie、DevTools等浏览器功能的[[编程]]访问。
Java Platform, Micro Edition(Java ME,曾称 J2ME)是针对嵌入式与移动设备的精简版本,提供有限的类库与轻量级虚拟机,曾广泛应用于早期功能手机与物联网终端<ref name=":0" />。


=== Linux ===
== 版本演进 ==


[[Linux]]桌面环境通常采用WebKitGTK作为WebView实现。WebKitGTK是WebKit引擎的GTK移植版本,被GNOME Web(Epiphany)等浏览器及大量桌面应用采用。<ref name=":9">[https://theapplewiki.com/wiki/WebKit WebKit - The Apple Wiki]</ref>
1996 年 1 月,首个正式版本 JDK 1.0 发布。此后 Java 经历了多次重大更新:2004 年发布的 J2SE 5.0(后改称 Java SE 5)引入泛型、枚举、注解与增强 for 循环;2014 年发布的 Java SE 8 带来 Lambda 表达式与 Stream API,成为历史上使用最广泛的 LTS 版本之一;2017 年发布的 Java SE 9 引入模块系统(JPMS),将庞大的 JDK 拆分为可组合的模块<ref name=":0" />。2023 年发布的 Java SE 21 作为 LTS 版本,加入了虚拟线程(Virtual Threads)、分代 ZGC 等特性,进一步优化了高并发场景下的性能表现<ref name=":1" />。


== 跨平台开发库 ==
== 应用领域 ==


除操作系统原生提供的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作为其前端渲染层,以避免内嵌完整浏览器引擎带来的体积开销。
Java 在企业级后端开发中占据主导地位,大量银行、电信与电商平台的核心系统基于 Java EE/Jakarta EE 或 Spring 生态构建。在移动[[互联网]]领域,Android [[操作系统]]原生支持 Java 作为应用开发语言(后逐步转向 Kotlin)。此外,Java 在大数据生态(如 Apache Hadoop、Apache Spark)、云计算中间件及科学计算领域亦有广泛应用<ref name=":1" />。


== 参考文献 ==
== 参考文献 ==


<references />
<references />

2026年7月24日 (五) 13:28的版本

Java(全称:Java Programming Language)是一门面向对象的程序设计语言,由 Sun Microsystems(太阳微系统公司)的詹姆斯·高斯林(James Gosling)等人于 1991 年启动开发,最初代号为 Oak,后于 1995 年 5 月 23 日正式发布并更名为 Java[1]。Java 语言在设计上吸收了 C++ 的诸多优点,同时摒弃了指针、多继承等复杂特性,强调“一次编写,到处运行”(Write Once, Run Anywhere)的跨平台能力,通过 Java 虚拟机(JVM)将字节码解释或编译为不同平台上的本地机器码执行[2]。2010 年,Oracle 公司以约 74 亿美元收购 Sun Microsystems,自此 Java 的维护与演进由 Oracle 主导[1]。截至今日,Java 仍是全球使用最广泛的编程语言之一,运行在超过 730 亿台 Java 虚拟机之上,被广泛应用于企业级后端、云计算、大数据、Android 移动开发及嵌入式系统等领域[2]。

Java
中文名 Java
英文名 Java Programming Language
作者 詹姆斯·高斯林(James Gosling)等
开发者 Sun Microsystems(1991–2010)
Oracle Corporation(2010–至今)
首次发布 1995年5月23日
当前版本 Java SE 26(2026年3月)[2]
运行平台 跨平台(JVM)
许可证 GNU GPL(OpenJDK)
Oracle Technology Network License(Oracle JDK)
文件扩展名 .java、.class、.jar
主要实现 OpenJDK、Oracle JDK

历史

起源与早期发展

Java 的前身是 1991 年 Sun Microsystems 启动的“Green 计划”,由詹姆斯·高斯林、帕特里克·诺顿(Patrick Naughton)等人组成的小组在加利福尼亚州门罗帕克开发,最初目标是为智能电视、机顶盒等消费类电子产品提供嵌入式程序设计方案[1]。由于 C++ 在嵌入式设备上表现过于复杂且缺乏垃圾回收机制,团队决定开发一种新语言,最初命名为 Oak。后因 Oak 商标已被注册,团队在一次会议中因常饮咖啡而将其更名为 Java(取自印度尼西亚爪哇岛,该岛盛产咖啡)[1]。1995 年,Sun 公司正式发布 Java 与 HotJava 浏览器,展示了 Java Applet 的动态 Web 能力,迅速获得业界认可[1]。

Oracle 收购与后续演进

2009 年 4 月,Oracle 宣布以 74 亿美元收购 Sun Microsystems,交易于 2010 年完成,Java 的知识产权与后续开发主导权转移至 Oracle[1]。收购后,Oracle 继续推进 Java 的定期发布节奏,并引入长期支持(LTS)版本策略。当前 Java 采用每六个月发布一个新版本的快速迭代模式,其中 LTS 版本(如 Java 17、Java 21)提供至少八年的更新支持,而非 LTS 版本仅提供六个月维护[3]。

技术特性

跨平台性

Java 的核心设计理念之一是跨平台能力。Java 源代码(.java)首先被编译为与平台无关的字节码(.class),再由具体平台上的 Java 虚拟机(JVM)解释执行或通过即时编译器(JIT)编译为本地机器码。这一机制使得 Java 程序能够在 Windows、Linux、macOS 及各类嵌入式系统上无需重新编译即可运行[1]。

面向对象与语言设计

Java 是一门纯粹的面向对象编程语言,所有代码必须位于类(Class)中。它支持封装、继承与多态,但仅允许单根继承(一个类只能直接继承一个父类),通过接口(Interface)机制实现多继承的功能替代[1]。Java 舍弃了 C++ 中的指针运算、运算符重载与手动内存管理,降低了程序出错概率,并提供了强类型检查与异常处理机制以增强健壮性[1]。

自动内存管理

Java 内置垃圾回收器(Garbage Collector, GC),可自动追踪并回收程序中不再被引用的对象所占用的内存空间,开发者无需手动释放内存。这一特性显著减少了内存泄漏与悬空指针等问题,但也要求开发者关注 GC 调优与内存溢出(OutOfMemoryError)风险[1]。

平台体系

Java 平台由 Java 编程语言、Java 虚拟机、Java 类库及各类工具组成,主要分为三个版本:

Java SE

Java Platform, Standard Edition(Java SE,曾称 J2SE)是 Java 平台的标准版,包含核心类库、Java 虚拟机(JVM)、Java 编译器(javac)及基础工具,是开发桌面应用与服务器端程序的基础[1]。当前主流的 Java SE 实现包括 Oracle 官方发布的 Oracle JDK 与开源的 OpenJDK 项目。

Java EE / Jakarta EE

Java Platform, Enterprise Edition(Java EE,曾称 J2EE)面向企业级应用开发,提供 Servlet、EJB、JPA、JMS 等用于构建大规模分布式系统的扩展规范。2017 年,Oracle 将 Java EE 移交至 Eclipse 基金会,随后更名为 Jakarta EE,以避免与 Oracle 商标冲突[1]。

Java ME

Java Platform, Micro Edition(Java ME,曾称 J2ME)是针对嵌入式与移动设备的精简版本,提供有限的类库与轻量级虚拟机,曾广泛应用于早期功能手机与物联网终端[1]。

版本演进

1996 年 1 月,首个正式版本 JDK 1.0 发布。此后 Java 经历了多次重大更新:2004 年发布的 J2SE 5.0(后改称 Java SE 5)引入泛型、枚举、注解与增强 for 循环;2014 年发布的 Java SE 8 带来 Lambda 表达式与 Stream API,成为历史上使用最广泛的 LTS 版本之一;2017 年发布的 Java SE 9 引入模块系统(JPMS),将庞大的 JDK 拆分为可组合的模块[1]。2023 年发布的 Java SE 21 作为 LTS 版本,加入了虚拟线程(Virtual Threads)、分代 ZGC 等特性,进一步优化了高并发场景下的性能表现[2]。

应用领域

Java 在企业级后端开发中占据主导地位,大量银行、电信与电商平台的核心系统基于 Java EE/Jakarta EE 或 Spring 生态构建。在移动互联网领域,Android 操作系统原生支持 Java 作为应用开发语言(后逐步转向 Kotlin)。此外,Java 在大数据生态(如 Apache Hadoop、Apache Spark)、云计算中间件及科学计算领域亦有广泛应用[2]。

参考文献