学习java应该具备哪些以及怎么学习java
JAVA为什么有前途?
过去的十多年,JAVA基本每年都是全世界使用人数第一的语言。全世界数百万的IT企业构建了庞大的JAVA生态圈,大量的软件基于JAVA开发。 JAVA也被誉为“计算机界的英语”。 JAVA的应用范围涉及所有行业、绝大多数IT企业,形成了庞大的生态圈。如下是智联招聘在一个月内、北京地区的JAVA人才需求量:
当月需求量25121个职位,我们以一个职位招聘3人,总量就是:251213=75363*人。这还只是光北京地区。可以想象全年、全国招聘的数量,以及由此形成的生态圈有多么庞大。
这个生态圈的影响力越来越大,需要的人才也越来越多。越多人会JAVA,就有越多软件使用JAVA编写,反过来促进需要更多的JAVA人才。 这就是著名的“马太效应”,即“强者越强,弱者越弱”。
JAVA目前在:企业级软件开发、安卓开发、大数据、云计算等方方面面都是主流的编程语言。跟着主流走,肯定错不了。
什么人适合学习JAVA?
如果作为兴趣来学编程,什么人都适合。毕竟,现在小学生都开始学习编程了。如果要作为职业来说,你到底适合不适合确实是个问题。我教过的学员里面从初中生到博士生、甚至50多岁的企业高管都有,怀着不同的目的来学习JAVA。 我记得教过一个北大的数学硕士,人家过来学习不为职业就为科研,希望通过培训节省时间,一个暑假就迅速突破了编程这个坎。
这里,我们只探讨作为职业适合不适合你?这里有六个现实的硬性指标,可以作为参考。
1. 兴趣度
兴趣是基础。如果你完全没有编码的兴趣,敲键盘就头大。那就完全屏蔽掉程序员这条路,不要强求,天无绝人之路,另一条路也许更适合你。作为程序员的基础,至少不讨厌敲代码的感觉,这是最基本的。 越喜欢敲代码这种感觉,你以后的路走的越顺。
很多人说:“xxx有天赋”。我想,这里的天赋换成“兴趣”也许就是事情的真相。人家有兴趣做这个事,做着开心,自然就会花越多时间研究,成长自然就越快;成长越快,比起常人自然就有“天赋”。
2. 有没有更好的其他发展路径
既然为职业发展而来,必然要现实一些。如果家里有很好的背景、父辈有很好的资源。强烈建议,依托父辈资源发展也许是最优的路径。写程序可以作为业余爱好,而不要作为主业。
当然,如果是我等普通屌丝群众。学IT,仍然是逆袭最好的途径。毕竟,这是一个凭技术、凭本事吃饭的职业。技术能力到位年薪百万的大有人在。
3. 逻辑思维能力
这是作为程序员最基本的要求。逻辑思维能力差的人,完全不适合学编程。当然,对于一般理工科的学生来说,逻辑思维不存在问题。对于文艺青年,喜欢跟着感觉走跳跃思维的人,一般不适合程序员这一条路。
4. 英语
对于初级程序员英语要求不高,事实上,高中英语水平足矣。如果想往顶尖技术发展,英语能力有必要提高。毕竟,很多技术源自美国,能熟读原汁原味的英文,将会让你如虎添翼。
个人建议是:英语高中以上够混初中级程序员阶段。想往顶尖混,至少要英语四六级以上。
5. 数学
被数学折磨的我们,学编程有个好消息就是“数学并不重要,除非搞科研”。对于企业里面开发软件,数学知识初中水平足矣。
如果要搞人工智能、大数据等开发,一些高等数学、线性代数、概率等知识还是有很多用处的。当然,等你用到时再翻书也来得及。
6. 职业发展稳定
JAVA历经十多年,都是稳居第一位,可见的未来也是非常稳定的开发语言。JAVA行业的一大特点就是稳定,发展空间大。
作为JAVA程序员工资从:4000月薪,10万月薪都有。不像前几年火爆的IOS,火了3年,现在断崖式的下跌。JAVA就像一列火车,行驶非常稳定。
JAVA程序员分为:初、中、高、架构、总监,5个修炼档次。足够我等普通屌丝奋斗终生了。
按年限划分的话,大体是这样:
1). 初级程序员工作年限:1-3年月薪:4K-15K
2). 中级程序员工作年限:3-5年月薪:10K-20K
3). 高级程序员工作年限:5年以上月薪:15K-30K
4). 架构级别工作年限:5年以上月薪:25K-40K(年薪百万也大有人在)
5). 总监工作年限:5年以上月薪:40K以上(年薪百万也大有人在)
怎么学习JAVA?
JAVA编程的学习分为:入门、初级、中级、高级、架构几个阶段。
入门
入门所需要的时间较短,几小时、几天即可。重在形成良好的编程习惯、引发足够的兴趣。大学编程课最失败的地方就是一开始就打消了很多人编程的兴趣。 编程是最容易引发成就感的事情,完全可以和游戏一样有意思。
入门大家需要掌握的JAVA知识有:JDK的安装和配置、eclipse开发环境的使用、变量、控制语句等基本知识的掌握。
初级
JAVA的初级我们需要学习JAVASE基本知识,这是我们以后工作的基础。在这个阶段,学会使用API、理解面向对象将是初学者首要面对的问题。
JAVASE中需要熟练掌握的有:面向对象、异常、常用类、数组、容器、IO流、多线程、网络编程。 这些都需要大家熟练掌握,都是以后工作必须用到的内容。
JAVASE中唯一不会在工作中使用的就是GUI编程,具体就是:AWT/SWING。桌面软件开发是JAVA语言的短腿,很少有企业使用。当然,如果时间充裕,学习一下也无妨,毕竟可以通过SWING做出漂亮的界面。而且,技术都是相通的,对于学习其他GUI技术也有帮助。
中级
中级面临的学习任务比较庞杂,不只学习JAVA, 还需要学习其他技术。通常,中级学完就可以参与企业项目的开发了,可以自己做出漂漂亮亮的项目。
我们需要学习三块知识:
1. SQL查询和1-2种数据库(通常是:oracle、mysql)
2. 网页技术:HTML5、CSS、JavaScript、Jquery
3. 服务器编程JAVAEE:Servlet、JSP、数据库操作技术:JDBC、Tomcat服务器
中级是非常重要的阶段,跨过这个门槛,理论上你就具备了开发项目的能力啦!中级阶段的学习,经常成为很多初学者的拦路虎,毕竟内容太多,一个问题就可能让你郁闷一天。 最终,检验你中级是否过关的标准就是“能不能独立完成一个企业项目的模块开发”。
记住:“实战是检验实力的唯一标准”,“没有实战的学习,是假学习;没有实战检验的能力,是假能力”。
高级
高级阶段是大量框架的学习和使用,毕竟这是在企业中实际使用的。目前需要掌握的有:Spring、Spring MVC、Mybatis、Struts2、Hibernate、Maven、shiro、lucene等技术。
这些技术的学习一定要结合具体的项目,不然你的学习会有种无力感。结合时下流行的SSM架构,做几个项目,自然就能把Spring、Spring MVC、Mybatis框架使用熟悉。不做项目的学习是“低效的学习”。
高级阶段表面看来是一些框架技术的学习和使用。对于“有潜力的高手来说”,实际上你会发现这只是“JAVA基础的升华”而已。只是JAVA+算法+设计模式的组合而已,我们深入这些框架底层架构就会发现这一点。 当你的学习能意识到这一点的时候,已经达到了非常高的高度。这就是武侠小说里面说的“从无招到有招,再从有招到无招”。
架构
作为JAVA程序员学到高级课程已经完全具备初中级程序员的基本素质,和真正有3年开发经验比的人,你缺的就是经验,技术的广度已经足够。
如果想从程序员更进一步,那就是架构师和总监。这个时候,你必须要有深厚的技术功底、丰富的项目经验、丰富的行业经验。
从技术上来说,你需要深入学习如下技术:
并发编程、ActiveMQ技术、ZooKeeper、RabbitMq技术、Kafka技术、MongoDB、高性能、高并发、Mysql、Netty通信框架、JVM虚拟机底层优化、Memcached、Redis、Nosql、数据库底层优化、RocketMQ、Dubbo分布式服务、Storm、Kafka、Nginx、FastDFS等。
(如果看花眼了,就收藏一下,这是你几年需要学的内容,不是几天。本文只负责指路,推荐大家可以搜索一下黑马程序员,免费的java学历路径引导以及配套视频教程和资料)
从项目经验来说,一般需要3个大型项目经验。这种经验的累积不是一天两天的,罗马不是一天建成的。保持足够的耐心,坚持就能达成。
如果,你能走到架构阶段。基本上算进入JAVA程序员的高端行列。此时的收入应该在50万-100万之间(注意:这是北上广深杭一线城市标准,二线乘以系数0.6,三线乘以系数0.5)。 当然,对于我等普通屌丝来说,也算是完成了逆袭了,过个有房有车的小康生活应该是绰绰有余。
如果,你的情商、市场能力、管理能力到位,此时可以尝试创业当老板了(如果不到位,千万不要尝试,不然会死的很难看)。扎实的技术实力、丰富的行业经验,应能让你实现腾飞。我的很多学生创业成功,年如数百万的N多,时代总是年轻人的时代!
学习java应该具备哪些以及怎么学习java的更多相关文章
- 20155223 2006-2007-2 《Java程序设计》第3周学习总结
20155223 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 有点好奇:为什么Java编程语言一定要使用java.math.BigDecimal才 ...
- 20145212 《Java程序设计》第3周学习总结
20145212 <Java程序设计>第3周学习总结 教材学习内容总结 教材第四章知识点总结 面向对象和面向过程: 面向对象是相对面向过程而言的,面向过程强调的是功能行为,面向对象是将过程 ...
- 20145206邹京儒《Java程序设计》第6周学习总结
20145206 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 输入/输出 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象. 从应用程序角度来看 ...
- 20145337 《Java程序设计》第六周学习总结
20145337 <Java程序设计>第六周学习总结 教材学习内容总结 输入\输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输 ...
- 20145208 《Java程序设计》第5周学习总结
20145208 <Java程序设计>第5周学习总结 教材学习内容总结 语法和继承架构 异常处理关键字 第八章内容主要是对Java的异常处理,所以我先了解了一下关键字 Java的异常处理是 ...
- 20145222黄亚奇《Java程序设计》第6周学习总结
教材学习内容总结 第十章 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象. 从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流,如果要将数据写入目的地,可以使用输 ...
- 20145215《Java程序设计》第6周学习总结
20145215<Java程序设计>第六周学习总结 教材学习内容总结 输入/输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输入 ...
- 20145215《Java程序设计》第5周学习总结
20145215<Java程序设计>第五周学习总结 教材学习内容总结 异常处理 语法与继承架构 异常就是程序在运行时出现不正常情况,异常的由来是因为Java把出现的问题封装成了对象,换句话 ...
- 20145317彭垚 《Java程序设计》第6周学习总结
20145317彭垚 <Java程序设计>第6周学习总结 第十章 输入/输出 10.1 InputStream与OutputStream 1.串流设计的概念 Java将输入/输出抽象化为串 ...
随机推荐
- js中的基本类型和引用类型
基本数据类型:按值访问,可操作保存在变量中的实际的值.基本类型值指的是简单的数据段. 基本数据类型有这六种:undefined.null.string.number.boolean.symbol(es ...
- 在 LaTeX 中实现缩印效果
https://liam.page/ 近日大概重拾了一点对 LaTeX 的兴趣,遇见这样一个问题:如何在 LaTeX 中实现缩印效果(即,将两页或更多页排版在一页纸上),并且实现水印效果的页码? 缩印 ...
- 小程序在ios10.2系统上兼容
1. 定位元素在ios10.2系统上出现样式问题??? 没错,就是在测试在侧道ios10.2系统时发现了样式错误的问题,比如一个Swiper中,最后一个展示有问题. 这是啥原因❓❓❓❓❓❓ 大写的问 ...
- Flutter Widgets 之 SnackBar
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 基础用法 应用程序有时候需要弹出消息提示用户,比如'网络连 ...
- 一文看懂js中的clientX,clientY,pageX,pageY,screenX,screenY
一. 客户区坐标位置(clientX,clientY) 鼠标事件都是在浏览器视口中的特定位置发生的.这个位置信息保存在事件对象的clientX和clientY属性中,所有浏览器都支持这两个属性. 我们 ...
- node--非阻塞式I/O,单线程,异步,事件驱动
1.单线程 不同于其他的后盾语言,node是单线程的,大大节约服务器开支 node不为每个客户创建一个新的线程,仅使用一个线程.通过非阻塞I/O以及 事件驱动机制,使其宏观上看是并发的,可以处理高并发 ...
- HTML5历史管理状态机制
前言:想要不刷新页面同时改变url 可以用HTML5 window对象的 hashChange 事件.同时介绍两个相关的api 和 1个事件. 两个API:1.history.pushState({n ...
- objectarx 填充的分割
主要思路:找到填充边界集合:vecBo,然后把面积最大的边界找出来:bo1,用分割曲线和bo1通过boundary命令构成两个新的最大封闭边界,左边的记为 boLeft(红色部分),右边的记为boRi ...
- flask前端上传图片/文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行
一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...