标签 Java 下的文章

开源社区和行业趋势的每周总览。

 title=

作为我在具有开源开发模型的企业软件公司担任高级产品营销经理的角色的一部分,我为产品营销人员、经理和其他影响者定期发布有关开源社区,市场和行业趋势的定期更新。以下是该更新中我和他们最喜欢的五篇文章。

《Java 还有用吗?》

负责 Java Enterprise Edition(现为 Jakarta EE)的 Eclipse 基金会执行董事 Mike Milinkovich 也认为 Java 本身将不断发展以支持这些技术。“我认为 Java 将从 JVM 一直到 Java 本身都将发生变化,”Milinkovich 表示,“因此,JVM 中任何有助于将 JVM 与 Docker 容器集成在一起,以及能够更好地在 Kubernetes 中对 Docker 容器进行检测的新特性,都将是一个巨大的帮助。因此,我们将期待 Java SE 朝着这个方向发展。”

影响:Jakarta EE 是 Java Enterprise Edition 的完全开源版本,奠定了 Java 未来发展的基础。一些 Java 有用论来自于在用 Java 开发中花费的令人难以置信的成本,以及软件开发人员在用它解决问题方面的多年经验。将其与生态系统中的创新相结合(例如,请参见 Quarkus 或 GraalVM),答案必须是“是”。

《GraalVM:多语言 JVM 的圣杯?》

虽然大多数关于 GraalVM 的宣传都是围绕着将 JVM 项目编译成原生的程序,但是我们仍可以发现它的 Polyglot API 有很多价值。GraalVM 是一个引人注目的、已经完全可以用来替代 Nashorn 的选择,尽管迁移的路径仍然有一些困难,主要原因是缺乏文档。希望这篇文章能帮助其他人找到离开 Nashorn 通往圣杯之路。

影响:对于开放源码项目来说,最好的事情之一就是用户开始对一些新奇的应用程序赞不绝口,即使这些应用程序不是主要用例。“是的,听起来不错,我们甚至没有使用过那个功能(指在 JVM 上运行本地语言)……,(都可以感受得到它的优势,)然而我们使用了它的另一个功能(指 Polyglot API)!”

《你可以说我疯了,但 Windows 11 或可以在 Linux 上运行》

微软已经做了一些必要的工作。Windows 的 Linux 子系统(WSL)的开发人员一直在致力于将 Linux API 调用映射到 Windows 中,反之亦然。在 WSL 的第一个版本中, 微软将 Windows 本地库、程序以及 Linux 之间的关键点连接起来了。当时,Carmen Crincoli 发推文称:“2017 年归根结底还是 Linux 桌面年。只不过这个桌面是 Windows。”Carmen Crincoli 是什么人?微软与存储和独立硬件供应商的合作伙伴经理。

影响Hieroglyph 项目 的前提是“一部好的科幻小说都有一个对未来的愿景……是建立在现实主义的基础上的……(而这)引发我们思考自己的选择和互动对创造未来做出贡献的复杂方式。”微软的选择以及与更广泛的开源社区的互动是否可以导致科幻的未来?敬请关注!

《Python 正在吞噬世界:一个开发人员的业余项目如何成为地球上最热门的编程语言》

还有一个问题是,监督语言开发的机构“Python 核心开发人员和 Python 指导委员会”的组成是否能更好地反映 2019 年 Python 用户群的多样性。

Wijaya 称:“我希望看到在所有不同指标上都有更好的代表,不仅在性别平衡方面,而且在种族和其它所有方面。”

“在 PyCon 上,我与来自印度和非洲的 PyLadies 成员进行了交谈。他们评论说:‘当我们听说 Python 或 PyLadies 时,我们想到的是北美或加拿大的人,而实际上,世界其它地区的用户群很大。为什么我们看不到更多?’我认为这很有意义。因此,我绝对希望看到这种情况发生,我认为我们都需要尽自己的一份力量。”

影响: 在这个动荡的时代,谁不想听到一位仁慈独裁者(指 Python 创始人)把他们项目的统治权移交给最经常使用它的人呢?

我希望你喜欢这张上周让我印象深刻的列表,并在下周一回来了解更多的开放源码社区、市场和行业趋势。


via: https://opensource.com/article/19/9/java-relevant-and-more-industry-trends

作者:Tim Hildred 选题:lujun9972 译者:laingke 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

根据你的工作需要,可能有比 Java 更好的语言,但是我还没有看到任何能把我拉走的语言。

我记得我是从 1997 年开始使用 Java 的,就在 Java 1.1 刚刚发布不久之后。从那时起,总的来说,我非常喜欢用 Java 编程;虽然我得承认,这些日子我经常像在 Java 中编写“严肃的代码”一样编写 Groovy 脚本。

来自 FORTRANPL/1Pascal) 以及最后的 C 语言) 背景,我发现了许多让我喜欢 Java 的东西。Java 是我面向对象编程的第一次重要实践经验。到那时,我已经编程了大约 20 年,而且可以说我对什么重要、什么不重要有了一些看法。

调试是一个关键的语言特性

我真的很讨厌浪费时间追踪由我的代码不小心迭代到数组末尾而导致的模糊错误,特别是在 IBM 大型机上的 FORTRAN 编程时代。另一个不时出现的隐晦问题是调用一个子程序时,该子程序带有一个四字节整数参数,而预期有两个字节;在小端架构上,这通常是一个良性的错误,但在大端机器上,前两个字节的值通常并不总是为零。

在那种批处理环境中进行调试也非常不便,通过核心转储或插入打印语句进行调试,这些语句本身会移动错误的位置甚至使它们消失。

所以我使用 Pascal 的早期体验,先是在 MTS 上,然后是在 IBM OS/VS1 上使用相同的 MTS 编译器,让我的生活变得更加轻松。Pascal 的强类型和静态类型是取得这种胜利的重要组成部分,我使用的每个 Pascal 编译器都会在数组的边界和范围上插入运行时检查,因此错误可以在发生时检测到。当我们在 20 世纪 80 年代早期将大部分工作转移到 Unix 系统时,移植 Pascal 代码是一项简单的任务。

适量的语法

但是对于我所喜欢的 Pascal 来说,我的代码很冗长,而且语法似乎要比代码还要多;例如,使用:

if ... then begin ... end else ... end

而不是 C 或类似语言中的:

if (...) { ... } else { ... }

另外,有些事情在 Pascal 中很难完成,在 C 中更容易。但是,当我开始越来越多地使用 C 时,我发现自己遇到了我曾经在 FORTRAN 中遇到的同样类型的错误,例如,超出数组边界。在原始的错误点未检测到数组结束,而仅在程序执行后期才会检测到它们的不利影响。幸运的是,我不再生活在那种批处理环境中,并且手头有很好的调试工具。不过,C 对于我来说有点太灵活了。

当我遇到 awk 时,我发现它与 C 相比又是另外一种样子。那时,我的很多工作都涉及转换字段数据并创建报告。我发现用 awk 加上其他 Unix 命令行工具,如 sortsedcutjoinpastecomm 等等,可以做到事情令人吃惊。从本质上讲,这些工具给了我一个像是基于文本文件的关系数据库管理器,这种文本文件具有列式结构,是我们很多字段数据的保存方式。或者,即便不是这种格式,大部分时候也可以从关系数据库或某种二进制格式导出到列式结构中。

awk 支持的字符串处理、正则表达式关联数组,以及 awk 的基本特性(它实际上是一个数据转换管道),非常符合我的需求。当面对二进制数据文件、复杂的数据结构和关键性能需求时,我仍然会转回到 C;但随着我越来越多地使用 awk,我发现 C 的非常基础的字符串支持越来越令人沮丧。随着时间的推移,更多的时候我只会在必须时才使用 C,并且在其余的时候里大量使用 awk

Java 的抽象层级合适

然后是 Java。它看起来相当不错 —— 相对简洁的语法,让人联想到 C,或者这种相似性至少要比 Pascal 或其他任何早期的语言更为明显。它是强类型的,因此很多编程错误会在编译时被捕获。它似乎并不需要过多的面向对象的知识就能起步,这是一件好事,因为我当时对 OOP 设计模式毫不熟悉。但即使在刚刚开始,我也喜欢它的简化继承模型背后的思想。(Java 允许使用提供的接口进行单继承,以在某种程度上丰富范例。)

它似乎带有丰富的功能库(即“自备电池”的概念),在适当的水平上直接满足了我的需求。最后,我发现自己很快就会想到将数据和行为在对象中组合在一起的想法。这似乎是明确控制数据之间交互的好方法 —— 比大量的参数列表或对全局变量的不受控制的访问要好得多。

从那以后,Java 在我的编程工具箱中成为了 Helvetic 军刀。我仍然偶尔会在 awk 中编写程序,或者使用 Linux 命令行实用程序(如 cutsortsed),因为它们显然是解决手头问题的直接方法。我怀疑过去 20 年我可能没写过 50 行的 C 语言代码;Java 完全满足了我的需求。

此外,Java 一直在不断改进。首先,它变得更加高效。并且它添加了一些非常有用的功能,例如可以用 try 来测试资源,它可以很好地清理在文件 I/O 期间冗长而有点混乱的错误处理代码;或 lambda,它提供了声明函数并将其作为参数传递的能力,而旧方法需要创建类或接口来“托管”这些函数;或,它在函数中封装了迭代行为,可以创建以链式函数调用形式实现的高效数据转换管道。

Java 越来越好

许多语言设计者研究了从根本上改善 Java 体验的方法。对我来说,其中大部分没有引起我的太多兴趣;再次,这更多地反映了我的典型工作流程,并且(更多地)减少了这些语言带来的功能。但其中一个演化步骤已经成为我的编程工具中不可或缺的一部分:Groovy。当我遇到一个小问题,需要一个简单的解决方案时,Groovy 已经成为了我的首选。而且,它与 Java 高度兼容。对我来说,Groovy 填补了 Python 为许多其他人所提供的相同用处 —— 它紧凑、DRY(不要重复自己)和具有表达性(列表和词典有完整的语言支持)。我还使用了 Grails,它使用 Groovy 为非常高性能和有用的 Java Web 应用程序提供简化的 Web 框架。

Java 仍然开源吗?

最近,对 OpenJDK 越来越多的支持进一步提高了我对 Java 的舒适度。许多公司以各种方式支持 OpenJDK,包括 AdoptOpenJDK、Amazon 和 Red Hat。在我的一个更大、更长期的项目中,我们使用 AdoptOpenJDK 来在几个桌面平台上生成自定义的运行时环境

有没有比 Java 更好的语言?我确信有,这取决于你的工作需要。但我一直对 Java 非常满意,我还没有遇到任何可能会让我失望的东西。


via: https://opensource.com/article/19/9/why-i-use-java

作者:Chris Hermansen 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

3 月 21 日在阿里云峰会·北京上,阿里巴巴旗下的阿里云当天即发布多款重磅产品,涵盖了超级计算、云原生数据库,以及SaaS 加速器,包括神龙异构超算集群、新版本 Polardb 可兼容 Oracle 数据库、轻量级 GPU 异构计算产品——VGN5i 实例等。阿里云总裁兼阿里巴巴 CTO 张建峰称,阿里云已经成为阿里巴巴经济体的技术基石,将继续加大投入,扩大核心技术的代际领先优势。

在本次峰会上,阿里巴巴还宣布开源 OpenJDK 长期支持版本 Alibaba Dragonwell,为全球 Java 界开发者提供了一个新的选择。该版本广泛应用于阿里巴巴旗下业务,在大规模 Java 应用部署下的稳定性、效率以及性能优化有突出的优势。

Java 是全球应用最广泛的语言技术栈。据统计,全球 Java 开发工程师超过 1000 万名。而 JDK 作为 Java 语言的软件开发工具包,是整个 Java 应用的核心。当前,在 JDK 全球市场份额中,Oracle JDK 占 70%、OpenJDK 约占 21%。但 2019 年 1 月之后,Oracle 不再提供 Oracle JDK 8 免费商业版本更新。

阿里巴巴一直不遗余力地推动全球 Java 技术进步。自 2010 年起,阿里就开始基于 OpenJDK 开源软件进行开发与定制。作为全集团 Java 应用的基石,Alibaba Dragonwell 支撑了阿里经济体内所有的 Java 业务,保证了多年来“双 11”的平稳运行,积累了大量业务场景下的实践经验。在大规模 Java 应用部署情况下,Alibaba Dragonwell 可以大幅度提高稳定性、效率及性能。

2018 年,阿里巴巴还作为首家且唯一的中国企业,获邀加入 Java 全球管理组织 Java Community Process(JCP)的最高执行委员会,为 Java 语言规范作出贡献。

“Dragonwell 中文译为龙井,象征着中国的茶文化,又恰好是杭州特色。well 一词通常被描述为水源汇聚在一起供大家分享,这也是我们开源的初衷,希望可以集合开发者的力量,不断完善该项目并最终贡献给所有用户。”阿里云智能资深技术专家李三红在采访中表示,阿里本身就是 Alibaba Dragonwell 的最大用户之一,未来一定会持续维护,这是毫无疑问的。同时也希望有更多的开发者参与贡献,让 Java 变得更好。

作为世界顶尖技术舞台上最活跃的力量之一,阿里巴巴始终积极拥抱开源,回馈社区。截止目前,阿里巴巴已经参与了 9 家全球开源基金会及组织,包括 Linux Foundation、Cloud Native Computing Foundation、Apache Software Foundation、Continuous Delivery Foundation 等,是 Linux、MySQL、JVM、Kubernetes、etcd、containerd、Flink、Envoy 等知名开源项目的核心贡献者和维护者,并主导开源 400 多个项目,涉及中间件、框架、组件、数据库、存储、工具领域等。

就此次 Dragonwell 开源的一些情况,记者采访了阿里巴巴相关负责人。

Dragonwell,龙井?是寓意像龙井一样的品质吗?背后的想法是什么呢?

Java 本身就是一种咖啡的名字,AWS 开源的 Corretto 也是一种咖啡名。

在取名字的时候,我们也考虑了很多。中国的 Java 开发者将是 Alibaba Dragonwell 重要的用户群体,所以想从一些有中国特色的饮品名中寻找灵感,既能代表中国的文化,同时也希望这个名字中能有非常宏大的意愿,能够诠释她包容一切。所以我们想到了杭州的绿茶——龙井。而它的英文名字 Dragonwell 也正好符合我们想要表达的意思。其中的 well 这个单词,就有着将很多水源汇聚在一起,一同享用的寓意,正好贴合开源的协作分享的精神理念,这也是阿里开源 JDK 的初衷,希望将许多开发者的贡献汇聚在一起,让大家能够一起免费使用 Java,一起推动 Java 的进步。

为什么要去做 Dragonwell?是否可以分享一下相关背景?

大家都知道 Java 一直是由 Oracle 主导的,早从 2017 年开始,Oracle 开始陆陆续续转变了一些 Java 的策略。去年也宣布了将从今年开始不再提供 OracleJDK 的免费更新。

阿里可以说是全球最大的 Java 用户之一,而 JDK 又是 Java 的一个基础设施。我们其实早从 2010 年开始,就已经基于 OpenJDK 开源软件进行开发与定制,9 年来,支撑了阿里经济体内所有的 Java 业务,历经多年的“双 11”考验,积累了大量业务场景下的实践经验。

阿里作为一家这么大体量的 Java 用户,我们有一份责任,就是把我们的 JDK 开放出去,给所有的 Java 用户一个新的选择。同时,对于阿里自身来说,Alibaba Dragonwell 会针对 LTS 的两个版本 Java8 和 Java11 随阿里云 VM 镜像发布,免费提供给阿里云客户使用。

Alibaba Dragonwell 是基于哪个版本的 JDK?什么时候 GA,目前有没有各个阶段具体的发布时间表?

此次发布的 Alibaba Dragonwell 8 预览版本对应于上游的 OpenJDK 8 的版本。Alibaba Dragonwell 作为 OpenJDK 下游,是一款免费的 JDK 发行版。它提供长期支持,包括关键修复和安全更新。

Alibaba Dragonwell 支持 x86-64/Linux 平台。Alibaba Dragonwell 的特点,或者说她所注重和强化的是:在数据中心大规模 Java 应用部署情况下,稳定性、效率以及性能的优化与提高。

目前发布的版本是预览版。 Alibaba Dragonwell 将每季度发布一个更新。目前计划是预览版的三个月后发布 GA。Alibaba Dragonwell 11 预计年底发布。

以后会更注重 Java 新特性的跟进还是保证提供支持呢?对它今后的发展有什么设想或者目标?

Alibaba Dragonwell 的前身是阿里巴巴内部使用的 AJDK。作为 AJDK 的开源版本, Alibaba Dragonwell 将沿袭 AJDK 的技术优势以及实践场景下的技术经验。AJDK 有众多的技术创新, 包括多租户、Wisp 协程技术、ZenGC 等。 我们希望逐步把阿里巴巴内部积累的技术创新开源出来贡献给 OpenJDK 社区, 并在 Dragonwell 沉淀下来。

最近出现了一些开源软件变更开源协议问题,那目前/将来 Dragonwell 会不会加入一些支持限制条款呢?

不会。Alibaba Dragonwell 是 OpenJDK 下游,我们会严格遵循 OpenJDK 社区相关原则及协议。

前阵子 AWS 也推出了自己的 OpenJDK 发行版 Corretto,背后甚至有 Java 之父“站台”;再往前,其实 Azul、Red Hat 等厂商也有提供 OpenJDK 版本。那么阿里的 Dragonwell 有什么优势、特点呢?

具体来说:

  • 紧密与 OpenJDK 社区保持合作,保持对社区工作的跟踪,及时同步上游更。
  • Alibaba Dragonwell 发行版与 Java SE 标准兼容。
  • AJDK 上孵化的创新技术,会逐步贡献 OpenJDK,并在 Dragonwell 沉淀。比如这次版本包含的 JWarmUp 功能。 具体技术细节可以参考我们的用户手册。
  • 基于阿里工程实践,Alibaba Dragonwell 会选择移植高版本Java的重要功能,这些移植功能已经在阿里内部被大规模部署,用户都可以免费使用,而不用等下一个 LTS 版本。比如这次版本移植了上游 Java 11 的 Java Flight Recorder (JFR)功能,Java 开发人员可以通过 JFR 收集 JVM 运行过程中的详细的 profiling 信息,配合 Java Mission Control(JMC),大幅提高 Java 应用的问题诊断及性能优化效率。这对于仍然停留在 Java8 的客户来说,还是非常有意义的。

很多开发者使用的都是 Oracle 官方的 OracleJDK,大家什么情况下会去使用 OpenJDK 发行版,具体到 Dragonwell 是怎样呢?

在 2018 年 CodeOne(原 JavaOne)大会上,来自 Java Platform Group 的首席架构师 Mark Reinhold 做了“The Future of Java is Today”的主题演讲,重点阐述了 Java 发布模式的变化,重点是:从 Java11 (包含)以及以后的版本,Oracle 将不再提供免费的长期支持。如果你需要长期支持,可以通过向 Oracle 付费的方式获得。而 Java8 的更新也将会在 2019 年 1 月份停止。

所以除非你是 Oracle 的付费客户,否则唯一的选择就是社区维护的 OpenJDK 版本。可以预见 Java 开发者从 Oracle JDK 切换到开源 OpenJDK 会越来越多。

阿里作为世界顶尖技术舞台上最活跃的力量之一,始终积极拥抱开源,回馈社区。我们本身就是世界上最大 Java 用户之一,未来会持续与 OpenJDK 社区的紧密合作,做好 Alibaba Dragonwell 的维护与开发工作。对于广大的 Java 开发者而言,Alibaba Dragonwell 是一个免费的新选择同时我们也希望有更多的开发者能参与到社区里来、让 Java 变得更好!

Java 是世界上最流行的编程语言之一。它广泛用于开发物联网设备、Android 程序、Web 和企业应用。本文将提供使用 OpenJDK 安装和配置工作站的指南。

安装编译器和工具

在 Fedora 中安装编译器或 Java Development Kit(JDK)很容易。在写这篇文章时,可以用 v8 和 v9 版本。只需打开一个终端并输入:

sudo dnf install java-1.8.0-openjdk-devel

这安装 JDK v8。对于 v9,请输入:

sudo dnf install java-9-openjdk-devel

对于需要其他工具和库(如 Ant 和 Maven)的开发人员,可以使用 Java Development 组。要安装套件,请输入:

sudo dnf group install "Java Development"

要验证编译器是否已安装,请运行:

javac -version

输出显示编译器版本,如下所示:

javac 1.8.0_162

编译程序

你可以使用任何基本的文本编辑器(如 nano、vim 或 gedit)编写程序。这个例子提供了一个简单的 “Hello Fedora” 程序。

打开你最喜欢的文本编辑器并输入以下内容:

public class HelloFedora {

      public static void main (String[] args) {
              System.out.println("Hello Fedora!");
      }
}

将文件保存为 HelloFedora.java。在终端切换到包含该文件的目录并执行以下操作:

javac HelloFedora.java

如果编译器遇到任何语法错误,它会发出错误。否则,它只会在下面显示 shell 提示符。

你现在应该有一个名为 HelloFedora 的文件,它是编译好的程序。使用以下命令运行它:

java HelloFedora

输出将显示:

Hello Fedora!

安装集成开发环境(IDE)

有些程序可能更复杂,IDE 可以帮助顺利进行。Java 程序员有很多可用的 IDE,其中包括:

然而,主要用 Java 编写的最流行的开源 IDE 之一是 Eclipse。 Eclipse 在官方仓库中有。要安装它,请运行以下命令:

sudo dnf install eclipse-jdt

安装完成后,Eclipse 的快捷方式会出现在桌面菜单中。

有关如何使用 Eclipse 的更多信息,请参阅其网站上的用户指南

浏览器插件

如果你正在开发 Web 小程序并需要一个用于浏览器的插件,则可以使用 IcedTea-Web。像 OpenJDK 一样,它是开源的并易于在 Fedora 中安装。运行这个命令:

sudo dnf install icedtea-web

从 Firefox 52 开始,Web 插件不再有效。有关详细信息,请访问 Mozilla 支持网站 https://support.mozilla.org/en-US/kb/npapi-plugins?as=u&utm_source=inproduct

恭喜,你的 Java 开发环境已准备完毕。


via: https://fedoramagazine.org/start-developing-java-fedora/

作者:Shaun Assam 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Oracle 日前宣布,选择将 Eclipse 基金会作为 Java EE(Java 平台企业版)的新家。Oracle 是与 Java EE 的两个最大的贡献者 IBM 和 Red Hat 一同做出的该决定。

Oracle 软件布道师 David Delabassee 在博文中说,“…… Eclipse 基金会积极参与了 Java EE 及相关技术的发展,具有丰富的经验。这能帮助我们快速移交 Java EE,创建社区友好的流程来推进该平台的发展,并充分利用如 MicroProfile 这样的互补项目。我们期待这一合作。”

Eclipse 基金会的执行总监 Mike Milinkovich 对这次移交持乐观态度,他说,这正是企业级 Java 所需要的,也是社区所期望的。

他说,“开源模式已经一再被时间所证实是成功创新和协作的最佳方式。随着企业更多地转向以云为中心的模式,很显然 Java EE 需要有更快速的创新步伐。移交给 Eclipse 基金会对于供应商来说是一次巨大的机会,他们并不总是有最好的合作机会。我们为个人、小型公司、企业和大型供应商提供开放合作的机会。这将为他们提供一个可靠的平台,让他们可以协作前进,并将支持 Java EE 所需的更快的创新步伐。”

Milinkovich 说,Java EE 成为获准项目也将经历所有的 Eclipse 项目的同样的获准流程。他期待 “Java EE” 融合为一个包含大量子项目的顶级项目。该平台现在包含近 40 个 Java JSR。

Delabassee 说,Oracle 计划将其主导的 Java EE 技术和相关的 GlassFish 技术重新授权给 Eclipse 基金会,包括参考实现、技术兼容性工具包(TCK)和“相关项目文档”。并计划给该平台“重新定名”,但此事尚未确定。

这一移交何时进行还未确定,但 Oracle 希望在 “Java EE 8 完成后尽快进行,以促进快速转型”,Delabassee 承诺,在移交期间,Oracle 将继续支持现有的 Java EE 许可用户,包括升级到 Java EE 8 的许可用户。该公司也将继续支持现有的 WebLogic 服务器版本中的 Java EE,包括之后的 WebLogic 服务器版本中的 Java EE 8。

Delabassee 写道,“我们相信这一计划将使我们可以继续支持现有的 Java EE 标准,同时将其演进为更开放的环境。还有许多工作需要去做,但我们相信正走在一条正确的道路上。”

A Java Nightmare

周末带着儿子去了一个不一样的迪尼斯乐园——Java 大世界。

公园的门口,有两个 Java 吉祥物 Duke,只是左边那个好像是戴着发带的女 Duke。看见没有,公园大门最顶部的标志是著名的咖啡杯——基本上是公众所熟知的 Java 语言的形象了,相对来说,Duke 的知名度不如咖啡杯。公园门口的标语上写着“堆”满了乐趣(“堆”,即 heap,是一种 Java 等语言用于操作数据的内存结构)。

驶过道路上的标牌,上面分别写着:

  • “麦格王国”,麦格——mageek,可能影射的是 Majava.A 安全漏洞,这是一个攻击 JRE 漏洞的恶意文件,此处嘲讽 Java 的安全缺陷。
  • “热点中心”,热点——Hotspot,是 Java 一个较新的虚拟机。
  • “极演播室”,极——JEE,即 Java EE,是 J2EE 的一个新名称,面向企业的一种应用框架/标准。

进入公园看到的大型广告牌上写着:只需要写出来——即可运行。这里隐喻 Java 的跨平台特性。

远处的街道上,有大大的 Duke 充气人偶,而孩子手中的气球上画着咖啡杯,这真是一个 Java 的世界啊。

根据指示牌,有通往:

  • 小小新世界,“hello world” 是各种编程语言教学中通常学生们接触到的第一个程序例子。
  • 拼图馆,拼图——Jigsaw,是 OpenJDK 项目下的一个子项目,旨在为 Java SE 平台设计实现一个标准的模块系统,并应用到该平台和 JDK 中。
  • 汤姆猫小岛,汤姆猫——Tomcat,Tomcat 服务器是一个自由开源的 Web 应用服务器,用于 JSP 程序。

孩子兴奋极了,要去那个“神秘阀门”去玩。我觉得也可以去汤姆猫小岛看看,此处用 servlets 指代了服务项目。而 servlet 是一种 Java 应用。

正在这时,广播发出警告,“异常抛出”——Exception Thrown 是 Java 等语言用于处理异常情况的机制。得赶紧疏散,而可怜的娃还不明白发生了什么。跑吧!

结果爸爸被触手怪抓去了——触手怪的下面写着“内存溢出”,一定是因为这个才导致触手怪出现的!

眼看电锯就要切到脑袋上了——啊,吓死我了,原来是又一个 Java 的噩梦啊!


via: http://turnoff.us/geek/a-java-nightmare/

作者:Daniel Stori 译者:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出