ARTICLE · 1046842
Java:从“写一次,到处运行”到企业软件主力

上一篇讲 Python。它把“代码容易读、工具容易调用”做成了自己的长处,后来又借自动化、数据分析和人工智能走上大众舞台。
Java 走的是另一条路。
20 世纪 90 年代初,电脑和电子设备越来越多,使用的处理器和操作系统却各不相同。同一套程序写给一种机器,换台机器往往要重新编译、重新修改;如果还要管理内存、处理各种底层差异,开发者就像每到一个城市,都得重新铺一遍路。
能不能只写一套程序,让不同设备各自负责把它运行起来?
这道题,后来成了 Java 最响亮的招牌。
它最初瞄准的并不是企业服务器
1991 年,Sun Microsystems 公司成立了一个名为 Green 的项目小组。James Gosling(詹姆斯·高斯林)等人想为机顶盒、家用电器一类设备开发软件。
这类设备的麻烦是:硬件型号多,更新也快。今天给这一款芯片写好的程序,明天换个平台,可能又要从头适配。项目需要一种比 C++ 更容易控制复杂度,又能跨越不同设备的语言。
Gosling 设计的语言最初叫 Oak。后来因为商标原因改名为 Java,并在 1995 年正式亮相。Java 不是几个英文单词的缩写,名字通常让人联想到咖啡,但真正让它被记住的,是一句口号:
Write once, run anywhere.
写一次,到处运行。
有点意思的是,最初瞄准的智能家电市场并没有立刻成功。可就在这时,互联网和网页兴起了。Java 原来为“不同设备”准备的跨平台本事,突然找到了更大的舞台。
中间多站一个 JVM,程序反而走得更远
普通编译型语言常常直接把源代码变成某种机器能够执行的指令。换了处理器或操作系统,这份成品未必还能用。
Java 在中间加了一站:Java Virtual Machine,也就是 Java 虚拟机,简称 JVM。
大致过程可以理解成:
Java 源代码 -> 字节码 -> 不同平台上的 JVM -> 程序运行程序员写好的 Java 代码,先被编译成一种叫“字节码”的中间结果。Windows 有自己的 JVM,Linux、macOS 也可以有各自的 JVM。每台机器上的虚拟机负责把同一份字节码翻译成当地机器能执行的动作。
这有点像作者先写一份统一剧本,每座城市再安排熟悉本地舞台的剧团来演。剧本不用重写,舞台差异由剧团处理。
“写一次,到处运行”是一种设计目标,并不意味着任何程序放到任何设备都绝对不用修改。系统版本、图形界面和硬件功能仍可能带来差异。但相比每个平台都维护一套代码,JVM 确实把跨平台向前推了一大步。
同样算 3 + 5,Java 为什么写得这么正式
看看最简单的加法:
public class Main {publicstaticvoidmain(String[] args) {System.out.println(3 + 5);}}
和 Python 的 print(3 + 5) 相比,Java 像是先填了一张表,才肯把答案 8 打印出来。
这些看似多余的外壳,其实暴露了 Java 的性格:程序放在哪个类里,从哪里开始运行,哪些内容可以被外部使用,都尽量提前说清楚。
Java 还强调类型。一个变量用来放整数、文字还是某种对象,通常要明确交代。编译器可以在程序运行前发现不少不匹配的问题。对于一个人写的小脚本,这些规矩可能显得啰嗦;对于几十人维护多年的系统,规矩往往能减少误会。
它也替程序员管理大部分内存。用不到的对象会由垃圾回收机制处理,程序员不必像使用 C、C++ 时那样频繁手动释放内存。当然,自动管理并不等于不会出现内存问题,只是把许多常见风险交给了运行环境。
网页小程序让它成名,企业后台让它站稳
Java 刚亮相时,最吸引眼球的是 Applet,也就是嵌在网页里的 Java 小程序。
在当时,多数网页还很安静。Applet 可以在浏览器里显示动画、交互界面甚至小游戏,看起来像把一个小软件塞进了网页。它既展示了 Java 的跨平台能力,也让不少普通用户第一次见到 Java 这个名字。
不过 Applet 后来遇到了启动慢、浏览器插件和安全风险等问题,最终退出主流浏览器。Java 第一块最耀眼的招牌,反而没有成为它最长久的事业。
真正让 Java 扎下根的,是服务器和企业软件。
银行、通信、电商和大型机构的系统,往往要运行很多年,承受大量用户,还要由不同团队不断维护。Java 的类型检查、自动内存管理、跨平台能力、丰富类库和成熟工具,正好适合这种“房子盖得大,还要不断加层”的工程。
20 世纪 90 年代末到 21 世纪初,Java 逐渐成为企业后台的重要主力。各种服务器框架、数据库工具和开发规范围绕它生长出来。语言不再单打独斗,背后站着一个庞大的产业生态。
Android 又把 Java 装进了很多人的口袋
2008 年后,Android 智能手机兴起,Java 又得到了一块巨大的舞台。
需要说准确一点:Android 并不是把普通电脑上的 JVM 原样塞进手机,而是采用自己的运行环境和应用框架;但很长一段时间里,开发者主要使用 Java 语言和熟悉的 Java 类库思路编写 Android 应用。
这让许多并不接触银行后台的人,也通过手机 App 开发认识了 Java。后来 Kotlin 成为 Android 官方重点推荐的语言,Java 的位置不再像早期那样醒目,但大量应用、类库和开发经验仍然留在生态中。
今天的 Java,没有消失,只是没那么新鲜了
Java 曾经最吸引眼球的 Applet 已经退场,桌面应用也不再是它最强的舞台;在 Android 新项目里,Kotlin 分走了不少关注。Java 语法相对正式,程序启动速度和内存占用在某些场景里也不占便宜。
但在金融、电商、通信、政府和大型企业后台中,Java 仍然有大量系统运行。兼容性、成熟框架、开发工具和人才积累,都是新语言难以一夜替换的地基。现代 Java 也一直在更新,并没有停在 20 年前。
所以 Java 的故事并不是“曾经辉煌,后来消失”,而是从互联网明星变成了基础设施。人们未必天天谈论地基,但很多大楼还站在上面。
JavaScript 和 Java,只是名字像亲戚
很多初学者会把 JavaScript 当成“Java 的脚本版”。其实两者不是同一门语言,也没有父子关系。Java 声势正盛的 1995 年,Netscape 的网页脚本语言曾从 LiveScript 改名为 JavaScript,其中有市场合作和借势的因素。
Java 更常见于服务器、企业系统和 Android 旧生态;JavaScript 则从浏览器起家,负责让网页产生互动。它们像两家招牌只差几个字的店,卖的却不是同一种东西。
小结
Java 最值得记住的,是它在源代码和不同机器之间加入 JVM,用字节码换取了更强的跨平台能力。
Applet 让它成名,企业软件让它站稳,Android 又把它带进移动时代。它没有在每个战场都取胜,却靠长期兼容、工程规范和庞大生态,成为大型软件世界里很难绕开的主力。