首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么说Java是糟糕的语言,但几乎可以做任何事

为什么说Java是糟糕的语言,但几乎可以做任何事

原创
作者头像
半月无霜
发布2025-01-04 00:14:11
发布2025-01-04 00:14:11
27100
代码可运行
举报
文章被收录于专栏:半月无霜半月无霜
运行总次数:0
代码可运行

一、前言

在美国一个的论坛上,一个程序员说自己喝醉了,他写了一大堆,

有些内容非常有意思,其中有一条提到

如果你不确定自己想做什么东西,请使用 Java。这是一种糟糕的编程语言,但几乎无所不能

为什么Java会这样呢,我作为Java开发,准确的来说我只会用Java来开发web项目

我承认这是一门糟糕的语言,但Java还能做什么?

我不禁开始思考,但这一思考,我就又在怀疑自我的编码水平。

游戏?好像最早的Minecraft我的世界就是Java写的,早年间我还在翻盖机上玩过一些Java小游戏

桌面应用?IDEA,就是用Java写的,虽然重BUG多,但不愧是新时代最好用的IDE工具

很难想到,Java可以做到这么多事情,并且Java在大数据方面的处理也是相当有效果

除了最近比较好用的AI方面比较掉队,其它方面根本没的说

二、Java繁琐的原因

上面讲述了,Java能干的事情,那现在聊聊是什么语言特性导致了Java的繁琐。

在我使用的过程中,就非常能感受到相关开发的繁琐程度

我想从这几个方面去简述一下Java的繁琐原因

1)入门就体验到了虚拟机特性

在语言入门阶段,程序员往往都会选择输出hello world作为自己的第一个语言程序

而在Java中,这个最简单的输出,都会显得异常复杂

回到最开始,我在学校学习Java的第一课,安装jdk,这个没什么,大部分语言都要经历

第二步,我们需要编写java文件,以下面的Main.java为例,我们开始编写自己的第一个程序

代码语言:javascript
代码运行次数:0
运行
复制
public class Main {
    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

为什么这么长,简简单单的输出一个hello world而已,

第一行class Main是啥意思

第二行的main有点懂,入口主函数嘛,但publicstaticvoidString[] args都是些啥啊

完全不明白,正当我想直接运行的时候!!!

以为自己可以运行了??不不不,我当时在课堂上可不是这样,老师用的是记事本,课本上也是这样教学的

第三步,黑色窗口cmd打开,接下来要编译啦

代码语言:javascript
代码运行次数:0
运行
复制
javac Main.java

现在我知道了,java文件不能直接运行,需要将其编译转换为字节码文件,也就是class文件后,再交给JVM执行

第四步,只有拿着生成出来的Main.class文件,才能运行;继续黑窗输入下面内容,如此才能够成功

代码语言:javascript
代码运行次数:0
运行
复制
java Main
image-20250103234501273
image-20250103234501273

这对初学者,真的很不友好,如果你撑过了这一块的入门,下面还有一大堆东西在等着你

2)冗余、难懂的语法及概念

还记得封装、继承、多态吗?面向对象的三大特性,这都是Java冗余包袱的开始

最开始,我们需要对事物进行抽象成类,类里面有属性,有方法

由于封装概念的存在,你不得不使用getset方法

假设一个类就5个属性,那么getset方法加上5组,就问你烦不烦嗦

这里我再说一下,在工作中,对应的类都使用了lombok,它仅仅只需要一个注解就能生成我们所需要的getset方法,非常方便


除了上面的面向对象特性,还有一个属于java本身做的恶,就是IO

你现在还能不借助外部文档,外部工具类来完成,一个文件拷贝成另一个文件吗?我反正不能😢

java把很多自由给到了开发者,但往往好的一个语言就应该包括好的使用体验

在刚开始使用的时候,提供一些高度封装的类与方法,等到深入使用后再对其进行深挖

这些使用体验上,对初上手的朋友真的是噩梦

3)抽象的概念

如果你能熟练地将事物抽取成类,那么还记得Class类吗,还记得反射吗

哈哈哈,新手噩梦不在多线程,而在于Class反射这一块

为什么好端端的,自己实例化不行,非要搞出这么多抽象的东西

就连自己都不放过,将自己的class文件,也要抽象出一个Class类出来

但我想说,就是因为有了反射的概念,才使得java变成了一门半动态语言

4)丰富的第三方框架

为什么java的第三方库有这么多呢,恰恰是因为java语言本身的库支持不够,才给了第三方框架机会

而我们一但想要使用java,使用纯正java是不够的,总得要加上各种好用的第三方框架

想完成的功能越多,加入框架就多了,自然就显得项目太重

我想到以前一个事情,就是java日志系统,就是因为sun公司的不作为,才有了log4j,以后有机会可以讲讲这个框架的设计

官方一看log4j,确实好用,也在自己的java包本体上搞了一个类似的😄

三、最后

java现在已经出到jdk21,但公司项目还在使用java8,不着急,以后的路还长着呢

这么繁琐的东西,有得学习

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、Java繁琐的原因
    • 1)入门就体验到了虚拟机特性
    • 2)冗余、难懂的语法及概念
    • 3)抽象的概念
    • 4)丰富的第三方框架
  • 三、最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档