Java 是什么?为什么不看好Java
在我的印象中,上一次编写 Java 代码已是三年前的事儿了。虽然我的第一份工作就是 Java 程序员,但是后来因为容器与微服务的出现,Java 就从我的工作中消失了。可万万没想到,如今我和 Java 又一次重逢了,居然还是在微服务领域。
Java 的优势
这一切都要从微服务的热潮说起,众所周知微服务的优势在于:易于扩展、高可用性、无需考虑并发和多线程,而且还能享受容器带来的便携性。
如今,以 Kubernetes 为代表的微服务席卷了全球,让人感觉 Java 的时代已经成为了过去,而且这些语言无法很好地融入容器与微服务的生态系统。
虽然 Java 一直被集简洁与优雅于一身的编程语言(比如 Python)所诟病,但作为 Java 曾经忠实的拥护者,我认为 Java 在某些方面仍然有着不可否认的优势。
首先,我们都知道 Java 有着强大的多线程处理能力,对于银行等企业应用程序来说这是非常重要的功能。多线程处理能力使得程序能够具有更好的交互性、实时性。Java 在多线程处理方面性能超群,具有让你惊喜的强大功能,而且在 Java 语言中进行多线程处理很简单。
其次,虽然说比较 Java 与脚本语言的性能有点不公平,但 Java 的性能确实无与伦比。然而,在水平伸缩与微服务架构的世界里,语言本身的性能根本无关紧要,只需要增加容器就可以获得优异的性能。虽然脚本语言能够利用容器随意扩大或缩小规模,但 Java 语言本身的性能优势很明显(至少在微服务领域)。
然而,另一方面,在此次会面中,Java 及其过时的框架(比如 Spring)也给我带来了无穷无尽的烦恼。
Java 以及 Spring 的缺点
首先,我们来说一说 Spring。众所周知,Spring 臃肿,入门难度大,充满了各种谜之注释,开发人员只能依靠教程或示例代码。Java 语言本身就很古板,Spring 又加入了一大堆单行注释和看似简化的方法封装,结果却适得其反,获得的通常都是一些压根没有必要的类调用和实例化。开发人员都明白,语言的控制、命令和透明性对于有效的软件开发至关重要。也就是说,作为一名开发人员,你需要准确地掌握代码的一切,以及代码执行的例程,但 Spring 却斩断了这种可能性。
如果在 Spring 代码中,每个类前面都要加上六个注释,而且这些注释各说各得,它们之间的关系错综复杂,就会让人感觉深陷泥浆。而这样做的并不仅仅是 Spring,例如 Lombok 库也做了类似的事情。这种压缩代码的方式只能适得其反,并不利于 Java 的发展。
Java 不应该与脚本语言比较简洁性。首先,这会牺牲 Java 代码的一致性。想象一下,所有的 getter 和 setter 都消失了,取而代之的是一行注释 @NoArgsConstructor。说好的一致性呢?
其次,这让本来就已令人费解的抽象层次更难以理解。例如,Spring 会在幕后进行自动装配(bean 注入),这是可以理解的,但是 Lombok 在应用程序中的定位又是什么,二者之间如何传递消息?如果每个类都需要六个注释,那么这些注释还需要实例化多少例程或类才能完成一个简单的任务?没有开发人员会希望这些多余的代码潜伏在角落。可悲的是,三年之后我所见到的 Java 代码就是这个样子。一切都是原来的样子。即便是有一些微小的变化,也是让情况变得更糟。
最后,Java 的发展搞错了重点。时至今日,Java 依然在纠结一些愚蠢的规则,比如类的命名,类应该放入哪个包中,以及变量是私有的还是保护的。反观 Python,官方没有提供有关访问说明符的文档,而是相信开发者会自己管理好这一切。这种做法很快就引起了我的共鸣。
KISS 原则
KISS 原则是如今软件行业盛行的一句话,“保持简单和愚蠢”(Keep it Simple and Stupid),换句话说来,“简单就是美”。Java 想要发展下去,就要认真思考这句话了。
如今,微服务在软件行业大肆普及。许多企业和组织都在从单体架构向微服务架构转变,他们希望简化设计,并提高可扩展性。对于程序员而言,这意味着将庞大的代码库或复杂的业务逻辑分解成更简洁的小功能,这种方式可以避免在代码中管理状态,同时也可以避免并发问题和多线程的噩梦。
归根结底,所有的服务(无论是哪种形式)都只不过是在处理某种格式(JSON 或 XML)的数据,然后将这些数据传递到 Kafka 之类的消息总线上进行进一步处理。然而,即便在这样简单的环境中,Java 和 Spring 仍在纠结过时的语法问题,应用程序上下文,复杂的 bean 注入,POJO 映射器,吞噬大量内存的 JVM,以及 class loader 等等,让人一想到就头疼。
网友看法
就 Java 是否已死这个话题,很多网友发表了各自的看法。
评论1
现在 Spring 越来越大,这就导致大多数程序员对 Spring 的体系及结构都一知半解,才会感觉头疼。但如果你知道如何筛选自己想要的功能,就不会觉得臃肿,反而会很简洁。例如:
● 你想实现 Rest 服务,那么可以参考 Spring MVC 预置的功能。
● 如果你不想自己写 DAO,那么 Spring Data 可以替你做,模板代码全部都可以替你实现,而且对 JPA 或 NO-SQL 的支持也很方便。
Java 生态系统非常庞大,需要学习的库和框架也非常多。这些框架可以帮你省却大量的样板代码,但是前提是你需要下一番功夫认真学习。
评论 2
Java 的优点很多,包括安全性、分布式、可移植性(一次编译到处运行)、高性能、多线程以及动态性。
根据 TIOBE 发布的 2021 年 1 月编程语言排行榜,Java 是位列第二的编程语言。我完全没有看到 Java 没落的迹象。
关键词: Java
推荐阅读
运动型轿车是什么 运动型轿车与普通车有何区别?
运动型轿车凭借着外观酷炫,动力性能强的特点,深受国内众多消费者的喜爱。特别是在年轻消费者心目中,运动型轿车基本上是购车的首选。但是 【详细】
汽油清洗剂是什么 汽油清洗剂加在汽油里是干嘛的?
最近有很多车主反映加油的时候总是建议用汽油清洁剂。但是,大部分人还是不太了解,还有就是一部分人纳闷汽油清洗剂加在汽油里是干嘛的?汽 【详细】
中国最便宜的汽车是哪个 最便宜的汽车汇总
现在汽车已经成为了大家最常见的交通代步工具了。但是,依然还是有很多的家庭非常的需要代步工具,却买不起特别贵的汽车。所以今天,我们就 【详细】
伊莱克斯冰箱质量怎么样 伊莱克斯冰箱质量好不好?
伊莱克斯冰箱质量怎么样:在2018年全球500强企业中,伊莱克斯排名第162位,在2020年全球2000强企业中,伊莱克斯排名第1965位,可见伊莱克斯 【详细】
劳动保护用品是什么 劳动保护用品有哪些?
劳动保护用品有哪些?劳动防护用品分为特殊劳动防护用品和一般劳动防护用品,一般劳动防护用品是指未列入目录的一般劳动防护用品。以下产品 【详细】
相关新闻
- 国产手机排名前十 国产手机排名前汇总
- 环球观点:至今还没有阳的人,他们天赋异禀,还是另有隐情?研究结果来了
- 新动态:iPhone 15 太炸了,标准版有大提升
- 全球即时看!vivo拒绝高价低配:骁龙870+144Hz屏,12GB+256GB跌至1769元
- 实现高并发秒杀的七种方式
- 全球看热讯:3D渲染引擎 HOOPS Visualize 2023全新发布-增加对顶点着色器支持
- 世界看热讯:「升级」Hubstudio多账号安全管理浏览器之扩展中心上线啦!
- 汽车早报 - 消息称蔚来布局百万元级别电动车 广汽称将继续为讴歌中国客户提供售后服务
- 今头条!车轮上的2022∣新能源与汽车出口带动:全国乘用车零售量同比增长1.9%
- 谷歌文档新功能:看到非打印字符
- 世界新消息丨一加新机质感高级,更有多项黑科技加持,3999的价格入手值吗?
- 焦点信息:中国手机品牌在2022年拿下俄罗斯市场份额65% 但高价机一个没有
- 2022年这5款熟悉的产品向我们告别
- 即时:陈副区长事件,引出一个老生常谈的问题,腾讯是否会保留聊天记录
- 我国首个具备独立运行能力的新能源储能项目在内蒙古并网通电
- 上海奉贤区初中转学条件2023
- 新冠病毒变异逻辑的猜测
- 世界讯息:充1次用10天!史上续航最强的国产手机,太猛了
- 全球视点!10个暗藏惊喜的微信小程序,个个好用不要钱,还请低调使用
- 世界热头条丨刘强东告别他的时代?回笼640亿携孕妻现身英国,祖宅半夜被泼漆