因为他们只教了JAVA。
我常常在我司我部门例行架构师会议上问一个问题:TMD最近又出了什么新技术?
JAVA的世界和别的语言最大的区别就是生态太复杂。在一个JAVA完整生态当中,JAVA语言相关的内容非常少,大约只有三分之一。而大学和培训班教JAVA,80%都围绕JDK开展。这导致大部分没有工作经验的JAVA程序员进了行当以后,常常觉得自己啥都没学过一样。
JAVA语言本身,也就是你在IDE里面写下的代码,大约只占JAVA世界的50%,这还包括了培训班和学校肯定不会教的高级编程技巧,比如更好的代码结构,比如更优的性能,比如更好的扩展性和如何避免过度设计。在学校和培训班,只教一种,把功能做出来。把功能做出来,只占真正的JAVA开发的30%左右。
在代码之上,还有类库的熟悉和选择。还有集成层的选择。这些还都只是在JVM内的东西,加上JVM本身的设置,调优,勉强可以算“JAVA的东西”。当然,还有就是脱胎于JAVA但是目前事实上已经被公认成为独立分支的安卓编程。
在这之上,容器的东西,还可以勉强算上“和JAVA强耦合的东西”,比较大部分JAVA容器比如jboss,WL,WS都是需要相当程度的JAVA相关知识的。
再以外,还存在很多很多内容,可以说,是完全JAVA无关,但是在一个JAVA项目当中是必不可少的部分。比如最重的像是数据库,数据库本身就是一个非常大的知识点只是其中最简单容易的部分。还有ESB,或者它的弱化版本integration hub。在云已经成为常识的情况下,容器化技术,serverless技术,以及B/S系统绕不开的用户验证CAS/LDAP技术,都是JAVA项目必须但是和JAVA语言无关的。
综合了以上的内容,你只不过得到了一个“跑得起来”的系统。离真正的生产环境还远。
高可用性,即所谓的HA,也是必不可少的重大知识点,有多复杂?比如我们常常拿来调侃的山歌就能看出其中内容之多:热备,冷备,冷热备,SAN,RAID,磁带机。
大学在教 Java,培训班也在输出 Java 程序员,但很遗憾,伟大的达尔文同学提出的“物竞天择,适者生存”依然是普世的真理。大学和培训班都看中了 Java 这块蛋糕,只能说明 Java 程序员在市场上的需求量很大,但却不是饱和!
说说我的故事吧。我上大学那会,学校的计算机专业刚成立两年,也就是说,我们是第二批。据说,第一批做小白鼠的学长学姐们,很多在毕业的时候都没从事计算机专业方面的工作。倒不是他们不想找这方面的工作,而是本地的工作机会寥寥无几。
很幸运,我是班里面为数不多坚持下来的。准确来说,这个数不超过 10。剩余的呢?能在大一的时候转专业的都转了,转不了的毕业后都干别的去了。一个班,四十多名学生,只有不到 10 名学生坚持了下来,从事着 Java 编程相关的工作,其中有三四个后来转到了安卓。能感受到吧,虽然学校在教 Java,但老师的水平有限,再加上学生的水平参差不齐,就导致很多人虽然学了 Java,但并没有从事 Java 相关的行业。
现在想起来,不仅为我自己感到遗憾,也为班里面的同学们感到遗憾。我们的专业是学校最不看好的,但却是那个时代最有前景的,十多年的时间也证明了这一点。但大多数人还是因为自身的局限性,以及学校、教师的原因错过了,错过了在 Java 领域叱咤风云的机会。
以前,程序员稀缺,但机会也少;现在,机会多,程序员也多,但真正功底扎实,能解决问题的并不多。每个时代都有每个时代的局限性,那还要学不学 Java 了呢?我的答案是确定的,java的学习会让我更加强调自己的强项从而不会被淘汰