在美国一个的论坛上,一个程序员说自己喝醉了,他写了一大堆,
有些内容非常有意思,其中有一条提到
如果你不确定自己想做什么东西,请使用 Java。这是一种糟糕的编程语言,但几乎无所不能
为什么Java
会这样呢,我作为Java
开发,准确的来说我只会用Java
来开发web
项目
我承认这是一门糟糕的语言,但Java
还能做什么?
我不禁开始思考,但这一思考,我就又在怀疑自我的编码水平。
游戏?好像最早的Minecraft
我的世界就是Java
写的,早年间我还在翻盖机上玩过一些Java
小游戏
桌面应用?IDEA
,就是用Java
写的,虽然重BUG
多,但不愧是新时代最好用的IDE
工具
很难想到,Java
可以做到这么多事情,并且Java
在大数据方面的处理也是相当有效果
除了最近比较好用的AI
方面比较掉队,其它方面根本没的说
上面讲述了,Java
能干的事情,那现在聊聊是什么语言特性导致了Java
的繁琐。
在我使用的过程中,就非常能感受到相关开发的繁琐程度
我想从这几个方面去简述一下Java
的繁琐原因
在语言入门阶段,程序员往往都会选择输出hello world
作为自己的第一个语言程序
而在Java
中,这个最简单的输出,都会显得异常复杂
回到最开始,我在学校学习Java
的第一课,安装jdk
,这个没什么,大部分语言都要经历
第二步,我们需要编写java
文件,以下面的Main.java
为例,我们开始编写自己的第一个程序
public class Main {
public static void main(String[] args) {
System.out.println("hello world");
}
}
为什么这么长,简简单单的输出一个hello world
而已,
第一行class Main
是啥意思
第二行的main
有点懂,入口主函数嘛,但public
、static
、void
、String[] args
都是些啥啊
完全不明白,正当我想直接运行的时候!!!
以为自己可以运行了??不不不,我当时在课堂上可不是这样,老师用的是记事本,课本上也是这样教学的
第三步,黑色窗口cmd
打开,接下来要编译啦
javac Main.java
现在我知道了,java
文件不能直接运行,需要将其编译转换为字节码文件,也就是class
文件后,再交给JVM
执行
第四步,只有拿着生成出来的Main.class
文件,才能运行;继续黑窗输入下面内容,如此才能够成功
java Main
这对初学者,真的很不友好,如果你撑过了这一块的入门,下面还有一大堆东西在等着你
还记得封装、继承、多态吗?面向对象的三大特性,这都是Java
冗余包袱的开始
最开始,我们需要对事物进行抽象成类,类里面有属性,有方法
由于封装概念的存在,你不得不使用get
、set
方法
假设一个类就5
个属性,那么get
、set
方法加上5
组,就问你烦不烦嗦
这里我再说一下,在工作中,对应的类都使用了lombok
,它仅仅只需要一个注解就能生成我们所需要的get
、set
方法,非常方便
除了上面的面向对象特性,还有一个属于java
本身做的恶,就是IO
流
你现在还能不借助外部文档,外部工具类来完成,一个文件拷贝成另一个文件吗?我反正不能😢
java
把很多自由给到了开发者,但往往好的一个语言就应该包括好的使用体验
在刚开始使用的时候,提供一些高度封装的类与方法,等到深入使用后再对其进行深挖
这些使用体验上,对初上手的朋友真的是噩梦
如果你能熟练地将事物抽取成类,那么还记得Class
类吗,还记得反射吗
哈哈哈,新手噩梦不在多线程,而在于Class
反射这一块
为什么好端端的,自己实例化不行,非要搞出这么多抽象的东西
就连自己都不放过,将自己的class
文件,也要抽象出一个Class
类出来
但我想说,就是因为有了反射的概念,才使得java
变成了一门半动态语言
为什么java
的第三方库有这么多呢,恰恰是因为java
语言本身的库支持不够,才给了第三方框架机会
而我们一但想要使用java
,使用纯正java
是不够的,总得要加上各种好用的第三方框架
想完成的功能越多,加入框架就多了,自然就显得项目太重
我想到以前一个事情,就是java
日志系统,就是因为sun
公司的不作为,才有了log4j
,以后有机会可以讲讲这个框架的设计
官方一看log4j
,确实好用,也在自己的java
包本体上搞了一个类似的😄
java
现在已经出到jdk21
,但公司项目还在使用java8
,不着急,以后的路还长着呢
这么繁琐的东西,有得学习
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。