想要自学JAVA,应该如何入门?
全面系统的Java内容如下:
一、JavaSE基础篇
JavaSE就是一种标准版,是Java语言的基础部分,Java衍生出来的各种框架(如Spring系列)各种产品都是基于JavaSE标准,JavaSE是Java向上发展的基础,Java任何高级产品的底层基础都是JavaSE,通俗来讲这是所有孩子的”爹“。JavaSE如果学不好,理解不透彻,后面学习框架时就有如天书一般,所以JavaSE这部分的重要性是不言而喻的,希望各位初学者铭记。
主要包含内容:数据类型、基础语法、运算符、流程控制、数组、面向对象、常用类、异常处理、集合、IO流、多线程、反射、注解、解析、网络编程。
PS:JavaSE的内容非常庞大,任何一套JavaSE教程都不会把所有的方法讲一遍,只会挑平时工作中常用的内容来讲解,所以JavaSE里面的内容很多都是课后自己在API文档中慢慢宽咐了解的,你自己一定要学会主动学习,不能坐以待毙。
推荐学习书籍:Java核心技术
二、数据库篇
数据库是学习Java语言必学的一项内容,常见的数据库就是MySQL和Oracle这两种,作为初学者一般都是学习MySQL为主,一般情况下中小型企业都会选择MySQL数据库,比较大型的互联网公司会选择用Oracle,而学习Oracle相对于MySQL也要复杂一庆乎些,建议是主要学习MySQL数据库,Oracle作为了解即可。学习数据库较为简单,基本的操作就是增删改查。
三、Web开发
Web前端内容:HTML/CSS/JavaScript/(前端页面)
注意:Java后端开发可以不用过多关注HTML页面及CSS的处理,但是最起码要会用简单的HTML,JavaScript是必须要会的,因为Javaweb后端程序员毕竟要接触使用AJAX方式处理数据及显示。当然如果只关注服务器端实现而不考虑任何用户界面,则HTML、CSS、JavaScript都不用关注,但是完全脱离前端的开发现在虽然也不少,但是绝对不关心前端是不可能,尤其是JavaScript,但是前端却可以完全不关心服务器后台的任何实现。
推荐学习书籍:《JavaScript DOM编程艺术》(第二版)
四、高级框架
1、Springframework 核心IOC容器
2、Spring boot 在Spring基础上的更全面提升效率的Spring工具
3、ORM 框架当今流行使用较多的是Mybatis 和 MP(Mybatis插件),Hibernate是可选性学习的
4、模板技术,比较成熟的Freemarker
5、Spring Cloud 微服务框架,Spring Cloud提供的全套的分布式系统解决方案。
五、工具
maven 是构建管理项目的工具,svn 和git是团队协作开发的项目源代码及相关文档资料管理工具,需要学习者初步掌握其应用。
像Tomcat,jetty ,resin,JBoss,GlassFish 等都是部署运行Java web应用的服务器。
以上就是初学者大概学习的内容,我是尽量站在初学者的角度来说的,没有写得特别复杂,怕初学者看不懂,没有实质性的帮助。所以我尽量用白话把话说的简单一些,给大家罗列出主要学习的Java知识点。
Java学到什么程度才能达到就业的水平?
不同的软件公司对研发人员的水平要求存在一定的差异,如果从大多数中小型企业来看能接受一个入职到本企业的IT技术人员通常需要具备以下能力。
1 理解掌握Java核心面向对象的设计思想和代码构建,能以面向对象方式设计编写业务功能;
2 熟练掌握至少两种数据库的开发,如Oracle,mySql,能熟练编写基本常用及高级的SQL语句;
3 必需掌握并熟练应用Springframework IOC容器,深入了解IOC及AOP概念并应用,使用MVC实现对web 请求做出处理;
4 熟练掌握Java处理数据库的ORM框架myBatis,JDBCTemplate,对Hibernate也应有所了解;
5 熟练应用Spring 增强工具集合Spring boot;
6 至少熟练使用Eclipse及IDEA集成开发工具构建应用程序;
7 能够基本掌握MVN GIT Maven 在项目中的使用;
8 前端开发必需掌握JavaScript和常用的JS框架
以上这些都是中小型软件企业的入职基本要求,如果你能够达到这个水平,找到一份Java工作应该是不难的。
推荐的学习方式:系统视频教程+书籍辅助+有人指导
视频教程:对于Java初学者来说,看视频学习也是最普通的方式,视频教程会把工作中常用的知识进行讲解,而且视频一般都是分章分节,每一个小节都只讲一个知识点,学习起来较为明确。但是视频教程尽量要完整,最好是一整套视频学习。
书籍辅助:书籍便于对理论知识的补充,以便更容易理解Java面向对象核心设计理念和代码实践功能。
PS:但是大部分人都没有耐心看不下去书,所以大部分人都是只看视频教程学习。如果自己能看的下去就看,看不下去就不看。
有人指导:大部分人都不可能全靠自己的能力把Java学的特别好,因为你不了解这个行业,也不知道怎么学,完全零基础自学Java想要找到工作,概率极低。所以建议如果真的想要做这行,尽量找人去带带你,有不懂的问题可以直接请教,少走弯路,提高效率。学习的质量决定以后工作的薪资以及起点,所以还是应该重视起来。
项目的重要性
很多Java初学者看完一些视频,学过一段时间就说自己“会了”。这里我需要给大家纠正一个问题,希望每个学习Java的知友都能明确学习编程的中心是什么。
其实在我看来,学习编程从来都不存在会不会这样的说法。学习编程不同于初中学的数学、物理、化学,记住一些公式,做同样一种类型的习题,就证明类似的题型你会做了。
编程只讲技术能力是什么水平、什么级别的,最能证明技术水平处在什么阶段的,就是在做项目的过程中,研发好的互联网产品,写代码的质量怎么样,排错能力怎么样,找BUG的能力怎么样,构思功能模块整体布局的能力怎么样等等。
做作为初学者想要达到入门的水平,就是自己具备了一些简单项目的编码能力,初学者最重要的一点就是培养自己的编程思维,每一个程序都是不一样的,你不可能都背下来,学编程也不是靠死记硬背的,你只有能去独立编码写一些东西的时候,才有就业的机会。
所以做项目的能力才能去衡量一个学习的水平处在什么阶段,而往往那些嘴上说“会了”的人,往往没写过多少代码,也一个项目做不了出来,这就是纸上谈兵,完全曲解了学习编程到底在学什么,也不知道应该往哪里去。
所以一个Java初学者在学习的整体过程中,必须要有两个能拿得出手,能写在简历上的项目作为找工作的资本,并且要对于这两个项目的前前后后相当了解,才可能最后面试成功,一个初学者在学习完Java所有内容后,如若还达不到可以做简单项目的水平,那么他整个学习过程还是白费,没有达到最终的学习目的,就是学习质量不过关。所以项目的重要性希望大家都明确,因为有太多Java初学者不知道最后学习的目的是什么,最后白白的浪费时间。
学习心态:
学习编程一定不是一个简单的事情,换句话说它还是挺困难的,毕竟能出去找到工作,就是少则五六千,多则上万的工种。这些知识都不是随随便便就是任何一个人都能学会的。关于这个学习心态,希望提示大家要把重心放到“学习”这件事上,因为我发现有很多Java初学者都是像“完成任务”一样去学习,所谓完成任务就是“我把这些视频看完就能找到工作吗”“我把这些都学完就能找到工作吗”学完并不等于“学会”,这是两种不同的概念。
你到底理没理解?
你到底能不能应用起来?
你到底用没用心?
你自己应该是最清楚的,我发现那些把学习当做完成任务一样去对待的,这样的人没有一个是有耐心的,自己在心里欺骗自己“把这些视频看完我就能找到工作”,到了最后自己就逐渐明白,完全是自欺欺人,最后放弃说自己不适合学这个。其实揭开这些人的面具真相就一个:他们没有耐心学习,也不喜欢学习,这是以前经历造成的,是多年的习惯导致的。
所以正确的学习心态一定是把关注点放到学习这件事本身,你要学会这些知识,这些内容,这些技术,这是需要一天一天逐渐积累起来的,并不是短时间就可以达到什么结果。
PS:如果你对于学习没什么耐心,没什么兴趣,我劝你不要来学习编程,学习编程绝对是一个耐心的活,也是需要不断学习和充电的行业。或者说已经到了信息时代,不爱学习的人,很难有耐心去学习知识的人,在信息时代是混不下去的,任何行业都是如此,不学习不进步不紧贴时代的人就一定会被淘汰。
最终自学Java能就业的人基本具备以下几点:
1、有超强的学习耐心及进取心
2、手不懒,代码写的足够多,熟能生巧
3、有一定的学习能力,善于自学善于自己解决问题
4、可以独立写一些简单的项目
学习了javaweb,请问我现在可以直接学ssm吗
当然可以啊,关于ssm整合框架的学习,我在github上上传过一个小例子,通过这个小例子会让你快速学习通过ssm整合框架开发项目,里面README.md详细介绍了开发流程,让你几个小时就能学会ssm的整合与开发,附上链接: codingXiaxw/ssm 欢迎提出Issues一起改进,希望对你的学习有帮助。
另外我这边还有自己在java学习道路上写的几个很值得锻炼的小项目,如下:
我写过一个客户管理系统,由于当时没有接触框架所以使用到的技术就是JSP+Servlet+Mysql,另外对查询到的信息我使用了分页的技术,用的开发工具的IDEA,博客上详细讲解了操作流程,附上博客链接: JavaWeb项目之客户管理系统 ,源码链接为 codingXiaxw/CustomerManagement 目前已经在github上得到4个star和4个fork。
学了SSM框架后做了一个对商品信息增删改查的项目,包括SSM框架的整合详细教程,github上已经上传了我的源代码以及在README.md和博客中详细介绍了 SSM框架整合以及利用SSM框架进行开发这个项目的步骤,在此附上github链接(github的REAMDE.md中有我项目对应的博客链接,目前已经得到14个star和7个fork) codingXiaxw/ssm 另外还有在此项目上进一步进行的SSM高级知识的开发(目前已经得到6个star和7个fork),github源码和详细教程链接: codingXiaxw/ssm2
学习了Shiro框架以后,我又写了一个利用Shiro+SSM框架在上述利用SSM框架开发项目中搭建了Shiro框架,用于进行用户登录的认证以及权限管理,github上传了详细教程以及源码(目前需要你的star和fork),附上github链接: codingXiaxw/shiro
学习了Maven对项目进行管理后,又利用Maven+SSM做了一个高并发的秒杀系统,源码和详细讲解已经上传到github(目前需要你的star和fork),附上源码链接 codingXiaxw/seckill
java 学完框架学什么?
struts spring hibernate SSH架构【不是说学了就会了,关键要实践】
还需要学习sql或者oracle数据库
但是实际项目中可能需要对表示层做更多的细化,所以javascript、css、html、jsp、ajax就成为必要的技能。
你说你学完了那请问你会用吗?你就自己做一个最简单的网上购物系统,用ssh架构做,要求自己一点一点的提,先实现功能,再优化功能,最后美化界面。
简单提几个点
1、struts可能现在企业需要的是struts2,但是它和struts1.X没有什么联系的,具体的自己百度一下,实现注册界面,验证后台数据库是否存在此用户名【ajax技术,为什么?如果你能明白动态和静态网页你就算有基础了,否则你java根本就没有学会。】
2、购物车用session还是数据库表,如何实现?
3、对购物的增删改查,通过面向接口编程和工厂模式实现。注意层次,封装等技术
4、防重复性提交【不知道吗?去认真学习struts】
5、安全性:例如知道某一段url能否直接打开页面而跳过用户验证检测界面。
6、spring的di和aop分别在业务层和数据层应用,后者主要是回滚作用。
等等
另外如果用myeclipse开发,在界面和数据库操作过程中可能有中文乱码问题,想想怎么解决。如果界面增加js,那么可能需要一些比较好的插件jquery等,css和html配合的时候最实际的就是表格问题【table】如果一个单元格的内容过多,是怎样处理?省略【鼠标移动上去提示全部信息】?换行【但是整体看上去就不美观哦】?还是怎么样?
如何学习java spring框架?
1、打好基础是重中之重
基础部分可能很枯燥,但是一定要耐心坚持下去。因为打基础好比是在造轮子造汽车,没有打好基础在后面的学习就好比走路,可以说后面遇到的百分之七八十的问题都是基础没学好造成的。
2、多看官方文档多读源码
一定要看JDK相关类库、常用框架各种功能的源码,去了解其底层实现的原理。总的来说这个也是在打基础的部分,Java基础非常扎实才能看懂,在我们学习一个类的源码时,肯定会衍生出其他各种各样的问题,供我们来了解和学习,这也就是我们下一步学习的目标和方向。慢慢的,我们就会学习更多的知识,并积累更多的经验。
3、系统性学习,循序渐进
不要急于求成,每个知识点都要看,并且每个知识点都要勤加练习。有的同学在学习过程中觉得这个知识点简单,就跳着学习,其实这是个很大的问题,知识点细节必须要了解。我们学习Java需要循序渐进,一步一步来,不能操之过急。
4、遇到问题
遇到不会做的问题,当然不能置之不理。先在网上查,目前网络上针对很多问题都有完美的解决方案,如果网上没有类似的问题,那可能是你犯了什么小错误。也不要在这个问题上花费太多时间,这需要一定的学习技巧。Java中的知识有很强的相关性,有不懂的地方,可以用其他周边相关知识再回过头来理解,这样既不会耽误学习进度,又能理解自己不懂的地方
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好的jvm(s),整合成一个统一的openjdk。
2)java是典型的oop语言,其执行效率的优化,最早就是lars bak等人从smalltalk等长期优化的经验中总结出来并apply到hotspot上去滴,而smalltalk在早期apple机上搞出了那种拖拖拽拽就开发出app的做法,后来vc,delphi之类的其实都是抄袭或者说借鉴apple的smalltalk的做法,jobs说微软从头到尾都在抄袭apple是空穴来风,这里空穴来风跟王垠使用的空穴来风是一个意思,有趣的是,java的gui并没有继承这种搞法,反而对这种拖拖拽拽就作出app的做法批判有加,到今天,其实java的gui都还不能真正做到拖拖拽拽就作出来,问题很多,个人建议对于纯java的gui开发,还是以写代码为主。
3)jee也是一个或者说是一堆标准,知乎上有些人把maven,jenkins都算做jee是不对滴,jee的标准核心是ejb,其实就是一个xml配置化的java文件,这个标准在4的时候,达到了顶峰状态,几乎所有的挨踢大厂都主动支持该标准,之后开始走下坡路,支持的厂越来越少。
4)java和javascript的关系比很多人认为的要密切,javascript里面的java这四个字母可不是白叫的,比如js的版权和商标都控制在oracle手里,oracle对于js的支持甚至超过其对java的支持,并且喜欢捆绑销售,比如jvm里面就有一个js引擎。
5)jvm里面除了js engine以外还有一个浏览器排版引擎webkit,就是apple safari和google chrome用的那个那个。
6)java支持绝大多数脚本语言,你能叫得上名字的脚本语言,几乎都可以在jvm上执行,比如常见的js,ruby,python,甚至php,lua,只不过除了js以外你需要找到相关的脚本引擎。
7)spring的版权被控制在vmware手里,其实spring的那一大堆东西,本质上是一个非标准的jee实现,比如在jee里面用的inject,在spring里面就是autowire,当然spring曾经深刻滴影响了jee,所以有些东西比如di标准,是spring影响下制定出来的,所以spring的做法会比较特例一点。
8)maven上的jars数量前两天突破800万,其他语言的类库,排名第二的是npm,大概数量是maven的十分之一,也就是几十万,不知道现在突破100万没有,然后是gem,也就是ruby那个,大概是十几万,下来是python的module,大概数量级是几万,没突破十万。
9)java的标准是由一个叫做jcp的组织制定的,所有标准需要经过jcp的执行委员会通过方可执行,jcp几乎包括了你所知道的绝大多数知名挨踢公司和组织,比如google,apple,ibm,intel,arm,red hat,twitter等,还有一些教育机构,比如我国的北京大学,阿里最近一次申请jcp执行委员会成员资格,似乎投票不通过,最近一次执行委员会新增两个成员是arm和jetbrains。
10)微软也曾经是jcp甚至是java的主要贡献者,但是利益驱使下,想扩展java,从而破坏java跨平台的特性,所以跟sun闹翻,其本质原因就是想让客户写的java代码跟windows绑定,sun坚决不同意,闹翻,今天回头看这个结果,只能说:双输,sun挂了,微软的ria也离挂不太远了,silverlight已经放弃了,比起当年ie自带有jvm的支持来说,那完全就是两回事。
11)除了微软以外,jcp还缺少一个重要组织apache,因为apache跟oracle也闹翻了,oracle似乎并不在乎开源组织,而更在意商业公司的支持。
12)java曾经有一个内置的数据库,9之后被剥离。
13)j2me是j2se的子集。
14)vert.x作者tim fox最早在vmware做spring时候看到了node.js,萌生出了制作支持多核的node.x的想法,并在离开vmware后加入red hat将其实现,vmware看到后开始耍无赖,claim node.x后来改叫vert.x的版权,不惜跟red hat打官司,后来各方妥协,将其交给eclipse foundation。
15)oracle在收购bea之前,一开始的目标并不是bea和bea的weblogic,而是jboss,但是jboss表现出了极为有种的一面,在oracle收购成功之前,投入了red hat的怀抱,因为都是开源组织,从此jboss成了red hat的一个子部门,oracle收购jboss失败之后,转向bea,庄思浩气死了,但是没用,最后还是被恶意收购。
16)sun在玩不下去之前最早尝试接触的目标是ibm,ibm嫌太贵,放弃之后,被转手给了oracle。(Java学习交流QQ群:589809992 我们一起学Java!)
17)vert.x的作者tim fox在离开red hat之前曾经发过twitter抱怨,外人比如我们,猜测是因为red hat内部已经有了一个jboss,所以跟vert.x在应用上有了重叠,所以导致tim fox的出走,但是出走之后,red hat答应对vert.x做持续性的战略投入,所以vert.x core的几个developers,其实拿的是red hat的工资,但是vert.x的版权并不在red hat手里,而在eclipse foundation手里。
18)vert.x的几个核心开发人员都是google summer of code的导师,每年年初时候会招收在校大学生搞项目。
19)教育机构相关:scala的作者马丁是德国人,eth的博导,groovy的主要领导人是法国人,jruby背后是东京大学,jboss的作者是法国大学校x的校友,x就是伽罗瓦考不进去的那所大学,伽罗瓦进不了x,所以改读巴黎高师,tim fox毕业于帝国理工,主席去的那个,netty作者trustin lee是acm银牌,现在line工作,毕业于sky里面的延世大学,kotlin是毛子公司jetbrains的作品,看linkedin,很多人毕业自圣彼得堡大学,spring作者rod johnson是悉尼大学的音乐博士,hibernate作者gavin king是澳洲莫那什大学的数学本科毕业生,james gosling这种cmu和calgory的估计烂大街了,sun是斯坦福大学网络的意思,夹带两个私货,aspectj有一个维护小组在mcgill,hbase跟waterloo关系密切。
20)java早期被人认为慢,跟java坚持不用硬件加速渲染有关,死活就是不肯接入directx和opengl,7之后总算开窍,搞了一个图形引擎接入了directx/opengl。
21)casssandra是facebook做失败的项目,被贡献给了apache之后老树开花。
22)groovy被贡献给了apache,现在叫做apache groovy,ceylon被贡献给了eclipse,现在叫做eclipse ceylon。
23)netflix现在是java shop,之前是用.net的。
先想到这么多,有空再写。
应届毕业生找java开发工作都需要学会框架在找工作吗?
光是会java基础远远不够,常见的框架是必须熟悉的,现在的公司都是需要能上手就开始做项目的,这些框架知识都算是基础。推荐千锋教育,该机构可以帮助更多迷茫的学生实现他们的梦想,非常不错。
学习java开发的从事工具如下:
1、软件开发
例如Eclipse,MyEclipse,IneteliJIdea和Netbans IDE等知名Java开发工具。
2、嵌入式领域
嵌入式领域仿佛为Java量身打造。Java因其具有的诸多优点受到了嵌入式领域的青睐,并得到了大量的研究与开发应用。自从1993年Sun公司提出Java技术以来(Java语言规范和Java虚拟机规范)对Java的应用和研究一直呈逐渐上升的趋势,其应用和研究范围覆盖面极广。
3、大数据
Java大数据的应用领域非常的广泛,可以简单分为几类:基础大数据服务平台,大中型的商业应用包括我们常说的企业级应用(主要指复杂的大企业的软件系统)、各种类型的网站等。数据分析领域,例如图像分析,语音识别,空间分析,用户分析,可视化等。各种数据源的建立,气象,交通,媒体娱乐等领域数据市场的形成。
想要了解更多有关java开发的相关信息,推荐咨询千锋教育。北京千锋互联科技有限公司,成立于2011年1月,立足于职业教育培训领域,公司现有教育培训、高校服务、企业服务三大业务板块。成立教研学科中心,推出贴近企业需求的线下技能培训课程。