学习Java的四大理由

引言

古有编程圣经《21天学通C语言》人手一本,昨有 “人生苦短,我用Python”,今有Golang带领程序猿走进新时代…编程语言千千万,作为励志要成为程序猿的我们,要独爱哪一门呢?

学生时代的我也曾为学什么语言犯过愁:我嫌弃C语言的太过暴露,讨厌C++的啰里八嗦,嘲笑Python的没有内涵,更不屑于C#的拿来主义…谁叫咱也是个讲究人。或许是冥冥之中吧,14年那时候(暴露年龄了)智能手机刚兴起,安卓APP开发迅速引爆了互联网,我也随大流,稀里糊涂地买了一本李刚老师的《疯狂Android讲义》来学,从此便一发不可收拾地喜欢上了安卓APP的编程语言——Java。虽然工作已有快4年之久,但时至今日,我依然觉得Java是最适合初学者、性价比最高的语言!

 

“Java好在哪”、“Java能养活自己吗”、“Java能吃吗”…一百位程序猿眼中有一百种Java,我只能分享我眼中的这种Java:外貌嘛,看起来是个 “全能选手”,偶尔也是个 “文艺青年”,内在嘛,藏着两套隐藏绝招 “一劳多逸法” 和 “取之不尽术”。

全能选手

我们身处这个物欲横流的时代,“情怀” 已经变得不堪一击,我们往往倾向先解决温饱,再谈阳春白雪。我想如果了解了 “全能选手” Java的前世今生,应该是带你走上致富道路最快的途径吧。学会了Java,可以说下面三种岗位你都能胜任了:Java服务器端研发、Android客户端研发及大数据研发,目前这三个方向的岗位需求非常大,且薪资也很可观。还有一点也值得注意,就是Java语言和C#语言非常相似,而C#目前是主流游戏引擎Unity3D的编程语言,那这就意味着,你将来还可以选择游戏客户端开发岗位啦!

 

文艺青年

《百度百科》对文艺青年的定义是:喜欢文化艺术的青年人。我觉得这个称呼用在Java 身上正好合适。一方面是它的基本语法可读性很强,比如一些关键字都是直接英文单词表示,而很少使用符号,这对新手就非常友好了,因为新手编程的心态一般是 “宁愿多打几个字也一定要看得懂”,不然很容易半途而废。另一方面,它是纯面向对象的语言,对象之间通过消息交流,仿佛读小说里的对话一般舒适。

比如同样是要编程实现一个场景:一个班级有张三、李四、王五、王六四位同学,老师要把姓王的同学都挑出来”,用Java语言写是这样的:

//Java
List<String> students = List.of("张三", "李四", "王五", "王六");
students = students.stream().filter(student -> student.startsWith("王")).toList();
System.out.println(students);

可以看出,Java的写法非常干净利落,先是 List.of 创建这四位同学构成的列表students,再对他们进行过滤,过滤出那些姓名以 “王” 开头的学生,最后 toList 表明转变成一个新的列表,最后是把过滤出的学生显示在屏幕上。而如果我们用Golang语言去写,则显得比较冗长和原始:

// Golang
students := []string{"张三", "李四", "王五", "王六"}
studentsWang := make([]string, 0)
for _, student := range students {
    if strings.HasPrefix(student, "王") {
        studentsWang = append(studentsWang, student)
    }
}
println(students)

我相信在我们初学编程之际,代码看起来舒服是第一重要的,否则很难有继续学习下去的兴趣。

一劳多逸法

我们最怕的就是,好不容易学会了一门编程语言,结果当要学习下一门科目时(比如面向对象、设计模式、软件工程、UML建模等),发现书上用的语言我们竟然不会! 或者提到的一些概念我们压根没听过…这时Java的优越性就体现出来了,它除了具备编程语言的所有要素以外,又有纯正的面向对象思想,而很多计算机和软件知识都是以Java为基础语言展开讲述的,除了上面那些,还有数据结构、算法、并发编程统统都爱用Java来阐述。总之,学会了Java,很多科目基本就不会有阅读障碍了,这样你也就可以放放心心地去学习那个科目本身的内容了。

取之不尽术

无论是做学校项目、工作项目还是外包项目,我们经常需要用到一些通用组件,比如操作数据库的组件、与浏览器进行网络通信的组件、读写Excel表格的组件等,如果我们自己从零开始去写,会非常麻烦,而且最后写出来运行效率可能还很慢,这时,我们就需要站在巨人的肩膀上啦——使用前人写好的Java组件!前人已经把组件底层的代码实现好了(而且又快又好!),当我们要使用的时候,只需要引入这个组件,然后写几行代码,调用一下他的组件就行!

上面说的那些组件其实面儿都很小,Java的生态圈远不止这些,更重要的是在分布式系统基础设施这块,任何有点体量的上层系统或软件(比如淘宝、抖音分别是两个上层系统),都需要底层有强大的基础服务设施作为支撑,这样才能维持他们长久稳定地运行,常见的基础服务设施有:服务发现与注册、配置中心、消息总线、负载均衡、断路器、数据监控等。

但对于一个初出茅庐的中小型公司而言,光开发自己系统本身的功能都还忙不过来呢,哪有功夫(也往往没有实力)去开发上面的基础服务设施。这时,Java生态里的主角出场了——Spring Cloud

Spring Cloud将一些公司开发得比较成熟、经得起考验服务框架集合起来,通过Spring Boot风格进行统一化包装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。我们再也不用东拼西凑地去篡一套基础服务设施啦!Spring Cloud真的是我们的福音!

该如何开始

师父领进门,修行在个人。学习终究还是要靠自驱,特别是计算机的学习,如果你还希望同步读一本书的话,这里我推荐两本Java的入门书籍,可以选一本看~ 他们分别是《Java核心技术》与《Head First Java》,前者是文字较多的学院派风格,后者是带有情景的寓教于乐风格,两本都非常不错,很适合入门食用。

 

 

 

 

Leave a Comment.