首先,学习Java能用来做什么?Java目前有哪些就业方向?我们先看一下下图

上图给出了两个最重要的方向Java Web和Ardroid方向,其实我们经常说的Java软件工程师,我觉得应该叫Java Web软件工程师或Java后端(服务端)工程师比较贴切一些。Java Web能做的事情非常多,我们在使用淘宝去查找商品时,打开浏览器输入网址,输入商品名称,点击搜索,这时候前端页面(浏览器)通过HTTP协议把商品名称传递到Java服务端,Java服务端利用JDBC技术从数据库里检索数据并返回,再组装成网页内容返回给浏览器,继而展现在用户面前。Java Web要学的东西很多,网络请求协议(HTTP等),Web前端技术,Java服务端技术,JDBC、数据库等都要学习。

Android要学的东西稍微少一点,Android一般是客户端软件,基本上不涉及到服务端,理论上来说可以不关注服务端技术(灰色框里的内容)和后台数据库,但我觉得要做一个合格的Android工程师,这些东西还是有必要去花时间了解的。同样的,Android工程师也需要学网络请求协议(HTTP等),毕竟也是要通过Web服务器去数据库里拿数据回来展示到APP上。目前混合开发(原生+HTML5)的APP越来越多了,因此还需要学习一些前端知识。

注意,Android方向图里的Web服务器可以用Java来写,也可以用其它语言来写,比如C#等,但安卓程序员不需要关心。

不管学Java Web还是Ardroid,Java基础(J2SE)都是必需要学的,后面会详细说这两条路要学习的内容。其它的还有一些桌面程序(Swing/awt),嵌入式开发(J2ME),JavaFX开发,基本上已淘汰,不好找工作,不推荐大家学习了。以下是某大型招聘网站搜索出来的各岗位在北京招聘的数据,供大家参考

除此之外,Java还有一个大数据(Hadoop)方向,但新人不推荐选这个方向,等有一定的工作经验后再介入。

很多人私信问我,Java就业环境怎么样?Java难学吗?数学不好英语不好能学好Java吗?

是时候亮出这张图了:

上图是2017年8月份编程语言排行榜,虽然相较2016年有所下降,但可以看出来,前几名都整体下滑了,下滑的原因是多种新兴语言的崛起导致的,虽然下滑,Java依然牢牢占据着排行榜首位,所以说Java就业市场前景相较于其它语言还是比较有优势的。

另外,Java简单易学,Java是类C语言,语法和C/C++没多大的区别,相信大家上学时多多少少都学过一点C或C++语言,所以很多容易上手,Java还抛弃了C++ 中那些很少使用的、很难理解的、令人迷惑的特性,如操作符重载、多继承、自动的强制类型转换等,和C/C++不同的是Java是运行在JVM(Java虚拟机)上的,如下图

JVM屏蔽了底层操作系统的细节,为开发者做了很多事情,比如内存的分配和回收等,因此,Java开发人员不需要在写程序时候考虑对内存进行分配和回收,也无须考虑内存碎片的问题,这部分工作已经由JVM来完成了。这也是Java语言能跨平台的原因(一次编译,到处运行)。也就是说,只要能安装JVM的机器,理论上都可以运行Java写的程序。有人说C#也很简单呀,同样不需要分配和回收内存,而且语言设计得比Java更优秀,为什么不选择C#呢?是的,这个问题我不否认,我们看一下某大型网站的招聘数据:

地点北京,搜索关键字Java,提供24564个职位,搜索C#,提供6177个职位。Java提供的就业机会还是多得多,这个也是和排行榜相符的。

综上所述,对于新手入门和找工作来说,我推荐Java,其实,大家也不用纠结到底选择哪一门语言来进行入门,比如Java和C#这两门语言,在思想上基本上是一致的,Java会了,C#熟悉一下语法和环境马上就能上手写了,反之也一样。

Java对数学要求不高,常用的数据结构和算法,都已经封装好了。Java主要是用来做企业级应用,大型网站等,主要是处理业务逻辑,而不是科学计算,所以数学不好的朋友也不要担心。对于写Java代码来说对英语的要求也不高,一共几十个关键字,大多都是一眼就知道什么意思的,如if,else,while,for,public,private等,不要看到老鸟的屏幕全是英文就吓到了,其实那些英文只是变量名而已,都是自己起的名字,虽然英语不好对编写Java程序没多大影响,但是阅读英文的API帮助文档就比较吃力了,很多一手的资料都只有英文文档,JDK源码也是英文注释,但是也无需过度但心,大部分API都能找到中文版本,但始终看原版还是放心一些,所以,大家请尽量学好英语,英语好的话,找一份国外的工作也说不一定(工资高)。

下面我们看一下学习Java Web和Android究竟要学些什么技能,首先在招聘网站上搜索Java Web软件工程师,随便点开几个职位:

Java基础就不说了,肯定要重点学习,其它的如:JavaScript,JQuery,Ajax,JSP,HTML5,oracle,DB2,框架,模板、Servlet,Spring,SpringMVC,Struts,Mybatis/ibatis,数据库,MySql等等,看得真是眼花缭乱,吓得有些朋友都要打退堂鼓了,其中Spring,SpringMVC,Struts,Mybatis/ibatis、MySQL出现的次数最多,有些词很多初学者可能都没听过。不要害怕,上面说到的这些术语,大部分是框架,框架的产生最主要的目的是提高生产力,规范大家的开发,也就是说,别人写好的,项目中拿来用就行,什么是框架?刚开始学习项目的时候先不要用框架,这样更助于理解底层,我们回到本文开始的第一张图:

前文已经说过了,不管是安卓还是Java Web方向,JavaSE(Java基础)是重点,一定要打好基础,其中Swing/awt相关知识可以选择跳过,上图中的客户端,服务端,数据库的知识都要涉猎到,主要要学的东西如下,这么一看清爽了很多。

Web客户端(Web前端):JavaScript,HTML,CSS

Java服务端:JDBC,Servlet/JSP等

数据库:MySQL

以上这些其中Java服务端最重要,数据库MySQL也需要好好学习一下,Web前端也需要了解一下,工作中Web前端的代码一般是由前端工程师写好的,但我们要看得懂,并能往里加上一些脚本标签等,我的建议是学完Java基础后马上学习MySQL和JDBC,然后在网上找DRP项目来学习,这个项目里不但讲了前端基础,也对Java服务端需要掌握的内容作了详细讲解。认真学习完DRP项目,其实已经具备了软件开发的能力了,但是进入企业还不够,因为实际工作中企业一般都用到了框架,框架有很多,我建议先学习SpringMVC,Spring,Mybatis,也就是俗称的SSM,这些视频在网上很容易下载到,下载完后一个一个的学习,再一个个融入到DRP项目中去,做熟了以后大家就可以考虑准备简历了,有了以上SSM框架的学习经验,再学习其它框架就快了。

再回过头来看看Android,点开招聘网站的Andriod工程师岗位看一下:

Android的要求都差不多,除了强调Java,就是Android了,大家可自行在网上搜索视频学习就行了。

至于选择Java Web或Android,就看大家喜欢了,有精力的可以都学习一下。

学习难度:Java Web > Android
找工作:Java Web > Android

长远发展:Java Web > Android

Java Web的路线看起来是复杂一些,其实也不难,只是涉及到的东西很多,很多人学了一半就坚持不下去了,败给了坚持,而不是难度。

还有人私信问我,学习中记不住代码怎么办?

首先我们学习过程中一定要搞清楚,我们学习Java是为了找一份工作,而不是应付考试,把学校里的那些作风都忘了吧,不要去背代码,勾重点,关键是要动手,软件工程是一门实践学科,在学习过程中,光看会听会是不行的,学到每个知识点一定要去理解,动手敲代码,敲完了,继续下一个知识点。雷军有篇文章:给程序员的五点建议,其中有一点是必须写够十万行代码,这个观点我认同,不动手,跟本就不会进步,写代码是一个熟能生巧的技术活,没有足够的代码量,是成不了高手的,因此,一定要多敲代码,多敲代码,多敲代码。

学习中,要抓住主线学习,至少能先独立做一个小Web项目,再去考虑深入学习别的东西。有些人在学Java基础的过程中,学到多线程,非要把理论搞清楚了再说,去找一些专门讲多线程的书来看,还有些人看到某些文章说Java在new一个对象的时候在堆内存里开辟了一块空间,就要去研究堆内存,继而去研究JVM去了,这样的学习方法是不可取的,初学阶段要学会先抓住重点,以理解、实践、找工作为主,要学会先放弃一些东西,等有了多余的时间再去深入研究自己想知道的东西。还有一点,学习过程中千万不要钻牛角尖,我有个发小,学到多线程死锁这一块,死活理解不了,就放弃了,还有一个更可怜,在培训班学到匿名内部类,一直在想这东西是干啥用的,为什么要有匿名内部类,老师课都上到后面去了,还在想,甚至每一个词都要理解透了才肯继续下去,Java基础还没学完,就掉队了,想退学,培训机构不退,两万多打了水漂。学习中一但遇到暂时理解不了的,先休息休息,出门运动运动,适当放松一下大脑,静下心来想想,再看一遍也许就会了。还是理解不了,就先跳过吧,往后面学,没准看到后面,突然一下就明白前面为什么这么做了。

还有一些朋友,调试代码过程中,只要出了一点错误,就大惊小怪,也不仔细看看错误,直接手机拍个一堆堆栈Exception的照片发私信给我,让我帮忙看代码,一看,一般都是空指针异常,数组下标越界啥的,我估计他们自己看都没看,就直接发给我了。学习中,出现了问题不要怕,每一个人都是这样的,也包括曾经的我,一定要仔细看错误日志,看哪一行代码报错,分析出现问题的原因,然后再去排查,在解决问题的过程中,就是不知不觉的进步的过程。在自己动手写项目的过程中,web前端,Java服务端,数据库每一个环节都可能出现问题,要一步一步的排查,首先看web前端的值有没有传到Java服务端,Java服务端有没有调到数据库,数据库里有没有数据等,细心一点,就会发现问题的所在了,还是解决不了,就百度吧,百度不出来,找学长学姐、身边的高手问一下,还在解决不了?那就走值乎或加入我的饭团问我吧,嘿嘿。

还有人问我,自学好还是去培训机构系统的培训一下比较好?

如果你现在还是大二大三,还有大把大把的时间,我建议还是自己学习吧,培训机构动不动就一两万的培训费,不是一般人能够承担的,现在网络资源那么发达,要什么样的资料基本上都能找到,只不过自学时间稍微长了一点,容易走些弯路。大学里开的课程,语言类的如C语言、C++、Java、C#,数据结构和算法、汇编、软件工程等一切和软件有关的东西,尽量花时间好好学习,能学多少就学多少,都有用。

如果你现在已经工作,想转行学习Java,我建议可以适当考虑一下培训机构去系统的学习一下,培训机构在知乎的评价似乎都不怎么好,其实嘛,还是有那么几家是好好做教育的,我去培训机构招过人,基本上还是能用,刚学出来也不敢要太多工资,算是物美价廉吧,培训机构还有一个好处是省时间,一般四到五个月就能出炉,学得好,找一份工作还是没问题的。

说了这么多,都感觉快成培训机构的托了,给大家强调一点,学习Java毕竟还是很辛苦的,不管是自学还是培训机构,请大家都先做个自我评估,看自己适不适合学习Java,

最后,如果决定要学习Java了,请暂时放下你手中的王者荣耀、LOL、梦幻西游,先全身心的投入到学习中吧,不要到时候学没学好,玩也没玩好,培训班钱也花掉了,依然还没有入门,那就尴尬了,玩游戏嘛,就要安心的玩,毕竟我在王者荣耀里曾经也是王者

推荐Java的练习项目+源码,PDF书籍教程,面试题,学习手册

如果大家在入门学习Java的过程当中有遇见任何关于学习,行业方面的问题,都可以申请加入我的Java技术自学交流小组请点击【这里获取】,有任何不懂的大家都可以随时来交流,千万不要选择一个人孤军奋战,只有不断交流的碰撞,我们才能发现问题的根本

作者:清浅池塘

来源:https://zhuanlan.zhihu.com/p/29222077

如何成为Java软件工程师相关推荐

  1. 如何选择专业的Java软件工程师培训机构

    动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 现在随着移动互联网时代和大数据时代的全面发展,Java软件开发又一次闪亮登场,吸引着人们的眼球,对Java软件开 ...

  2. JAVA软件工程师应该具备的技能有哪些?

    前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历, ...

  3. java工程师_南通JAVA软件工程师暑假强化实训学校

    如果想快速学习Java的话,建议参加Java培训.特别是自学时意志力不够强,惰性大的同学,很需要Java培训机构的助力.参加Java培训机构的好处就在于,当你想要入门Java时,可以知道如何打好学习基 ...

  4. java好的代码_做java软件工程师,怎样才能写出好的代码?

    原标题:做java软件工程师,怎样才能写出好的代码? Java代码之于java程序员而言就是左膀右臂,java代码写的好的java程序员明显更是企业的欢迎,一个优秀的java程序员的考核标准之一也是看 ...

  5. java软件工程师工作业绩_JAVA软件工程师简历自我评价

    1 / 9 JAVA 软件工程师简历自我评价 具有很强的团队精神,有良 好的组织和协调能力,有强烈的集体荣誉感. 自学能力强,喜欢钻研新技术,敢于面对和克服困难. 熟练使用 spring+struts ...

  6. java软件工程师工作业绩_java软件工程师个人简历

    ★精品文档★ 2016 全新精品资料 - 全新公文范文 - 全程指导写作 – 独家原创 1 / 3 java 软件工程师个人简历 用人单位的在筛选简历的时候,首先就是看其整体形 象,而整体形象也是第一 ...

  7. java软件工程师自我评价_java软件工程师自我评价

    java 软件工程师自我评价 java 软件工程师自我评价 具有很强的团队精神,有良好的组织和协调能力,有强烈的集体荣誉感. 自学能力强,喜欢钻研新技术,敢于面对和克服困难. 熟练使用 spring+ ...

  8. java软件工程师工作业绩_java软件工程师,工作总结

    java 软件工程师 , 工作总结 篇一:软件开发工程师个人年终工作总结范文 软件开发工程师个人年终工作总结范文 作为一个软件开发工程师(我也是一名软件开发工程 师) ,所实在的如果每年只做那么一两个 ...

  9. Java软件工程师 (职业简介)

    Java软件工程师 引言:信息时代的迅猛发展使得软件工程师十分抢手,而其中的java软件工程师更是备受青睐.那么,如何才能成为Java软件工程师?Java软件工程师又有怎样的发展前途?本文将为你一一解 ...

  10. java软件工程师简历项目经验pdf_java软件工程师简历中项目经验怎么写?

    java软件工程师简历-项目经验怎么写(优秀范文)Java开发工程师-简历模板-项目经验怎么写 [网盘]100+清新大气简历模板下载: Java开发工程师-项目经验范文1 项目名称:电子商务后台管理系 ...

最新文章

  1. c#中结构与类的区别
  2. ABAP 向上取整和向下取整 CEIL FLOOR
  3. react封装函数_GitHub - daifee/react-component: 用 React 封装一套常用组件
  4. 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.2.2 内存...
  5. LeetCode MySQL 626. 换座位
  6. linux误删文件咋恢复,恢复Linux误删文件
  7. 前端展示 字数过多 进行隐藏
  8. 我最喜爱的九位历史人物 - 曹操(Space搬家)
  9. 百度地图API常规应用十功能
  10. 如何使用Erdas裁剪万能地图下载器下载的谷歌卫星地图
  11. 浙大PAT考试经验/考前必看/日常刷题总结(经验只写了一点点
  12. Ubuntu18.04 上 安装微信(Deepin-Wechat)
  13. Jenkins的安装及使用
  14. 华为eNSP的介绍与简单使用
  15. 早期中国文明内生性演进的内在逻辑阐释
  16. H5页面跳转小程序分享-山东标梵互动
  17. jar包+注册码 破解Jetbrains IDEA 2017.2.1版本
  18. AcWing 1309. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)
  19. MAE源代码理解 part1 : 调试理解法
  20. EFI系统分区必须挂载到/boot/efi其中之一

热门文章

  1. CloudXNS之初体验
  2. 事件委托是怎么回事?
  3. 520 html模板,520表白酷炫html
  4. Springboot实现匹配系统(上)
  5. NBA球队中英文名对照大全附带各个球队的LOGO手机壁纸
  6. 深度式睡眠潜入虚拟世界_潜入swiftui的惊人世界
  7. Qt完整工程创建和项目文件概述
  8. 如何设置静态路由器计算机网络,路由器如何设置静态ip(固定ip)地址上网?
  9. 共享经济时代下如此多的“美食平台”,为什么它成功的生存下来了
  10. 这届欧洲杯有点凉?但中国广告主绝不认输