0. 阅读完本文你将会
- 了解Java作为热门语言之一所面临的争议
- 了解Java的生态环境和未来
1. 前言
原文标题:Why Java Is Perfectly Alive——A response to "Why Java Is Dying"
原文地址:betterprogramming.pub/why-java-is…
原文作者:Ivan Khodyrev
注:文中所有图片均来自原文
译者按:编程语言界一直很热闹,各种鄙视链,口水战层出不穷,Java作为长盛不衰的热门语言之一也避免不了诸多争议。今天我们从国外作者的视角来看看这篇1800赞的热门文章,是怎么为Java做"无罪辩护"的。
2. 正文
我写了这份长篇读后感,以此作为对 "为什么Java正在消亡 "这篇文章的回应。我在这篇文章下面的评论已经置顶了,我想我应该写一篇全方位的分析文章。
对于原作者文章最好的简短回答其实是Coder:76的回答,他的回答得到了数百赞。
对于一些想要获得关注的博主来说,Java这15年以来一直处于濒死或者已死的状态。
我对此非常赞同。
2.1 "Java正在消亡"的说法有什么不妥?
那篇"为什么Java正在消亡"的文章收到了70多条评论,其中大部分是批评,每条都有几十、几百个赞。为什么这么多人的评论如此负面?原因很简单。这篇文章写得很有挑衅性,包含了许多有争议的说法,对于使用Java的人来说,这些说法与现实的状况相去甚远。让我们来看看其中的一些内容。
"例如,Spring配置了自动注入(bean injections),这是可以理解的,但是,Lombok在应用环境中处于什么位置,两者之间的消息传递是如何协调的?"
对于使用上述技术的人来说,这种说法看起来是错误的。Lombok是一个编译时库,Spring是一个运行时库。它们在应用生命周期的不同时期工作在不同的层面上,并不直接互动。作者的问题 "Lombok在应用环境中处于什么位置?"的正确答案是"没有位置"。
"Java的重点似乎还是在愚蠢的规则上,这些规则规定了类名应该是什么,它们应该在什么包里,以及变量应该是私有的还是保护的。说真的,谁在乎呢?"
从事大型、长期项目工作的人很在意。这些规则对他们来说并不傻。
"相比之下,'我们都是成年人'简直就是Python对语言中没有访问指定器的官方回应。"
在团队中有人假设别人不是成年人,这没有什么问题——这是一个浅显的想法。问题是,持续时间长、由大团队创建的大型项目需要规则;否则,它们会失败。
一个大型项目就像一个大型城市。它需要建筑基础、规划、关注点的分离、私人和公共区域。如果一个熟练的程序员将语言结构分为公共和私人,他们很可能创造出 "街道",将其他人引向正确的方向,节省他们的时间,并将辅助的基础设施隐藏在"地下",这样就不会有人在那里迷路。
在"为什么Java正在消亡"这篇文章中,还有很多有争议的说法,但我在这里的目标不是详细分析。我想做的是利用这个机会谈一谈Java现在的状况。
多年来,Java是编程语言中的首选之一,同时也是批评家的鞭挞对象。不是因为它不好,而是因为它是个惹人注意的目标,如果你想让自己获得更多的关注,你就必须说反对它的话,并祈祷有人会注意到。从这个角度来说,Java是一个很好的目标。
但是现在呢?Java仍旧是一个香饽饽?还是像有些人说的那样正在"死亡"?让我们来讨论一下最重要和最有争议的话题,以便弄清楚这个问题。
2.2 语法
通常,Java的语法被批评得最多:"不简洁"、"写法过时"、"太多的模板",等等。对于这些"论点",唯一正确的答案是展示代码。我不会在这里讨论特殊的语法特征,有很多详细的指南,涵盖了Java语法的所有细微差别。相反,我选择了五个代码片段,只是为了让你了解现在的Java在不同的实际任务中是如何运作的。
import static spark.Spark.*;
public class HelloWorld {
public static void main(String[] args) {
port(80);
get("/hello", (request, response) -> "Hello World");
}
}
复制代码
你可能听说过以前的"好"日子,一个简单的Java网络服务器需要几百行代码和配置才能运行?现在忘掉它们吧。
这段代码使用Spark Java在80端口启动了一个简单的网络服务器,采用HTTP GET方法和/hello上下文路径,在请求时返回一个常量字符串。非常直接和简洁,不是吗