一、先来回答java的前景,从以下几点进行分析:
1,市场:
首先java有非常广泛的应用市场,它的生态系统几乎涵盖了目前市面上所有的软硬件,java几乎是万能的,你能想到的,java基本都能实现(虽然吹的有点大,但不可否认)。
web开发:
能做大型的互联网网站如,京东,淘宝,人人网、去哪儿网、美团等。
java在开发高访问、高并发、集群化的大型网站方面有很大的优势。
移动端开发:
目前手机上所有的APP后台代码及部分移动端页面java是都能够做到的。
客户端开发:
主要面向政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、金融、考试、物流、矿山等信息方面的系统。这些应用在我们生活中其实随处可见,比如医院的挂号系统、公司的打卡系统、物流系统等。
2,需求
从当前最新boss招聘来看java的需求量是非常大的,但是这个需求是有前提条件的,那么必须是开发3年以上的开发工程师,有人说java已经饱和了,饱和只是针对那些刚学java不久没有任何开发经验的工程师而言的,是不是说初学者就找不到java开发的相关工作了,NO!有实习岗位。
这只是针对一线城市而言,相对于二三线城市来说对于实际开发经验是稍微的放松的。
3,稳定
第一个问题已经说过了,java是有一个庞大的生态系统,它的覆盖范围非常广,而且已经连续10几年位居开发语言的榜首,所以java是相对于其他语言来说,非常稳定的。
二、接下来说说java好不好自学?
自学需要克服一下几点,如果能按照自己的规划的去学习成功的几率会更大。
1, 惰性:很大一部分人学习都是一时想到了才去学习的,但是能坚持下来应该没有几个,一开始可能兴趣很高,前几天还在坚持学习,但是后面的时间就慢慢的坚持不下去了,最后干脆就扔掉了。
2, 急于求成:在线看视频可以让你很快的学完整个课程,但是回头想想,学习之后的效果又是如何呢?可能只是看视频,而没有动手去写代码,这样学习的成果几乎是0.
3, 没有时间或者压力大:没有时间可能你还在上班或者你在干别的事情给自己找的一个借口,时间不是没有而是你有没有利用起来,现在是互联网时间,想要学习真的很容易的,可以利用自己碎片化的时间去学习,比如坐公交或者坐地铁,这样你有一大把的时间去学习,就看你能不能利用起来。压力大可能是因为你目前收入已经不满足你的消费了,所以觉得压力大,想找个薪资高的来弥补,但是想法是好的,你得去做,一步一步的去做。
三、最后附上java学习路线
JavaSE:Java基础,既然是基础,那肯定是最重要的,所以学习的时候也是需要重点学习的地方。
数据库:为什么要学数据库呢,因为我们的web数据需要持久化到磁盘上统一管理,而数据库无疑就是最好工具。目前主流的关系型数据库有mysql 和oracle。我建议先学mysql。为什么呢mysql相比Oracle难度要低,而在国内应用场景又是最多的。
前端基础:既然是做一个网站,那肯定不能是后台的数据,这样用户也是没办法看的,所以需要学习前端知识,把数据展示到页面上,而对于后台人员来说,学习阶段只需要学习前端基础就可以了。Html 、js、css、jquery就可以了。当然到离开后期你也可以学学专门为后端人员定制的前端框架,比如,layui,easyui。如果还觉得不够可以学学前端专用框架。比如vue element ,但是大前提是把自己的后台学到位了再学其他的。
Javaweb:jsp、servlet。为什么用了html还要学jsp呢。因为jsp和Java是无缝连接的。学了javaweb以后就可以自己做一个项目出来了,比如你想做一个个人网站。你可以给你们学校做一个教务管理系统都是可以的。
Spring:后台框架。为什么要用框架呢,可以快速开发,并且降低了耦合。Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用,Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
如果大家在入门学习Java的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的Java新手学习交流群:956253955,有任何不懂的都可以随时交流,里面还有最新的Java基础精讲视频教程, 群文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以自行来获取下载。
Mybatis:持久层框架,当然持久层还有一个框架应用也很广的,那就是hibernate,一个是半自动的一个是全自动,而在国内应用最多的是mybatis,在国外用得最多的是hibernate,具体原因,大家可以百度查查。持久层框架有什么好处呢?如果你用原始的jdbc做开发,那你得自己来管理每一个连接,连接的打开和关闭,都是有开发人员来操作的,而且jdbc也没有实体的映射,需要我们写代码把值set进去,而用了框架这些都交给框架去做了。
Maven:mavne是一个工具,他的核心是pom.xml,这个配置文件,pom的全英文是project object model,意思是对象管理模型,也就是把项目也看成一个对象来操作了。给我们带来最直观的好处就是依赖问题,以前我们需要自己下载jar包,在构建到项目中,但是有了maven只需要写jar的依赖就可以自动给我们下载了。
Springboot:springboot是基于maven的,springboot最明显的特点就是开箱即用,也就是构建了一个springboot项目 直接就可以做开发了,而不需要像我们自己配一个springmvc的框架一样的需要去配置大量的xml文件。让我们开发人员更着重于业务上的开发。
Redis:前面的mysql,oracle是关系型数据库,什么是关系型呢,就是一对一 一对多 多对多。有表与表之间有这些关系在,所以就叫关系型数据库,而redis就是非关系型数据库,也就是他存储数据之间是没有这些关系,他是以键值对 list set方式存储的。
Springcloud:微服务框架,什么是微服务呢,就是把我们传统的单体服务拆分开了,就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,微服务架构其实就是一个分布式架构,具体的就不详细的讲了,因为这里面牵涉到的解决方案是灵活的。
Linux:linux的应用通常都是在底层,那我们上层开发人员为什么也要学它呢,其实我们的主要应用是在服务器上,也就是服务器的系统。当然系统也有Windows的,而Windows的和Linux的区别就是Windows服务器有问题是微软来解决,很方便:别人替你做,但也不方便:你遇到问题都得让他官方来解决漏洞,但是Linux就不一样,他是完全开源的,有问题自己马上就可以解决,只要开发人员能力够硬去改内核都是可以的。
Git:版本管理工具,与之对应的还有svn,最大的区别在于git是分布式系统,而svn不是分布式的,因为你们进企业以后都是协同开发 也就是一个项目小组里面几个小伙伴一起开发一个项目,所以就要有一个代码的管理工具来保证你们做的不同模块可以整合,所以说git也是需要学的。
最近大家最大的问题就是说2-4个月是否能学完的问题。我在评论中说2个月每天需要花费8个小时,4个月每天需要花费4小时。
这么说不是没有依据,反对可以,客观的分析就行了,没必要言语过激,你说2个月每天花费8个小时或者4个月每天花费4个小时学不完,即使学完了也达不到效果,那只是你没有正确的学习方法,没有掌握好的学习方式,没有掌握开发语言应该怎么去学,而是和学习其他知识一样的方法去学习开发,当然你是学不会的,所以不要妄自评价。