学Java还是学大数据?学JavaEE还是学大数据?
学Java还是学大数据?学JavaEE还是学大数据?
一、首先,请理解Java这个词,对!Java这个词
很多人在问学java还是学大数据好这个问题时?保守估计有90%的概率他连Java到底指的是什么都不太清楚,所以,在探讨文题之前,咱们先来厘清一下Java这个概念。
Java是一种编程语言,什么叫编程语言?讲白了,就是一种用来编写程序的语言。咦~~~好像有点废话的赶脚是吧,那这样,我举个例子
我想让我亲爱的电脑帮我做一件事:给它一串任意的数字,比如:14,18,30,16,60,10,让它帮我从这串数字找出其中的最大值。
此时,你如果把上面的意图对着计算机去说(甭管你是柔情似水地说,还是歇斯底里地喊),我相信,它肯定无动于衷;
那么,该怎么样才能让计算机乖乖听话帮我做这件事呢? 需要写一个程序给他!所谓程序,就是一套做事(或者说解决问题)的流程,你把这套流程交给计算机,它就能一板一眼地按照你设计的流程(就是程序)去干活,得到你想要的结果。而且,这一套流程(就是程序)
比如,我们用如下方案就可以让计算机找出最大值来:
- 弄一个变量x,先让这个变量等于这一串数字中的第一个值
- 然后看下一个值是否比第一个值大,如果大,就把这个值替换掉变量原来的值;然后继续往下一个数走
- 循环操作第二步,直到这一串数字的最后一个。那么,在结束时,变量x的值就一定是这一串数字中的最大值
好,这就是给定一串数字后寻找最大值的一套方案,不过这一套方案怎么交给计算机呢?直接把上面的人类的文字复制到计算机里面,它能理解么?No!必须用一种计算机能理解的语言来编写!重点,敲黑板,这个计算机能理解的语言,就是所谓的编程语言。当然,直接用计算机能理解的语言去写你的程序,会很痛苦,因为那种语言(汇编语言)离人类的自然语言相差真的太大了,好在,有各种大牛,利用计算机能理解的语言(汇编语言),写好了一些很特别的程序(编译程序),这种编译程序,能理解一些更高级(更接近人类语言)的语言,然后把这些更高级的语言(比如Java,比如PHP,比如Python等),翻译成计算机的语言去让计算机执行,它就相当于在计算机和我们这种编程人员之间的一个翻译官。
而这种编译器有很多类型,所以我们这些编程开发工程师也就分化出了各种各样语言的开发工程师,有Java开发工程师,有Python开发工程师,有C++开发工程师等等
综上所述,咱们总算可以得出一个结论了,所谓Java,就是一种编程语言,所谓Python也是一种编程语言,所谓C++,所谓Go,所谓Scala皆如是。而且你只要学会了一门语言,其实其他语言都能很快触类旁通,因为它们半斤八两,大差不差,就比如上面那个找最大值的程序,用Java语言写,大体上是这样:
int[] arr= {10,20,30,15,60,8};
int x = arr[0];
for(int i=1;i<arr.length;i++){
if(arr[i]>x) x=arr[i];
}
用Python语言来写,大体上是这样:
arr=[4,56,20,4,100,-40]
x=arr[0]
for i in range (1,len(arr)-1):
if x<arr[i]:
x=arr[i]
理论上,甭管你用什么语言,都能应付绝大多数领域的编程需求;
二、接着,请理解Java和JavaEE,以及大数据
社会上常常会听到一些外行对另一些外行讲,“学大数据不是学java”,或者:“学大数据需要先学java,大数据是java的进阶,没有学好java怎么能学大数据”,又或者“学python才能学大数据”,云云
这些说法,就像一堆小学知识水平的人在议论哥德巴赫猜想或者量子力学,嗯,没错,就是这样
他们口中的所谓java,其实指的是JavaEE,他们把Java错误地等同于JavaEE,把Java错误地等同于JavaEE!
JavaEE是什么?是java这门编程语言的一种应用领域,一种应用领域,就是开发web程序的领域!java是一门编程语言,它可以用于很多很多的编程领域好吗? 如果用它来开发web程序,那就叫做Javaee开发;如果用它来开发手机上的程序,那就叫App开发;如果用它来开发桌面图形程序,那就叫GUI程序开发;如果用它来开发海量数据处理程序,那就叫大数据开发! 好吗? 好吗?
就像你学习了中文,你如果拿它写段子,那就叫段子创作;如果你用它来写小说,那就叫小说创作;如果你用它来写诗歌,那就叫诗歌创作!这些都只是中文的不同应用领域而已,好吗?好吗?好吗?!谁告诉你写诗歌需要先学段子?谁告诉你写段子需要先学会写诗歌?谁告诉你写小说需要先回写诗歌?谁告诉你写诗歌需要先学会写段子?不存在的,好吗!倒是说,不管你要写段子,还是写诗歌,还是写小说,你都得先学会一门语言,比如中文!好吗?理解了吗? did you get?
结论来了
Java是一门编程语言,它是很基础的东西,是属于基础技能;
JavaEE开发是Java语言的一个应用领域:开发web程序;
大数据开发也是Java语言的一个应用领域:开发海量数据处理程序;
领域的区别,只是在各自领域有各自的一些特别的上层工具,但是贯穿始终无处不在的是共同的Java语言
所以,学大数据是要学java,学javaee也要学java,但绝对不是说学大数据要先学JavaEE
所以如果大数据的培训课程中JavaEE的比重很大,有两种可能:一是大数据本身的师资不足,为了凑课时,用JavaEE顶替一部分;二是培训时间太长,费用很贵,课时太多,所以尽可能多填充一些内容。
三、现在,我们可以正式讨论究竟是学JavaEE好,还是大数据好
首先,这两者都只是基于java语言(也就是所谓javase)的不同编程领域,你学哪个都能学习到java语言的编程技能;从这个角度来说,两者并没有优劣之分!
其次,javaee和大数据,毕竟是两个不同的领域,那么,在就业方向上就会有区别,在就业薪资,发展空间上也会有区别;
- javaee是一个发展了20多年的领域,技术成熟度高,经验丰富的从业人员多,一个新人进入这个领域,除非极有天赋的人,否则很难在你的圈子里崭露头角,难以突出,也就只能拿个普通的薪资;
- 大数据则相对来说年轻很多,也就是近四五年开始发展起来,属于一个新兴但前景广阔的领域。这个领域中新事物不断涌现,比如在四五年前hadoop技术火爆全球,而最近这三四年,则由spark独领风骚,而今年,flink技术又异军突起。所以,在这个领域中,大部分的人都还谈不上资深从业人员,那么,一个新人进入这个领域,你的突出机会可以说层出不穷,无时不有!这样,你就更容易获取“超额收益”,拿到更高的薪资收入。
第三,从学习难度来说;
- javaee的学习,因为这个领域已经发展了20多年,所以其技术内容非常之繁杂,学习时,从前端到后端,从代码到数据库,从工作流引擎到搜索引擎,几乎无所不学,相对于6个月的培训周期来说,基本上对每个知识模块都只能做到蜻蜓点水走马观花,还没有真正巩固上一个知识点呢,下一个新知识点又来了,疲于奔命,浮于表面。所学,不仅学习难度大,而且这种走马观花式的学习根本无法真正提升自身的编程技能,对自己未来的成长也极其不利!
- 大数据的学习,因为发展时间尚短,所以其技术内容相对比较集中。学习大数据的最核心技能,其实就是把java语言用得熟之又熟,而在上层框架的应用上,主要就是hadoop、spark、flink。所以,学的东西不那么杂,那么在6个月的培训时长内,就可以让你在每一个知识模块上由浅入深,由生疏到熟练地进行反复打磨, 一方面掌握了大数据的开发技能,另一方面更是真正巩固了自己的编程技能,对自己未来的职业发展注入雄厚的潜能!
结论来了
学javaee和学大数据,都不差,因为这两个领域都是基于java语言的开发应用领域,而java语言衍生出来的软件体系,是全世界软件领域中不可撼动的根基般的存在。但是,如果从学习难度、学习回报以及对未来发展的帮助这几方面综合考虑来看,显然,学大数据是一个更好的选择。简单一句,学个技术,难道你不学一个新的,还非要去学个旧的?